Skip to content

Commit 2a70a93

Browse files
authored
Enable CI for "differential" & "servo" demos (#30)
1 parent 365dbc7 commit 2a70a93

File tree

7 files changed

+37
-39
lines changed

7 files changed

+37
-39
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848

4949
- name: get nunavut
5050
run: >
51-
pip install nunavut
51+
pip install git+https://github.com/OpenCyphal/nunavut[email protected]
5252
5353
- name: Configure CMake
5454
run: cmake -B ${{github.workspace}}/libudpard_demo/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} ${{github.workspace}}/libudpard_demo
@@ -57,7 +57,6 @@ jobs:
5757
run: cmake --build ${{github.workspace}}/libudpard_demo/build --config ${{env.BUILD_TYPE}}
5858

5959
build_differential_pressure_sensor:
60-
if: false
6160
name: Build Differential Pressure Sensor demo
6261
runs-on: ubuntu-latest
6362

@@ -68,7 +67,7 @@ jobs:
6867

6968
- name: get nunavut
7069
run: >
71-
pip install nunavut
70+
pip install git+https://github.com/OpenCyphal/nunavut[email protected]
7271
7372
- name: Configure CMake
7473
run: cmake -B ${{github.workspace}}/differential_pressure_sensor/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} ${{github.workspace}}/differential_pressure_sensor
@@ -78,7 +77,6 @@ jobs:
7877

7978

8079
build_udral_servo:
81-
if: false
8280
name: Build UDRAL Servo demo
8381
runs-on: ubuntu-latest
8482

@@ -89,7 +87,7 @@ jobs:
8987

9088
- name: get nunavut
9189
run: >
92-
pip install nunavut
90+
pip install git+https://github.com/OpenCyphal/nunavut[email protected]
9391
9492
- name: Configure CMake
9593
run: cmake -B ${{github.workspace}}/udral_servo/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} ${{github.workspace}}/udral_servo

.gitmodules

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@
1616
[submodule "submodules/libcyphal"]
1717
path = submodules/libcyphal
1818
url = https://github.com/OpenCyphal-Garage/libcyphal.git
19-
branch = sshirokov/type_name
19+
branch = sshirokov/async_destroy

