From c31f184813f199ca9a8acbdb90367557a805a544 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sat, 30 Nov 2013 11:43:59 +0100 Subject: [PATCH 1/2] [all] FAS Offset compensation, +/- 1.5A ( issue 166 ) --- src/gui/menu_model.cpp | 11 ++++++++++- src/myeeprom.h | 4 ++++ src/telemetry/frsky.cpp | 4 ++++ src/telemetry/frsky_sport.cpp | 8 ++++++++ src/translations.cpp | 1 + src/translations.h | 1 + src/translations/cz.h | 1 + src/translations/cz.h.txt | 1 + src/translations/de.h | 1 + src/translations/de.h.txt | 1 + src/translations/en.h | 1 + src/translations/es.h | 1 + src/translations/es.h.txt | 1 + src/translations/fr.h | 1 + src/translations/fr.h.txt | 1 + src/translations/it.h | 1 + src/translations/it.h.txt | 1 + src/translations/pl.h | 1 + src/translations/pl.h.txt | 1 + src/translations/pt.h | 1 + src/translations/pt.h.txt | 1 + src/translations/se.h | 1 + src/translations/se.h.txt | 1 + 23 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/gui/menu_model.cpp b/src/gui/menu_model.cpp index d94e42ebf..855e3d0e0 100644 --- a/src/gui/menu_model.cpp +++ b/src/gui/menu_model.cpp @@ -5167,6 +5167,7 @@ enum menuModelTelemetryItems { #endif ITEM_TELEMETRY_USR_VOLTAGE_SOURCE, ITEM_TELEMETRY_USR_CURRENT_SOURCE, + ITEM_TELEMETRY_FAS_OFFSET, #if defined(CPUARM) ITEM_TELEMTETRY_PERSISTENT_MAH, #endif @@ -5249,7 +5250,7 @@ enum menuModelTelemetryItems { void menuModelTelemetry(uint8_t event) { - MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, ITEM_TELEMETRY_MAX+1, {0, CHANNEL_ROWS CHANNEL_ROWS RSSI_ROWS USRDATA_LINES 0, 0, IF_CPUARM(0) IF_VARIO(LABEL(Vario)) IF_VARIO(0) IF_VARIO(VARIO_RANGE_ROWS) CASE_PCBTARANIS(LABEL(TopBar)) CASE_PCBTARANIS(0) SCREEN_TYPE_ROWS, 2, 2, 2, 2, SCREEN_TYPE_ROWS, 2, 2, 2, 2, IF_CPUARM(SCREEN_TYPE_ROWS) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) }); + MENU(STR_MENUTELEMETRY, menuTabModel, e_Telemetry, ITEM_TELEMETRY_MAX+1, {0, CHANNEL_ROWS CHANNEL_ROWS RSSI_ROWS USRDATA_LINES 0, 0, 0, IF_CPUARM(0) IF_VARIO(LABEL(Vario)) IF_VARIO(0) IF_VARIO(VARIO_RANGE_ROWS) CASE_PCBTARANIS(LABEL(TopBar)) CASE_PCBTARANIS(0) SCREEN_TYPE_ROWS, 2, 2, 2, 2, SCREEN_TYPE_ROWS, 2, 2, 2, 2, IF_CPUARM(SCREEN_TYPE_ROWS) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) IF_CPUARM(2) }); uint8_t sub = m_posVert - 1; @@ -5420,6 +5421,14 @@ void menuModelTelemetry(uint8_t event) if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, g_model.frsky.currentSource, 3); break; + case ITEM_TELEMETRY_FAS_OFFSET: + lcd_putsLeft(y, STR_FAS_OFFSET); + lcd_outdezAtt(TELEM_COL2, y, g_model.frsky.fasOffset, attr|LEFT|PREC1); + lcd_outdezAtt(TELEM_COL2+6*FW, y, frskyData.hub.current, LEFT|PREC1); + lcd_putc(TELEM_COL2+8*FW, y, 'A'); + if (attr) g_model.frsky.fasOffset = checkIncDec(event, g_model.frsky.fasOffset, -15, 15, EE_MODEL); + break; + #if defined(CPUARM) case ITEM_TELEMTETRY_PERSISTENT_MAH: g_model.frsky.mAhPersistent = onoffMenuItem(g_model.frsky.mAhPersistent, TELEM_COL2, y, STR_PERSISTENT_MAH, attr, event); diff --git a/src/myeeprom.h b/src/myeeprom.h index 60238e09d..83f0dd579 100644 --- a/src/myeeprom.h +++ b/src/myeeprom.h @@ -988,6 +988,8 @@ PACK(typedef struct t_FrSkyData { FrSkyRSSIAlarm rssiAlarms[2]; uint16_t mAhPersistent:1; uint16_t storedMah:15; + int8_t fasOffset:5; + uint8_t spare:3; }) FrSkyData; #else #define MAX_FRSKY_SCREENS 2 @@ -1005,6 +1007,8 @@ PACK(typedef struct t_FrSkyData { int8_t varioCenterMin:5; uint8_t currentSource:3; int8_t varioCenterMax:5; + int8_t fasOffset:5; + uint8_t spare:3; }) FrSkyData; #endif diff --git a/src/telemetry/frsky.cpp b/src/telemetry/frsky.cpp index f2e7f7905..892e75056 100644 --- a/src/telemetry/frsky.cpp +++ b/src/telemetry/frsky.cpp @@ -191,6 +191,10 @@ void parseTelemHubByte(uint8_t byte) break; case offsetof(FrskySerialData, current): + if(((int16_t)frskyData.hub.current + g_model.frsky.fasOffset)>0) + frskyData.hub.current += g_model.frsky.fasOffset; + else + frskyData.hub.current = 0; if (frskyData.hub.current > frskyData.hub.maxCurrent) frskyData.hub.maxCurrent = frskyData.hub.current; break; diff --git a/src/telemetry/frsky_sport.cpp b/src/telemetry/frsky_sport.cpp index 4794940b5..4eec76018 100644 --- a/src/telemetry/frsky_sport.cpp +++ b/src/telemetry/frsky_sport.cpp @@ -191,6 +191,10 @@ void processHubPacket(uint8_t id, uint16_t value) break; case CURRENT_ID: + if(((int16_t)frskyData.hub.current + g_model.frsky.fasOffset)>0) + frskyData.hub.current += g_model.frsky.fasOffset; + else + frskyData.hub.current = 0; if (frskyData.hub.current > frskyData.hub.maxCurrent) frskyData.hub.maxCurrent = frskyData.hub.current; break; @@ -370,6 +374,10 @@ void processSportPacket(uint8_t *packet) } else if (appId >= CURR_FIRST_ID && appId <= CURR_LAST_ID) { frskyData.hub.current = SPORT_DATA_U32(packet); + if(((int16_t)frskyData.hub.current + g_model.frsky.fasOffset)>0) + frskyData.hub.current += g_model.frsky.fasOffset; + else + frskyData.hub.current = 0; if (frskyData.hub.current > frskyData.hub.maxCurrent) frskyData.hub.maxCurrent = frskyData.hub.current; } diff --git a/src/translations.cpp b/src/translations.cpp index 98d62ab7b..6749c8d2f 100644 --- a/src/translations.cpp +++ b/src/translations.cpp @@ -266,6 +266,7 @@ const pm_char STR_EEPROMFORMATTING[] PROGMEM = TR_EEPROMFORMATTING; const pm_char STR_EEPROMOVERFLOW[] PROGMEM = TR_EEPROMOVERFLOW; const pm_char STR_TRIMS2OFFSETS[] PROGMEM = TR_TRIMS2OFFSETS; const pm_char STR_MENURADIOSETUP[] PROGMEM = TR_MENURADIOSETUP; +const pm_char STR_FAS_OFFSET[] PROGMEM = TR_FAS_OFFSET; #if defined(CPUM2560) || defined(CPUARM) const pm_char STR_MENUDATEANDTIME[] PROGMEM = TR_MENUDATEANDTIME; diff --git a/src/translations.h b/src/translations.h index 4a3e0600a..7f93d1e4d 100644 --- a/src/translations.h +++ b/src/translations.h @@ -447,6 +447,7 @@ extern const pm_char STR_MENUGLOBALVARS[]; extern const pm_char STR_INVERT_THR[]; extern const pm_char STR_AND_SWITCH[]; extern const pm_char STR_CF[]; +extern const pm_char STR_FAS_OFFSET[]; #if defined(DSM2) || defined(PXX) extern const pm_char STR_RXNUM[]; diff --git a/src/translations/cz.h b/src/translations/cz.h index dca96c257..66d33932d 100644 --- a/src/translations/cz.h +++ b/src/translations/cz.h @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "N\204zk\212 Alarm" #define TR_CRITICALALARM INDENT "Kritick\212 Alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/cz.h.txt b/src/translations/cz.h.txt index 145783ff3..724434f84 100644 --- a/src/translations/cz.h.txt +++ b/src/translations/cz.h.txt @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Nízký Alarm" #define TR_CRITICALALARM INDENT "Kritický Alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/de.h b/src/translations/de.h index a5ff6746a..065f2e57a 100644 --- a/src/translations/de.h +++ b/src/translations/de.h @@ -663,6 +663,7 @@ #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Kritisch Alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/de.h.txt b/src/translations/de.h.txt index 3410e2f15..598489fde 100644 --- a/src/translations/de.h.txt +++ b/src/translations/de.h.txt @@ -663,6 +663,7 @@ #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Kritisch Alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/en.h b/src/translations/en.h index 62876daf9..e87b5f7c6 100644 --- a/src/translations/en.h +++ b/src/translations/en.h @@ -667,6 +667,7 @@ #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Critical Alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/es.h b/src/translations/es.h index 6efdcf038..974dcc350 100644 --- a/src/translations/es.h +++ b/src/translations/es.h @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Alarma baja" #define TR_CRITICALALARM INDENT "Alarma Critica" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/es.h.txt b/src/translations/es.h.txt index 49be12fc1..70487fdc4 100644 --- a/src/translations/es.h.txt +++ b/src/translations/es.h.txt @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Alarma baja" #define TR_CRITICALALARM INDENT "Alarma Critica" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/fr.h b/src/translations/fr.h index c2023571f..7de9ee984 100644 --- a/src/translations/fr.h +++ b/src/translations/fr.h @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Alarme basse" #define TR_CRITICALALARM INDENT "Alarme critique" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/fr.h.txt b/src/translations/fr.h.txt index 34604f7a6..81873286c 100644 --- a/src/translations/fr.h.txt +++ b/src/translations/fr.h.txt @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Alarme basse" #define TR_CRITICALALARM INDENT "Alarme critique" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/it.h b/src/translations/it.h index 2e4945d49..70718da14 100644 --- a/src/translations/it.h +++ b/src/translations/it.h @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Allarme Basso" #define TR_CRITICALALARM INDENT "Allarme Critico" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/it.h.txt b/src/translations/it.h.txt index 3a2c62fca..8c1229ac7 100644 --- a/src/translations/it.h.txt +++ b/src/translations/it.h.txt @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Allarme Basso" #define TR_CRITICALALARM INDENT "Allarme Critico" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/pl.h b/src/translations/pl.h index ef4afe289..c441faada 100644 --- a/src/translations/pl.h +++ b/src/translations/pl.h @@ -661,6 +661,7 @@ #define TR_LOWALARM INDENT "Alarm niski" #define TR_CRITICALALARM INDENT "Alarm krytyczny" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/pl.h.txt b/src/translations/pl.h.txt index 5525754ed..8a2caf86c 100644 --- a/src/translations/pl.h.txt +++ b/src/translations/pl.h.txt @@ -661,6 +661,7 @@ #define TR_LOWALARM INDENT "Alarm niski" #define TR_CRITICALALARM INDENT "Alarm krytyczny" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/pt.h b/src/translations/pt.h index 691c840af..022579f74 100644 --- a/src/translations/pt.h +++ b/src/translations/pt.h @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Critical Alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/pt.h.txt b/src/translations/pt.h.txt index 691c840af..022579f74 100644 --- a/src/translations/pt.h.txt +++ b/src/translations/pt.h.txt @@ -660,6 +660,7 @@ #define TR_LOWALARM INDENT "Low Alarm" #define TR_CRITICALALARM INDENT "Critical Alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/se.h b/src/translations/se.h index de22c6599..029dfba9d 100644 --- a/src/translations/se.h +++ b/src/translations/se.h @@ -663,6 +663,7 @@ #define TR_LOWALARM INDENT "L\200g-alarm" #define TR_CRITICALALARM INDENT "Kritiskt alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" diff --git a/src/translations/se.h.txt b/src/translations/se.h.txt index 68de29549..1aaf93273 100644 --- a/src/translations/se.h.txt +++ b/src/translations/se.h.txt @@ -663,6 +663,7 @@ #define TR_LOWALARM INDENT "Låg-alarm" #define TR_CRITICALALARM INDENT "Kritiskt alarm" #define TR_PERSISTENT_MAH INDENT "Store mAh" +#define TR_FAS_OFFSET TR(INDENT "FAS Ofs", INDENT "FAS Offset") #if defined(MAVLINK) #define TR_MAVLINK_RC_RSSI_SCALE_LABEL "Max RSSI" From 037bfb373a55f707f1940eb1aaf3aeccc09a51c8 Mon Sep 17 00:00:00 2001 From: Andre Date: Sat, 30 Nov 2013 13:08:30 +0100 Subject: [PATCH 2/2] Safer switch warning entry --- src/gui/menu_model.cpp | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/gui/menu_model.cpp b/src/gui/menu_model.cpp index c183ca8b7..9d2083be1 100644 --- a/src/gui/menu_model.cpp +++ b/src/gui/menu_model.cpp @@ -1142,21 +1142,24 @@ void menuModelSetup(uint8_t event) char c; if (attr) { s_editMode = 0; - switch(event) { - CASE_EVT_ROTARY_BREAK - case EVT_KEY_BREAK(KEY_ENTER): - if (!READ_ONLY()) { - killEvents(event); - if (m_posHorz == NUM_SWITCHES-1) { + if (!READ_ONLY()) { + switch(event) { + CASE_EVT_ROTARY_BREAK + case EVT_KEY_BREAK(KEY_ENTER): + killEvents(event); + if (m_posHorz < NUM_SWITCHES-1) { + g_model.nSwToWarn ^= (1 << m_posHorz); + eeDirty(EE_MODEL); + } + break; + case EVT_KEY_LONG(KEY_ENTER): + if (m_posHorz == NUM_SWITCHES-1) { getMovedSwitch(); g_model.switchWarningStates = switches_states; + eeDirty(EE_MODEL); } - else { - g_model.nSwToWarn ^= (1 << m_posHorz); - } - eeDirty(EE_MODEL); - } break; + } } } LcdFlags line = attr; @@ -1188,7 +1191,7 @@ void menuModelSetup(uint8_t event) attr |= INVERS; } lcd_putcAtt(MODEL_SETUP_2ND_COLUMN+i*FW, y, (swactive || (attr & BLINK)) ? c : '-', attr); - lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+(NUM_SWITCHES*FW), y, "<]", m_posHorz == NUM_SWITCHES-1 ? line : 0); + lcd_putsAtt(MODEL_SETUP_2ND_COLUMN+(NUM_SWITCHES*FW), y, "<]", m_posHorz == NUM_SWITCHES-1 ? line | BLINK : 0); #endif } break;