Browse Source

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

master
Igor Mišić 3 years ago committed by Daniel Agar
parent
commit
d1aec01b86
  1. 10
      src/drivers/uavcan/actuators/esc.cpp
  2. 4
      src/drivers/uavcan/actuators/esc.hpp

10
src/drivers/uavcan/actuators/esc.cpp

@ -132,6 +132,16 @@ UavcanEscController::update_outputs(bool stop_motors, uint16_t outputs[MAX_ACTUA @@ -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)
{

4
src/drivers/uavcan/actuators/esc.hpp

@ -72,9 +72,9 @@ public: @@ -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(); }

Loading…
Cancel
Save