[Crossfire] New frame ATTITUDE added
This commit is contained in:
@@ -48,30 +48,38 @@ enum CrossfireSensorIndexes {
|
||||
GPS_HEADING_INDEX,
|
||||
GPS_ALTITUDE_INDEX,
|
||||
GPS_SATELLITES_INDEX,
|
||||
UNKNOW_INDEX,
|
||||
ATTITUDE_PITCH_INDEX,
|
||||
ATTITUDE_ROLL_INDEX,
|
||||
ATTITUDE_YAW_INDEX,
|
||||
FLIGHT_MODE_INDEX,
|
||||
UNKNOWN_INDEX,
|
||||
};
|
||||
|
||||
const CrossfireSensor crossfireSensors[] = {
|
||||
{LINK_ID, 0, ZSTR_RX_RSSI1, UNIT_DB, 0},
|
||||
{LINK_ID, 1, ZSTR_RX_RSSI2, UNIT_DB, 0},
|
||||
{LINK_ID, 2, ZSTR_RX_QUALITY, UNIT_PERCENT, 0},
|
||||
{LINK_ID, 3, ZSTR_RX_SNR, UNIT_DB, 0},
|
||||
{LINK_ID, 4, ZSTR_ANTENNA, UNIT_RAW, 0},
|
||||
{LINK_ID, 5, ZSTR_RF_MODE, UNIT_RAW, 0},
|
||||
{LINK_ID, 6, ZSTR_TX_POWER, UNIT_MILLIWATTS, 0},
|
||||
{LINK_ID, 7, ZSTR_TX_RSSI, UNIT_DB, 0},
|
||||
{LINK_ID, 8, ZSTR_TX_QUALITY, UNIT_PERCENT, 0},
|
||||
{LINK_ID, 9, ZSTR_TX_SNR, UNIT_DB, 0},
|
||||
{BATTERY_ID, 0, ZSTR_BATT, UNIT_VOLTS, 1},
|
||||
{BATTERY_ID, 1, ZSTR_CURR, UNIT_AMPS, 1},
|
||||
{BATTERY_ID, 2, ZSTR_CAPACITY, UNIT_MAH, 0},
|
||||
{GPS_ID, 0, ZSTR_GPS, UNIT_GPS_LATITUDE, 0},
|
||||
{GPS_ID, 0, ZSTR_GPS, UNIT_GPS_LONGITUDE, 0},
|
||||
{GPS_ID, 2, ZSTR_GSPD, UNIT_KMH, 1},
|
||||
{GPS_ID, 3, ZSTR_HDG, UNIT_DEGREE, 3},
|
||||
{GPS_ID, 4, ZSTR_ALT, UNIT_METERS, 0},
|
||||
{GPS_ID, 5, ZSTR_SATELLITES, UNIT_RAW, 0},
|
||||
{0, 0, "UNKNOWN", UNIT_RAW, 0},
|
||||
{LINK_ID, 0, ZSTR_RX_RSSI1, UNIT_DB, 0},
|
||||
{LINK_ID, 1, ZSTR_RX_RSSI2, UNIT_DB, 0},
|
||||
{LINK_ID, 2, ZSTR_RX_QUALITY, UNIT_PERCENT, 0},
|
||||
{LINK_ID, 3, ZSTR_RX_SNR, UNIT_DB, 0},
|
||||
{LINK_ID, 4, ZSTR_ANTENNA, UNIT_RAW, 0},
|
||||
{LINK_ID, 5, ZSTR_RF_MODE, UNIT_RAW, 0},
|
||||
{LINK_ID, 6, ZSTR_TX_POWER, UNIT_MILLIWATTS, 0},
|
||||
{LINK_ID, 7, ZSTR_TX_RSSI, UNIT_DB, 0},
|
||||
{LINK_ID, 8, ZSTR_TX_QUALITY, UNIT_PERCENT, 0},
|
||||
{LINK_ID, 9, ZSTR_TX_SNR, UNIT_DB, 0},
|
||||
{BATTERY_ID, 0, ZSTR_BATT, UNIT_VOLTS, 1},
|
||||
{BATTERY_ID, 1, ZSTR_CURR, UNIT_AMPS, 1},
|
||||
{BATTERY_ID, 2, ZSTR_CAPACITY, UNIT_MAH, 0},
|
||||
{GPS_ID, 0, ZSTR_GPS, UNIT_GPS_LATITUDE, 0},
|
||||
{GPS_ID, 0, ZSTR_GPS, UNIT_GPS_LONGITUDE, 0},
|
||||
{GPS_ID, 2, ZSTR_GSPD, UNIT_KMH, 1},
|
||||
{GPS_ID, 3, ZSTR_HDG, UNIT_DEGREE, 3},
|
||||
{GPS_ID, 4, ZSTR_ALT, UNIT_METERS, 0},
|
||||
{GPS_ID, 5, ZSTR_SATELLITES, UNIT_RAW, 0},
|
||||
{ATTITUDE_ID, 0, ZSTR_PITCH, UNIT_RADIANS, 3},
|
||||
{ATTITUDE_ID, 1, ZSTR_ROLL, UNIT_RADIANS, 3},
|
||||
{ATTITUDE_ID, 2, ZSTR_YAW, UNIT_RADIANS, 3},
|
||||
{FLIGHT_MODE_ID, 2, ZSTR_FLIGHT_MODE, UNIT_TEXT, 0},
|
||||
{0, 0, "UNKNOWN", UNIT_RAW, 0},
|
||||
};
|
||||
|
||||
const CrossfireSensor & getCrossfireSensor(uint8_t id, uint8_t subId)
|
||||
@@ -82,8 +90,12 @@ const CrossfireSensor & getCrossfireSensor(uint8_t id, uint8_t subId)
|
||||
return crossfireSensors[BATT_VOLTAGE_INDEX+subId];
|
||||
else if (id == GPS_ID)
|
||||
return crossfireSensors[GPS_LATITUDE_INDEX+subId];
|
||||
else if (id == ATTITUDE_ID)
|
||||
return crossfireSensors[ATTITUDE_PITCH_INDEX+subId];
|
||||
else if (id == FLIGHT_MODE_ID)
|
||||
return crossfireSensors[FLIGHT_MODE_INDEX];
|
||||
else
|
||||
return crossfireSensors[UNKNOW_INDEX];
|
||||
return crossfireSensors[UNKNOWN_INDEX];
|
||||
}
|
||||
|
||||
void processCrossfireTelemetryValue(uint8_t index, uint32_t value)
|
||||
@@ -140,6 +152,7 @@ void processCrossfireTelemetryFrame()
|
||||
if (getCrossfireTelemetryValue<1>(17, value))
|
||||
processCrossfireTelemetryValue(GPS_SATELLITES_INDEX, value);
|
||||
break;
|
||||
|
||||
case LINK_ID:
|
||||
telemetryStreaming = TELEMETRY_TIMEOUT10ms;
|
||||
for (int i=0; i<10; i++) {
|
||||
@@ -151,6 +164,7 @@ void processCrossfireTelemetryFrame()
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case BATTERY_ID:
|
||||
if (getCrossfireTelemetryValue<2>(3, value))
|
||||
processCrossfireTelemetryValue(BATT_VOLTAGE_INDEX, value);
|
||||
@@ -159,6 +173,20 @@ void processCrossfireTelemetryFrame()
|
||||
if (getCrossfireTelemetryValue<3>(7, value))
|
||||
processCrossfireTelemetryValue(BATT_CAPACITY_INDEX, value);
|
||||
break;
|
||||
|
||||
case ATTITUDE_ID:
|
||||
if (getCrossfireTelemetryValue<2>(3, value))
|
||||
processCrossfireTelemetryValue(ATTITUDE_PITCH_INDEX, value/10);
|
||||
if (getCrossfireTelemetryValue<2>(5, value))
|
||||
processCrossfireTelemetryValue(ATTITUDE_ROLL_INDEX, value/10);
|
||||
if (getCrossfireTelemetryValue<2>(7, value))
|
||||
processCrossfireTelemetryValue(ATTITUDE_YAW_INDEX, value/10);
|
||||
break;
|
||||
|
||||
case FLIGHT_MODE_ID:
|
||||
// TODO
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user