mirror of
https://github.com/opentx/opentx.git
synced 2025-07-15 04:15:26 +03:00
Merge the enums TelemetryProtocol and TelemetryProtocols (#6676)
This commit is contained in:
parent
40fe6022b4
commit
9e52de7a49
10 changed files with 37 additions and 46 deletions
|
@ -249,12 +249,16 @@ enum UartModes {
|
|||
|
||||
enum TelemetryProtocol
|
||||
{
|
||||
TELEM_PROTO_FRSKY_D,
|
||||
TELEM_PROTO_FRSKY_SPORT,
|
||||
TELEM_PROTO_CROSSFIRE,
|
||||
TELEM_PROTO_SPEKTRUM,
|
||||
TELEM_PROTO_LUA,
|
||||
TELEM_PROTO_FLYSKY_IBUS,
|
||||
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,
|
||||
PROTOCOL_TELEMETRY_LUA
|
||||
};
|
||||
|
||||
#define TELEM_LABEL_LEN 4
|
||||
|
|
|
@ -379,7 +379,7 @@ PACK(struct TelemetrySensor {
|
|||
int32_t getPrecDivisor() const;
|
||||
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) {
|
||||
this->instance = instance; // update the instance in case we had telemetry switching
|
||||
return true;
|
||||
|
|
|
@ -1285,7 +1285,7 @@ static int luaSetTelemetryValue(lua_State * L)
|
|||
zname[3] = hex2zchar((id & 0x000f) >> 0);
|
||||
}
|
||||
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) {
|
||||
TelemetrySensor &telemetrySensor = g_model.telemetrySensors[index];
|
||||
telemetrySensor.id = id;
|
||||
|
|
|
@ -261,19 +261,6 @@ enum ThrottleSources {
|
|||
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
|
||||
{
|
||||
DISPLAY_TRIMS_NEVER,
|
||||
|
|
|
@ -69,7 +69,7 @@ const CrossfireSensor & getCrossfireSensor(uint8_t id, uint8_t subId)
|
|||
void processCrossfireTelemetryValue(uint8_t index, int32_t value)
|
||||
{
|
||||
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()
|
||||
|
@ -164,7 +164,7 @@ void processCrossfireTelemetryFrame()
|
|||
const CrossfireSensor & sensor = crossfireSensors[FLIGHT_MODE_INDEX];
|
||||
for (int i=0; i<min<int>(16, telemetryRxBuffer[1]-2); i+=4) {
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -106,17 +106,17 @@ static void processFlySkySensor(const uint8_t *packet)
|
|||
else if (sensor->unit == UNIT_VOLTS)
|
||||
// Voltage types are signed 16bit integers
|
||||
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;
|
||||
}
|
||||
}
|
||||
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)
|
||||
{
|
||||
// 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++) {
|
||||
int index = 1 + (4 * sensor);
|
||||
|
|
|
@ -68,9 +68,9 @@ void frskyDProcessPacket(const uint8_t *packet)
|
|||
{
|
||||
case LINKPKT: // A1/A2/RSSI values
|
||||
{
|
||||
setTelemetryValue(TELEM_PROTO_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(TELEM_PROTO_FRSKY_D, D_RSSI_ID, 0, 0, packet[3], UNIT_RAW, 0);
|
||||
setTelemetryValue(PROTOCOL_TELEMETRY_FRSKY_D, D_A1_ID, 0, 0, packet[1], UNIT_VOLTS, 0);
|
||||
setTelemetryValue(PROTOCOL_TELEMETRY_FRSKY_D, D_A2_ID, 0, 0, packet[2], UNIT_VOLTS, 0);
|
||||
setTelemetryValue(PROTOCOL_TELEMETRY_FRSKY_D, D_RSSI_ID, 0, 0, packet[3], UNIT_RAW, 0);
|
||||
telemetryData.rssi.set(packet[3]);
|
||||
telemetryStreaming = TELEMETRY_TIMEOUT10ms; // reset counter only if valid packets are being detected
|
||||
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)
|
||||
|
|
|
@ -128,14 +128,14 @@ void sportProcessTelemetryPacket(uint16_t id, uint8_t subId, uint8_t instance, u
|
|||
uint8_t cellsCount = (data & 0xF0) >> 4;
|
||||
uint8_t cellIndex = (data & 0x0F);
|
||||
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) {
|
||||
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 {
|
||||
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);
|
||||
if (g_model.rssiSource) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -271,7 +271,7 @@ bool isSpektrumValidValue(int32_t value, const SpektrumDataType type)
|
|||
|
||||
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
|
||||
uint8_t i2cAddress = (packet[2] & 0x7f);
|
||||
uint8_t instance = packet[3];
|
||||
|
@ -283,10 +283,10 @@ void processSpektrumPacket(const uint8_t *packet)
|
|||
|
||||
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
|
||||
setTelemetryValue(TELEM_PROTO_SPEKTRUM, pseudoId, 0, instance, '\0', UNIT_TEXT, 13);
|
||||
setTelemetryValue(PROTOCOL_TELEMETRY_SPEKTRUM, pseudoId, 0, instance, '\0', UNIT_TEXT, 13);
|
||||
|
||||
|
||||
return;
|
||||
|
@ -335,7 +335,7 @@ void processSpektrumPacket(const uint8_t *packet)
|
|||
}
|
||||
|
||||
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) {
|
||||
|
@ -344,7 +344,7 @@ void processSpektrumPacket(const uint8_t *packet)
|
|||
for (int startByte=0; startByte<14; startByte+=2) {
|
||||
int32_t value = spektrumGetValue(packet + 4, startByte, uint16);
|
||||
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];
|
||||
|
||||
/* 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 */
|
||||
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) {
|
||||
|
|
|
@ -509,27 +509,27 @@ int setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t subId, ui
|
|||
int index = availableTelemetryIndex();
|
||||
if (index >= 0) {
|
||||
switch (protocol) {
|
||||
case TELEM_PROTO_FRSKY_SPORT:
|
||||
case PROTOCOL_TELEMETRY_FRSKY_SPORT:
|
||||
frskySportSetDefault(index, id, subId, instance);
|
||||
break;
|
||||
case TELEM_PROTO_FRSKY_D:
|
||||
case PROTOCOL_TELEMETRY_FRSKY_D:
|
||||
frskyDSetDefault(index, id);
|
||||
break;
|
||||
#if defined(CROSSFIRE)
|
||||
case TELEM_PROTO_CROSSFIRE:
|
||||
case PROTOCOL_TELEMETRY_CROSSFIRE:
|
||||
crossfireSetDefault(index, id, instance);
|
||||
break;
|
||||
#endif
|
||||
#if defined(MULTIMODULE)
|
||||
case TELEM_PROTO_SPEKTRUM:
|
||||
case PROTOCOL_TELEMETRY_SPEKTRUM:
|
||||
spektrumSetDefault(index, id, subId, instance);
|
||||
break;
|
||||
case TELEM_PROTO_FLYSKY_IBUS:
|
||||
case PROTOCOL_TELEMETRY_FLYSKY_IBUS:
|
||||
flySkySetDefault(index,id, subId, instance);
|
||||
break;
|
||||
#endif
|
||||
#if defined(LUA)
|
||||
case TELEM_PROTO_LUA:
|
||||
case PROTOCOL_TELEMETRY_LUA:
|
||||
// Sensor will be initialized by calling function
|
||||
// This drops the first value
|
||||
return index;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue