1
+ #include < cassert>
1
2
#include < iostream>
2
3
#include < tuple>
3
- #include < cassert>
4
4
5
- #include < libsbp/v4/navigation.h>
6
- #include < libsbp/v4/imu.h>
7
- #include < libsbp/v4/mag.h>
8
5
#include < libsbp/cpp/message_traits.h>
6
+ #include < libsbp/imu.h>
7
+ #include < libsbp/mag.h>
8
+ #include < libsbp/navigation.h>
9
9
10
10
using process_msg_t = void (*)(sbp_msg_type_t msg_type, const sbp_msg_t &msg);
11
11
12
12
/* A class used for holding a number of sbp msg structures and, when requested,
13
13
* sending them to a user defined process function */
14
- template <typename ... MessageTypes>
15
- class MessageHolder {
16
- public:
14
+ template <typename ... MessageTypes> class MessageHolder {
15
+ public:
17
16
MessageHolder (process_msg_t process_fn) : process_fn_(process_fn) {}
18
17
19
- template <typename MessageType>
20
- void stage_message (MessageType msg) {
18
+ template <typename MessageType> void stage_message (MessageType msg) {
21
19
std::get<MessageType>(messages_) = msg;
22
20
}
23
21
24
- template <typename MessageType>
25
- void process_message (void ) {
22
+ template <typename MessageType> void process_message (void ) {
26
23
MessageType &msg = std::get<MessageType>(messages_);
27
24
sbp_msg_type_t msg_type = sbp::MessageTraits<MessageType>::id;
28
25
process_fn_ (msg_type, sbp::MessageTraits<MessageType>::to_sbp_msg (msg));
29
26
}
30
27
31
28
process_msg_t process_fn_;
32
- std::tuple<MessageTypes...> messages_;
29
+ std::tuple<MessageTypes...> messages_;
33
30
};
34
31
35
32
void process_message (sbp_msg_type_t msg_type, const sbp_msg_t &msg) {
@@ -47,14 +44,15 @@ void process_message(sbp_msg_type_t msg_type, const sbp_msg_t &msg) {
47
44
/* A super contrived example that shows how the sbp::MessageTraits class might
48
45
* be useful, focusing on its use with templated utility classes.
49
46
*/
50
- int main ()
51
- {
52
- MessageHolder< sbp_msg_gps_time_t , sbp_msg_mag_raw_t , sbp_msg_imu_aux_t > messageHolder (process_message);
47
+ int main () {
48
+ MessageHolder< sbp_msg_gps_time_t , sbp_msg_mag_raw_t , sbp_msg_imu_aux_t >
49
+ messageHolder (process_message);
53
50
54
51
// Construct some structs with dummy data
55
- sbp_msg_gps_time_t time {.wn =1 , .tow =1 , .ns_residual =1 , .flags =1 };
56
- sbp_msg_mag_raw_t mag{.tow =2 , .tow_f =2 , .mag_x =2 , .mag_y =2 , .mag_z =2 };
57
- sbp_msg_imu_aux_t aux{.imu_type =3 , .temp =3 , .imu_conf =3 };
52
+ sbp_msg_gps_time_t time {.wn = 1 , .tow = 1 , .ns_residual = 1 , .flags = 1 };
53
+ sbp_msg_mag_raw_t mag{
54
+ .tow = 2 , .tow_f = 2 , .mag_x = 2 , .mag_y = 2 , .mag_z = 2 };
55
+ sbp_msg_imu_aux_t aux{.imu_type = 3 , .temp = 3 , .imu_conf = 3 };
58
56
59
57
messageHolder.stage_message <sbp_msg_gps_time_t >(time );
60
58
messageHolder.stage_message <sbp_msg_mag_raw_t >(mag);
@@ -66,4 +64,3 @@ int main()
66
64
67
65
return 0 ;
68
66
}
69
-
0 commit comments