From c18c9d03f142209f6f167d87e630aba8508e0b34 Mon Sep 17 00:00:00 2001 From: Ildar Sadykov Date: Thu, 13 Jun 2019 12:30:48 +0300 Subject: [PATCH] CONNECTED_ESC_MAX and NUM_MOTOR_OUTPUTS changed. Maximum numbers of connected ESCs in uORB and in UAVCAN expanded to 16. --- msg/esc_status.msg | 4 ++-- msg/test_motor.msg | 2 +- src/drivers/uavcan/uavcan_main.cpp | 6 ++++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/msg/esc_status.msg b/msg/esc_status.msg index 83a485d19a4d..9421aa65eee2 100644 --- a/msg/esc_status.msg +++ b/msg/esc_status.msg @@ -1,5 +1,5 @@ uint64 timestamp # time since system start (microseconds) -uint8 CONNECTED_ESC_MAX = 8 # The number of ESCs supported. Current (Q2/2013) we support 8 ESCs +uint8 CONNECTED_ESC_MAX = 16 # The number of ESCs supported. Current (Q2/2019) we support 16 ESCs uint8 ESC_VENDOR_GENERIC = 0 # generic ESC uint8 ESC_VENDOR_MIKROKOPTER = 1 # Mikrokopter @@ -17,4 +17,4 @@ uint16 counter # incremented by the writing thread everytime new data is s uint8 esc_count # number of connected ESCs uint8 esc_connectiontype # how ESCs connected to the system -esc_report[8] esc +esc_report[16] esc diff --git a/msg/test_motor.msg b/msg/test_motor.msg index eaad0d74e702..ae58e10c63b7 100644 --- a/msg/test_motor.msg +++ b/msg/test_motor.msg @@ -1,5 +1,5 @@ uint64 timestamp # time since system start (microseconds) -uint8 NUM_MOTOR_OUTPUTS = 8 +uint8 NUM_MOTOR_OUTPUTS = 16 uint32 motor_number # number of motor to spin float32 value # output power, range [0..1] diff --git a/src/drivers/uavcan/uavcan_main.cpp b/src/drivers/uavcan/uavcan_main.cpp index 4d480ca50b7d..e930a2226612 100644 --- a/src/drivers/uavcan/uavcan_main.cpp +++ b/src/drivers/uavcan/uavcan_main.cpp @@ -901,9 +901,11 @@ int UavcanNode::run() } else if (controls_updated && (_mixers != nullptr)) { - // XXX one output group has 8 outputs max, + // XXX one output group has 16 (esc_status_s::CONNECTED_ESC_MAX) outputs max (Q2/2019), // but this driver could well serve multiple groups. - unsigned num_outputs_max = 8; + unsigned num_outputs_max = ( + esc_status_s::CONNECTED_ESC_MAX < static_cast(uavcan::equipment::esc::RawCommand::FieldTypes::cmd::MaxSize) ? + esc_status_s::CONNECTED_ESC_MAX : static_cast(uavcan::equipment::esc::RawCommand::FieldTypes::cmd::MaxSize)); _mixers->set_airmode(_airmode);