47 #include <uavcan/uavcan.hpp> 48 #include <uavcan/equipment/esc/RawCommand.hpp> 49 #include <uavcan/equipment/esc/Status.hpp> 51 #include <uORB/topics/esc_status.h> 52 #include <uORB/topics/actuator_outputs.h> 63 void update_outputs(
float *outputs,
unsigned num_outputs);
65 void arm_all_escs(
bool arm);
66 void arm_single_esc(
int num,
bool arm);
68 void enable_idle_throttle_when_armed(
bool value) { _run_at_idle_throttle_when_armed = value; }
74 void esc_status_sub_cb(
const uavcan::ReceivedDataStructure<uavcan::equipment::esc::Status> &msg);
79 void orb_pub_timer_cb(
const uavcan::TimerEvent &event);
82 static constexpr
unsigned MAX_RATE_HZ = 200;
83 static constexpr
unsigned ESC_STATUS_UPDATE_RATE_HZ = 10;
84 static constexpr
unsigned UAVCAN_COMMAND_TRANSFER_PRIORITY = 5;
87 void (UavcanEscController::*)(
const uavcan::ReceivedDataStructure<uavcan::equipment::esc::Status>&)>
90 typedef uavcan::MethodBinder<UavcanEscController *, void (UavcanEscController::*)(const uavcan::TimerEvent &)>
94 bool _run_at_idle_throttle_when_armed =
false;
95 esc_status_s _esc_status = {};
102 uavcan::MonotonicTime _prev_cmd_pub;
103 uavcan::INode &_node;
104 uavcan::Publisher<uavcan::equipment::esc::RawCommand> _uavcan_pub_raw_cmd;
105 uavcan::Subscriber<uavcan::equipment::esc::Status, StatusCbBinder> _uavcan_sub_status;
106 uavcan::TimerEventForwarder<TimerCbBinder> _orb_timer;
111 uint32_t _armed_mask = 0;
112 uint8_t _max_number_of_nonzero_outputs = 0;
__BEGIN_DECLS typedef void * orb_advert_t
ORB topic advertiser handle.
Definition: uORB.h:134
count the number of times an event occurs
Definition: perf_counter.h:55
__BEGIN_DECLS __EXPORT perf_counter_t perf_alloc(enum perf_counter_type type, const char *name)
Create a new local counter.
Definition: perf_counter.cpp:123
Performance measuring tools.