11#pragma once
2- #include < cstdint>
3- #include < string>
4- #include " image.h"
2+ #include " infinite_sense.h"
3+
54namespace infinite_sense {
6- struct ImuData {
7- uint64_t time_stamp_us;
8- float temperature;
9- std::string name;
10- float a[3 ];
11- float g[3 ];
12- float q[4 ];
13- };
145
15- struct CamData {
16- uint64_t time_stamp_us;
17- std::string name;
18- GMat image;
6+ inline void ProcessTriggerData (const nlohmann::json &data) {
7+ if (data[" f" ] != " t" ) {
8+ return ;
9+ }
10+ const uint64_t time_stamp = data[" t" ];
11+ const uint16_t status = data[" s" ];
12+ const uint64_t count =data[" c" ];
13+ SET_LAST_TRIGGER_STATUS (time_stamp, status);
1914};
2015
21- struct LaserData {
22- uint64_t time_stamp_us;
23- std::string name;
16+ inline void ProcessIMUData (const nlohmann::json &data) {
17+ if (data[" f" ] != " imu" ) {
18+ return ;
19+ }
20+ ImuData imu{};
21+ const uint64_t time_stamp = data[" t" ];
22+ const uint64_t count = data[" c" ];
23+ imu.time_stamp_us = time_stamp;
24+ // std::cout << imu.time_stamp_us << std::endl;
25+ imu.a [0 ] = data[" d" ][0 ];
26+ imu.a [1 ] = data[" d" ][1 ];
27+ imu.a [2 ] = data[" d" ][2 ];
28+ imu.g [0 ] = data[" d" ][3 ];
29+ imu.g [1 ] = data[" d" ][4 ];
30+ imu.g [2 ] = data[" d" ][5 ];
31+ imu.temperature = data[" d" ][6 ];
32+ imu.q [0 ] = data[" q" ][0 ];
33+ imu.q [1 ] = data[" q" ][1 ];
34+ imu.q [2 ] = data[" q" ][2 ];
35+ imu.q [3 ] = data[" q" ][3 ];
36+ Messenger::GetInstance ().PubStruct (" imu1" ,&imu,sizeof (imu));
2437};
2538
26- struct GPSData {
27- uint64_t time_stamp_us;
28- uint64_t gps_stamp_us;
29- uint64_t gps_stamp_us_trigger;
30- std::string name;
31- float latitude;
32- float longitude;
39+ inline void ProcessGPSData (const nlohmann::json &data) {
40+ if (data[" f" ] != " GNGGA" ) {
41+ return ;
42+ }
43+ GPSData gps{};
44+ gps.latitude = data[" d" ][0 ];
45+ gps.longitude = data[" d" ][1 ];
46+ gps.gps_stamp_us = data[" d" ][2 ];
47+ gps.gps_stamp_us_trigger = data[" d" ][3 ];
48+ gps.time_stamp_us = data[" t" ];
49+ Messenger::GetInstance ().PubStruct (" gps" ,&gps,sizeof (gps));
3350};
3451
35- enum TriggerDevice {
36- IMU_1 = 0 , // internal imu
37- IMU_2 = 1 , // external imu
38- CAM_1 = 2 , // camera 1
39- CAM_2 = 3 , // camera 2
40- CAM_3 = 4 , // camera 3
41- CAM_4 = 5 , // camera 4
42- LASER = 6 , // laser pps
43- GPS = 7 , // gps pps
52+
53+ inline void ProcessLOGData (const nlohmann::json &data) {
54+ if (data[" f" ] != " log" ) {
55+ return ;
56+ }
57+ LOG (data[" l" ]) << data[" msg" ];
4458};
45- } // namespace infinite_sense
59+
60+ } // namespace infinite_sense
0 commit comments