Merge pull request #5736 from opentx/3djc/faimode-review
FAI mode reworks
This commit is contained in:
@@ -420,8 +420,7 @@ void menuMainView(event_t event)
|
||||
|
||||
case EVT_KEY_TELEMETRY:
|
||||
#if defined(TELEMETRY_FRSKY)
|
||||
if (!IS_FAI_ENABLED())
|
||||
chainMenu(menuViewTelemetryFrsky);
|
||||
chainMenu(menuViewTelemetryFrsky);
|
||||
#elif defined(TELEMETRY_JETI)
|
||||
JETI_EnableRXD(); // enable JETI-Telemetry reception
|
||||
chainMenu(menuViewTelemetryJeti);
|
||||
|
||||
@@ -481,8 +481,7 @@ void menuMainView(event_t event)
|
||||
break;
|
||||
|
||||
case EVT_KEY_LONG(KEY_PAGE):
|
||||
if (!IS_FAI_ENABLED())
|
||||
chainMenu(menuViewTelemetryFrsky);
|
||||
chainMenu(menuViewTelemetryFrsky);
|
||||
killEvents(event);
|
||||
break;
|
||||
|
||||
|
||||
@@ -587,6 +587,7 @@ or a name (string) of the source.
|
||||
@retval value current source value (number). Zero is returned for:
|
||||
* non-existing sources
|
||||
* for all telemetry source when the telemetry stream is not received
|
||||
* far all non allowed sensors while FAI MODE is active
|
||||
|
||||
@retval table GPS position is returned in a table:
|
||||
* `lat` (number) latitude, positive is North
|
||||
|
||||
@@ -448,6 +448,9 @@ getvalue_t getValue(mixsrc_t i)
|
||||
|
||||
#if defined(CPUARM)
|
||||
else if (i <= MIXSRC_LAST_TELEM) {
|
||||
if(IS_FAI_FORBIDDEN(i)) {
|
||||
return 0;
|
||||
}
|
||||
i -= MIXSRC_FIRST_TELEM;
|
||||
div_t qr = div(i, 3);
|
||||
TelemetryItem & telemetryItem = telemetryItems[qr.quot];
|
||||
|
||||
+5
-1
@@ -231,7 +231,11 @@
|
||||
#define IF_FAI_CHOICE(x)
|
||||
#endif
|
||||
|
||||
#define IS_FAI_FORBIDDEN(idx) (IS_FAI_ENABLED() && idx >= MIXSRC_FIRST_TELEM)
|
||||
#if defined(CPUARM)
|
||||
#define IS_FAI_FORBIDDEN(idx) (IS_FAI_ENABLED() && isFaiForbidden(idx))
|
||||
#else
|
||||
#define IS_FAI_FORBIDDEN(idx) (IS_FAI_ENABLED() && idx >= MIXSRC_FIRST_TELEM)
|
||||
#endif
|
||||
|
||||
#if defined(BLUETOOTH)
|
||||
#if defined(X9E) && !defined(USEHORUSBT)
|
||||
|
||||
@@ -20,41 +20,6 @@
|
||||
|
||||
#include "opentx.h"
|
||||
|
||||
struct CrossfireSensor {
|
||||
const uint8_t id;
|
||||
const uint8_t subId;
|
||||
const char * name;
|
||||
const TelemetryUnit unit;
|
||||
const uint8_t precision;
|
||||
};
|
||||
|
||||
enum CrossfireSensorIndexes {
|
||||
RX_RSSI1_INDEX,
|
||||
RX_RSSI2_INDEX,
|
||||
RX_QUALITY_INDEX,
|
||||
RX_SNR_INDEX,
|
||||
RX_ANTENNA_INDEX,
|
||||
RF_MODE_INDEX,
|
||||
TX_POWER_INDEX,
|
||||
TX_RSSI_INDEX,
|
||||
TX_QUALITY_INDEX,
|
||||
TX_SNR_INDEX,
|
||||
BATT_VOLTAGE_INDEX,
|
||||
BATT_CURRENT_INDEX,
|
||||
BATT_CAPACITY_INDEX,
|
||||
GPS_LATITUDE_INDEX,
|
||||
GPS_LONGITUDE_INDEX,
|
||||
GPS_GROUND_SPEED_INDEX,
|
||||
GPS_HEADING_INDEX,
|
||||
GPS_ALTITUDE_INDEX,
|
||||
GPS_SATELLITES_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},
|
||||
|
||||
@@ -37,6 +37,42 @@
|
||||
#define DEVICE_INFO_ID 0x29
|
||||
#define REQUEST_SETTINGS_ID 0x2A
|
||||
|
||||
|
||||
struct CrossfireSensor {
|
||||
const uint8_t id;
|
||||
const uint8_t subId;
|
||||
const char * name;
|
||||
const TelemetryUnit unit;
|
||||
const uint8_t precision;
|
||||
};
|
||||
|
||||
enum CrossfireSensorIndexes {
|
||||
RX_RSSI1_INDEX,
|
||||
RX_RSSI2_INDEX,
|
||||
RX_QUALITY_INDEX,
|
||||
RX_SNR_INDEX,
|
||||
RX_ANTENNA_INDEX,
|
||||
RF_MODE_INDEX,
|
||||
TX_POWER_INDEX,
|
||||
TX_RSSI_INDEX,
|
||||
TX_QUALITY_INDEX,
|
||||
TX_SNR_INDEX,
|
||||
BATT_VOLTAGE_INDEX,
|
||||
BATT_CURRENT_INDEX,
|
||||
BATT_CAPACITY_INDEX,
|
||||
GPS_LATITUDE_INDEX,
|
||||
GPS_LONGITUDE_INDEX,
|
||||
GPS_GROUND_SPEED_INDEX,
|
||||
GPS_HEADING_INDEX,
|
||||
GPS_ALTITUDE_INDEX,
|
||||
GPS_SATELLITES_INDEX,
|
||||
ATTITUDE_PITCH_INDEX,
|
||||
ATTITUDE_ROLL_INDEX,
|
||||
ATTITUDE_YAW_INDEX,
|
||||
FLIGHT_MODE_INDEX,
|
||||
UNKNOWN_INDEX,
|
||||
};
|
||||
|
||||
void processCrossfireTelemetryData(uint8_t data);
|
||||
void crossfireSetDefault(int index, uint8_t id, uint8_t subId);
|
||||
bool isCrossfireOutputBufferAvailable();
|
||||
|
||||
@@ -23,6 +23,51 @@
|
||||
TelemetryItem telemetryItems[MAX_TELEMETRY_SENSORS];
|
||||
uint8_t allowNewSensors;
|
||||
|
||||
bool isFaiForbidden(source_t idx)
|
||||
{
|
||||
if (idx < MIXSRC_FIRST_TELEM) {
|
||||
return false;
|
||||
}
|
||||
|
||||
TelemetrySensor * sensor = &g_model.telemetrySensors[(idx-MIXSRC_FIRST_TELEM)/3];
|
||||
|
||||
switch (telemetryProtocol) {
|
||||
|
||||
case PROTOCOL_FRSKY_SPORT:
|
||||
if (sensor->id == RSSI_ID) {
|
||||
return false;
|
||||
}
|
||||
else if (sensor->id == BATT_ID) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
case PROTOCOL_FRSKY_D:
|
||||
if (sensor->id == D_RSSI_ID) {
|
||||
return false;
|
||||
}
|
||||
else if (sensor->id == D_A1_ID) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
|
||||
#if defined(CROSSFIRE)
|
||||
case PROTOCOL_PULSES_CROSSFIRE:
|
||||
if (sensor->id == RX_RSSI1_INDEX) {
|
||||
return false;
|
||||
}
|
||||
else if (sensor->id == RX_RSSI2_INDEX) {
|
||||
return false;
|
||||
}
|
||||
else if (sensor->id == BATT_VOLTAGE_INDEX) {
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// TODO in maths
|
||||
uint32_t getDistFromEarthAxis(int32_t latitude)
|
||||
{
|
||||
|
||||
@@ -136,5 +136,6 @@ class TelemetryItem
|
||||
|
||||
extern TelemetryItem telemetryItems[MAX_TELEMETRY_SENSORS];
|
||||
extern uint8_t allowNewSensors;
|
||||
bool isFaiForbidden(source_t idx);
|
||||
|
||||
#endif // _TELEMETRY_SENSORS_H_
|
||||
|
||||
Reference in New Issue
Block a user