-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgn_types.h
124 lines (108 loc) · 3.19 KB
/
gn_types.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#ifndef gn_types_h
#define gn_types_h
#include "cbyteswap.h"
#include <inttypes.h>
typedef struct GNBasicHeader GNBasicHeader;
__PACKED__(struct GNBasicHeader {
unsigned int version : 4;
unsigned int nextHeader : 4;
uint8_t reserved;
uint8_t lifeTime;
uint8_t routerHopLimit;
});
typedef struct GNCommonHeader GNCommonHeader;
__PACKED__(struct GNCommonHeader {
uint8_t nextHeader;
// unsigned int reserved : 4; // skipped. included in nextHeader
uint8_t headerType;
uint8_t trafficClass;
uint8_t flags;
uint16_t plLength; // The Codec shall set the length of the paylaod if present
uint8_t maxHopLimit;
uint8_t reserved2;
});
typedef struct GNAddress GNAddress;
__PACKED__(struct GNAddress {
uint16_t aType;
uint8_t addr[6];
});
typedef struct LongPosVector LongPosVector;
__PACKED__(struct LongPosVector {
GNAddress gnAddr;
uint32_t timestamp;
int32_t latitude;
int32_t longitude;
int16_t accAndSpeed;
uint16_t heading;
});
typedef struct ShortPosVector ShortPosVector;
__PACKED__(struct ShortPosVector {
GNAddress gnAddr;
uint32_t timestamp;
int32_t latitude;
int32_t longitude;
});
typedef struct GUCHeader GUCHeader;
__PACKED__(struct GUCHeader {
uint16_t sequenceNumber;
uint16_t reserved;
LongPosVector srcPosVector;
ShortPosVector dstPosVector;
});
typedef struct GNTSBHeader GNTSBHeader;
__PACKED__(struct GNTSBHeader {
uint16_t sequenceNumber;
uint16_t reserved;
LongPosVector srcPosVector;
});
typedef struct GNSHBHeader GNSHBHeader;
__PACKED__(struct GNSHBHeader {
LongPosVector srcPosVector;
uint32_t reserved;
});
typedef struct GBCHeader GBCHeader;
__PACKED__(struct GBCHeader {
uint16_t sequenceNumber;
uint16_t reserved;
LongPosVector srcPosVector;
uint32_t latitude;
uint32_t longitude;
uint16_t distanceA;
uint16_t distanceB;
uint16_t angle;
uint16_t reserved2;
});
typedef struct GNBeaconHeader GNBeaconHeader;
__PACKED__(struct GNBeaconHeader {
LongPosVector srcPosVector;
});
typedef struct LSReqHeader LSReqHeader;
__PACKED__(struct LSReqHeader {
uint16_t sequenceNumber;
uint16_t reserved;
LongPosVector srcPosVector;
GNAddress reqAddr;
});
typedef struct LSRepHeader LSRepHeader;
__PACKED__(struct LSRepHeader {
uint16_t sequenceNumber;
uint16_t reserved;
LongPosVector srcPosVector;
ShortPosVector dstPosVector;
});
typedef union GNExtendedHeader GNExtendedHeader;
__PACKED__(union GNExtendedHeader {
GNSHBHeader shb;
GNTSBHeader tsb;
GUCHeader guc;
GBCHeader gbc;
GNBeaconHeader beacon;
LSReqHeader lsreq;
LSRepHeader lsrep;
});
typedef struct BTPHeader BTPHeader;
__PACKED__(struct BTPHeader {
uint16_t dPort;
uint16_t sPort;
});
#endif