forked from Archive/PX4-Autopilot
msg: extend field definition in msg/esc_report (arming & failure states)
Signed-off-by: Claudio Micheli <claudio@auterion.com>
This commit is contained in:
parent
4e091a369d
commit
dc29a994b7
|
@ -5,4 +5,16 @@ float32 esc_voltage # Voltage measured from current ESC [V] - if supported
|
||||||
float32 esc_current # Current measured from current ESC [A] - if supported
|
float32 esc_current # Current measured from current ESC [A] - if supported
|
||||||
uint8 esc_temperature # Temperature measured from current ESC [degC] - if supported
|
uint8 esc_temperature # Temperature measured from current ESC [degC] - if supported
|
||||||
uint8 esc_address # Address of current ESC (in most cases 1-8 / must be set by driver)
|
uint8 esc_address # Address of current ESC (in most cases 1-8 / must be set by driver)
|
||||||
|
|
||||||
uint8 esc_state # State of ESC - depend on Vendor
|
uint8 esc_state # State of ESC - depend on Vendor
|
||||||
|
|
||||||
|
uint8 failures # Bitmask to indicate the internal ESC faults
|
||||||
|
|
||||||
|
uint8 FAILURE_NONE = 0
|
||||||
|
uint8 FAILURE_OVER_CURRENT_MASK = 1 # (1 << 0)
|
||||||
|
uint8 FAILURE_OVER_VOLTAGE_MASK = 2 # (1 << 1)
|
||||||
|
uint8 FAILURE_OVER_TEMPERATURE_MASK = 4 # (1 << 2)
|
||||||
|
uint8 FAILURE_OVER_RPM_MASK = 8 # (1 << 3)
|
||||||
|
uint8 FAILURE_INCONSISTENT_CMD_MASK = 16 # (1 << 4) Set if ESC received an inconsistent command (i.e out of boundaries)
|
||||||
|
uint8 FAILURE_MOTOR_STUCK_MASK = 32 # (1 << 5)
|
||||||
|
uint8 FAILURE_GENERIC_MASK = 64 # (1 << 6)
|
||||||
|
|
|
@ -23,4 +23,6 @@ uint8 esc_online_flags # Bitmask indicating which ESC is online/offline
|
||||||
# esc_online_flags bit 6 : Set to 1 if ESC6 is online
|
# esc_online_flags bit 6 : Set to 1 if ESC6 is online
|
||||||
# esc_online_flags bit 7 : Set to 1 if ESC7 is online
|
# esc_online_flags bit 7 : Set to 1 if ESC7 is online
|
||||||
|
|
||||||
|
uint8 esc_armed_flags # Bitmask indicating which ESC is armed. For ESC's where the arming state is not known (returned by the ESC), the arming bits should always be set.
|
||||||
|
|
||||||
esc_report[8] esc
|
esc_report[8] esc
|
||||||
|
|
|
@ -604,6 +604,7 @@ void DShotOutput::handleNewTelemetryData(int motor_index, const DShotTelemetry::
|
||||||
++esc_status.counter;
|
++esc_status.counter;
|
||||||
// FIXME: mark all ESC's as online, otherwise commander complains even for a single dropout
|
// FIXME: mark all ESC's as online, otherwise commander complains even for a single dropout
|
||||||
esc_status.esc_online_flags = (1 << esc_status.esc_count) - 1;
|
esc_status.esc_online_flags = (1 << esc_status.esc_count) - 1;
|
||||||
|
esc_status.esc_armed_flags = (1 << esc_status.esc_count) - 1;
|
||||||
|
|
||||||
_telemetry->esc_status_pub.update();
|
_telemetry->esc_status_pub.update();
|
||||||
|
|
||||||
|
|
|
@ -611,6 +611,8 @@ MK::task_main()
|
||||||
esc.timestamp = hrt_absolute_time();
|
esc.timestamp = hrt_absolute_time();
|
||||||
esc.esc_count = (uint8_t) _num_outputs;
|
esc.esc_count = (uint8_t) _num_outputs;
|
||||||
esc.esc_connectiontype = esc_status_s::ESC_CONNECTION_TYPE_I2C;
|
esc.esc_connectiontype = esc_status_s::ESC_CONNECTION_TYPE_I2C;
|
||||||
|
esc.esc_online_flags = (1 << esc.esc_count) - 1;
|
||||||
|
esc.esc_armed_flags = (1 << esc.esc_count) - 1;
|
||||||
|
|
||||||
for (unsigned int i = 0; i < _num_outputs; i++) {
|
for (unsigned int i = 0; i < _num_outputs; i++) {
|
||||||
esc.esc[i].esc_address = (uint8_t) BLCTRL_BASE_ADDR + i;
|
esc.esc[i].esc_address = (uint8_t) BLCTRL_BASE_ADDR + i;
|
||||||
|
|
|
@ -573,6 +573,8 @@ void TAP_ESC::cycle()
|
||||||
_esc_feedback.esc_connectiontype = esc_status_s::ESC_CONNECTION_TYPE_SERIAL;
|
_esc_feedback.esc_connectiontype = esc_status_s::ESC_CONNECTION_TYPE_SERIAL;
|
||||||
_esc_feedback.counter++;
|
_esc_feedback.counter++;
|
||||||
_esc_feedback.esc_count = num_outputs;
|
_esc_feedback.esc_count = num_outputs;
|
||||||
|
_esc_feedback.esc_online_flags = (1 << num_outputs) - 1;
|
||||||
|
_esc_feedback.esc_armed_flags = (1 << num_outputs) - 1;
|
||||||
|
|
||||||
_esc_feedback.timestamp = hrt_absolute_time();
|
_esc_feedback.timestamp = hrt_absolute_time();
|
||||||
|
|
||||||
|
|
|
@ -163,6 +163,7 @@ UavcanEscController::orb_pub_timer_cb(const uavcan::TimerEvent &)
|
||||||
_esc_status.counter += 1;
|
_esc_status.counter += 1;
|
||||||
_esc_status.esc_connectiontype = esc_status_s::ESC_CONNECTION_TYPE_CAN;
|
_esc_status.esc_connectiontype = esc_status_s::ESC_CONNECTION_TYPE_CAN;
|
||||||
_esc_status.esc_online_flags = check_escs_status();
|
_esc_status.esc_online_flags = check_escs_status();
|
||||||
|
_esc_status.esc_armed_flags = (1 << _rotor_count) - 1;
|
||||||
|
|
||||||
_esc_status_pub.publish(_esc_status);
|
_esc_status_pub.publish(_esc_status);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue