From 61ffc6c432276996394dbdea4c626a85612daa06 Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Sat, 6 Aug 2016 16:30:24 +0300 Subject: [PATCH] Fixed implementation of the ESC auto-enumeration feature --- src/modules/uavcan/uavcan_servers.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/modules/uavcan/uavcan_servers.cpp b/src/modules/uavcan/uavcan_servers.cpp index 2fddf0af77..afd92e71e4 100644 --- a/src/modules/uavcan/uavcan_servers.cpp +++ b/src/modules/uavcan/uavcan_servers.cpp @@ -506,6 +506,8 @@ pthread_addr_t UavcanServers::run(pthread_addr_t) _esc_count = 0; beep(_esc_enumeration_active ? 500.0F : 1000.0F, 0.5F); uavcan::protocol::enumeration::Begin::Request req; + // TODO: Incorrect implementation; the parameter name field should be left empty. + // Leaving it as-is to avoid breaking compatibility with non-compliant nodes. req.parameter_name = "esc_index"; req.timeout_sec = _esc_enumeration_active ? 65535 : 0; call_res = _enumeration_client.call(get_next_active_node_id(1), req); @@ -776,6 +778,8 @@ void UavcanServers::cb_enumeration_begin(const uavcan::ServiceCallResult() = i; int call_res = _enumeration_getset_client.call(msg.getSrcNodeID(), req); @@ -868,6 +872,8 @@ void UavcanServers::cb_enumeration_save(const uavcan::ServiceCallResult