1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-15 20:35:17 +03:00

Merge the enums TelemetryProtocol and TelemetryProtocols (#6676)

This commit is contained in:
Bertrand Songis 2019-08-28 11:39:06 +02:00 committed by GitHub
parent 40fe6022b4
commit 9e52de7a49
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 37 additions and 46 deletions

View file

@ -249,12 +249,16 @@ enum UartModes {
enum TelemetryProtocol enum TelemetryProtocol
{ {
TELEM_PROTO_FRSKY_D, PROTOCOL_TELEMETRY_FIRST,
TELEM_PROTO_FRSKY_SPORT, PROTOCOL_TELEMETRY_FRSKY_SPORT = PROTOCOL_TELEMETRY_FIRST,
TELEM_PROTO_CROSSFIRE, PROTOCOL_TELEMETRY_FRSKY_D,
TELEM_PROTO_SPEKTRUM, PROTOCOL_TELEMETRY_FRSKY_D_SECONDARY,
TELEM_PROTO_LUA, PROTOCOL_TELEMETRY_CROSSFIRE,
TELEM_PROTO_FLYSKY_IBUS, PROTOCOL_TELEMETRY_SPEKTRUM,
PROTOCOL_TELEMETRY_FLYSKY_IBUS,
PROTOCOL_TELEMETRY_MULTIMODULE,
PROTOCOL_TELEMETRY_LAST=PROTOCOL_TELEMETRY_MULTIMODULE,
PROTOCOL_TELEMETRY_LUA
}; };
#define TELEM_LABEL_LEN 4 #define TELEM_LABEL_LEN 4

View file

@ -379,7 +379,7 @@ PACK(struct TelemetrySensor {
int32_t getPrecDivisor() const; int32_t getPrecDivisor() const;
bool isSameInstance(TelemetryProtocol protocol, uint8_t instance) bool isSameInstance(TelemetryProtocol protocol, uint8_t instance)
{ {
if (protocol == TELEM_PROTO_FRSKY_SPORT) { if (protocol == PROTOCOL_TELEMETRY_FRSKY_SPORT) {
if (((this->instance ^ instance) & 0x9F) == 0) { if (((this->instance ^ instance) & 0x9F) == 0) {
this->instance = instance; // update the instance in case we had telemetry switching this->instance = instance; // update the instance in case we had telemetry switching
return true; return true;

View file

@ -1285,7 +1285,7 @@ static int luaSetTelemetryValue(lua_State * L)
zname[3] = hex2zchar((id & 0x000f) >> 0); zname[3] = hex2zchar((id & 0x000f) >> 0);
} }
if (id | subId | instance) { if (id | subId | instance) {
int index = setTelemetryValue(TELEM_PROTO_LUA, id, subId, instance, value, unit, prec); int index = setTelemetryValue(PROTOCOL_TELEMETRY_LUA, id, subId, instance, value, unit, prec);
if (index >= 0) { if (index >= 0) {
TelemetrySensor &telemetrySensor = g_model.telemetrySensors[index]; TelemetrySensor &telemetrySensor = g_model.telemetrySensors[index];
telemetrySensor.id = id; telemetrySensor.id = id;

View file

@ -261,19 +261,6 @@ enum ThrottleSources {
THROTTLE_SOURCE_CH1, THROTTLE_SOURCE_CH1,
}; };
enum TelemetryProtocols
{
PROTOCOL_TELEMETRY_FIRST,
PROTOCOL_TELEMETRY_FRSKY_SPORT = PROTOCOL_TELEMETRY_FIRST,
PROTOCOL_TELEMETRY_FRSKY_D,
PROTOCOL_TELEMETRY_FRSKY_D_SECONDARY,
PROTOCOL_TELEMETRY_CROSSFIRE,
PROTOCOL_TELEMETRY_SPEKTRUM,
PROTOCOL_TELEMETRY_FLYSKY_IBUS,
PROTOCOL_TELEMETRY_MULTIMODULE,
PROTOCOL_TELEMETRY_LAST=PROTOCOL_TELEMETRY_MULTIMODULE
};
enum DisplayTrims enum DisplayTrims
{ {
DISPLAY_TRIMS_NEVER, DISPLAY_TRIMS_NEVER,

View file

@ -69,7 +69,7 @@ const CrossfireSensor & getCrossfireSensor(uint8_t id, uint8_t subId)
void processCrossfireTelemetryValue(uint8_t index, int32_t value) void processCrossfireTelemetryValue(uint8_t index, int32_t value)
{ {
const CrossfireSensor & sensor = crossfireSensors[index]; const CrossfireSensor & sensor = crossfireSensors[index];
setTelemetryValue(TELEM_PROTO_CROSSFIRE, sensor.id, 0, sensor.subId, value, sensor.unit, sensor.precision); setTelemetryValue(PROTOCOL_TELEMETRY_CROSSFIRE, sensor.id, 0, sensor.subId, value, sensor.unit, sensor.precision);
} }
bool checkCrossfireTelemetryFrameCRC() bool checkCrossfireTelemetryFrameCRC()
@ -164,7 +164,7 @@ void processCrossfireTelemetryFrame()
const CrossfireSensor & sensor = crossfireSensors[FLIGHT_MODE_INDEX]; const CrossfireSensor & sensor = crossfireSensors[FLIGHT_MODE_INDEX];
for (int i=0; i<min<int>(16, telemetryRxBuffer[1]-2); i+=4) { for (int i=0; i<min<int>(16, telemetryRxBuffer[1]-2); i+=4) {
uint32_t value = *((uint32_t *)&telemetryRxBuffer[3+i]); uint32_t value = *((uint32_t *)&telemetryRxBuffer[3+i]);
setTelemetryValue(TELEM_PROTO_CROSSFIRE, sensor.id, 0, sensor.subId, value, sensor.unit, i); setTelemetryValue(PROTOCOL_TELEMETRY_CROSSFIRE, sensor.id, 0, sensor.subId, value, sensor.unit, i);
} }
break; break;
} }

View file

@ -106,17 +106,17 @@ static void processFlySkySensor(const uint8_t *packet)
else if (sensor->unit == UNIT_VOLTS) else if (sensor->unit == UNIT_VOLTS)
// Voltage types are signed 16bit integers // Voltage types are signed 16bit integers
value = (int16_t)value; value = (int16_t)value;
setTelemetryValue(TELEM_PROTO_FLYSKY_IBUS, id, 0, instance, value, sensor->unit, sensor->precision); setTelemetryValue(PROTOCOL_TELEMETRY_FLYSKY_IBUS, id, 0, instance, value, sensor->unit, sensor->precision);
return; return;
} }
} }
setTelemetryValue(TELEM_PROTO_FLYSKY_IBUS, id, 0, instance, value, UNIT_RAW, 0); setTelemetryValue(PROTOCOL_TELEMETRY_FLYSKY_IBUS, id, 0, instance, value, UNIT_RAW, 0);
} }
void processFlySkyPacket(const uint8_t *packet) void processFlySkyPacket(const uint8_t *packet)
{ {
// Set TX RSSI Value, reverse MULTIs scaling // Set TX RSSI Value, reverse MULTIs scaling
setTelemetryValue(TELEM_PROTO_FLYSKY_IBUS, TX_RSSI_ID, 0, 0, packet[0], UNIT_RAW, 0); setTelemetryValue(PROTOCOL_TELEMETRY_FLYSKY_IBUS, TX_RSSI_ID, 0, 0, packet[0], UNIT_RAW, 0);
for (int sensor = 0; sensor < 7; sensor++) { for (int sensor = 0; sensor < 7; sensor++) {
int index = 1 + (4 * sensor); int index = 1 + (4 * sensor);

View file

@ -68,9 +68,9 @@ void frskyDProcessPacket(const uint8_t *packet)
{ {
case LINKPKT: // A1/A2/RSSI values case LINKPKT: // A1/A2/RSSI values
{ {
setTelemetryValue(TELEM_PROTO_FRSKY_D, D_A1_ID, 0, 0, packet[1], UNIT_VOLTS, 0); setTelemetryValue(PROTOCOL_TELEMETRY_FRSKY_D, D_A1_ID, 0, 0, packet[1], UNIT_VOLTS, 0);
setTelemetryValue(TELEM_PROTO_FRSKY_D, D_A2_ID, 0, 0, packet[2], UNIT_VOLTS, 0); setTelemetryValue(PROTOCOL_TELEMETRY_FRSKY_D, D_A2_ID, 0, 0, packet[2], UNIT_VOLTS, 0);
setTelemetryValue(TELEM_PROTO_FRSKY_D, D_RSSI_ID, 0, 0, packet[3], UNIT_RAW, 0); setTelemetryValue(PROTOCOL_TELEMETRY_FRSKY_D, D_RSSI_ID, 0, 0, packet[3], UNIT_RAW, 0);
telemetryData.rssi.set(packet[3]); telemetryData.rssi.set(packet[3]);
telemetryStreaming = TELEMETRY_TIMEOUT10ms; // reset counter only if valid packets are being detected telemetryStreaming = TELEMETRY_TIMEOUT10ms; // reset counter only if valid packets are being detected
break; break;
@ -258,7 +258,7 @@ void processHubPacket(uint8_t id, int16_t value)
} }
} }
setTelemetryValue(TELEM_PROTO_FRSKY_D, id, 0, 0, data, unit, precision); setTelemetryValue(PROTOCOL_TELEMETRY_FRSKY_D, id, 0, 0, data, unit, precision);
} }
void frskyDSetDefault(int index, uint16_t id) void frskyDSetDefault(int index, uint16_t id)

View file

@ -128,14 +128,14 @@ void sportProcessTelemetryPacket(uint16_t id, uint8_t subId, uint8_t instance, u
uint8_t cellsCount = (data & 0xF0) >> 4; uint8_t cellsCount = (data & 0xF0) >> 4;
uint8_t cellIndex = (data & 0x0F); uint8_t cellIndex = (data & 0x0F);
uint32_t mask = (cellsCount << 24) + (cellIndex << 16); uint32_t mask = (cellsCount << 24) + (cellIndex << 16);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, id, subId, instance, mask + (((data & 0x000FFF00) >> 8) / 5), unit, precision); setTelemetryValue(PROTOCOL_TELEMETRY_FRSKY_SPORT, id, subId, instance, mask + (((data & 0x000FFF00) >> 8) / 5), unit, precision);
if (cellIndex+1 < cellsCount) { if (cellIndex+1 < cellsCount) {
mask += (1 << 16); mask += (1 << 16);
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, id, subId, instance, mask + (((data & 0xFFF00000) >> 20) / 5), unit, precision); setTelemetryValue(PROTOCOL_TELEMETRY_FRSKY_SPORT, id, subId, instance, mask + (((data & 0xFFF00000) >> 20) / 5), unit, precision);
} }
} }
else { else {
setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, id, subId, instance, data, unit, precision); setTelemetryValue(PROTOCOL_TELEMETRY_FRSKY_SPORT, id, subId, instance, data, unit, precision);
} }
} }
@ -170,7 +170,7 @@ void sportProcessTelemetryPacketWithoutCrc(uint8_t origin, const uint8_t * packe
data = SPORT_DATA_U8(packet); data = SPORT_DATA_U8(packet);
if (g_model.rssiSource) { if (g_model.rssiSource) {
TelemetrySensor * sensor = &g_model.telemetrySensors[g_model.rssiSource - 1]; TelemetrySensor * sensor = &g_model.telemetrySensors[g_model.rssiSource - 1];
if (sensor->isSameInstance(TELEM_PROTO_FRSKY_SPORT, instance)) { if (sensor->isSameInstance(PROTOCOL_TELEMETRY_FRSKY_SPORT, instance)) {
telemetryData.rssi.set(data); telemetryData.rssi.set(data);
} }
} }

View file

@ -271,7 +271,7 @@ bool isSpektrumValidValue(int32_t value, const SpektrumDataType type)
void processSpektrumPacket(const uint8_t *packet) void processSpektrumPacket(const uint8_t *packet)
{ {
setTelemetryValue(TELEM_PROTO_SPEKTRUM, (I2C_PSEUDO_TX << 8) + 0, 0, 0, packet[1], UNIT_RAW, 0); setTelemetryValue(PROTOCOL_TELEMETRY_SPEKTRUM, (I2C_PSEUDO_TX << 8) + 0, 0, 0, packet[1], UNIT_RAW, 0);
// highest bit indicates that TM1100 is in use, ignore it // highest bit indicates that TM1100 is in use, ignore it
uint8_t i2cAddress = (packet[2] & 0x7f); uint8_t i2cAddress = (packet[2] & 0x7f);
uint8_t instance = packet[3]; uint8_t instance = packet[3];
@ -283,10 +283,10 @@ void processSpektrumPacket(const uint8_t *packet)
for (int i=5; i<SPEKTRUM_TELEMETRY_LENGTH; i++) for (int i=5; i<SPEKTRUM_TELEMETRY_LENGTH; i++)
{ {
setTelemetryValue(TELEM_PROTO_SPEKTRUM, pseudoId, 0, instance, packet[i], UNIT_TEXT, i-5); setTelemetryValue(PROTOCOL_TELEMETRY_SPEKTRUM, pseudoId, 0, instance, packet[i], UNIT_TEXT, i-5);
} }
// Set a sential \0 just for safety since we have the space there // Set a sential \0 just for safety since we have the space there
setTelemetryValue(TELEM_PROTO_SPEKTRUM, pseudoId, 0, instance, '\0', UNIT_TEXT, 13); setTelemetryValue(PROTOCOL_TELEMETRY_SPEKTRUM, pseudoId, 0, instance, '\0', UNIT_TEXT, 13);
return; return;
@ -335,7 +335,7 @@ void processSpektrumPacket(const uint8_t *packet)
} }
uint16_t pseudoId = (sensor->i2caddress << 8 | sensor->startByte); uint16_t pseudoId = (sensor->i2caddress << 8 | sensor->startByte);
setTelemetryValue(TELEM_PROTO_SPEKTRUM, pseudoId, 0, instance, value, sensor->unit, sensor->precision); setTelemetryValue(PROTOCOL_TELEMETRY_SPEKTRUM, pseudoId, 0, instance, value, sensor->unit, sensor->precision);
} }
} }
if (!handled) { if (!handled) {
@ -344,7 +344,7 @@ void processSpektrumPacket(const uint8_t *packet)
for (int startByte=0; startByte<14; startByte+=2) { for (int startByte=0; startByte<14; startByte+=2) {
int32_t value = spektrumGetValue(packet + 4, startByte, uint16); int32_t value = spektrumGetValue(packet + 4, startByte, uint16);
uint16_t pseudoId = i2cAddress << 8 | startByte; uint16_t pseudoId = i2cAddress << 8 | startByte;
setTelemetryValue(TELEM_PROTO_SPEKTRUM, pseudoId, 0, instance, value, UNIT_RAW, 0); setTelemetryValue(PROTOCOL_TELEMETRY_SPEKTRUM, pseudoId, 0, instance, value, UNIT_RAW, 0);
} }
} }
} }
@ -397,7 +397,7 @@ void processDSMBindPacket(const uint8_t *packet)
debugval = packet[7] << 24 | packet[6] << 16 | packet[5] << 8 | packet[4]; debugval = packet[7] << 24 | packet[6] << 16 | packet[5] << 8 | packet[4];
/* log the bind packet as telemetry for quick debugging */ /* log the bind packet as telemetry for quick debugging */
setTelemetryValue(TELEM_PROTO_SPEKTRUM, (I2C_PSEUDO_TX << 8) + 4, 0, 0, debugval, UNIT_RAW, 0); setTelemetryValue(PROTOCOL_TELEMETRY_SPEKTRUM, (I2C_PSEUDO_TX << 8) + 4, 0, 0, debugval, UNIT_RAW, 0);
/* Finally stop binding as the rx just told us that it is bound */ /* Finally stop binding as the rx just told us that it is bound */
if (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2 && moduleState[EXTERNAL_MODULE].mode == MODULE_MODE_BIND) { if (g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) == MODULE_SUBTYPE_MULTI_DSM2 && moduleState[EXTERNAL_MODULE].mode == MODULE_MODE_BIND) {

View file

@ -509,27 +509,27 @@ int setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t subId, ui
int index = availableTelemetryIndex(); int index = availableTelemetryIndex();
if (index >= 0) { if (index >= 0) {
switch (protocol) { switch (protocol) {
case TELEM_PROTO_FRSKY_SPORT: case PROTOCOL_TELEMETRY_FRSKY_SPORT:
frskySportSetDefault(index, id, subId, instance); frskySportSetDefault(index, id, subId, instance);
break; break;
case TELEM_PROTO_FRSKY_D: case PROTOCOL_TELEMETRY_FRSKY_D:
frskyDSetDefault(index, id); frskyDSetDefault(index, id);
break; break;
#if defined(CROSSFIRE) #if defined(CROSSFIRE)
case TELEM_PROTO_CROSSFIRE: case PROTOCOL_TELEMETRY_CROSSFIRE:
crossfireSetDefault(index, id, instance); crossfireSetDefault(index, id, instance);
break; break;
#endif #endif
#if defined(MULTIMODULE) #if defined(MULTIMODULE)
case TELEM_PROTO_SPEKTRUM: case PROTOCOL_TELEMETRY_SPEKTRUM:
spektrumSetDefault(index, id, subId, instance); spektrumSetDefault(index, id, subId, instance);
break; break;
case TELEM_PROTO_FLYSKY_IBUS: case PROTOCOL_TELEMETRY_FLYSKY_IBUS:
flySkySetDefault(index,id, subId, instance); flySkySetDefault(index,id, subId, instance);
break; break;
#endif #endif
#if defined(LUA) #if defined(LUA)
case TELEM_PROTO_LUA: case PROTOCOL_TELEMETRY_LUA:
// Sensor will be initialized by calling function // Sensor will be initialized by calling function
// This drops the first value // This drops the first value
return index; return index;