differential_pressure_sensor/src/main.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ static void handleFastLoop(State* const state, const CanardMicrosecond monotonic
188188
uavcan_si_unit_pressure_Scalar_1_0 msg = {0};
189189
msg._pascal = (float) rand() * 0.1F; // TODO: sample data from the real sensor.
190190
// Serialize and publish the message:
191-
uint8_t serialized[uavcan_si_unit_pressure_Scalar_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
191+
uint8_t serialized[uavcan_si_unit_pressure_Scalar_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_];
192192
size_t serialized_size = sizeof(serialized);
193193
const int8_t err = uavcan_si_unit_pressure_Scalar_1_0_serialize_(&msg, &serialized[0], &serialized_size);
194194
assert(err >= 0);
@@ -226,8 +226,8 @@ static void handle1HzLoop(State* const state, const CanardMicrosecond monotonic_
226226
heartbeat.health.value = uavcan_node_Health_1_0_NOMINAL;
227227
}
228228

229-
uint8_t serialized[uavcan_node_Heartbeat_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
230-
size_t serialized_size = sizeof(serialized);
229+
uint8_t serialized[uavcan_node_Heartbeat_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_];
230+
size_t serialized_size = sizeof(serialized);
231231
const int8_t err = uavcan_node_Heartbeat_1_0_serialize_(&heartbeat, &serialized[0], &serialized_size);
232232
assert(err >= 0);
233233
if (err >= 0)
@@ -259,7 +259,7 @@ static void handle1HzLoop(State* const state, const CanardMicrosecond monotonic_
259259
uavcan_pnp_NodeIDAllocationData_2_0 msg = {0};
260260
msg.node_id.value = UINT16_MAX;
261261
getUniqueID(msg.unique_id);
262-
uint8_t serialized[uavcan_pnp_NodeIDAllocationData_2_0_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
262+
uint8_t serialized[uavcan_pnp_NodeIDAllocationData_2_0_SERIALIZATION_BUFFER_SIZE_BYTES_];
263263
size_t serialized_size = sizeof(serialized);
264264
const int8_t err = uavcan_pnp_NodeIDAllocationData_2_0_serialize_(&msg, &serialized[0], &serialized_size);
265265
assert(err >= 0);
@@ -287,7 +287,7 @@ static void handle1HzLoop(State* const state, const CanardMicrosecond monotonic_
287287
uavcan_si_unit_temperature_Scalar_1_0 msg = {0};
288288
msg.kelvin = (float) rand() * 0.01F; // TODO: sample data from the real sensor.
289289
// Serialize and publish the message:
290-
uint8_t serialized[uavcan_si_unit_temperature_Scalar_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
290+
uint8_t serialized[uavcan_si_unit_temperature_Scalar_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_];
291291
size_t serialized_size = sizeof(serialized);
292292
const int8_t err = uavcan_si_unit_temperature_Scalar_1_0_serialize_(&msg, &serialized[0], &serialized_size);
293293
assert(err >= 0);
@@ -365,8 +365,8 @@ static void handle01HzLoop(State* const state, const CanardMicrosecond monotonic
365365
fillServers(state->canard.rx_subscriptions[CanardTransferKindRequest], &m.servers);
366366
fillServers(state->canard.rx_subscriptions[CanardTransferKindResponse], &m.clients); // For regularity.
367367

368-
// Serialize and publish the message. Use a small buffer because we know that our message is always small.
369-
uint8_t serialized[512] = {0}; // https://github.com/OpenCyphal/nunavut/issues/191
368+
// Serialize and publish the message. Use a smaller buffer if you know that message is always small.
369+
uint8_t serialized[uavcan_node_port_List_0_1_SERIALIZATION_BUFFER_SIZE_BYTES_];
370370
size_t serialized_size = uavcan_node_port_List_0_1_SERIALIZATION_BUFFER_SIZE_BYTES_;
371371
if (uavcan_node_port_List_0_1_serialize_(&m, &serialized[0], &serialized_size) >= 0)
372372
{
@@ -544,7 +544,7 @@ static void processReceivedTransfer(State* const state, const CanardRxTransfer*
544544
{
545545
// The request object is empty so we don't bother deserializing it. Just send the response.
546546
const uavcan_node_GetInfo_Response_1_0 resp = processRequestNodeGetInfo();
547-
uint8_t serialized[uavcan_node_GetInfo_Response_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
547+
uint8_t serialized[uavcan_node_GetInfo_Response_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_];
548548
size_t serialized_size = sizeof(serialized);
549549
const int8_t res = uavcan_node_GetInfo_Response_1_0_serialize_(&resp, &serialized[0], &serialized_size);
550550
if (res >= 0)
@@ -567,7 +567,7 @@ static void processReceivedTransfer(State* const state, const CanardRxTransfer*
567567
if (uavcan_register_Access_Request_1_0_deserialize_(&req, transfer->payload, &size) >= 0)
568568
{
569569
const uavcan_register_Access_Response_1_0 resp = processRequestRegisterAccess(&req);
570-
uint8_t serialized[uavcan_register_Access_Response_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
570+
uint8_t serialized[uavcan_register_Access_Response_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_];
571571
size_t serialized_size = sizeof(serialized);
572572
if (uavcan_register_Access_Response_1_0_serialize_(&resp, &serialized[0], &serialized_size) >= 0)
573573
{
@@ -586,7 +586,7 @@ static void processReceivedTransfer(State* const state, const CanardRxTransfer*
586586
if (uavcan_register_List_Request_1_0_deserialize_(&req, transfer->payload, &size) >= 0)
587587
{
588588
const uavcan_register_List_Response_1_0 resp = {.name = registerGetNameByIndex(req.index)};
589-
uint8_t serialized[uavcan_register_List_Response_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
589+
uint8_t serialized[uavcan_register_List_Response_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_];
590590
size_t serialized_size = sizeof(serialized);
591591
if (uavcan_register_List_Response_1_0_serialize_(&resp, &serialized[0], &serialized_size) >= 0)
592592
{
@@ -605,7 +605,7 @@ static void processReceivedTransfer(State* const state, const CanardRxTransfer*
605605
if (uavcan_node_ExecuteCommand_Request_1_1_deserialize_(&req, transfer->payload, &size) >= 0)
606606
{
607607
const uavcan_node_ExecuteCommand_Response_1_1 resp = processRequestExecuteCommand(&req);
608-
uint8_t serialized[uavcan_node_ExecuteCommand_Response_1_1_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
608+
uint8_t serialized[uavcan_node_ExecuteCommand_Response_1_1_SERIALIZATION_BUFFER_SIZE_BYTES_];
609609
size_t serialized_size = sizeof(serialized);
610610
if (uavcan_node_ExecuteCommand_Response_1_1_serialize_(&resp, &serialized[0], &serialized_size) >= 0)
611611
{

libudpard_demo/src/main.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -456,8 +456,8 @@ static void cbOnNodeIDAllocationData(struct Subscriber* const self, struct Udpar
456456
(void) fprintf(stderr, "RPC dispatcher start failed: %i\n", rpc_start_res);
457457
}
458458
} // Otherwise, it's a response destined to another node, or it's a malformed message.
459-
} // Otherwise, the message is malformed.
460-
} // Otherwise, it's a request from another allocation client node, or we already have a node-ID.
459+
} // Otherwise, the message is malformed.
460+
} // Otherwise, it's a request from another allocation client node, or we already have a node-ID.
461461
}
462462

463463
static void cbOnMyData(struct Subscriber* const self, struct UdpardRxTransfer* const transfer)

shared/register/register.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ void registerRead(const char* const register_name, uavcan_register_Value_1_0* co
3535
FILE* const fp = registerOpen(&register_name[0], false);
3636
if (fp != NULL)
3737
{
38-
uint8_t serialized[uavcan_register_Value_1_0_EXTENT_BYTES_] = {0};
38+
uint8_t serialized[uavcan_register_Value_1_0_EXTENT_BYTES_];
3939
size_t sr_size = fread(&serialized[0], 1U, uavcan_register_Value_1_0_EXTENT_BYTES_, fp);
4040
(void) fclose(fp);
4141
uavcan_register_Value_1_0 out = {0};
@@ -54,9 +54,9 @@ void registerRead(const char* const register_name, uavcan_register_Value_1_0* co
5454

5555
void registerWrite(const char* const register_name, const uavcan_register_Value_1_0* const value)
5656
{
57-
uint8_t serialized[uavcan_register_Value_1_0_EXTENT_BYTES_] = {0};
58-
size_t sr_size = uavcan_register_Value_1_0_EXTENT_BYTES_;
59-
const int8_t err = uavcan_register_Value_1_0_serialize_(value, serialized, &sr_size);
57+
uint8_t serialized[uavcan_register_Value_1_0_EXTENT_BYTES_];
58+
size_t sr_size = uavcan_register_Value_1_0_EXTENT_BYTES_;
59+
const int8_t err = uavcan_register_Value_1_0_serialize_(value, serialized, &sr_size);
6060
if (err >= 0)
6161
{
6262
FILE* const fp = registerOpen(&register_name[0], true);

udral_servo/src/main.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ static void handleFastLoop(State* const state, const CanardMicrosecond monotonic
244244
// If there are any hardware or configuration issues, report them here:
245245
msg.heartbeat.health.value = uavcan_node_Health_1_0_NOMINAL;
246246
// Serialize and publish the message:
247-
uint8_t serialized[reg_udral_service_actuator_common_Feedback_0_1_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
247+
uint8_t serialized[reg_udral_service_actuator_common_Feedback_0_1_SERIALIZATION_BUFFER_SIZE_BYTES_];
248248
size_t serialized_size = sizeof(serialized);
249249
const int8_t err =
250250
reg_udral_service_actuator_common_Feedback_0_1_serialize_(&msg, &serialized[0], &serialized_size);
@@ -275,8 +275,8 @@ static void handleFastLoop(State* const state, const CanardMicrosecond monotonic
275275
msg.value.kinematics.acceleration.meter_per_second_per_second = state->servo.acceleration;
276276
msg.value.force.newton = state->servo.force;
277277
// Serialize and publish the message:
278-
uint8_t serialized[reg_udral_physics_dynamics_translation_LinearTs_0_1_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
279-
size_t serialized_size = sizeof(serialized);
278+
uint8_t serialized[reg_udral_physics_dynamics_translation_LinearTs_0_1_SERIALIZATION_BUFFER_SIZE_BYTES_];
279+
size_t serialized_size = sizeof(serialized);
280280
const int8_t err =
281281
reg_udral_physics_dynamics_translation_LinearTs_0_1_serialize_(&msg, &serialized[0], &serialized_size);
282282
assert(err >= 0);
@@ -303,8 +303,8 @@ static void handleFastLoop(State* const state, const CanardMicrosecond monotonic
303303
msg.value.current.ampere = 20.315F;
304304
msg.value.voltage.volt = 51.3F;
305305
// Serialize and publish the message:
306-
uint8_t serialized[reg_udral_physics_dynamics_translation_LinearTs_0_1_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
307-
size_t serialized_size = sizeof(serialized);
306+
uint8_t serialized[reg_udral_physics_dynamics_translation_LinearTs_0_1_SERIALIZATION_BUFFER_SIZE_BYTES_];
307+
size_t serialized_size = sizeof(serialized);
308308
const int8_t err = reg_udral_physics_electricity_PowerTs_0_1_serialize_(&msg, &serialized[0], &serialized_size);
309309
assert(err >= 0);
310310
if (err >= 0)
@@ -341,8 +341,8 @@ static void handle1HzLoop(State* const state, const CanardMicrosecond monotonic_
341341
heartbeat.health.value = uavcan_node_Health_1_0_NOMINAL;
342342
}
343343

344-
uint8_t serialized[uavcan_node_Heartbeat_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
345-
size_t serialized_size = sizeof(serialized);
344+
uint8_t serialized[uavcan_node_Heartbeat_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_];
345+
size_t serialized_size = sizeof(serialized);
346346
const int8_t err = uavcan_node_Heartbeat_1_0_serialize_(&heartbeat, &serialized[0], &serialized_size);
347347
assert(err >= 0);
348348
if (err >= 0)
@@ -374,7 +374,7 @@ static void handle1HzLoop(State* const state, const CanardMicrosecond monotonic_
374374
uavcan_pnp_NodeIDAllocationData_2_0 msg = {0};
375375
msg.node_id.value = UINT16_MAX;
376376
getUniqueID(msg.unique_id);
377-
uint8_t serialized[uavcan_pnp_NodeIDAllocationData_2_0_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
377+
uint8_t serialized[uavcan_pnp_NodeIDAllocationData_2_0_SERIALIZATION_BUFFER_SIZE_BYTES_];
378378
size_t serialized_size = sizeof(serialized);
379379
const int8_t err = uavcan_pnp_NodeIDAllocationData_2_0_serialize_(&msg, &serialized[0], &serialized_size);
380380
assert(err >= 0);
@@ -403,7 +403,7 @@ static void handle1HzLoop(State* const state, const CanardMicrosecond monotonic_
403403
// Publish the servo status -- this is a low-rate message with low-severity diagnostics.
404404
reg_udral_service_actuator_common_Status_0_1 msg = {0};
405405
// TODO: POPULATE THE MESSAGE: temperature, errors, etc.
406-
uint8_t serialized[reg_udral_service_actuator_common_Status_0_1_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
406+
uint8_t serialized[reg_udral_service_actuator_common_Status_0_1_SERIALIZATION_BUFFER_SIZE_BYTES_];
407407
size_t serialized_size = sizeof(serialized);
408408
const int8_t err =
409409
reg_udral_service_actuator_common_Status_0_1_serialize_(&msg, &serialized[0], &serialized_size);
@@ -500,8 +500,8 @@ static void handle01HzLoop(State* const state, const CanardMicrosecond monotonic
500500
fillServers(state->canard.rx_subscriptions[CanardTransferKindRequest], &m.servers);
501501
fillServers(state->canard.rx_subscriptions[CanardTransferKindResponse], &m.clients); // For regularity.
502502

503-
// Serialize and publish the message. Use a small buffer because we know that our message is always small.
504-
uint8_t serialized[512] = {0}; // https://github.com/OpenCyphal/nunavut/issues/191
503+
// Serialize and publish the message. Use a smaller buffer if you know that message is always small.
504+
uint8_t serialized[uavcan_node_port_List_0_1_SERIALIZATION_BUFFER_SIZE_BYTES_];
505505
size_t serialized_size = uavcan_node_port_List_0_1_SERIALIZATION_BUFFER_SIZE_BYTES_;
506506
if (uavcan_node_port_List_0_1_serialize_(&m, &serialized[0], &serialized_size) >= 0)
507507
{
@@ -721,7 +721,7 @@ static void processReceivedTransfer(State* const state, const CanardRxTransfer*
721721
{
722722
// The request object is empty so we don't bother deserializing it. Just send the response.
723723
const uavcan_node_GetInfo_Response_1_0 resp = processRequestNodeGetInfo();
724-
uint8_t serialized[uavcan_node_GetInfo_Response_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
724+
uint8_t serialized[uavcan_node_GetInfo_Response_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_];
725725
size_t serialized_size = sizeof(serialized);
726726
const int8_t res = uavcan_node_GetInfo_Response_1_0_serialize_(&resp, &serialized[0], &serialized_size);
727727
if (res >= 0)
@@ -740,7 +740,7 @@ static void processReceivedTransfer(State* const state, const CanardRxTransfer*
740740
if (uavcan_register_Access_Request_1_0_deserialize_(&req, transfer->payload, &size) >= 0)
741741
{
742742
const uavcan_register_Access_Response_1_0 resp = processRequestRegisterAccess(&req);
743-
uint8_t serialized[uavcan_register_Access_Response_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
743+
uint8_t serialized[uavcan_register_Access_Response_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_];
744744
size_t serialized_size = sizeof(serialized);
745745
if (uavcan_register_Access_Response_1_0_serialize_(&resp, &serialized[0], &serialized_size) >= 0)
746746
{
@@ -755,7 +755,7 @@ static void processReceivedTransfer(State* const state, const CanardRxTransfer*
755755
if (uavcan_register_List_Request_1_0_deserialize_(&req, transfer->payload, &size) >= 0)
756756
{
757757
const uavcan_register_List_Response_1_0 resp = {.name = registerGetNameByIndex(req.index)};
758-
uint8_t serialized[uavcan_register_List_Response_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
758+
uint8_t serialized[uavcan_register_List_Response_1_0_SERIALIZATION_BUFFER_SIZE_BYTES_];
759759
size_t serialized_size = sizeof(serialized);
760760
if (uavcan_register_List_Response_1_0_serialize_(&resp, &serialized[0], &serialized_size) >= 0)
761761
{
@@ -770,7 +770,7 @@ static void processReceivedTransfer(State* const state, const CanardRxTransfer*
770770
if (uavcan_node_ExecuteCommand_Request_1_1_deserialize_(&req, transfer->payload, &size) >= 0)
771771
{
772772
const uavcan_node_ExecuteCommand_Response_1_1 resp = processRequestExecuteCommand(&req);
773-
uint8_t serialized[uavcan_node_ExecuteCommand_Response_1_1_SERIALIZATION_BUFFER_SIZE_BYTES_] = {0};
773+
uint8_t serialized[uavcan_node_ExecuteCommand_Response_1_1_SERIALIZATION_BUFFER_SIZE_BYTES_];
774774
size_t serialized_size = sizeof(serialized);
775775
if (uavcan_node_ExecuteCommand_Response_1_1_serialize_(&resp, &serialized[0], &serialized_size) >= 0)
776776
{

0 commit comments

Comments
 (0)