log_reader.cpp
Go to the documentation of this file.
1 #include "log_reader.h"
2 
3 using namespace std;
4 
5 static py::object g_python_parent; // Including this inside LogReader class causes problems w/ garbage collection.
6 
8 {
9  dev_log_ = nullptr;
10 }
11 
13 {
14  if (dev_log_ != nullptr)
15  {
16  delete dev_log_;
17  dev_log_ = nullptr;
18  }
19 }
20 
21 template <>
22 void LogReader::log_message(int did, uint8_t* msg, std::vector<gps_raw_wrapper_t>& vec)
23 {
24  gps_raw_t* raw_msg = (gps_raw_t*)msg;
25  switch (raw_msg->dataType)
26  {
28  {
29  std::vector<obsd_t> obs{raw_msg->obsCount};
30  for (int i = 0; i < raw_msg->obsCount; i++)
31  obs.push_back(raw_msg->data.obs[i]);
32  vec[0].obs.push_back(obs);
33  break;
34  }
36  vec[0].eph.push_back(raw_msg->data.eph);
37  break;
39  vec[0].gloEph.push_back(raw_msg->data.gloEph);
40  break;
41  case raw_data_type_sbas:
42  vec[0].sbas.push_back(raw_msg->data.sbas);
43  break;
45  vec[0].sta.push_back(raw_msg->data.sta);
46  break;
48  vec[0].ion.push_back(raw_msg->data.ion);
49  break;
50  default:
51  break;
52  }
53 }
54 
55 template <typename T>
56 void LogReader::forward_message(eDataIDs did, std::vector<T>& vec, int id)
57 {
58  g_python_parent.attr("did_callback")(did, py::array_t<T>(std::vector<ptrdiff_t>{(py::ssize_t)vec.size()}, vec.data()), id);
59 }
60 
61 template <>
62 void LogReader::forward_message(eDataIDs did, std::vector<gps_raw_wrapper_t>& vec, int id)
63 {
64  for (int i = 0; i < (int)vec[0].obs.size(); i++)
65  {
66  g_python_parent.attr("gps_raw_data_callback")(did, py::array_t<obsd_t>(std::vector<ptrdiff_t>{(py::ssize_t)vec[0].obs[i].size()}, vec[0].obs[i].data()), id, (int)raw_data_type_observation);
67  }
68  g_python_parent.attr("gps_raw_data_callback")(did, py::array_t<eph_t>(std::vector<ptrdiff_t>{(py::ssize_t)vec[0].eph.size()}, vec[0].eph.data()), id, (int)raw_data_type_ephemeris);
69  g_python_parent.attr("gps_raw_data_callback")(did, py::array_t<geph_t>(std::vector<ptrdiff_t>{(py::ssize_t)vec[0].gloEph.size()}, vec[0].gloEph.data()), id, (int)raw_data_type_glonass_ephemeris);
70  g_python_parent.attr("gps_raw_data_callback")(did, py::array_t<sbsmsg_t>(std::vector<ptrdiff_t>{(py::ssize_t)vec[0].sbas.size()}, vec[0].sbas.data()), id, (int)raw_data_type_sbas);
71  g_python_parent.attr("gps_raw_data_callback")(did, py::array_t<ion_model_utc_alm_t>(std::vector<ptrdiff_t>{(py::ssize_t)vec[0].ion.size()}, vec[0].ion.data()), id, (int)raw_data_type_ionosphere_model_utc_alm);
72  g_python_parent.attr("gps_raw_data_callback")(did, py::array_t<sta_t>(std::vector<ptrdiff_t>{(py::ssize_t)vec[0].sta.size()}, vec[0].sta.data()), id, (int)raw_data_type_base_station_antenna_position);
73 }
74 
75 
76 bool LogReader::init(py::object python_class, std::string log_directory, py::list serials)
77 {
78  vector<string> stl_serials = serials.cast<vector<string>>();
79  cout << "loading DAT file from " << log_directory << endl;
80  cout << "reading serial numbers ";
81  for (int i = 0; i < (int)stl_serials.size(); i++)
82  cout << stl_serials[i] << "\n";
83  cout << endl;
84 
85  // first try DAT files, if that doesn't work, then try SDAT files
86  if (!logger_.LoadFromDirectory(log_directory, cISLogger::LOGTYPE_DAT, stl_serials))
87  {
88  cout << "unable to find DAT files, trying SDATS";
89  if (!logger_.LoadFromDirectory(log_directory, cISLogger::LOGTYPE_SDAT, stl_serials))
90  cout << "Unable to load files" << endl;
91  }
92 
93  cout << "found " << logger_.GetDeviceCount() << " devices\n";
94  for (int i = 0; i < (int)logger_.GetDeviceCount(); i++)
95  {
96  cout << logger_.GetDeviceInfo(i)->serialNumber << "\t";
97  }
98  cout << endl;
99 
100  // python_parent_ = python_class;
101  g_python_parent = python_class;
102  return true;
103 }
104 
105 void LogReader::organizeData(int device_id)
106 {
107  p_data_t* data = NULL;
108  while ((data = logger_.ReadData(device_id)))
109  {
110  // if (data->hdr.id == DID_DEV_INFO)
111  // volatile int debug = 0;
112 
113  if (data->hdr.size == 0)
114  continue;
115 
116  switch (data->hdr.id)
117  {
118 
119  // This is a helper macro, simply define the DID you want to forward,
120  // as well as the datatype of that DID. So long as the data type
121  // has been defined in the PYBIND11_NUMPY_DTYPE macros below,
122  // then this will work. It uses templates to abstract a lot
123  // of the tedium of this type of work
124  #define HANDLE_MSG(DID, vec) \
125  case DID: \
126  log_message(data->hdr.id, data->buf, vec); \
127  break;
128 
129  HANDLE_MSG( DID_DEV_INFO, dev_log_->devInfo );
130  HANDLE_MSG( DID_SYS_FAULT, dev_log_->sysFault );
131  HANDLE_MSG( DID_PREINTEGRATED_IMU, dev_log_->preintegratedImu );
132  HANDLE_MSG( DID_INS_1, dev_log_->ins1 );
133  HANDLE_MSG( DID_INS_2, dev_log_->ins2 );
134  HANDLE_MSG( DID_GPS1_UBX_POS, dev_log_->gps1UbxPos );
135  HANDLE_MSG( DID_SYS_CMD, dev_log_->sysCmd );
136  // HANDLE_MSG( DID_ASCII_BCAST_PERIOD, dev_log_->asciiBcastPeriod );
137  // HANDLE_MSG( DID_RMC, dev_log_->rmc );
138  HANDLE_MSG( DID_SYS_PARAMS, dev_log_->sysParams );
139  HANDLE_MSG( DID_SYS_SENSORS, dev_log_->sysSensors );
140  HANDLE_MSG( DID_FLASH_CONFIG, dev_log_->flashConfig );
141  HANDLE_MSG( DID_GPS1_POS, dev_log_->gps1Pos );
142  HANDLE_MSG( DID_GPS2_POS, dev_log_->gps2Pos );
143  HANDLE_MSG( DID_GPS1_SAT, dev_log_->gps1Sat );
144  HANDLE_MSG( DID_GPS2_SAT, dev_log_->gps2Sat );
145  HANDLE_MSG( DID_GPS1_VERSION, dev_log_->gps1Version );
146  HANDLE_MSG( DID_GPS2_VERSION, dev_log_->gps2Version );
147  HANDLE_MSG( DID_MAG_CAL, dev_log_->magCal );
148  HANDLE_MSG( DID_INTERNAL_DIAGNOSTIC, dev_log_->internalDiagnostic );
149  HANDLE_MSG( DID_GPS1_RTK_POS_REL, dev_log_->gps1RtkPosRel );
150  HANDLE_MSG( DID_GPS1_RTK_POS_MISC, dev_log_->gps1RtkPosMisc );
151  HANDLE_MSG( DID_GPS2_RTK_CMP_REL, dev_log_->gps1RtkCmpRel );
152  HANDLE_MSG( DID_GPS2_RTK_CMP_MISC, dev_log_->gps1RtkCmpMisc );
153  // HANDLE_MSG( DID_FEATURE_BITS, dev_log_->featureBits );
154  // HANDLE_MSG( DID_SENSORS_IS1, dev_log_->sensorsIs1 );
155  // HANDLE_MSG( DID_SENSORS_IS2, dev_log_->sensorsIs2 );
156  // HANDLE_MSG( DID_SENSORS_TC_BIAS, dev_log_->sensorsTcBias );
157  HANDLE_MSG( DID_IO, dev_log_->io );
158  // HANDLE_MSG( DID_SENSORS_ADC, dev_log_->sensorsAdc );
159  // HANDLE_MSG( DID_SCOMP, dev_log_->scomp );
160  HANDLE_MSG( DID_GPS1_VEL, dev_log_->gps1Vel );
161  HANDLE_MSG( DID_GPS2_VEL, dev_log_->gps2Vel );
162  // HANDLE_MSG( DID_HDW_PARAMS, dev_log_->hdwParams );
163  // HANDLE_MSG( DID_NVR_MANAGE_USERPAGE, dev_log_->nvrManageUserpage );
164  // HANDLE_MSG( DID_NVR_USERPAGE_SN, dev_log_->nvrUserpageSn );
165  // HANDLE_MSG( DID_NVR_USERPAGE_G0, dev_log_->nvrUserpageG0 );
166  // HANDLE_MSG( DID_NVR_USERPAGE_G1, dev_log_->nvrUserpageG1 );
167  // HANDLE_MSG( DID_RTOS_INFO, dev_log_->rtosInfo );
168  HANDLE_MSG( DID_DEBUG_STRING, dev_log_->debugString );
169  HANDLE_MSG( DID_DEBUG_ARRAY, dev_log_->debugArray );
170  HANDLE_MSG( DID_SENSORS_CAL1, dev_log_->sensorsCal1 );
171  HANDLE_MSG( DID_SENSORS_CAL2, dev_log_->sensorsCal2 );
172  // HANDLE_MSG( DID_CAL_SC, dev_log_->calSc );
173  // HANDLE_MSG( DID_CAL_SC1, dev_log_->calSc1 );
174  // HANDLE_MSG( DID_CAL_SC2, dev_log_->calSc2 );
175  HANDLE_MSG( DID_SYS_SENSORS_SIGMA, dev_log_->sysSensorsSigma );
176  HANDLE_MSG( DID_SENSORS_ADC_SIGMA, dev_log_->sensorsAdcSigma );
177  // HANDLE_MSG( DID_INS_DEV_1, dev_log_->insDev1 );
178  HANDLE_MSG( DID_INL2_STATES, dev_log_->inl2States );
179  HANDLE_MSG( DID_INL2_STATUS, dev_log_->inl2Status );
180  // HANDLE_MSG( DID_INL2_MISC, dev_log_->inl2Misc );
181  HANDLE_MSG( DID_MAGNETOMETER_1, dev_log_->magnetometer );
182  HANDLE_MSG( DID_MAGNETOMETER_2, dev_log_->magnetometer );
183  HANDLE_MSG( DID_BAROMETER, dev_log_->barometer );
184  HANDLE_MSG( DID_GPS1_RTK_POS, dev_log_->gps1RtkPos );
185  HANDLE_MSG( DID_DUAL_IMU_RAW, dev_log_->dualImuRaw );
186  HANDLE_MSG( DID_DUAL_IMU, dev_log_->dualImu );
187  HANDLE_MSG( DID_INL2_MAG_OBS_INFO, dev_log_->inl2MagObsInfo );
188  HANDLE_MSG( DID_GPS_BASE_RAW, dev_log_->gpsBaseRaw );
189  // HANDLE_MSG( DID_GPS_RTK_OPT, dev_log_->gpsRtkOpt );
190  HANDLE_MSG( DID_MANUFACTURING_INFO, dev_log_->manufacturingInfo );
191  HANDLE_MSG( DID_BIT, dev_log_->bit );
192  HANDLE_MSG( DID_INS_3, dev_log_->ins3 );
193  HANDLE_MSG( DID_INS_4, dev_log_->ins4 );
194  HANDLE_MSG( DID_INL2_NED_SIGMA, dev_log_->inl2NedSigma );
195  HANDLE_MSG( DID_STROBE_IN_TIME, dev_log_->strobeInTime );
196  HANDLE_MSG( DID_GPS1_RAW, dev_log_->gps1Raw );
197  HANDLE_MSG( DID_GPS2_RAW, dev_log_->gps2Raw );
198  HANDLE_MSG( DID_WHEEL_ENCODER, dev_log_->wheelEncoder );
199  // HANDLE_MSG( DID_WHEEL_ENCODER_CONFIG, dev_log_->wheelEncoderConfig );
200  HANDLE_MSG( DID_DIAGNOSTIC_MESSAGE, dev_log_->diagnosticMessage );
201  HANDLE_MSG( DID_SURVEY_IN, dev_log_->surveyIn );
202  // HANDLE_MSG( DID_EVB2, dev_log_->evb2 );
203  // HANDLE_MSG( DID_PORT_MONITOR, dev_log_->portMonitor );
204  // HANDLE_MSG( DID_RTK_STATE, dev_log_->rtkState);
205  HANDLE_MSG( DID_RTK_CODE_RESIDUAL, dev_log_->rtkCodeResidual);
206  HANDLE_MSG( DID_RTK_PHASE_RESIDUAL, dev_log_->rtkPhaseResidual);
207  HANDLE_MSG( DID_RTK_DEBUG, dev_log_->rtkDebug);
208  // HANDLE_MSG( DID_RTK_DEBUG_2, dev_log_->rtkDebug2);
209 
210  default:
211  // printf("Unhandled IS message DID: %d\n", message_type);
212  break;
213  }
214  }
215 }
216 
218 {
219  forward_message( DID_DEV_INFO, dev_log_->devInfo , id);
220  forward_message( DID_SYS_FAULT, dev_log_->sysFault, id );
221  forward_message( DID_PREINTEGRATED_IMU, dev_log_->preintegratedImu, id );
222  forward_message( DID_INS_1, dev_log_->ins1, id );
223  forward_message( DID_INS_2, dev_log_->ins2, id );
224  forward_message( DID_GPS1_UBX_POS, dev_log_->gps1UbxPos, id );
225  forward_message( DID_SYS_CMD, dev_log_->sysCmd, id );
226  // forward_message( DID_ASCII_BCAST_PERIOD, dev_log_->asciiBcastPeriod, id );
227  // forward_message( DID_RMC, dev_log_->rmc, id );
228  forward_message( DID_SYS_PARAMS, dev_log_->sysParams, id );
229  forward_message( DID_SYS_SENSORS, dev_log_->sysSensors, id );
230  forward_message( DID_FLASH_CONFIG, dev_log_->flashConfig, id );
231  forward_message( DID_GPS1_POS, dev_log_->gps1Pos, id );
232  forward_message( DID_GPS2_POS, dev_log_->gps2Pos, id );
233  forward_message( DID_GPS1_SAT, dev_log_->gps1Sat, id );
234  forward_message( DID_GPS2_SAT, dev_log_->gps2Sat, id );
235  forward_message( DID_GPS1_VERSION, dev_log_->gps1Version, id );
236  forward_message( DID_GPS2_VERSION, dev_log_->gps2Version, id );
237  forward_message( DID_MAG_CAL, dev_log_->magCal, id );
238  forward_message( DID_INTERNAL_DIAGNOSTIC, dev_log_->internalDiagnostic, id );
239  forward_message( DID_GPS1_RTK_POS_REL, dev_log_->gps1RtkPosRel, id );
240  forward_message( DID_GPS1_RTK_POS_MISC, dev_log_->gps1RtkPosMisc, id );
241  forward_message( DID_GPS2_RTK_CMP_REL, dev_log_->gps1RtkCmpRel, id );
242  forward_message( DID_GPS2_RTK_CMP_MISC, dev_log_->gps1RtkCmpMisc, id );
243  // forward_message( DID_FEATURE_BITS, dev_log_->featureBits, id );
244  // forward_message( DID_SENSORS_IS1, dev_log_->sensorsIs1, id );
245  // forward_message( DID_SENSORS_IS2, dev_log_->sensorsIs2, id );
246  // forward_message( DID_SENSORS_TC_BIAS, dev_log_->sensorsTcBias, id );
247  forward_message( DID_IO, dev_log_->io, id );
248  // forward_message( DID_SENSORS_ADC, dev_log_->sensorsAdc, id );
249  // forward_message( DID_SCOMP, dev_log_->scomp, id );
250  forward_message( DID_GPS1_VEL, dev_log_->gps1Vel, id );
251  forward_message( DID_GPS2_VEL, dev_log_->gps2Vel, id );
252  // forward_message( DID_HDW_PARAMS, dev_log_->hdwParams, id );
253  // forward_message( DID_NVR_MANAGE_USERPAGE, dev_log_->nvrManageUserpage, id );
254  // forward_message( DID_NVR_USERPAGE_SN, dev_log_->nvrUserpageSn, id );
255  // forward_message( DID_NVR_USERPAGE_G0, dev_log_->nvrUserpageG0, id );
256  // forward_message( DID_NVR_USERPAGE_G1, dev_log_->nvrUserpageG1, id );
257  // forward_message( DID_RTOS_INFO, dev_log_->rtosInfo, id );
258  forward_message( DID_DEBUG_STRING, dev_log_->debugString, id );
259  forward_message( DID_DEBUG_ARRAY, dev_log_->debugArray, id );
260  forward_message( DID_SENSORS_CAL1, dev_log_->sensorsCal1, id );
261  forward_message( DID_SENSORS_CAL2, dev_log_->sensorsCal2, id );
262  // forward_message( DID_CAL_SC, dev_log_->calSc, id );
263  // forward_message( DID_CAL_SC1, dev_log_->calSc1, id );
264  // forward_message( DID_CAL_SC2, dev_log_->calSc2, id );
265  forward_message( DID_SYS_SENSORS_SIGMA, dev_log_->sysSensorsSigma, id );
266  forward_message( DID_SENSORS_ADC_SIGMA, dev_log_->sensorsAdcSigma, id );
267  // forward_message( DID_INS_DEV_1, dev_log_->insDev1, id );
268  forward_message( DID_INL2_STATES, dev_log_->inl2States, id );
269  forward_message( DID_INL2_STATUS, dev_log_->inl2Status, id );
270  // forward_message( DID_INL2_MISC, dev_log_->inl2Misc, id );
271  forward_message( DID_MAGNETOMETER_1, dev_log_->magnetometer, id );
272  forward_message( DID_MAGNETOMETER_2, dev_log_->magnetometer, id );
273  forward_message( DID_BAROMETER, dev_log_->barometer, id );
274  forward_message( DID_GPS1_RTK_POS, dev_log_->gps1RtkPos, id );
275  forward_message( DID_DUAL_IMU_RAW, dev_log_->dualImuRaw, id );
276  forward_message( DID_DUAL_IMU, dev_log_->dualImu, id );
277  forward_message( DID_INL2_MAG_OBS_INFO, dev_log_->inl2MagObsInfo, id );
278  forward_message( DID_GPS_BASE_RAW, dev_log_->gpsBaseRaw, id );
279  // forward_message( DID_GPS_RTK_OPT, dev_log_->gpsRtkOpt, id );
280  forward_message( DID_MANUFACTURING_INFO, dev_log_->manufacturingInfo, id );
281  forward_message( DID_BIT, dev_log_->bit, id );
282  forward_message( DID_INS_3, dev_log_->ins3, id );
283  forward_message( DID_INS_4, dev_log_->ins4, id );
284  forward_message( DID_INL2_NED_SIGMA, dev_log_->inl2NedSigma, id );
285  forward_message( DID_STROBE_IN_TIME, dev_log_->strobeInTime, id );
286  forward_message( DID_GPS1_RAW, dev_log_->gps1Raw, id );
287  forward_message( DID_GPS2_RAW, dev_log_->gps2Raw, id );
288  forward_message( DID_WHEEL_ENCODER, dev_log_->wheelEncoder, id );
289  // forward_message( DID_WHEEL_ENCODER_CONFIG, dev_log_->wheelEncoderConfig, id );
290  forward_message( DID_DIAGNOSTIC_MESSAGE, dev_log_->diagnosticMessage, id );
291  forward_message( DID_SURVEY_IN, dev_log_->surveyIn, id );
292  // forward_message( DID_EVB2, dev_log_->evb2, id );
293  // forward_message( DID_PORT_MONITOR, dev_log_->portMonitor, id );
294 
295  // forward_message( DID_RTK_STATE, dev_log_->rtkState, id);
296  forward_message( DID_RTK_CODE_RESIDUAL, dev_log_->rtkCodeResidual, id);
297  forward_message( DID_RTK_PHASE_RESIDUAL, dev_log_->rtkPhaseResidual, id);
298  forward_message( DID_RTK_DEBUG, dev_log_->rtkDebug, id);
299  // forward_message( DID_RTK_DEBUG_2, dev_log_->rtkDebug2, id);
300 }
301 
303 {
304  for (int i = 0; i < (int)logger_.GetDeviceCount(); i++)
305  {
306  if (dev_log_ != nullptr)
307  {
308  delete dev_log_;
309  }
310  dev_log_ = new DeviceLog();
311 
312  organizeData(i);
313  forwardData(i);
314  }
315 
316  return true;
317 }
318 
320 {
321  // Nasty hack
322  exit(0);
323 }
324 
325 // Look at the pybind documentation to understand what is going on here.
326 // Don't change anything unless you know what you are doing
327 PYBIND11_MODULE(log_reader, m) {
328  // Declare a module (the .so file compiled by CMake needs to have the same
329  // name as defined here. Don't change the name without changing the related
330  // lines in the CmakeLists.txt file. We can import this module in python
331  // with "import log_reader" so long as the log_reader.so file is in the python path
332  m.doc() = "log_reader";
333 
334  // Bind the Interface Class
335  py::class_<LogReader>(m, "LogReader") // The object will be named IS_Comm in python
336  .def(py::init<>()) // constructor
337  .def("init", &LogReader::init)
338  .def("load", &LogReader::load)
339  .def("exitHack", &LogReader::exitHack);
340 
341 #include "pybindMacros.h"
342 }
#define DID_SURVEY_IN
Definition: data_sets.h:107
#define DID_DUAL_IMU
Definition: data_sets.h:92
#define DID_MANUFACTURING_INFO
Definition: data_sets.h:97
void log_message(int did, uint8_t *msg, std::vector< T > &vec)
Definition: log_reader.h:137
static py::object g_python_parent
Definition: log_reader.cpp:5
bool load()
Definition: log_reader.cpp:302
#define DID_SENSORS_CAL1
Definition: data_sets.h:74
#define DID_GPS1_VEL
Definition: data_sets.h:64
uint32_t id
Definition: ISComm.h:375
#define DID_INS_1
Definition: data_sets.h:38
uint32_t size
Definition: ISComm.h:378
#define DID_GPS2_RTK_CMP_REL
Definition: data_sets.h:125
#define DID_BIT
Definition: data_sets.h:98
obsd_t obs[MAX_OBSERVATION_COUNT_IN_RTK_MESSAGE]
Definition: data_sets.h:2766
uGpsRawData data
Definition: data_sets.h:2803
#define DID_GPS1_UBX_POS
Definition: data_sets.h:40
#define DID_DEV_INFO
Definition: data_sets.h:35
#define DID_INS_2
Definition: data_sets.h:39
#define NULL
Definition: nm_bsp.h:52
uint32_t eDataIDs
Definition: data_sets.h:32
#define DID_GPS2_VERSION
Definition: data_sets.h:52
#define DID_PREINTEGRATED_IMU
Definition: data_sets.h:37
#define DID_SYS_PARAMS
Definition: data_sets.h:44
#define DID_DEBUG_STRING
Definition: data_sets.h:71
#define DID_GPS_BASE_RAW
Definition: data_sets.h:94
#define DID_MAG_CAL
Definition: data_sets.h:53
bool init(py::object python_class, std::string log_directory, pybind11::list serials)
Definition: log_reader.cpp:76
#define DID_MAGNETOMETER_2
Definition: data_sets.h:89
std::ostream & cout()
#define DID_GPS1_VERSION
Definition: data_sets.h:51
#define DID_GPS1_SAT
Definition: data_sets.h:49
#define DID_SYS_FAULT
Definition: data_sets.h:36
void forward_message(eDataIDs did, std::vector< T > &vec, int id)
#define DID_SYS_CMD
Definition: data_sets.h:41
#define DID_GPS2_RAW
Definition: data_sets.h:104
#define DID_GPS2_RTK_CMP_MISC
Definition: data_sets.h:126
#define DID_GPS1_RAW
Definition: data_sets.h:103
#define DID_FLASH_CONFIG
Definition: data_sets.h:46
#define DID_RTK_DEBUG
Definition: data_sets.h:113
#define DID_GPS2_POS
Definition: data_sets.h:48
#define DID_DIAGNOSTIC_MESSAGE
Definition: data_sets.h:106
#define DID_SYS_SENSORS_SIGMA
Definition: data_sets.h:79
sta_t sta
Definition: data_sets.h:2778
eph_t eph
Definition: data_sets.h:2769
p_data_hdr_t hdr
Definition: ISComm.h:388
#define DID_MAGNETOMETER_1
Definition: data_sets.h:86
#define DID_RTK_CODE_RESIDUAL
Definition: data_sets.h:112
USBInterfaceDescriptor data
#define DID_GPS1_POS
Definition: data_sets.h:47
#define DID_SYS_SENSORS
Definition: data_sets.h:45
#define DID_INL2_MAG_OBS_INFO
Definition: data_sets.h:93
#define DID_GPS2_SAT
Definition: data_sets.h:50
void forwardData(int id)
Definition: log_reader.cpp:217
#define DID_INS_3
Definition: data_sets.h:99
#define DID_DUAL_IMU_RAW
Definition: data_sets.h:91
#define DID_WHEEL_ENCODER
Definition: data_sets.h:105
#define DID_GPS1_RTK_POS
Definition: data_sets.h:88
#define DID_STROBE_IN_TIME
Definition: data_sets.h:102
PYBIND11_MODULE(log_reader, m)
Definition: log_reader.cpp:327
#define DID_INL2_STATUS
Definition: data_sets.h:84
ion_model_utc_alm_t ion
Definition: data_sets.h:2781
#define DID_INL2_NED_SIGMA
Definition: data_sets.h:101
#define HANDLE_MSG(DID, vec)
#define DID_SENSORS_CAL2
Definition: data_sets.h:75
#define DID_GPS1_RTK_POS_REL
Definition: data_sets.h:55
void exitHack()
Definition: log_reader.cpp:319
geph_t gloEph
Definition: data_sets.h:2772
#define DID_INTERNAL_DIAGNOSTIC
Definition: data_sets.h:54
uint8_t obsCount
Definition: data_sets.h:2797
uint8_t dataType
Definition: data_sets.h:2794
#define DID_DEBUG_ARRAY
Definition: data_sets.h:73
#define DID_INS_4
Definition: data_sets.h:100
void organizeData(int device_id)
Definition: log_reader.cpp:105
#define DID_BAROMETER
Definition: data_sets.h:87
#define DID_GPS2_VEL
Definition: data_sets.h:65
#define DID_INL2_STATES
Definition: data_sets.h:82
#define DID_RTK_PHASE_RESIDUAL
Definition: data_sets.h:111
#define DID_GPS1_RTK_POS_MISC
Definition: data_sets.h:56
sbsmsg_t sbas
Definition: data_sets.h:2775
#define DID_SENSORS_ADC_SIGMA
Definition: data_sets.h:80
#define DID_IO
Definition: data_sets.h:61


inertial_sense_ros
Author(s):
autogenerated on Sat Sep 19 2020 03:19:04