+#ifndef MESSAGES_H
+#define MESSAGES_H
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
/***********************
* Message Definitions *
***********************/
-#include <stdint.h>
-
#define MSG_HEADER 0x1234
#define MSG_VALID_DEVICE 0x0001 // device id is valid
} event_msg_t;
#pragma pack()
+
+/******************
+ * Message Parser *
+ ******************/
+
+typedef void (*handler_t)(int msgid, void *msg);
+
+typedef struct {
+ int index;
+ int state;
+ uint8_t buffer[256];
+ handler_t handler[MSG_MAX_ID];
+} parser_t;
+
+void msg_register(parser_t *parser, int msgid, handler_t handler);
+
+void msg_receive(parser_t *parser, int byte);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif