@@ -9,39 +9,63 @@ void CanardInterface::init(void* mem_arena, size_t mem_arena_size) {
99
1010bool CanardInterface::broadcast (const Transfer &bcast_transfer) {
1111 // do canard broadcast
12- return canardBroadcast (&canard,
13- bcast_transfer.data_type_signature ,
14- bcast_transfer.data_type_id ,
15- bcast_transfer.inout_transfer_id ,
16- bcast_transfer.priority ,
17- bcast_transfer.payload ,
18- bcast_transfer.payload_len ) > 0 ;
12+ CanardTxTransfer tx_transfer = {
13+ .transfer_type = bcast_transfer.transfer_type ,
14+ .data_type_signature = bcast_transfer.data_type_signature ,
15+ .data_type_id = bcast_transfer.data_type_id ,
16+ .inout_transfer_id = bcast_transfer.inout_transfer_id ,
17+ .priority = bcast_transfer.priority ,
18+ .payload = (const uint8_t *)bcast_transfer.payload ,
19+ .payload_len = bcast_transfer.payload_len ,
20+ #if CANARD_ENABLE_CANFD
21+ .canfd = bcast_transfer.canfd ,
22+ #endif
23+ #if CANARD_MULTI_IFACE
24+ .iface_mask = uint8_t ((1 <<num_ifaces) - 1 ),
25+ #endif
26+ };
27+
28+ return canardBroadcastObj (&canard, &tx_transfer) > 0 ;
1929}
2030
2131bool CanardInterface::request (uint8_t destination_node_id, const Transfer &req_transfer) {
2232 // do canard request
23- return canardRequestOrRespond (&canard,
24- destination_node_id,
25- req_transfer.data_type_signature ,
26- req_transfer.data_type_id ,
27- req_transfer.inout_transfer_id ,
28- req_transfer.priority ,
29- CanardRequest,
30- req_transfer.payload ,
31- req_transfer.payload_len ) > 0 ;
33+ CanardTxTransfer tx_transfer = {
34+ .transfer_type = req_transfer.transfer_type ,
35+ .data_type_signature = req_transfer.data_type_signature ,
36+ .data_type_id = req_transfer.data_type_id ,
37+ .inout_transfer_id = req_transfer.inout_transfer_id ,
38+ .priority = req_transfer.priority ,
39+ .payload = (const uint8_t *)req_transfer.payload ,
40+ .payload_len = req_transfer.payload_len ,
41+ #if CANARD_ENABLE_CANFD
42+ .canfd = req_transfer.canfd ,
43+ #endif
44+ #if CANARD_MULTI_IFACE
45+ .iface_mask = uint8_t ((1 <<num_ifaces) - 1 ),
46+ #endif
47+ };
48+ return canardRequestOrRespondObj (&canard, destination_node_id, &tx_transfer) > 0 ;
3249}
3350
3451bool CanardInterface::respond (uint8_t destination_node_id, const Transfer &res_transfer) {
3552 // do canard respond
36- return canardRequestOrRespond (&canard,
37- destination_node_id,
38- res_transfer.data_type_signature ,
39- res_transfer.data_type_id ,
40- res_transfer.inout_transfer_id ,
41- res_transfer.priority ,
42- CanardResponse,
43- res_transfer.payload ,
44- res_transfer.payload_len ) > 0 ;
53+ CanardTxTransfer tx_transfer = {
54+ .transfer_type = res_transfer.transfer_type ,
55+ .data_type_signature = res_transfer.data_type_signature ,
56+ .data_type_id = res_transfer.data_type_id ,
57+ .inout_transfer_id = res_transfer.inout_transfer_id ,
58+ .priority = res_transfer.priority ,
59+ .payload = (const uint8_t *)res_transfer.payload ,
60+ .payload_len = res_transfer.payload_len ,
61+ #if CANARD_ENABLE_CANFD
62+ .canfd = res_transfer.canfd ,
63+ #endif
64+ #if CANARD_MULTI_IFACE
65+ .iface_mask = uint8_t ((1 <<num_ifaces) - 1 ),
66+ #endif
67+ };
68+ return canardRequestOrRespondObj (&canard, destination_node_id, &tx_transfer) > 0 ;
4569}
4670
4771void CanardInterface::handle_frame (const CanardCANFrame &frame, uint64_t timestamp_usec) {
0 commit comments