Skip to content

Commit 5b899ff

Browse files
authored
Merge pull request #48 from 107-systems/uavcan-v1.0
Updating to libcanard v1.0
2 parents c6440b7 + 3eab238 commit 5b899ff

31 files changed

+2009
-907
lines changed

README.md

Lines changed: 4 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
[![General Formatting Checks](https://github.com/107-systems/107-Arduino-UAVCAN/workflows/General%20Formatting%20Checks/badge.svg)](https://github.com/107-systems/107-Arduino-UAVCAN/actions?workflow=General+Formatting+Checks)
88
[![Spell Check](https://github.com/107-systems/107-Arduino-UAVCAN/workflows/Spell%20Check/badge.svg)](https://github.com/107-systems/107-Arduino-UAVCAN/actions?workflow=Spell+Check)
99

10-
Arduino library for providing a convenient C++ interface for accessing [UAVCAN](https://uavcan.org/) ([v1.0-alpha](https://uavcan.org/specification/UAVCAN_Specification_v1.0-alpha.pdf)) utilizing [libcanard](https://github.com/UAVCAN/libcanard).
10+
Arduino library for providing a convenient C++ interface for accessing [UAVCAN](https://uavcan.org/) ([v1.0-beta](https://uavcan.org/specification/UAVCAN_Specification_v1.0-beta.pdf)) utilizing [libcanard](https://github.com/UAVCAN/libcanard).
1111

1212
<p align="center">
1313
<a href="https://github.com/107-systems/107-Arduino-Viper"><img src="extras/logo/viper-logo.jpg" width="40%"></a>
@@ -17,30 +17,7 @@ This library works for
1717
* [ArduinoCore-samd](https://github.com/arduino/ArduinoCore-samd): [`Arduino Zero`](https://store.arduino.cc/arduino-zero), [`MKR 1000`](https://store.arduino.cc/arduino-mkr1000-wifi), [`MKR WiFi 1010`](https://store.arduino.cc/arduino-mkr-wifi-1010), [`Nano 33 IoT`](https://store.arduino.cc/arduino-nano-33-iot), [`MKR GSM 1400`](https://store.arduino.cc/arduino-mkr-gsm-1400-1415), [`MKR NB 1500`](https://store.arduino.cc/arduino-mkr-nb-1500-1413), [`MKR WAN 1300/1310`](https://store.arduino.cc/mkr-wan-1310) :heavy_check_mark:
1818
* [ArduinoCore-mbed](https://github.com/arduino/ArduinoCore-mbed): [`Portenta H7`](https://store.arduino.cc/portenta-h7), [`Nano 33 BLE`](https://store.arduino.cc/arduino-nano-33-ble) :heavy_check_mark:
1919

20-
## Example
21-
### Subscribe
22-
```C++
23-
#include <ArduinoUAVCAN.h>
24-
/* ... */
25-
ArduinoUAVCAN uavcan(13, nullptr);
26-
/* ... */
27-
void setup() {
28-
/* ... */
29-
uavcan.subscribe<Heartbeat_1_0>(onHeatbeat_1_0_Received);
30-
}
31-
/* ... */
32-
void onHeatbeat_1_0_Received(CanardTransfer const & transfer, ArduinoUAVCAN & /* uavcan */)
33-
{
34-
Heartbeat_1_0 const hb = Heartbeat_1_0::create(transfer);
35-
36-
char msg[64];
37-
snprintf(msg, 64, "ID %02X, Uptime = %d, Health = %d, Mode = %d, VSSC = %d", transfer.remote_node_id, hb.data.uptime, hb.data.health, hb.data.mode, hb.data.vendor_specific_status_code);
38-
39-
Serial.println(msg);
40-
}
41-
```
42-
43-
### Publish
20+
### Example
4421
```C++
4522
#include <ArduinoUAVCAN.h>
4623
/* ... */
@@ -69,86 +46,5 @@ bool transmitCanFrame(CanardFrame const & frame) {
6946
}
7047
```
7148
72-
### Service Client
73-
```C++
74-
#include <ArduinoUAVCAN.h>
75-
/* ... */
76-
ArduinoUAVCAN uavcan(13, transmitCanFrame);
77-
/* ... */
78-
void setup() {
79-
/* ... */
80-
/* Request some coffee. */
81-
char const cmd_param[] = "I want a double espresso with cream";
82-
ExecuteCommand_1_0::Request req:
83-
req.data.command = 0xCAFE;
84-
req.data.parameter_length = std::min(cmd_param.length(), uavcan_node_ExecuteCommand_1_0_Request_parameter_array_capacity());
85-
std::copy(cmd_param.c_str(), cmd_param.c_str() + req.data.parameter_length, req.data.parameter);
86-
87-
uavcan.request<ExecuteCommand_1_0::Request, ExecuteCommand_1_0::Response>(req, 27 /* remote node id */, onExecuteCommand_1_0_Response_Received);
88-
}
89-
90-
void loop() {
91-
/* Transmit all enqeued CAN frames */
92-
while(uavcan.transmitCanFrame()) { }
93-
}
94-
/* ... */
95-
void onExecuteCommand_1_0_Response_Received(CanardTransfer const & transfer, ArduinoUAVCAN & /* uavcan */) {
96-
ExecuteCommand_1_0::Response const rsp = ExecuteCommand_1_0::Response::create(transfer);
97-
98-
if (rsp.data.status == ExecuteCommand_1_0::Response::Status::SUCCESS)
99-
Serial.println("Coffee successful retrieved");
100-
else
101-
Serial.println("Error when retrieving coffee");
102-
}
103-
/* ... */
104-
bool transmitCanFrame(CanardFrame const & frame) {
105-
/* ... */
106-
}
107-
```
108-
109-
110-
### Service Server
111-
```C++
112-
#include <ArduinoUAVCAN.h>
113-
/* ... */
114-
ArduinoUAVCAN uavcan(13, transmitCanFrame);
115-
/* ... */
116-
void setup() {
117-
/* ... */
118-
/* Subscribe to incoming service requests */
119-
uavcan.subscribe<ExecuteCommand_1_0::Request>(onExecuteCommand_1_0_Request_Received);
120-
}
121-
122-
void loop() {
123-
/* Transmit all enqeued CAN frames */
124-
while(uavcan.transmitCanFrame()) { }
125-
}
126-
/* ... */
127-
void onExecuteCommand_1_0_Request_Received(CanardTransfer const & transfer, ArduinoUAVCAN & uavcan) {
128-
ExecuteCommand_1_0::Request req = ExecuteCommand_1_0::Request::create(transfer);
129-
ExecuteCommand_1_0::Response rsp;
130-
131-
if (req.command() == 0xCAFE) {
132-
rsp = ExecuteCommand_1_0::Response::Status::SUCCESS;
133-
uavcan.respond(rsp, transfer.remote_node_id, transfer.transfer_id);
134-
} else {
135-
rsp = ExecuteCommand_1_0::Response::Status::NOT_AUTHORIZED;
136-
uavcan.respond(rsp, transfer.remote_node_id, transfer.transfer_id);
137-
}
138-
}
139-
/* ... */
140-
bool transmitCanFrame(CanardFrame const & frame) {
141-
/* ... */
142-
}
143-
```
144-
145-
### How to generate C header files from DSDL via nunavut/nnvg
146-
```bash
147-
cd ~
148-
https://github.com/UAVCAN/nunavut && cd nunavut
149-
python3.8 -m pip install .
150-
151-
cd ~
152-
git clone https://github.com/UAVCAN/public_regulated_data_types && cd public_regulated_data_types
153-
nnvg --outdir include --templates c_jinja --pp-trim-trailing-whitespace -e .h uavcan
154-
```
49+
### Contribution
50+
Please take a look at the [wiki](https://github.com/107-systems/107-Arduino-UAVCAN/wiki) for notes pertaining development of `107-Arduino-UAVCAN`.

examples/UAVCAN-Heartbeat-Subscribe/UAVCAN-Heartbeat-Subscribe.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ void onReceiveBufferFull(CanardFrame const & frame)
109109

110110
void onHeatbeat_1_0_Received(CanardTransfer const & transfer, ArduinoUAVCAN & /* uavcan */)
111111
{
112-
Heartbeat_1_0 const hb = Heartbeat_1_0::create(transfer);
112+
Heartbeat_1_0 const hb = Heartbeat_1_0::deserialize(transfer);
113113

114114
char msg[64];
115115
snprintf(msg, 64,

examples/UAVCAN-Service-Client/UAVCAN-Service-Client.ino

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,10 @@ void setup()
7575
char const cmd_param[] = "I want a double espresso with cream";
7676
ExecuteCommand_1_0::Request req;
7777
req.data.command = 0xCAFE;
78-
req.data.parameter_length = std::min(sizeof(cmd_param), uavcan_node_ExecuteCommand_1_0_Request_parameter_array_capacity());
79-
std::copy(cmd_param, cmd_param + req.data.parameter_length, req.data.parameter);
78+
req.data.parameter.count = std::min(strlen(cmd_param), (size_t)uavcan_node_ExecuteCommand_Request_1_0_parameter_ARRAY_CAPACITY_);
79+
std::copy(cmd_param,
80+
cmd_param + req.data.parameter.count,
81+
req.data.parameter.elements);
8082

8183
uavcan.request<ExecuteCommand_1_0::Request, ExecuteCommand_1_0::Response>(req, 27 /* remote node id */, onExecuteCommand_1_0_Response_Received);
8284
}
@@ -123,7 +125,7 @@ bool transmitCanFrame(CanardFrame const & frame)
123125

124126
void onExecuteCommand_1_0_Response_Received(CanardTransfer const & transfer, ArduinoUAVCAN & /* uavcan */)
125127
{
126-
ExecuteCommand_1_0::Response const rsp = ExecuteCommand_1_0::Response::create(transfer);
128+
ExecuteCommand_1_0::Response const rsp = ExecuteCommand_1_0::Response::deserialize(transfer);
127129

128130
if (rsp.data.status == arduino::_107_::uavcan::to_integer(ExecuteCommand_1_0::Response::Status::SUCCESS))
129131
Serial.println("Coffee successful retrieved");

examples/UAVCAN-Service-Server/UAVCAN-Service-Server.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ bool transmitCanFrame(CanardFrame const & frame)
117117

118118
void onExecuteCommand_1_0_Request_Received(CanardTransfer const & transfer, ArduinoUAVCAN & uavcan)
119119
{
120-
ExecuteCommand_1_0::Request req = ExecuteCommand_1_0::Request::create(transfer);
120+
ExecuteCommand_1_0::Request req = ExecuteCommand_1_0::Request::deserialize(transfer);
121121

122122
if (req.data.command == 0xCAFE)
123123
{

extras/test/src/test_ExecuteCommand_ServiceClient.cpp

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ static CanardNodeID const REMOTE_NODE_ID = 27;
2727
**************************************************************************************/
2828

2929
static util::CanFrameVect can_frame_vect;
30-
static uavcan_node_ExecuteCommand_1_0_Response response;
30+
static uavcan_node_ExecuteCommand_Response_1_0 response;
3131

3232
/**************************************************************************************
3333
* PRIVATE FUNCTION DEFINITION
@@ -43,7 +43,7 @@ static bool transmitCanFrame(CanardFrame const & f)
4343

4444
static void onExecuteCommand_1_0_Response_Received(CanardTransfer const & transfer, ArduinoUAVCAN & /* uavcan */)
4545
{
46-
ExecuteCommand_1_0::Response const received_response = ExecuteCommand_1_0::Response::create(transfer);
46+
ExecuteCommand_1_0::Response const received_response = ExecuteCommand_1_0::Response::deserialize(transfer);
4747
response.status = received_response.data.status;
4848
}
4949

@@ -53,14 +53,16 @@ static void onExecuteCommand_1_0_Response_Received(CanardTransfer const & transf
5353

5454
TEST_CASE("A '435.ExecuteCommand.1.0' request is sent to a server", "[execute-command-client-01]")
5555
{
56-
uavcan_node_ExecuteCommand_1_0_Response_init(&response);
56+
uavcan_node_ExecuteCommand_Response_1_0_initialize_(&response);
5757
ArduinoUAVCAN uavcan(util::LOCAL_NODE_ID, transmitCanFrame);
5858

5959
std::string const cmd_1_param = "I want a double espresso with cream";
6060
ExecuteCommand_1_0::Request req_1;
6161
req_1.data.command = 0xCAFE;
62-
req_1.data.parameter_length = std::min(cmd_1_param.length(), uavcan_node_ExecuteCommand_1_0_Request_parameter_array_capacity());
63-
std::copy(cmd_1_param.c_str(), cmd_1_param.c_str() + req_1.data.parameter_length, req_1.data.parameter);
62+
req_1.data.parameter.count = std::min(cmd_1_param.length(), (size_t)uavcan_node_ExecuteCommand_Request_1_0_parameter_ARRAY_CAPACITY_);
63+
std::copy(cmd_1_param.c_str(),
64+
cmd_1_param.c_str() + req_1.data.parameter.count,
65+
req_1.data.parameter.elements);
6466

6567

6668
REQUIRE(uavcan.request<ExecuteCommand_1_0::Request, ExecuteCommand_1_0::Response>(req_1, REMOTE_NODE_ID, onExecuteCommand_1_0_Response_Received) == true);
@@ -105,8 +107,10 @@ TEST_CASE("A '435.ExecuteCommand.1.0' request is sent to a server", "[execute-co
105107
std::string const cmd_2_param = "I do not need coffee anymore";
106108
ExecuteCommand_1_0::Request req_2;
107109
req_2.data.command = 0xDEAD;
108-
req_2.data.parameter_length = std::min(cmd_2_param.length(), uavcan_node_ExecuteCommand_1_0_Request_parameter_array_capacity());
109-
std::copy(cmd_2_param.c_str(), cmd_2_param.c_str() + req_2.data.parameter_length, req_2.data.parameter);
110+
req_2.data.parameter.count = std::min(cmd_2_param.length(), (size_t)uavcan_node_ExecuteCommand_Request_1_0_parameter_ARRAY_CAPACITY_);
111+
std::copy(cmd_2_param.c_str(),
112+
cmd_2_param.c_str() + req_2.data.parameter.count,
113+
req_2.data.parameter.elements);
110114

111115
REQUIRE(uavcan.request<ExecuteCommand_1_0::Request, ExecuteCommand_1_0::Response>(req_2, REMOTE_NODE_ID, onExecuteCommand_1_0_Response_Received) == true);
112116
/* Transmit all the CAN frames. */

extras/test/src/test_ExecuteCommand_ServiceServer.cpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ static CanardNodeID const REMOTE_NODE_ID = 27;
2727
**************************************************************************************/
2828

2929
static util::CanFrame response_can_frame;
30-
static uavcan_node_ExecuteCommand_1_0_Request request;
30+
static uavcan_node_ExecuteCommand_Request_1_0 request;
3131

3232
/**************************************************************************************
3333
* PRIVATE FUNCTION DEFINITION
@@ -43,14 +43,16 @@ static bool transmitCanFrame(CanardFrame const & f)
4343

4444
static void onExecuteCommand_1_0_Request_Received(CanardTransfer const & transfer, ArduinoUAVCAN & uavcan)
4545
{
46-
ExecuteCommand_1_0::Request received_request = ExecuteCommand_1_0::Request::create(transfer);
46+
ExecuteCommand_1_0::Request received_request = ExecuteCommand_1_0::Request::deserialize(transfer);
4747

4848
/* The next 2 lines are just for test purposes, you won't
4949
* have them in your real application.
5050
*/
5151
request.command = received_request.data.command;
52-
request.parameter_length = received_request.data.parameter_length;
53-
std::copy(received_request.data.parameter, received_request.data.parameter + received_request.data.parameter_length, request.parameter);
52+
request.parameter.count = received_request.data.parameter.count;
53+
std::copy(received_request.data.parameter.elements,
54+
received_request.data.parameter.elements + received_request.data.parameter.count,
55+
request.parameter.elements);
5456

5557
/* Deal with the command ... */
5658

@@ -67,7 +69,7 @@ static void onExecuteCommand_1_0_Request_Received(CanardTransfer const & transfe
6769

6870
TEST_CASE("A '435.ExecuteCommand.1.0' request is received from a client", "[execute-command-server-01]")
6971
{
70-
uavcan_node_ExecuteCommand_1_0_Request_init(&request);
72+
uavcan_node_ExecuteCommand_Request_1_0_initialize_(&request);
7173
ArduinoUAVCAN uavcan(util::LOCAL_NODE_ID, transmitCanFrame);
7274

7375
/* Subscribe to incoming server requests. */
@@ -98,13 +100,13 @@ TEST_CASE("A '435.ExecuteCommand.1.0' request is received from a client", "[exec
98100
REQUIRE(request.command == 0xCAFE);
99101
std::string const EXP_CMD_PARAM_STR = "I want a double espresso with cream";
100102
std::vector<uint8_t> const EXP_CMD_PARAM_VECT(EXP_CMD_PARAM_STR.begin(), EXP_CMD_PARAM_STR.end());
101-
REQUIRE(request.parameter_length == EXP_CMD_PARAM_VECT.size());
102-
REQUIRE(std::equal(EXP_CMD_PARAM_VECT.begin(), EXP_CMD_PARAM_VECT.end(), request.parameter) == true);
103+
REQUIRE(request.parameter.count == EXP_CMD_PARAM_VECT.size());
104+
REQUIRE(std::equal(EXP_CMD_PARAM_VECT.begin(), EXP_CMD_PARAM_VECT.end(), request.parameter.elements) == true);
103105

104106
/* We should now have one CAN frame in the transmit pipeline */
105107
REQUIRE(uavcan.transmitCanFrame() == true);
106108

107109
/* Check if the sent response is identical with what we expect. */
108110
REQUIRE(response_can_frame.id == 0x126CCD8D);
109-
REQUIRE(response_can_frame.data == std::vector<uint8_t>{0x02, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xE0});
111+
REQUIRE(response_can_frame.data == std::vector<uint8_t>{0x02, 0xE0});
110112
}

extras/test/src/test_Heartbeat.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ static bool transmitCanFrame(CanardFrame const & f)
4040

4141
static void onHeatbeat_1_0_Received(CanardTransfer const & transfer, ArduinoUAVCAN & /* uavcan */)
4242
{
43-
Heartbeat_1_0 const received_hb = Heartbeat_1_0::create(transfer);
43+
Heartbeat_1_0 const received_hb = Heartbeat_1_0::deserialize(transfer);
4444

4545
hb_node_id = transfer.remote_node_id;
4646
hb_data.uptime = received_hb.data.uptime;
@@ -65,10 +65,10 @@ TEST_CASE("A '32085.Heartbeat.1.0.uavcan' message is sent", "[heartbeat-01]")
6565
uavcan.publish(hb);
6666
while(uavcan.transmitCanFrame()) { }
6767
/*
68-
* pyuavcan publish 32085.uavcan.node.Heartbeat.1.0 '{uptime: 9876, health: 0, mode: 3, vendor_specific_status_code: 5}' --tr='CAN(can.media.socketcan.SocketCANMedia("vcan0",8),13)'
68+
* pyuavcan publish 7509.uavcan.node.Heartbeat.1.0 '{uptime: 9876, health: {value: 0}, mode: {value: 3}, vendor_specific_status_code: 5}' --tr='CAN(can.media.socketcan.SocketCANMedia("vcan0",8),13)'
6969
*/
7070
REQUIRE(can_frame.id == 0x107D550D);
71-
REQUIRE(can_frame.data == std::vector<uint8_t>{0x94, 0x26, 0x00, 0x00, 0xAC, 0x00, 0x00, 0xE0});
71+
REQUIRE(can_frame.data == std::vector<uint8_t>{0x94, 0x26, 0x00, 0x00, 0x00, 0x03, 0x05, 0xE0});
7272

7373
hb.data.uptime = 9881;
7474
hb = Heartbeat_1_0::Health::ADVISORY;
@@ -77,34 +77,34 @@ TEST_CASE("A '32085.Heartbeat.1.0.uavcan' message is sent", "[heartbeat-01]")
7777
uavcan.publish(hb);
7878
while(uavcan.transmitCanFrame()) { }
7979
/*
80-
* pyuavcan publish 32085.uavcan.node.Heartbeat.1.0 '{uptime: 9881, health: 1, mode: 2, vendor_specific_status_code: 123}' --tr='CAN(can.media.socketcan.SocketCANMedia("vcan0",8),13)'
80+
* pyuavcan publish 7509.uavcan.node.Heartbeat.1.0 '{uptime: 9881, health: {value: 1}, mode: {value: 2}, vendor_specific_status_code: 123}' --tr='CAN(can.media.socketcan.SocketCANMedia("vcan0",8),13)'
8181
*/
8282
REQUIRE(can_frame.id == 0x107D550D);
83-
REQUIRE(can_frame.data == std::vector<uint8_t>{0x99, 0x26, 0x00, 0x00, 0x69, 0x0F, 0x00, 0xE1});
83+
REQUIRE(can_frame.data == std::vector<uint8_t>{0x99, 0x26, 0x00, 0x00, 0x01, 0x02, 0x7B, 0xE1});
8484
}
8585

8686
TEST_CASE("A '32085.Heartbeat.1.0.uavcan' message is received", "[heartbeat-02]")
8787
{
88-
uavcan_node_Heartbeat_1_0_init(&hb_data);
88+
uavcan_node_Heartbeat_1_0_initialize_(&hb_data);
8989
ArduinoUAVCAN uavcan(util::LOCAL_NODE_ID, nullptr);
9090

9191
REQUIRE(uavcan.subscribe<Heartbeat_1_0>(onHeatbeat_1_0_Received));
9292

9393
/* Create:
94-
* pyuavcan publish 32085.uavcan.node.Heartbeat.1.0 '{uptime: 1337, health: 2, mode: 7, vendor_specific_status_code: 42}' --tr='CAN(can.media.socketcan.SocketCANMedia("vcan0",8),59)'
94+
* pyuavcan publish 7509.uavcan.node.Heartbeat.1.0 '{uptime: 1337, health: {value: 2}, mode: {value: 2}, vendor_specific_status_code: 42}' --tr='CAN(can.media.socketcan.SocketCANMedia("vcan0",8),59)'
9595
*
9696
* Capture:
9797
* sudo modprobe vcan
9898
* sudo ip link add dev vcan0 type vcan
9999
* sudo ip link set up vcan0
100100
* candump -decaxta vcan0
101101
*/
102-
std::vector<uint8_t> const data{0x39, 0x05, 0x00, 0x00, 0x5E, 0x05, 0x00, 0xE1};
102+
std::vector<uint8_t> const data{0x39, 0x05, 0x00, 0x00, 0x02, 0x02, 0x2A, 0xE1};
103103
uavcan.onCanFrameReceived(util::toCanardFrame(0x107D553B, data));
104104

105105
REQUIRE(hb_node_id == 59);
106106
REQUIRE(hb_data.uptime == 1337);
107-
REQUIRE(hb_data.health == arduino::_107_::uavcan::to_integer(Heartbeat_1_0::Health::CAUTION));
108-
REQUIRE(hb_data.mode == arduino::_107_::uavcan::to_integer(Heartbeat_1_0::Mode::OFFLINE));
107+
REQUIRE(hb_data.health.value == arduino::_107_::uavcan::to_integer(Heartbeat_1_0::Health::CAUTION));
108+
REQUIRE(hb_data.mode.value == arduino::_107_::uavcan::to_integer(Heartbeat_1_0::Mode::MAINTENANCE));
109109
REQUIRE(hb_data.vendor_specific_status_code == 42);
110110
}

extras/test/src/test_ID.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ static bool transmitCanFrame(CanardFrame const & f)
4444

4545
static void onID_1_0_Received(CanardTransfer const & transfer, ArduinoUAVCAN & /* uavcan */)
4646
{
47-
ID_1_0<ID_PORT_ID> const received_id = ID_1_0<ID_PORT_ID>::create(transfer);
47+
ID_1_0<ID_PORT_ID> const received_id = ID_1_0<ID_PORT_ID>::deserialize(transfer);
4848

4949
id_node_id = transfer.remote_node_id;
5050
id.value = received_id.data.value;
@@ -65,13 +65,13 @@ TEST_CASE("A 'ID.1.0.uavcan' message is sent", "[id-01]")
6565
/*
6666
* pyuavcan publish 1337.uavcan.node.ID.1.0 '{value: 65}' --tr='CAN(can.media.socketcan.SocketCANMedia("vcan0",8),13)'
6767
*/
68-
REQUIRE(can_frame.id == 0x1005390D);
68+
REQUIRE(can_frame.id == 0x1065390D);
6969
REQUIRE(can_frame.data == std::vector<uint8_t>{0x41, 0x00, 0xE0});
7070
}
7171

7272
TEST_CASE("A 'ID.1.0.uavcan' message is received", "[id-02]")
7373
{
74-
uavcan_node_ID_1_0_init(&id);
74+
uavcan_node_ID_1_0_initialize_(&id);
7575
ArduinoUAVCAN uavcan(util::LOCAL_NODE_ID, transmitCanFrame);
7676

7777
REQUIRE(uavcan.subscribe<ID_1_0<ID_PORT_ID>>(onID_1_0_Received));

0 commit comments

Comments
 (0)