mirror of
https://github.com/opentx/opentx.git
synced 2025-07-21 15:25:17 +03:00
Add support for FAS100 sensor
This commit is contained in:
parent
6c28032e9b
commit
61bbfd6e7c
10 changed files with 47 additions and 11 deletions
|
@ -60,6 +60,9 @@ int8_t frskyStreaming = -1;
|
|||
uint8_t frskyUsrStreaming = 0;
|
||||
uint8_t link_counter = 0;
|
||||
|
||||
uint32_t consumption = 0;
|
||||
uint16_t s_currTmr = 0;
|
||||
|
||||
FrskyData frskyTelemetry[2];
|
||||
FrskyRSSI frskyRSSI[2];
|
||||
|
||||
|
@ -83,6 +86,8 @@ enum BarThresholdIdx {
|
|||
THLD_DIST,
|
||||
THLD_GPSALT,
|
||||
THLD_CELL,
|
||||
THLD_CURRENT,
|
||||
THLD_CONSUMPTION,
|
||||
THLD_MAX,
|
||||
};
|
||||
uint8_t barsThresholds[THLD_MAX];
|
||||
|
@ -272,6 +277,11 @@ void parseTelemHubByte(uint8_t byte)
|
|||
frskyHubData.maxTemperature2 = frskyHubData.temperature2;
|
||||
break;
|
||||
|
||||
case offsetof(FrskyHubData, current):
|
||||
if (frskyHubData.current > frskyHubData.maxCurrent)
|
||||
frskyHubData.maxCurrent = frskyHubData.current;
|
||||
break;
|
||||
|
||||
case offsetof(FrskyHubData, baroAltitude_bp):
|
||||
// First received barometer altitude => Altitude offset
|
||||
if (!frskyHubData.baroAltitudeOffset)
|
||||
|
@ -644,10 +654,14 @@ void check_frsky()
|
|||
frskyRSSI[1].set(0);
|
||||
}
|
||||
#endif
|
||||
uint16_t currint;
|
||||
currint=(g_tmr10ms<s_currTmr ? 65535-s_currTmr+g_tmr10ms : g_tmr10ms-s_currTmr);
|
||||
s_currTmr=g_tmr10ms;
|
||||
consumption+=(frskyHubData.current*currint);
|
||||
|
||||
#if defined(VARIO)
|
||||
static uint16_t s_varioTmr = 0;
|
||||
if (isFunctionActive(FUNC_VARIO)) {
|
||||
static uint16_t s_varioTmr = 0;
|
||||
if (isFunctionActive(FUNC_VARIO)) {
|
||||
#if defined(AUDIO)
|
||||
int16_t varioSpeedUpMin = (g_model.varioSpeedUpMin - VARIO_SPEED_LIMIT_UP_CENTER)*VARIO_SPEED_LIMIT_MUL;
|
||||
int16_t varioSpeedDownMin = (VARIO_SPEED_LIMIT_DOWN_OFF - g_model.varioSpeedDownMin)*(-VARIO_SPEED_LIMIT_MUL);
|
||||
|
@ -868,6 +882,10 @@ void resetTelemetry()
|
|||
frskyHubData.accelY = 100;
|
||||
frskyHubData.temperature1 = -30;
|
||||
frskyHubData.maxTemperature1 = 100;
|
||||
frskyHubData.maxCurrent = 56;
|
||||
consumption=0;
|
||||
s_currTmr = g_tmr10ms;
|
||||
frskyHubData.current = 5;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -924,6 +942,8 @@ const pm_uint8_t bchunit_ar[] PROGMEM = {
|
|||
UNIT_KTS, // Speed
|
||||
UNIT_METERS, // Dist
|
||||
UNIT_METERS, // GPS Alt
|
||||
UNIT_AMPS, // current
|
||||
UNIT_MILLIAMPS, // current consumption
|
||||
};
|
||||
|
||||
void putsTelemetryChannel(uint8_t x, uint8_t y, uint8_t channel, int16_t val, uint8_t att)
|
||||
|
@ -975,6 +995,15 @@ void putsTelemetryChannel(uint8_t x, uint8_t y, uint8_t channel, int16_t val, ui
|
|||
putsTelemetryValue(x, y, val, UNIT_RAW, att);
|
||||
break;
|
||||
|
||||
case TELEM_CURRENT-1:
|
||||
case TELEM_MAX_CURRENT-1:
|
||||
putsTelemetryValue(x, y, val, UNIT_AMPS, att);
|
||||
break;
|
||||
|
||||
case TELEM_CONSUMPTION-1:
|
||||
putsTelemetryValue(x, y, val, UNIT_MILLIAMPS, att);
|
||||
break;
|
||||
|
||||
#if defined(IMPERIAL_UNITS)
|
||||
case TELEM_ALT-1:
|
||||
case TELEM_MIN_ALT-1:
|
||||
|
|
|
@ -138,6 +138,7 @@ PACK(struct FrskyHubData {
|
|||
int16_t gpsAltitudeOffset;
|
||||
uint8_t varioAltitudeQueuePointer; // circular-buffer pointer
|
||||
uint8_t minCellIdx;
|
||||
uint16_t maxCurrent;
|
||||
});
|
||||
|
||||
#elif defined(WS_HOW_HIGH)
|
||||
|
@ -157,7 +158,7 @@ extern uint8_t barsThresholds[];
|
|||
// Global Fr-Sky telemetry data variables
|
||||
extern int8_t frskyStreaming; // >0 (true) == data is streaming in. 0 = nodata detected for some time
|
||||
extern uint8_t frskyUsrStreaming;
|
||||
|
||||
extern uint32_t consumption;
|
||||
#define SEND_MODEL_ALARMS 6
|
||||
extern uint8_t FrskyAlarmSendState;
|
||||
|
||||
|
|
|
@ -365,6 +365,8 @@ enum TelemetrySource {
|
|||
TELEM_DIST,
|
||||
TELEM_GPSALT,
|
||||
TELEM_CELL,
|
||||
TELEM_CURRENT,
|
||||
TELEM_CONSUMPTION,
|
||||
TELEM_ACCx,
|
||||
TELEM_ACCy,
|
||||
TELEM_ACCz,
|
||||
|
@ -379,13 +381,14 @@ enum TelemetrySource {
|
|||
TELEM_MAX_T2,
|
||||
TELEM_MAX_SPEED,
|
||||
TELEM_MAX_DIST,
|
||||
TELEM_MAX_CURRENT,
|
||||
TELEM_ACC,
|
||||
TELEM_GPS_TIME,
|
||||
TELEM_BAR_MAX = TELEM_CELL,
|
||||
TELEM_NOUSR_BAR_MAX = TELEM_RSSI_RX,
|
||||
TELEM_CSW_MAX = TELEM_CELL,
|
||||
TELEM_CSW_MAX = TELEM_CONSUMPTION,
|
||||
TELEM_NOUSR_CSW_MAX = TELEM_RSSI_RX,
|
||||
TELEM_DISPLAY_MAX = TELEM_MAX_DIST,
|
||||
TELEM_DISPLAY_MAX = TELEM_MAX_CURRENT,
|
||||
TELEM_STATUS_MAX = TELEM_GPS_TIME
|
||||
};
|
||||
|
||||
|
|
|
@ -464,6 +464,8 @@ int16_t getValue(uint8_t i)
|
|||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_DIST) return frskyHubData.gpsDistance;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_GPSALT) return frskyHubData.gpsAltitude_bp;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_CELL) return (int16_t)frskyHubData.minCellVolts * 2;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_CURRENT) return (int16_t)frskyHubData.current;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_CONSUMPTION) return consumption/360;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_ACCx) return frskyHubData.accelX;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_ACCy) return frskyHubData.accelY;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_ACCz) return frskyHubData.accelZ;
|
||||
|
@ -471,6 +473,7 @@ int16_t getValue(uint8_t i)
|
|||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_VSPD) return frskyHubData.varioSpeed;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_MIN_A1) return frskyTelemetry[0].min;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_MIN_A2) return frskyTelemetry[1].min;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_MAX_CURRENT) return frskyHubData.maxCurrent;
|
||||
else if(i<CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_MAX_DIST) return *(((int16_t*)(&frskyHubData.minAltitude))+i-(CSW_CHOUT_BASE+NUM_CHNOUT+TELEM_MIN_ALT-1));
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -138,7 +138,7 @@
|
|||
#define TR_FUNCSOUNDS "Warn1 ""Warn2 ""Cheep ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""Siren ""AlmClk""Ratata""Tick "
|
||||
|
||||
#define LEN_VTELEMCHNS "\004"
|
||||
#define TR_VTELEMCHNS "---\0""Tmr1""Tmr2""A1\0 ""A2\0 ""Tx\0 ""Rx\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""AccX""AccY""AccZ""Hdg\0""VSpd""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Acc\0""Time"
|
||||
#define TR_VTELEMCHNS "---\0""Tmr1""Tmr2""A1\0 ""A2\0 ""Tx\0 ""Rx\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""A\0 ""mAh\0""AccX""AccY""AccZ""Hdg\0""VSpd""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""A+\0 ""Dst+""Acc\0""Time"
|
||||
|
||||
#ifdef IMPERIAL_UNITS
|
||||
#define LENGTH_UNIT "ft\0"
|
||||
|
|
|
@ -139,7 +139,7 @@
|
|||
#define TR_FUNCSOUNDS "Warn 1""Warn 2""Cheep ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""Siren ""AlmClk""Ratata""Tick "
|
||||
|
||||
#define LEN_VTELEMCHNS "\004"
|
||||
#define TR_VTELEMCHNS "---\0""Tmr1""Tmr2""A1\0 ""A2\0 ""Tx\0 ""Rx\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""AccX""AccY""AccZ""Hdg\0""VSpd""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Acc\0""Time"
|
||||
#define TR_VTELEMCHNS "---\0""Tmr1""Tmr2""A1\0 ""A2\0 ""Tx\0 ""Rx\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""A\0 ""mAh\0""AccX""AccY""AccZ""Hdg\0""VSpd""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""A+\0 ""Dst+""Acc\0""Time"
|
||||
|
||||
#ifdef IMPERIAL_UNITS
|
||||
#define LENGTH_UNIT "ft\0"
|
||||
|
|
|
@ -139,7 +139,7 @@
|
|||
#define TR_FUNCSOUNDS "Warn1 ""Warn2 ""Cheep ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""Siren ""AlmClk""Ratata""Tick "
|
||||
|
||||
#define LEN_VTELEMCHNS "\004"
|
||||
#define TR_VTELEMCHNS "---\0""Tmr1""Tmr2""A1\0 ""A2\0 ""Tx\0 ""Rx\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""AccX""AccY""AccZ""Hdg\0""VSpd""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""Dst+""Acc\0""Time"
|
||||
#define TR_VTELEMCHNS "---\0""Tmr1""Tmr2""A1\0 ""A2\0 ""Tx\0 ""Rx\0 ""Alt\0""Rpm\0""Fuel""T1\0 ""T2\0 ""Spd\0""Dist""GAlt""Cell""A\0 ""mAh\0""AccX""AccY""AccZ""Hdg\0""VSpd""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Spd+""A+\0 ""Dst+""Acc\0""Time"
|
||||
|
||||
#ifdef IMPERIAL_UNITS
|
||||
#define LENGTH_UNIT "ft\0"
|
||||
|
|
|
@ -133,7 +133,7 @@
|
|||
#define TR_FUNCSOUNDS "Warn1 ""Warn2 ""Cheep ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""Siren ""AlmClk""Ratata""Tick "
|
||||
|
||||
#define LEN_VTELEMCHNS "\004"
|
||||
#define TR_VTELEMCHNS "---\0""Chr1""Chr2""A1\0 ""A2\0 ""Tx\0 ""Rx\0 ""Alt\0""Rpm\0""Carb""T1\0 ""T2\0 ""Vit\0""Dist""AltG""Elem""AccX""AccY""AccZ""Cap\0""VitV""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Vit+""Dst+""Acc\0""Time"
|
||||
#define TR_VTELEMCHNS "---\0""Chr1""Chr2""A1\0 ""A2\0 ""Tx\0 ""Rx\0 ""Alt\0""Rpm\0""Carb""T1\0 ""T2\0 ""Vit\0""Dist""AltG""Elem""A\0 ""mAh\0""AccX""AccY""AccZ""Cap\0""VitV""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Vit+""A+\0 ""Dst+""Acc\0""Time"
|
||||
|
||||
#ifdef IMPERIAL_UNITS
|
||||
#define LENGTH_UNIT "ft\0"
|
||||
|
|
|
@ -138,7 +138,7 @@
|
|||
#define TR_FUNCSOUNDS "Warn1 ""Warn2 ""Cheep ""Ring ""SciFi ""Robot ""Chirp ""Tada ""Crickt""Siren ""AlmClk""Ratata""Tick "
|
||||
|
||||
#define LEN_VTELEMCHNS "\004"
|
||||
#define TR_VTELEMCHNS "---\0""Tmr1""Tmr2""A1\0 ""A2\0 ""Tx\0 ""Rx\0 ""Alt\0""Rpm\0""Carb""T1\0 ""T2\0 ""Vel\0""Dist""GAlt""Cell""AccX""AccY""AccZ""Dir\0""VelV""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Vel+""Dst+""Acc\0""Time"
|
||||
#define TR_VTELEMCHNS "---\0""Tmr1""Tmr2""A1\0 ""A2\0 ""Tx\0 ""Rx\0 ""Alt\0""Rpm\0""Carb""T1\0 ""T2\0 ""Vel\0""Dist""GAlt""Cell""A\0 ""mAh\0""AccX""AccY""AccZ""Dir\0""VelV""A1-\0""A2-\0""Alt-""Alt+""Rpm+""T1+\0""T2+\0""Vel+""A+\0 ""Dst+""Acc\0""Time"
|
||||
|
||||
#ifdef IMPERIAL_UNITS
|
||||
#define LENGTH_UNIT "ft\0"
|
||||
|
|
|
@ -133,7 +133,7 @@
|
|||
#define TR_FUNCSOUNDS "Varn1 ""Varn2 ""F\200r ""Ring ""SciFi ""Robot ""Pip ""Tada ""Syrsa ""Siren ""Alarm ""Ratata""Tick "
|
||||
|
||||
#define LEN_VTELEMCHNS "\004"
|
||||
#define TR_VTELEMCHNS "---\0""Tmr1""Tmr2""A1\0 ""A2\0 ""Tx\0 ""Rx\0 ""H\202jd""Varv""Tank""T1\0 ""T2\0 ""Fart""Avst""GHjd""Batt""AccX""AccY""AccZ""Hdg\0""VFrt""A1-\0""A2-\0""Hjd-""Hjd+""Rpm+""T1+\0""T2+\0""Frt+""Avs+""Acc\0""Tid\0"
|
||||
#define TR_VTELEMCHNS "---\0""Tmr1""Tmr2""A1\0 ""A2\0 ""Tx\0 ""Rx\0 ""H\202jd""Varv""Tank""T1\0 ""T2\0 ""Fart""Avst""GHjd""Batt""A\0 ""mAh\0""AccX""AccY""AccZ""Hdg\0""VFrt""A1-\0""A2-\0""Hjd-""Hjd+""Rpm+""T1+\0""T2+\0""Frt+""A+\0 ""Avs+""Acc\0""Tid\0"
|
||||
|
||||
#ifdef IMPERIAL_UNITS
|
||||
#define LENGTH_UNIT "fot"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue