Merge pull request #7074 from pulquero/telm_config2
Support for enabling individual telemetry sensors
This commit is contained in:
commit
2a748e73d0
|
@ -971,7 +971,7 @@ const clivalue_t valueTable[] = {
|
|||
// Set to $size_of_battery to get a percentage of battery used.
|
||||
{ "mavlink_mah_as_heading_divisor", VAR_UINT16 | MASTER_VALUE, .config.minmax = { 0, 30000 }, PG_TELEMETRY_CONFIG, offsetof(telemetryConfig_t, mavlink_mah_as_heading_divisor) },
|
||||
#endif
|
||||
{ "telemetry_disabled_sensors", VAR_UINT32 | MASTER_VALUE, .config.minmax = { 0, 15 }, PG_TELEMETRY_CONFIG, offsetof(telemetryConfig_t, disabledSensors)},
|
||||
{ "telemetry_disabled_sensors", VAR_UINT32 | MASTER_VALUE, .config.u32_max = SENSOR_ALL, PG_TELEMETRY_CONFIG, offsetof(telemetryConfig_t, disabledSensors)},
|
||||
#endif // USE_TELEMETRY
|
||||
|
||||
// PG_LED_STRIP_CONFIG
|
||||
|
|
|
@ -446,15 +446,17 @@ void initCrsfTelemetry(void)
|
|||
#endif
|
||||
|
||||
int index = 0;
|
||||
if (sensors(SENSOR_ACC)) {
|
||||
if (sensors(SENSOR_ACC) && telemetryIsSensorEnabled(SENSOR_PITCH | SENSOR_ROLL | SENSOR_HEADING)) {
|
||||
crsfSchedule[index++] = BV(CRSF_FRAME_ATTITUDE_INDEX);
|
||||
}
|
||||
if (isBatteryVoltageConfigured() || isAmperageConfigured()) {
|
||||
if ((isBatteryVoltageConfigured() && telemetryIsSensorEnabled(SENSOR_VOLTAGE))
|
||||
|| (isAmperageConfigured() && telemetryIsSensorEnabled(SENSOR_CURRENT | SENSOR_FUEL))) {
|
||||
crsfSchedule[index++] = BV(CRSF_FRAME_BATTERY_SENSOR_INDEX);
|
||||
}
|
||||
crsfSchedule[index++] = BV(CRSF_FRAME_FLIGHT_MODE_INDEX);
|
||||
#ifdef USE_GPS
|
||||
if (featureIsEnabled(FEATURE_GPS)) {
|
||||
if (featureIsEnabled(FEATURE_GPS)
|
||||
&& telemetryIsSensorEnabled(SENSOR_ALTITUDE | SENSOR_LAT_LONG | SENSOR_GROUND_SPEED | SENSOR_HEADING)) {
|
||||
crsfSchedule[index++] = BV(CRSF_FRAME_GPS_INDEX);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -519,7 +519,7 @@ void processFrSkyHubTelemetry(timeUs_t currentTimeUs)
|
|||
|
||||
cycleNum++;
|
||||
|
||||
if (sensors(SENSOR_ACC)) {
|
||||
if (sensors(SENSOR_ACC) && telemetryIsSensorEnabled(SENSOR_ACC_X | SENSOR_ACC_Y | SENSOR_ACC_Z)) {
|
||||
// Sent every 125ms
|
||||
sendAccel();
|
||||
}
|
||||
|
@ -530,11 +530,13 @@ void processFrSkyHubTelemetry(timeUs_t currentTimeUs)
|
|||
// Send vertical speed for opentx. ID_VERT_SPEED
|
||||
// Unit is cm/s
|
||||
#ifdef USE_VARIO
|
||||
frSkyHubWriteFrame(ID_VERT_SPEED, getEstimatedVario());
|
||||
if (telemetryIsSensorEnabled(SENSOR_VARIO)) {
|
||||
frSkyHubWriteFrame(ID_VERT_SPEED, getEstimatedVario());
|
||||
}
|
||||
#endif
|
||||
|
||||
// Sent every 500ms
|
||||
if ((cycleNum % 4) == 0) {
|
||||
if ((cycleNum % 4) == 0 && telemetryIsSensorEnabled(SENSOR_ALTITUDE)) {
|
||||
int32_t altitudeCm = getEstimatedAltitudeCm();
|
||||
|
||||
/* Allow 5s to boot correctly othervise send zero to prevent OpenTX
|
||||
|
@ -550,7 +552,7 @@ void processFrSkyHubTelemetry(timeUs_t currentTimeUs)
|
|||
#endif
|
||||
|
||||
#if defined(USE_MAG)
|
||||
if (sensors(SENSOR_MAG)) {
|
||||
if (sensors(SENSOR_MAG) && telemetryIsSensorEnabled(SENSOR_HEADING)) {
|
||||
// Sent every 500ms
|
||||
if ((cycleNum % 4) == 0) {
|
||||
sendHeading();
|
||||
|
@ -564,21 +566,33 @@ void processFrSkyHubTelemetry(timeUs_t currentTimeUs)
|
|||
sendThrottleOrBatterySizeAsRpm();
|
||||
|
||||
if (isBatteryVoltageConfigured()) {
|
||||
sendVoltageCells();
|
||||
sendVoltageAmp();
|
||||
if (telemetryIsSensorEnabled(SENSOR_VOLTAGE)) {
|
||||
sendVoltageCells();
|
||||
sendVoltageAmp();
|
||||
}
|
||||
|
||||
if (isAmperageConfigured()) {
|
||||
sendAmperage();
|
||||
sendFuelLevel();
|
||||
if (telemetryIsSensorEnabled(SENSOR_CURRENT)) {
|
||||
sendAmperage();
|
||||
}
|
||||
if (telemetryIsSensorEnabled(SENSOR_FUEL)) {
|
||||
sendFuelLevel();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(USE_GPS)
|
||||
if (sensors(SENSOR_GPS)) {
|
||||
sendSpeed();
|
||||
sendGpsAltitude();
|
||||
if (telemetryIsSensorEnabled(SENSOR_GROUND_SPEED)) {
|
||||
sendSpeed();
|
||||
}
|
||||
if (telemetryIsSensorEnabled(SENSOR_ALTITUDE)) {
|
||||
sendGpsAltitude();
|
||||
}
|
||||
sendSatalliteSignalQualityAsTemperature2(cycleNum);
|
||||
sendGPSLatLong();
|
||||
if (telemetryIsSensorEnabled(SENSOR_LAT_LONG)) {
|
||||
sendGPSLatLong();
|
||||
}
|
||||
} else
|
||||
#endif
|
||||
#if defined(USE_MAG)
|
||||
|
|
|
@ -320,10 +320,12 @@ static void initSmartPortSensors(void)
|
|||
{
|
||||
frSkyDataIdTableInfo.index = 0;
|
||||
|
||||
ADD_SENSOR(FSSP_DATAID_T1);
|
||||
ADD_SENSOR(FSSP_DATAID_T2);
|
||||
if (telemetryIsSensorEnabled(SENSOR_MODE)) {
|
||||
ADD_SENSOR(FSSP_DATAID_T1);
|
||||
ADD_SENSOR(FSSP_DATAID_T2);
|
||||
}
|
||||
|
||||
if (isBatteryVoltageConfigured()) {
|
||||
if (isBatteryVoltageConfigured() && telemetryIsSensorEnabled(SENSOR_VOLTAGE)) {
|
||||
#ifdef USE_ESC_SENSOR_TELEMETRY
|
||||
if (!telemetryIsSensorEnabled(ESC_SENSOR_VOLTAGE))
|
||||
#endif
|
||||
|
@ -334,7 +336,7 @@ static void initSmartPortSensors(void)
|
|||
ADD_SENSOR(FSSP_DATAID_A4);
|
||||
}
|
||||
|
||||
if (isAmperageConfigured()) {
|
||||
if (isAmperageConfigured() && telemetryIsSensorEnabled(SENSOR_CURRENT)) {
|
||||
#ifdef USE_ESC_SENSOR_TELEMETRY
|
||||
if (!telemetryIsSensorEnabled(ESC_SENSOR_CURRENT))
|
||||
#endif
|
||||
|
@ -342,28 +344,50 @@ static void initSmartPortSensors(void)
|
|||
ADD_SENSOR(FSSP_DATAID_CURRENT);
|
||||
}
|
||||
|
||||
ADD_SENSOR(FSSP_DATAID_FUEL);
|
||||
if (telemetryIsSensorEnabled(SENSOR_FUEL)) {
|
||||
ADD_SENSOR(FSSP_DATAID_FUEL);
|
||||
}
|
||||
}
|
||||
|
||||
if (sensors(SENSOR_ACC)) {
|
||||
ADD_SENSOR(FSSP_DATAID_HEADING);
|
||||
ADD_SENSOR(FSSP_DATAID_ACCX);
|
||||
ADD_SENSOR(FSSP_DATAID_ACCY);
|
||||
ADD_SENSOR(FSSP_DATAID_ACCZ);
|
||||
if (telemetryIsSensorEnabled(SENSOR_HEADING)) {
|
||||
ADD_SENSOR(FSSP_DATAID_HEADING);
|
||||
}
|
||||
if (telemetryIsSensorEnabled(SENSOR_ACC_X)) {
|
||||
ADD_SENSOR(FSSP_DATAID_ACCX);
|
||||
}
|
||||
if (telemetryIsSensorEnabled(SENSOR_ACC_Y)) {
|
||||
ADD_SENSOR(FSSP_DATAID_ACCY);
|
||||
}
|
||||
if (telemetryIsSensorEnabled(SENSOR_ACC_Z)) {
|
||||
ADD_SENSOR(FSSP_DATAID_ACCZ);
|
||||
}
|
||||
}
|
||||
|
||||
if (sensors(SENSOR_BARO)) {
|
||||
ADD_SENSOR(FSSP_DATAID_ALTITUDE);
|
||||
ADD_SENSOR(FSSP_DATAID_VARIO);
|
||||
if (telemetryIsSensorEnabled(SENSOR_ALTITUDE)) {
|
||||
ADD_SENSOR(FSSP_DATAID_ALTITUDE);
|
||||
}
|
||||
if (telemetryIsSensorEnabled(SENSOR_VARIO)) {
|
||||
ADD_SENSOR(FSSP_DATAID_VARIO);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef USE_GPS
|
||||
if (featureIsEnabled(FEATURE_GPS)) {
|
||||
ADD_SENSOR(FSSP_DATAID_SPEED);
|
||||
ADD_SENSOR(FSSP_DATAID_LATLONG);
|
||||
ADD_SENSOR(FSSP_DATAID_LATLONG); // twice (one for lat, one for long)
|
||||
ADD_SENSOR(FSSP_DATAID_HOME_DIST);
|
||||
ADD_SENSOR(FSSP_DATAID_GPS_ALT);
|
||||
if (telemetryIsSensorEnabled(SENSOR_GROUND_SPEED)) {
|
||||
ADD_SENSOR(FSSP_DATAID_SPEED);
|
||||
}
|
||||
if (telemetryIsSensorEnabled(SENSOR_LAT_LONG)) {
|
||||
ADD_SENSOR(FSSP_DATAID_LATLONG);
|
||||
ADD_SENSOR(FSSP_DATAID_LATLONG); // twice (one for lat, one for long)
|
||||
}
|
||||
if (telemetryIsSensorEnabled(SENSOR_DISTANCE)) {
|
||||
ADD_SENSOR(FSSP_DATAID_HOME_DIST);
|
||||
}
|
||||
if (telemetryIsSensorEnabled(SENSOR_ALTITUDE)) {
|
||||
ADD_SENSOR(FSSP_DATAID_GPS_ALT);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -42,14 +42,30 @@ typedef enum {
|
|||
} frskyUnit_e;
|
||||
|
||||
typedef enum {
|
||||
ESC_SENSOR_CURRENT = 1 << 0,
|
||||
ESC_SENSOR_VOLTAGE = 1 << 1,
|
||||
ESC_SENSOR_RPM = 1 << 2,
|
||||
ESC_SENSOR_TEMPERATURE = 1 << 3,
|
||||
ESC_SENSOR_ALL = ESC_SENSOR_CURRENT \
|
||||
| ESC_SENSOR_VOLTAGE \
|
||||
| ESC_SENSOR_RPM \
|
||||
| ESC_SENSOR_TEMPERATURE,
|
||||
SENSOR_VOLTAGE = 1 << 0,
|
||||
SENSOR_CURRENT = 1 << 1,
|
||||
SENSOR_FUEL = 1 << 2,
|
||||
SENSOR_MODE = 1 << 3,
|
||||
SENSOR_ACC_X = 1 << 4,
|
||||
SENSOR_ACC_Y = 1 << 5,
|
||||
SENSOR_ACC_Z = 1 << 6,
|
||||
SENSOR_PITCH = 1 << 7,
|
||||
SENSOR_ROLL = 1 << 8,
|
||||
SENSOR_HEADING = 1 << 9,
|
||||
SENSOR_ALTITUDE = 1 << 10,
|
||||
SENSOR_VARIO = 1 << 11,
|
||||
SENSOR_LAT_LONG = 1 << 12,
|
||||
SENSOR_GROUND_SPEED = 1 << 13,
|
||||
SENSOR_DISTANCE = 1 << 14,
|
||||
ESC_SENSOR_CURRENT = 1 << 15,
|
||||
ESC_SENSOR_VOLTAGE = 1 << 16,
|
||||
ESC_SENSOR_RPM = 1 << 17,
|
||||
ESC_SENSOR_TEMPERATURE = 1 << 18,
|
||||
ESC_SENSOR_ALL = ESC_SENSOR_CURRENT \
|
||||
| ESC_SENSOR_VOLTAGE \
|
||||
| ESC_SENSOR_RPM \
|
||||
| ESC_SENSOR_TEMPERATURE,
|
||||
SENSOR_ALL = (1 << 19) - 1,
|
||||
} sensor_e;
|
||||
|
||||
typedef struct telemetryConfig_s {
|
||||
|
|
|
@ -304,4 +304,9 @@ extern "C" {
|
|||
int32_t getMAhDrawn(void) {
|
||||
return testmAhDrawn;
|
||||
}
|
||||
|
||||
bool telemetryIsSensorEnabled(sensor_e) {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -309,6 +309,7 @@ serialPortConfig_t *findSerialPortConfig(serialPortFunction_e) {return NULL;}
|
|||
|
||||
bool telemetryDetermineEnabledState(portSharing_e) {return true;}
|
||||
bool telemetryCheckRxPortShared(const serialPortConfig_t *) {return true;}
|
||||
bool telemetryIsSensorEnabled(sensor_e) {return true;}
|
||||
|
||||
portSharing_e determinePortSharing(const serialPortConfig_t *, serialPortFunction_e) {return PORTSHARING_NOT_SHARED;}
|
||||
|
||||
|
|
|
@ -255,6 +255,11 @@ bool telemetryDetermineEnabledState(portSharing_e)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool telemetryIsSensorEnabled(sensor_e sensor) {
|
||||
UNUSED(sensor);
|
||||
return true;
|
||||
}
|
||||
|
||||
portSharing_e determinePortSharing(const serialPortConfig_t *, serialPortFunction_e)
|
||||
{
|
||||
return PORTSHARING_NOT_SHARED;
|
||||
|
|
|
@ -184,6 +184,12 @@ bool telemetryDetermineEnabledState(portSharing_e portSharing)
|
|||
}
|
||||
|
||||
|
||||
bool telemetryIsSensorEnabled(sensor_e sensor) {
|
||||
UNUSED(sensor);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool isSerialPortShared(const serialPortConfig_t *portConfig,
|
||||
uint16_t functionMask,
|
||||
serialPortFunction_e sharedWithFunction)
|
||||
|
|
Loading…
Reference in New Issue