]> Pileus Git - ~andy/csm213a-hw/blob - hw2/messages.h
Work on second mbed
[~andy/csm213a-hw] / hw2 / messages.h
1 /***********************
2  * Message Definitions *
3  ***********************/
4
5 #include <stdint.h>
6
7 #define MSG_HEADER 0x1234
8 #define MSG_MAXID  2
9
10 #pragma pack(1)
11
12 typedef enum {
13         MSG_ID_SYNC,       // Time synchronization
14         MSG_ID_EVENT,      // Event occurred
15 } msgid_t;
16
17 typedef struct {
18         uint32_t seconds;  // Seconds since 1970 (without leap seconds)
19         uint32_t nanosec;  // Nanoseconds since 'seconds'
20 } ntime_t;
21
22 typedef struct {
23         uint16_t header;   // Message Header
24         uint16_t msgid;    // Message ID
25         uint16_t length;   // Body length
26         uint16_t cksum;    // Body checksum
27 } header_t;
28
29 typedef struct {
30         uint32_t seq;      // Current sequence counter
31         ntime_t  time;     // Time of previous message
32 } sync_msg_t;
33
34 typedef struct {
35         uint16_t device;   // Device ID
36         uint16_t event;    // Event ID
37         ntime_t  time;     // Timestamp
38 } event_msg_t;
39
40 #pragma pack()