uavcan/actuators: stop update esc status if there is no UAVCAN ESCs

This commit is contained in:
Igor Mišić 2021-10-08 13:49:01 +02:00 committed by Daniel Agar
parent aa96e39306
commit d1aec01b86
2 changed files with 12 additions and 2 deletions

View File

@ -132,6 +132,16 @@ UavcanEscController::update_outputs(bool stop_motors, uint16_t outputs[MAX_ACTUA
_uavcan_pub_raw_cmd.broadcast(msg);
}
void
UavcanEscController::set_rotor_count(uint8_t count)
{
_rotor_count = count;
if (_rotor_count != 0u) {
_orb_timer.startPeriodic(uavcan::MonotonicDuration::fromMSec(1000 / ESC_STATUS_UPDATE_RATE_HZ));
}
}
void
UavcanEscController::esc_status_sub_cb(const uavcan::ReceivedDataStructure<uavcan::equipment::esc::Status> &msg)
{

View File

@ -72,9 +72,9 @@ public:
void update_outputs(bool stop_motors, uint16_t outputs[MAX_ACTUATORS], unsigned num_outputs);
/**
* Sets the number of rotors
* Sets the number of rotors and enable timer
*/
void set_rotor_count(uint8_t count) { _rotor_count = count; }
void set_rotor_count(uint8_t count);
static int max_output_value() { return uavcan::equipment::esc::RawCommand::FieldTypes::cmd::RawValueType::max(); }