mirror of https://github.com/ArduPilot/ardupilot
AP_RPM: add writing to outbound ESC_Telem
This commit is contained in:
parent
15b8700a2c
commit
d8e9379289
|
@ -199,6 +199,10 @@ void AP_RPM::update(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
drivers[i]->update();
|
drivers[i]->update();
|
||||||
|
|
||||||
|
#if AP_RPM_ESC_TELEM_OUTBOUND_ENABLED
|
||||||
|
drivers[i]->update_esc_telem_outbound();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,16 @@ const AP_Param::GroupInfo AP_RPM_Params::var_info[] = {
|
||||||
// @User: Advanced
|
// @User: Advanced
|
||||||
AP_GROUPINFO("ESC_MASK", 7, AP_RPM_Params, esc_mask, 0),
|
AP_GROUPINFO("ESC_MASK", 7, AP_RPM_Params, esc_mask, 0),
|
||||||
|
|
||||||
|
#if AP_RPM_ESC_TELEM_OUTBOUND_ENABLED
|
||||||
|
// @Param: ESC_INDEX
|
||||||
|
// @DisplayName: ESC Telemetry Index to write RPM to
|
||||||
|
// @Description: ESC Telemetry Index to write RPM to. Use 0 to disable.
|
||||||
|
// @Range: 0 10
|
||||||
|
// @Increment: 1
|
||||||
|
// @User: Advanced
|
||||||
|
AP_GROUPINFO("ESC_INDEX", 8, AP_RPM_Params, esc_telem_outbound_index, 0),
|
||||||
|
#endif
|
||||||
|
|
||||||
AP_GROUPEND
|
AP_GROUPEND
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
*/
|
*/
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <AP_Param/AP_Param.h>
|
#include <AP_Param/AP_Param.h>
|
||||||
|
#include "AP_RPM_config.h"
|
||||||
|
|
||||||
class AP_RPM_Params {
|
class AP_RPM_Params {
|
||||||
|
|
||||||
|
@ -29,6 +30,9 @@ public:
|
||||||
AP_Float minimum;
|
AP_Float minimum;
|
||||||
AP_Float quality_min;
|
AP_Float quality_min;
|
||||||
AP_Int32 esc_mask;
|
AP_Int32 esc_mask;
|
||||||
|
#if AP_RPM_ESC_TELEM_OUTBOUND_ENABLED
|
||||||
|
AP_Int8 esc_telem_outbound_index;
|
||||||
|
#endif
|
||||||
|
|
||||||
static const struct AP_Param::GroupInfo var_info[];
|
static const struct AP_Param::GroupInfo var_info[];
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include <AP_EFI/AP_EFI_config.h>
|
#include <AP_EFI/AP_EFI_config.h>
|
||||||
#include <AP_Generator/AP_Generator_config.h>
|
#include <AP_Generator/AP_Generator_config.h>
|
||||||
#include <AP_InertialSensor/AP_InertialSensor_config.h>
|
#include <AP_InertialSensor/AP_InertialSensor_config.h>
|
||||||
|
#include <AP_ESC_Telem/AP_ESC_Telem_config.h>
|
||||||
|
|
||||||
#ifndef AP_RPM_ENABLED
|
#ifndef AP_RPM_ENABLED
|
||||||
#define AP_RPM_ENABLED 1
|
#define AP_RPM_ENABLED 1
|
||||||
|
@ -41,3 +42,7 @@
|
||||||
#ifndef AP_RPM_GENERATOR_ENABLED
|
#ifndef AP_RPM_GENERATOR_ENABLED
|
||||||
#define AP_RPM_GENERATOR_ENABLED AP_RPM_BACKEND_DEFAULT_ENABLED && HAL_GENERATOR_ENABLED
|
#define AP_RPM_GENERATOR_ENABLED AP_RPM_BACKEND_DEFAULT_ENABLED && HAL_GENERATOR_ENABLED
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef AP_RPM_ESC_TELEM_OUTBOUND_ENABLED
|
||||||
|
#define AP_RPM_ESC_TELEM_OUTBOUND_ENABLED AP_RPM_BACKEND_DEFAULT_ENABLED && HAL_WITH_ESC_TELEM
|
||||||
|
#endif
|
||||||
|
|
|
@ -19,6 +19,10 @@
|
||||||
|
|
||||||
#include "AP_RPM.h"
|
#include "AP_RPM.h"
|
||||||
|
|
||||||
|
#if HAL_WITH_ESC_TELEM
|
||||||
|
#include "AP_ESC_Telem/AP_ESC_Telem.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
base class constructor.
|
base class constructor.
|
||||||
*/
|
*/
|
||||||
|
@ -29,4 +33,22 @@ AP_RPM_Backend::AP_RPM_Backend(AP_RPM &_ap_rpm, uint8_t instance, AP_RPM::RPM_St
|
||||||
state.instance = instance;
|
state.instance = instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if AP_RPM_ESC_TELEM_OUTBOUND_ENABLED
|
||||||
|
void AP_RPM_Backend::update_esc_telem_outbound()
|
||||||
|
{
|
||||||
|
const uint8_t esc_index = ap_rpm._params[state.instance].esc_telem_outbound_index;
|
||||||
|
if (esc_index == 0) {
|
||||||
|
// Disabled if there's no ESC identified to route the data to
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!ap_rpm.healthy(state.instance)) {
|
||||||
|
// If we're unhealthy don't update the telemetry. Let it
|
||||||
|
// timeout on it's own instead of showing potentially wrong data
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
AP::esc_telem().update_rpm(esc_index-1, state.rate_rpm, 0);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // AP_RPM_ENABLED
|
#endif // AP_RPM_ENABLED
|
||||||
|
|
|
@ -38,6 +38,8 @@ public:
|
||||||
return ap_rpm._params[state.instance].pin.get();
|
return ap_rpm._params[state.instance].pin.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void update_esc_telem_outbound();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
AP_RPM &ap_rpm;
|
AP_RPM &ap_rpm;
|
||||||
|
|
Loading…
Reference in New Issue