MIP SDK  0.0.1
MicroStrain Communications Library for embedded systems
data_shared.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "descriptors.h"
4 #include "../mip_result.h"
5 
6 #include <stdint.h>
7 #include <stddef.h>
8 #include <stdbool.h>
9 
10 namespace mip {
11 class Serializer;
12 
13 namespace C {
14 struct mip_interface;
15 } // namespace C
16 
17 namespace data_shared {
18 
25 
27 // Descriptors
29 
30 enum
31 {
33 
34 
36  DATA_TICKS = 0xD1,
38  DATA_GPS_TIME = 0xD3,
45 };
46 
48 // Shared Type Definitions
50 
51 static const uint8_t MIP_DATA_DESC_SHARED_START = 0xD0;
52 
54 // Mip Fields
56 
65 
67 {
70 
71  static const bool HAS_FUNCTION_SELECTOR = false;
72 
73  uint8_t trigger_id = 0;
74 
75 };
76 void insert(Serializer& serializer, const EventSource& self);
77 void extract(Serializer& serializer, EventSource& self);
78 
89 
90 struct Ticks
91 {
94 
95  static const bool HAS_FUNCTION_SELECTOR = false;
96 
97  uint32_t ticks = 0;
98 
99 };
100 void insert(Serializer& serializer, const Ticks& self);
101 void extract(Serializer& serializer, Ticks& self);
102 
114 
116 {
119 
120  static const bool HAS_FUNCTION_SELECTOR = false;
121 
122  uint32_t ticks = 0;
123 
124 };
125 void insert(Serializer& serializer, const DeltaTicks& self);
126 void extract(Serializer& serializer, DeltaTicks& self);
127 
138 
140 {
143 
144  static const bool HAS_FUNCTION_SELECTOR = false;
145 
146  struct ValidFlags : Bitfield<ValidFlags>
147  {
148  enum _enumType : uint16_t
149  {
150  NONE = 0x0000,
151  TOW = 0x0001,
152  WEEK_NUMBER = 0x0002,
153  TIME_VALID = 0x0003,
154  };
155  uint16_t value = NONE;
156 
158  ValidFlags(int val) : value((uint16_t)val) {}
159  operator uint16_t() const { return value; }
160  ValidFlags& operator=(uint16_t val) { value = val; return *this; }
161  ValidFlags& operator=(int val) { value = val; return *this; }
162  ValidFlags& operator|=(uint16_t val) { return *this = value | val; }
163  ValidFlags& operator&=(uint16_t val) { return *this = value & val; }
164  };
165 
166  double tow = 0;
167  uint16_t week_number = 0;
169 
170 };
171 void insert(Serializer& serializer, const GpsTimestamp& self);
172 void extract(Serializer& serializer, GpsTimestamp& self);
173 
190 
191 struct DeltaTime
192 {
195 
196  static const bool HAS_FUNCTION_SELECTOR = false;
197 
198  double seconds = 0;
199 
200 };
201 void insert(Serializer& serializer, const DeltaTime& self);
202 void extract(Serializer& serializer, DeltaTime& self);
203 
218 
220 {
223 
224  static const bool HAS_FUNCTION_SELECTOR = false;
225 
226  uint64_t nanoseconds = 0;
227 
228 };
229 void insert(Serializer& serializer, const ReferenceTimestamp& self);
230 void extract(Serializer& serializer, ReferenceTimestamp& self);
231 
248 
250 {
253 
254  static const bool HAS_FUNCTION_SELECTOR = false;
255 
256  uint64_t dt_nanos = 0;
257 
258 };
259 void insert(Serializer& serializer, const ReferenceTimeDelta& self);
260 void extract(Serializer& serializer, ReferenceTimeDelta& self);
261 
277 
279 {
282 
283  static const bool HAS_FUNCTION_SELECTOR = false;
284 
285  struct ValidFlags : Bitfield<ValidFlags>
286  {
287  enum _enumType : uint16_t
288  {
289  NONE = 0x0000,
290  NANOSECONDS = 0x0001,
291  };
292  uint16_t value = NONE;
293 
295  ValidFlags(int val) : value((uint16_t)val) {}
296  operator uint16_t() const { return value; }
297  ValidFlags& operator=(uint16_t val) { value = val; return *this; }
298  ValidFlags& operator=(int val) { value = val; return *this; }
299  ValidFlags& operator|=(uint16_t val) { return *this = value | val; }
300  ValidFlags& operator&=(uint16_t val) { return *this = value & val; }
301  };
302 
303  uint64_t nanoseconds = 0;
305 
306 };
307 void insert(Serializer& serializer, const ExternalTimestamp& self);
308 void extract(Serializer& serializer, ExternalTimestamp& self);
309 
329 
331 {
334 
335  static const bool HAS_FUNCTION_SELECTOR = false;
336 
337  struct ValidFlags : Bitfield<ValidFlags>
338  {
339  enum _enumType : uint16_t
340  {
341  NONE = 0x0000,
342  DT_NANOS = 0x0001,
343  };
344  uint16_t value = NONE;
345 
347  ValidFlags(int val) : value((uint16_t)val) {}
348  operator uint16_t() const { return value; }
349  ValidFlags& operator=(uint16_t val) { value = val; return *this; }
350  ValidFlags& operator=(int val) { value = val; return *this; }
351  ValidFlags& operator|=(uint16_t val) { return *this = value | val; }
352  ValidFlags& operator&=(uint16_t val) { return *this = value & val; }
353  };
354 
355  uint64_t dt_nanos = 0;
357 
358 };
359 void insert(Serializer& serializer, const ExternalTimeDelta& self);
360 void extract(Serializer& serializer, ExternalTimeDelta& self);
361 
364 
369 } // namespace data_shared
370 } // namespace mip
371 
Serialization class.
Definition: serialization.h:145
void insert(Serializer &serializer, const EventSource &self)
Definition: data_shared.cpp:32
void extract(Serializer &serializer, EventSource &self)
Definition: data_shared.cpp:37
struct mip::C::mip_interface mip_interface
State of the interface for communicating with a MIP device.
@ DATA_GPS_TIME
Definition: data_shared.hpp:38
@ DATA_TICKS
Definition: data_shared.hpp:36
@ DATA_EVENT_SOURCE
Definition: data_shared.hpp:35
@ DATA_DELTA_TIME
Definition: data_shared.hpp:39
@ DATA_SYS_TIME_DELTA
Definition: data_shared.hpp:43
@ DATA_DELTA_TICKS
Definition: data_shared.hpp:37
@ DATA_DEBUG_TICKS
Definition: data_shared.hpp:44
@ DATA_REFERENCE_TIME
Definition: data_shared.hpp:40
@ DESCRIPTOR_SET
Definition: data_shared.hpp:32
@ DATA_REF_TIME_DELTA
Definition: data_shared.hpp:41
@ DATA_EXTERNAL_TIME
Definition: data_shared.hpp:42
A collection of C++ classes and functions covering the full mip api.
Definition: commands_3dm.c:11
A dummy struct which is used to mark bitfield objects.
Definition: descriptors.h:95
Definition: data_shared.hpp:116
static const bool HAS_FUNCTION_SELECTOR
Definition: data_shared.hpp:120
static const uint8_t DESCRIPTOR_SET
Definition: data_shared.hpp:117
static const uint8_t FIELD_DESCRIPTOR
Definition: data_shared.hpp:118
uint32_t ticks
Ticks since last output.
Definition: data_shared.hpp:122
Definition: data_shared.hpp:192
static const bool HAS_FUNCTION_SELECTOR
Definition: data_shared.hpp:196
static const uint8_t FIELD_DESCRIPTOR
Definition: data_shared.hpp:194
static const uint8_t DESCRIPTOR_SET
Definition: data_shared.hpp:193
double seconds
Seconds since last output.
Definition: data_shared.hpp:198
Definition: data_shared.hpp:67
static const uint8_t DESCRIPTOR_SET
Definition: data_shared.hpp:68
uint8_t trigger_id
Trigger ID number. If 0, this message was emitted due to being scheduled in the 3DM Message Format Co...
Definition: data_shared.hpp:73
static const uint8_t FIELD_DESCRIPTOR
Definition: data_shared.hpp:69
static const bool HAS_FUNCTION_SELECTOR
Definition: data_shared.hpp:71
_enumType
Definition: data_shared.hpp:340
@ DT_NANOS
Definition: data_shared.hpp:342
@ NONE
Definition: data_shared.hpp:341
ValidFlags & operator=(uint16_t val)
Definition: data_shared.hpp:349
ValidFlags & operator&=(uint16_t val)
Definition: data_shared.hpp:352
uint16_t value
Definition: data_shared.hpp:344
ValidFlags & operator=(int val)
Definition: data_shared.hpp:350
ValidFlags()
Definition: data_shared.hpp:346
ValidFlags & operator|=(uint16_t val)
Definition: data_shared.hpp:351
ValidFlags(int val)
Definition: data_shared.hpp:347
Definition: data_shared.hpp:331
static const uint8_t FIELD_DESCRIPTOR
Definition: data_shared.hpp:333
ValidFlags valid_flags
Definition: data_shared.hpp:356
static const bool HAS_FUNCTION_SELECTOR
Definition: data_shared.hpp:335
static const uint8_t DESCRIPTOR_SET
Definition: data_shared.hpp:332
uint64_t dt_nanos
Nanoseconds since the last occurrence of this field in a packet of the same descriptor set and event ...
Definition: data_shared.hpp:355
ValidFlags & operator&=(uint16_t val)
Definition: data_shared.hpp:300
ValidFlags & operator=(int val)
Definition: data_shared.hpp:298
uint16_t value
Definition: data_shared.hpp:292
ValidFlags & operator=(uint16_t val)
Definition: data_shared.hpp:297
ValidFlags(int val)
Definition: data_shared.hpp:295
ValidFlags()
Definition: data_shared.hpp:294
ValidFlags & operator|=(uint16_t val)
Definition: data_shared.hpp:299
_enumType
Definition: data_shared.hpp:288
@ NONE
Definition: data_shared.hpp:289
@ NANOSECONDS
Definition: data_shared.hpp:290
Definition: data_shared.hpp:279
static const bool HAS_FUNCTION_SELECTOR
Definition: data_shared.hpp:283
ValidFlags valid_flags
Definition: data_shared.hpp:304
uint64_t nanoseconds
Definition: data_shared.hpp:303
static const uint8_t FIELD_DESCRIPTOR
Definition: data_shared.hpp:281
static const uint8_t DESCRIPTOR_SET
Definition: data_shared.hpp:280
Definition: data_shared.hpp:147
_enumType
Definition: data_shared.hpp:149
@ NONE
Definition: data_shared.hpp:150
@ TOW
Whole number seconds TOW has been set.
Definition: data_shared.hpp:151
@ TIME_VALID
Both TOW and Week Number have been set.
Definition: data_shared.hpp:153
@ WEEK_NUMBER
Week number has been set.
Definition: data_shared.hpp:152
ValidFlags & operator&=(uint16_t val)
Definition: data_shared.hpp:163
ValidFlags & operator=(int val)
Definition: data_shared.hpp:161
ValidFlags(int val)
Definition: data_shared.hpp:158
ValidFlags()
Definition: data_shared.hpp:157
uint16_t value
Definition: data_shared.hpp:155
ValidFlags & operator=(uint16_t val)
Definition: data_shared.hpp:160
ValidFlags & operator|=(uint16_t val)
Definition: data_shared.hpp:162
Definition: data_shared.hpp:140
ValidFlags valid_flags
Definition: data_shared.hpp:168
static const uint8_t FIELD_DESCRIPTOR
Definition: data_shared.hpp:142
double tow
GPS Time of Week [seconds].
Definition: data_shared.hpp:166
static const uint8_t DESCRIPTOR_SET
Definition: data_shared.hpp:141
static const bool HAS_FUNCTION_SELECTOR
Definition: data_shared.hpp:144
uint16_t week_number
GPS Week Number since 1980 [weeks].
Definition: data_shared.hpp:167
Definition: data_shared.hpp:250
static const uint8_t DESCRIPTOR_SET
Definition: data_shared.hpp:251
uint64_t dt_nanos
Nanoseconds since the last occurrence of this field in a packet of the same descriptor set and event ...
Definition: data_shared.hpp:256
static const bool HAS_FUNCTION_SELECTOR
Definition: data_shared.hpp:254
static const uint8_t FIELD_DESCRIPTOR
Definition: data_shared.hpp:252
Definition: data_shared.hpp:220
static const uint8_t FIELD_DESCRIPTOR
Definition: data_shared.hpp:222
static const uint8_t DESCRIPTOR_SET
Definition: data_shared.hpp:221
uint64_t nanoseconds
Nanoseconds since initialization.
Definition: data_shared.hpp:226
static const bool HAS_FUNCTION_SELECTOR
Definition: data_shared.hpp:224
Definition: data_shared.hpp:91
uint32_t ticks
Ticks since powerup.
Definition: data_shared.hpp:97
static const bool HAS_FUNCTION_SELECTOR
Definition: data_shared.hpp:95
static const uint8_t DESCRIPTOR_SET
Definition: data_shared.hpp:92
static const uint8_t FIELD_DESCRIPTOR
Definition: data_shared.hpp:93