Skip to content

Commit 0bd0074

Browse files
committed
fix missing sensors
1 parent 78c623c commit 0bd0074

File tree

2 files changed

+32
-6
lines changed

2 files changed

+32
-6
lines changed

src/main/telemetry/crsf.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,20 @@ void crsfSensorEncodeEscRpm(telemetrySensor_t *sensor, sbuf_t *buf)
301301
crsfSerialize24BE(buf, escState->rpm & 0xFFFFFF);
302302
}
303303
}
304+
305+
void crsfSensorEncodeEscTemp(telemetrySensor_t *sensor, sbuf_t *buf)
306+
{
307+
UNUSED(sensor);
308+
uint8_t motorCount = MAX(getMotorCount(), 1); //must send at least one motor, to avoid CRSF frame shifting
309+
motorCount = MIN(getMotorCount(), CRSF_PAYLOAD_SIZE_MAX / 3); // 3 bytes per RPM value
310+
motorCount = MIN(motorCount, MAX_SUPPORTED_MOTORS); // ensure we don't exceed available ESC telemetry data
311+
312+
for (uint8_t i = 0; i < motorCount; i++) {
313+
const escSensorData_t *escState = getEscTelemetry(i);
314+
crsfSerialize16BE(buf, escState->temperature & 0xFFFF);
315+
}
316+
}
317+
304318
void crsfSensorEncodeEscTemperature(telemetrySensor_t *sensor, sbuf_t *buf)
305319
{
306320
UNUSED(sensor);
@@ -436,7 +450,7 @@ static telemetrySensor_t crsfCustomTelemetrySensors[] =
436450
TLM_SENSOR(ESC3_RPM, 0x1134, 200, 3000, 0, U16),
437451
TLM_SENSOR(ESC4_RPM, 0x1135, 200, 3000, 0, U16),
438452

439-
TLM_SENSOR(ESC_TEMPERATURE, 0x1136, 200, 3000, 0, U8),
453+
TLM_SENSOR(ESC_TEMPERATURE, 0x1136, 200, 3000, 0, EscTemp),
440454
TLM_SENSOR(ESC1_TEMPERATURE, 0x1137, 200, 3000, 0, U8),
441455
TLM_SENSOR(ESC2_TEMPERATURE, 0x1138, 200, 3000, 0, U8),
442456
TLM_SENSOR(ESC3_TEMPERATURE, 0x1139, 200, 3000, 0, U8),

src/main/telemetry/sensors.c

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ int telemetrySensorValue(sensor_id_e id)
9191
return DECIDEGREES_TO_DEGREES(attitude.values.yaw);
9292
case TELEM_ALTITUDE:
9393
return (int)(getEstimatedActualPosition(Z)); // cm
94+
case TELEM_VARIOMETER:
95+
return (int)getEstimatedActualVelocity(Z);
9496
case TELEM_ATTITUDE:
9597
return millis();
9698
case TELEM_ATTITUDE_PITCH:
@@ -110,12 +112,14 @@ int telemetrySensorValue(sensor_id_e id)
110112
/////////////////////////////////////////
111113
////// GPS //////////////////////////
112114
#ifdef USE_GPS
115+
case TELEM_GPS:
116+
return (int)millis();
113117
case TELEM_GPS_SATS:
114118
return gpsSol.numSat;
115119
case TELEM_GPS_HDOP:
116120
return gpsSol.hdop;
117121
case TELEM_GPS_COORD:
118-
return getTupleHash(gpsSol.llh.lat, gpsSol.llh.lon);
122+
return (int)getTupleHash(gpsSol.llh.lat, gpsSol.llh.lon);
119123
case TELEM_GPS_ALTITUDE:
120124
return gpsSol.llh.alt;
121125
case TELEM_GPS_HEADING:
@@ -127,14 +131,14 @@ int telemetrySensorValue(sensor_id_e id)
127131
case TELEM_GPS_HOME_DIRECTION:
128132
return GPS_directionToHome;
129133
case TELEM_GPS_AZIMUTH:
130-
return ((GPS_directionToHome < 0 ? GPS_directionToHome + 360 : GPS_directionToHome) + 180) % 360;;
134+
return ((GPS_directionToHome < 0 ? GPS_directionToHome + 360 : GPS_directionToHome) + 180) % 360;
131135
#endif
132136

133137
#ifdef USE_ESC_SENSOR
134138
/////////////////////////////////////////
135139
////// ESC //////////////////////////
136140
case TELEM_ESC_RPM:
137-
return millis();
141+
return (int)millis();
138142
case TELEM_ESC1_RPM:
139143
return getMotorCount() > 0 ? (int)getEscTelemetry(0)->rpm : 0;
140144
case TELEM_ESC2_RPM:
@@ -146,7 +150,7 @@ int telemetrySensorValue(sensor_id_e id)
146150

147151

148152
case TELEM_ESC_TEMPERATURE:
149-
return millis();
153+
return (int)millis();
150154
case TELEM_ESC1_TEMPERATURE:
151155
return getMotorCount() > 0 ? (int)(getEscTelemetry(0)->temperature * 10) : 0;
152156
case TELEM_ESC2_TEMPERATURE:
@@ -268,6 +272,9 @@ bool telemetrySensorAllowed(sensor_id_e id)
268272
case TELEM_NONE:
269273
return true;
270274

275+
case TELEM_HEARTBEAT:
276+
return true;
277+
271278
/////////////////////////////////////////
272279
////// BATERY //////////////////////////
273280
case TELEM_BATTERY:
@@ -303,6 +310,8 @@ bool telemetrySensorAllowed(sensor_id_e id)
303310
return true;
304311
case TELEM_ATTITUDE_YAW:
305312
return true;
313+
case TELEM_VARIOMETER:
314+
return sensors(SENSOR_BARO);
306315

307316
case TELEM_ACCEL_X:
308317
return true;
@@ -314,6 +323,8 @@ bool telemetrySensorAllowed(sensor_id_e id)
314323
/////////////////////////////////////////
315324
////// GPS //////////////////////////
316325
#ifdef USE_GPS
326+
case TELEM_GPS:
327+
FALLTHROUGH;
317328
case TELEM_GPS_SATS:
318329
FALLTHROUGH;
319330
case TELEM_GPS_HDOP:
@@ -348,7 +359,8 @@ bool telemetrySensorAllowed(sensor_id_e id)
348359
case TELEM_ESC4_RPM:
349360
return shouldSendDataForMotorIndex(3);;
350361

351-
362+
case TELEM_TEMPERATURE:
363+
return true;
352364
case TELEM_ESC_TEMPERATURE:
353365
FALLTHROUGH;
354366
case TELEM_ESC1_TEMPERATURE:

0 commit comments

Comments
 (0)