MBED port of https://github.com/ys1382/filagree . The only change is adding #define MBED
Diff: serial.h
- Revision:
- 0:1a89e28dea91
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/serial.h Wed May 30 21:13:01 2012 +0000 @@ -0,0 +1,68 @@ +/* serial.h + * + * [de]serialization API + */ + +#ifndef SERIAL_H +#define SERIAL_H + + +#include <stdint.h> +#include "struct.h" + + +enum serial_type { + SERIAL_ERROR, + SERIAL_INT, + SERIAL_FLOAT, + SERIAL_STRING, + SERIAL_ARRAY, +}; + + +struct key_value_pair +{ + int32_t key; + + enum serial_type wire_type; + + union { + + int32_t integer; + float floater; + struct byte_array* bytes; + enum { + SOMETHING_HAS_GONE_HORRIBLY_WRONG, + } serialError; + + } value; +}; + + +typedef bool (serial_element)(const struct key_value_pair*, + struct byte_array* bytes, + const void* extra); +bool serial_element_debug(const struct key_value_pair* kvp); + +struct byte_array* serial_encode_int(struct byte_array* buf, + int32_t key, + int32_t value); + +struct byte_array *serial_encode_float(struct byte_array *buf, + int32_t key, + float value); + +struct byte_array* serial_encode_string(struct byte_array* buf, + int32_t key, + const struct byte_array* string); +void serial_decode(struct byte_array* buf, + serial_element* se, + const void* extra); + +int32_t serial_decode_int(struct byte_array* buf); + +float serial_decode_float(struct byte_array* buf); + +struct byte_array* serial_decode_string(struct byte_array* buf); + +#endif // SERIAL_H