diff options
Diffstat (limited to 'desktop/serial_utils.h')
-rwxr-xr-x | desktop/serial_utils.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/desktop/serial_utils.h b/desktop/serial_utils.h new file mode 100755 index 0000000..8c351e4 --- /dev/null +++ b/desktop/serial_utils.h | |||
@@ -0,0 +1,33 @@ | |||
1 | #pragma once | ||
2 | |||
3 | #include "types.h" | ||
4 | |||
5 | #include <SerialStream.h> | ||
6 | |||
7 | template <typename T> | ||
8 | T read (LibSerial::SerialStream& serial) | ||
9 | { | ||
10 | T x; | ||
11 | serial.read((char*) &x, sizeof(T)); | ||
12 | return x; | ||
13 | } | ||
14 | |||
15 | template <> | ||
16 | U32 read<U32> (LibSerial::SerialStream& serial) | ||
17 | { | ||
18 | U32 x = 0; | ||
19 | for (int i = 0; i < 4; ++i) | ||
20 | { | ||
21 | U8 b; | ||
22 | serial.read((char*)&b, 1); | ||
23 | x = x >> 8; | ||
24 | x |= (b << 24); | ||
25 | } | ||
26 | return x; | ||
27 | } | ||
28 | |||
29 | template <typename T> | ||
30 | void write (LibSerial::SerialStream& serial, const T& val) | ||
31 | { | ||
32 | serial.write((const char*) &val, sizeof(T)); | ||
33 | } | ||