From b657ca1862cd239b4d6a6eaa6eeb7fd2008e647b Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sun, 21 Aug 2016 12:41:12 +0200 Subject: [PATCH] Cosmetics --- radio/src/CMakeLists.txt | 2 +- radio/src/cli.cpp | 5 +- radio/src/gui/128x64/gui.h | 1 - radio/src/gui/128x64/lcd.h | 11 +--- radio/src/gui/128x64/model_setup.cpp | 2 +- radio/src/gui/128x64/radio_calibration.cpp | 2 +- radio/src/gui/128x64/view_channels.cpp | 4 +- radio/src/gui/212x64/gui.h | 3 +- radio/src/gui/212x64/lcd.h | 8 +-- radio/src/gui/212x64/model_setup.cpp | 2 +- radio/src/gui/212x64/radio_calibration.cpp | 2 +- radio/src/gui/212x64/view_channels.cpp | 4 +- radio/src/gui/480x272/gui.h | 2 +- radio/src/gui/480x272/lcd.cpp | 52 ++++--------------- radio/src/gui/480x272/lcd.h | 10 +--- radio/src/gui/480x272/model_inputs.cpp | 9 +++- .../gui/480x272/model_logical_switches.cpp | 2 +- radio/src/gui/480x272/popups.cpp | 4 +- radio/src/gui/480x272/radio_trainer.cpp | 2 +- radio/src/gui/480x272/radio_version.cpp | 2 +- radio/src/gui/480x272/view_text.cpp | 2 +- radio/src/gui/CMakeLists.txt | 7 +++ radio/src/gui/common/colorlcd/widgets.cpp | 28 ++++++++++ radio/src/gui/gui_common.h | 11 ++-- radio/src/gui/gui_common_arm.cpp | 2 +- radio/src/strhelpers.cpp | 30 +++++++++++ radio/src/strhelpers.h | 2 + radio/src/targets/taranis/lcd_driver_spi.cpp | 8 +-- 28 files changed, 122 insertions(+), 97 deletions(-) create mode 100644 radio/src/gui/common/colorlcd/widgets.cpp diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index 9dd6c2ab1..480e2c76c 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -143,7 +143,7 @@ else() add_definitions(-DEEPROM) endif() -if(NOT ${EEPROM} STREQUAL SDCARD AND ARCH STREQUAL ARM) +if(ARCH STREQUAL ARM AND NOT PCB STREQUAL HORUS AND NOT PCB STREQUAL FLAMENCO) set(SRC ${SRC} storage/eeprom_conversions.cpp) endif() diff --git a/radio/src/cli.cpp b/radio/src/cli.cpp index 8047f1daa..405c1cc91 100644 --- a/radio/src/cli.cpp +++ b/radio/src/cli.cpp @@ -511,7 +511,10 @@ int cliDisplay(const char ** argv) for (int i=MIXSRC_FIRST_SWITCH; i<=MIXSRC_LAST_SWITCH; i++) { mixsrc_t sw = i - MIXSRC_FIRST_SWITCH; if (SWITCH_EXISTS(sw)) { - serialPrint("[S%c] = %s", 'A'+sw, (switchState(3*sw) ? "down" : (switchState(3*sw+1) ? "mid" : "up"))); + char swName[LEN_SWITCH_NAME + 1]; + strAppend(swName, STR_VSWITCHES+1+sw*STR_VSWITCHES[0], STR_VSWITCHES[0]); + static const char * const SWITCH_POSITIONS[] = { "down", "mid", "up" }; + serialPrint("[%s] = %s", swName, SWITCH_POSITIONS[1 + getValue(i) / 1024]); } } } diff --git a/radio/src/gui/128x64/gui.h b/radio/src/gui/128x64/gui.h index 9d99f1572..0434feb9b 100644 --- a/radio/src/gui/128x64/gui.h +++ b/radio/src/gui/128x64/gui.h @@ -458,7 +458,6 @@ void showAlertBox(const pm_char * title, const pm_char * text, const char * acti #define IS_OTHER_VIEW_DISPLAYED() false #if defined(CPUARM) -void drawCurveRef(coord_t x, coord_t y, CurveRef & curve, LcdFlags flags); void editCurveRef(coord_t x, coord_t y, CurveRef & curve, uint8_t event, LcdFlags flags); #endif diff --git a/radio/src/gui/128x64/lcd.h b/radio/src/gui/128x64/lcd.h index 441ff6aa1..02ee5165e 100644 --- a/radio/src/gui/128x64/lcd.h +++ b/radio/src/gui/128x64/lcd.h @@ -162,7 +162,7 @@ void lcdDrawText(coord_t x, coord_t y, const pm_char * s); void lcdDrawSizedText(coord_t x, coord_t y, const pm_char * s, unsigned char len); void lcdDrawTextAlignedLeft(coord_t y, const pm_char * s); -#define lcd_putsCenter(y, s) lcdDrawText((LCD_W-sizeof(TR_##s)*FW+FW+1)/2, y, STR_##s) +#define lcdDrawTextAlignedCenter(y, s) lcdDrawText((LCD_W-sizeof(TR_##s)*FW+FW+1)/2, y, STR_##s) #if defined(CPUARM) void lcdDrawHexNumber(coord_t x, coord_t y, uint32_t val, LcdFlags mode=0); @@ -200,14 +200,7 @@ void putsChnLetter(coord_t x, coord_t y, uint8_t idx, LcdFlags attr); void putsVolts(coord_t x, coord_t y, uint16_t volts, LcdFlags att); void putsVBat(coord_t x, coord_t y, LcdFlags att); -#if !defined(BOOT) -void drawSourceCustomValue(coord_t x, coord_t y, source_t channel, lcdint_t val, LcdFlags att=0); -void drawSourceValue(coord_t x, coord_t y, source_t channel, LcdFlags att=0); -#endif - -#if defined(CPUARM) -void drawSensorCustomValue(coord_t x, coord_t y, uint8_t channel, lcdint_t value, LcdFlags att); -#else +#if !defined(CPUARM) void drawTelemetryValue(coord_t x, coord_t y, uint8_t channel, lcdint_t val, LcdFlags att=0); #endif diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 610f5e289..e5542b364 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1100,7 +1100,7 @@ void menuModelFailsafe(uint8_t event) const uint8_t SLIDER_W = 90; ch = 8 * (menuVerticalPosition / 8); - lcd_putsCenter(0*FH, FAILSAFESET); + lcdDrawTextAlignedCenter(0*FH, FAILSAFESET); lcdInvertLine(0); uint8_t col = 0; diff --git a/radio/src/gui/128x64/radio_calibration.cpp b/radio/src/gui/128x64/radio_calibration.cpp index 4e44385fb..fd88bca98 100644 --- a/radio/src/gui/128x64/radio_calibration.cpp +++ b/radio/src/gui/128x64/radio_calibration.cpp @@ -127,7 +127,7 @@ void menuFirstCalib(uint8_t event) chainMenu(menuMainView); } else { - lcd_putsCenter(0*FH, MENUCALIBRATION); + lcdDrawTextAlignedCenter(0*FH, MENUCALIBRATION); lcdInvertLine(0); menuCommonCalib(event); } diff --git a/radio/src/gui/128x64/view_channels.cpp b/radio/src/gui/128x64/view_channels.cpp index f18fe4222..41b397e73 100644 --- a/radio/src/gui/128x64/view_channels.cpp +++ b/radio/src/gui/128x64/view_channels.cpp @@ -53,10 +53,10 @@ void menuChannelsView(uint8_t event) #ifdef MIXERS_MONITOR if (mixersView) - lcd_putsCenter(0*FH, MIXERS_MONITOR); + lcdDrawTextAlignedCenter(0*FH, MIXERS_MONITOR); else #endif - lcd_putsCenter(0*FH, CHANNELS_MONITOR); + lcdDrawTextAlignedCenter(0*FH, CHANNELS_MONITOR); lcdInvertLine(0); diff --git a/radio/src/gui/212x64/gui.h b/radio/src/gui/212x64/gui.h index b8046835d..680918eb8 100644 --- a/radio/src/gui/212x64/gui.h +++ b/radio/src/gui/212x64/gui.h @@ -88,7 +88,6 @@ void updateProgressBar(int num, int den); void drawGauge(coord_t x, coord_t y, coord_t w, coord_t h, int32_t val, int32_t max); void drawColumnHeader(const char * const * headers, uint8_t index); void drawStick(coord_t centrex, int16_t xval, int16_t yval); -void drawCurveRef(coord_t x, coord_t y, CurveRef & curve, LcdFlags att); void drawAlertBox(const char * title, const char * text, const char * action); #define ALERT_SOUND_ARG , uint8_t sound @@ -193,7 +192,7 @@ swsrc_t checkIncDecMovedSwitch(swsrc_t val); #define CURSOR_ON_LINE() (menuHorizontalPosition<0) #define CHECK_FLAG_NO_SCREEN_INDEX 1 -void check(const char *title, event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t menuTabSize, const pm_uint8_t *horTab, uint8_t horTabMax, vertpos_t maxrow, uint8_t flags=0); +void check(const char * title, event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t menuTabSize, const pm_uint8_t *horTab, uint8_t horTabMax, vertpos_t maxrow, uint8_t flags=0); void check_simple(const char *title, event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t menuTabSize, vertpos_t maxrow); void check_submenu_simple(const char *title, event_t event, uint8_t maxrow); diff --git a/radio/src/gui/212x64/lcd.h b/radio/src/gui/212x64/lcd.h index 7e2d2821d..9c8cec360 100644 --- a/radio/src/gui/212x64/lcd.h +++ b/radio/src/gui/212x64/lcd.h @@ -117,7 +117,7 @@ void lcdDrawText(coord_t x, coord_t y, const pm_char * s); void lcdDrawSizedText(coord_t x, coord_t y, const pm_char * s, unsigned char len); void lcdDrawTextAlignedLeft(coord_t y, const pm_char * s); -#define lcd_putsCenter(y, s) lcdDrawText((LCD_W-sizeof(TR_##s)*FW+FW+1)/2, y, STR_##s) +#define lcdDrawTextAlignedCenter(y, s) lcdDrawText((LCD_W-sizeof(TR_##s)*FW+FW+1)/2, y, STR_##s) void lcdDrawHexNumber(coord_t x, coord_t y, uint32_t val, LcdFlags mode=0); @@ -139,12 +139,6 @@ void putsChnLetter(coord_t x, coord_t y, uint8_t idx, LcdFlags attr); void putsVolts(coord_t x, coord_t y, uint16_t volts, LcdFlags att); void putsVBat(coord_t x, coord_t y, LcdFlags att); -#if !defined(BOOT) -void drawSourceCustomValue(coord_t x, coord_t y, source_t channel, int32_t val, LcdFlags att=0); -void drawSourceValue(coord_t x, coord_t y, source_t channel, LcdFlags flags=0); -void drawSensorCustomValue(coord_t x, coord_t y, uint8_t source, int32_t val, LcdFlags att=0); -#endif - #define putstime_t int32_t void drawRtcTime(coord_t x, coord_t y, LcdFlags att); diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 85b3dadb3..4322ae8c3 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -1068,7 +1068,7 @@ void menuModelFailsafe(uint8_t event) lcdDrawSolidVerticalLine(LCD_W/2, FH, LCD_H-FH); } - lcd_putsCenter(0*FH, FAILSAFESET); + lcdDrawTextAlignedCenter(0*FH, FAILSAFESET); lcdInvertLine(0); unsigned int lim = g_model.extendedLimits ? 640*2 : 512*2; diff --git a/radio/src/gui/212x64/radio_calibration.cpp b/radio/src/gui/212x64/radio_calibration.cpp index 76c5a1fa3..000c193a8 100644 --- a/radio/src/gui/212x64/radio_calibration.cpp +++ b/radio/src/gui/212x64/radio_calibration.cpp @@ -212,7 +212,7 @@ void menuFirstCalib(uint8_t event) chainMenu(menuMainView); } else { - lcd_putsCenter(0*FH, MENUCALIBRATION); + lcdDrawTextAlignedCenter(0*FH, MENUCALIBRATION); lcdInvertLine(0); menuCommonCalib(event); } diff --git a/radio/src/gui/212x64/view_channels.cpp b/radio/src/gui/212x64/view_channels.cpp index ef88610b3..ee9aeb7e6 100644 --- a/radio/src/gui/212x64/view_channels.cpp +++ b/radio/src/gui/212x64/view_channels.cpp @@ -53,10 +53,10 @@ void menuChannelsView(uint8_t event) #ifdef MIXERS_MONITOR if (mixersView) - lcd_putsCenter(0*FH, MIXERS_MONITOR); + lcdDrawTextAlignedCenter(0*FH, MIXERS_MONITOR); else #endif - lcd_putsCenter(0*FH, CHANNELS_MONITOR); + lcdDrawTextAlignedCenter(0*FH, CHANNELS_MONITOR); lcdInvertLine(0); diff --git a/radio/src/gui/480x272/gui.h b/radio/src/gui/480x272/gui.h index 7e16e394f..1e57e8f21 100644 --- a/radio/src/gui/480x272/gui.h +++ b/radio/src/gui/480x272/gui.h @@ -94,7 +94,7 @@ extern Layout * customScreens[MAX_CUSTOM_SCREENS]; extern Topbar * topbar; void drawAlertBox(const char * title, const char * text, const char * action); -void showAlertBox(const pm_char * title, const pm_char * text, const char * action, uint8_t sound); +void showAlertBox(const char * title, const char * text, const char * action, uint8_t sound); #define IS_MAIN_VIEW_DISPLAYED() menuHandlers[0] == menuMainView #define IS_TELEMETRY_VIEW_DISPLAYED() false diff --git a/radio/src/gui/480x272/lcd.cpp b/radio/src/gui/480x272/lcd.cpp index f0b208bfc..c7df879eb 100644 --- a/radio/src/gui/480x272/lcd.cpp +++ b/radio/src/gui/480x272/lcd.cpp @@ -64,7 +64,7 @@ void lcdPutFontPattern(coord_t x, coord_t y, const uint8_t * font, const uint16_ lcdNextPos = x + width; } -void lcdDrawChar(coord_t x, coord_t y, const unsigned char c, LcdFlags flags) +void lcdDrawChar(coord_t x, coord_t y, char c, LcdFlags flags) { uint32_t fontindex = FONTINDEX(flags); const pm_uchar * font = fontsTable[fontindex]; @@ -210,51 +210,16 @@ void lcdDrawLine(coord_t x1, coord_t y1, coord_t x2, coord_t y2, uint8_t pat, Lc } #endif -void drawRtcTime(coord_t x, coord_t y, LcdFlags att) +void drawRtcTime(coord_t x, coord_t y, LcdFlags flags) { - drawTimer(x, y, getValue(MIXSRC_TX_TIME), att); + drawTimer(x, y, getValue(MIXSRC_TX_TIME), flags); } -void getTimerString(char * str, putstime_t tme, LcdFlags att) +void drawTimer(coord_t x, coord_t y, putstime_t tme, LcdFlags flags) { - div_t qr; - - if (tme < 0) { - // TODO lcdDrawChar(x - ((att & DBLSIZE) ? FW+2 : ((att & MIDSIZE) ? FW+0 : FWNUM)), y, '-', att); - tme = -tme; - *str++ = '-'; - } - - qr = div(tme, 60); - - if (att & TIMEHOUR) { - div_t qr2 = div(qr.quot, 60); - *str++ = '0' + (qr2.quot/10); - *str++ = '0' + (qr2.quot%10); - *str++ = ':'; - qr.quot = qr2.rem; - } - - *str++ = '0' + (qr.quot/10); - *str++ = '0' + (qr.quot%10); - *str++ = ':'; - *str++ = '0' + (qr.rem/10); - *str++ = '0' + (qr.rem%10); - *str = '\0'; -} - -void drawTimer(coord_t x, coord_t y, putstime_t tme, LcdFlags att) -{ - char str[LEN_TIMER_STRING]; // "-00:00:00" - getTimerString(str, tme, att); - lcdDrawText(x, y, str, att); -} - -void drawStringWithIndex(coord_t x, coord_t y, const pm_char * str, int idx, LcdFlags att, const char * prefix) -{ - char s[64]; - strAppendUnsigned(strAppend(strAppend(s, prefix), str), abs(idx)); - lcdDrawText(x, y, s, att); + char str[LEN_TIMER_STRING]; + getTimerString(str, tme, flags & TIMEHOUR); + lcdDrawText(x, y, str, flags); } void putsStickName(coord_t x, coord_t y, uint8_t idx, LcdFlags att) @@ -275,7 +240,7 @@ void putsChnLetter(coord_t x, coord_t y, uint8_t idx, LcdFlags att) lcdDrawTextAtIndex(x, y, STR_RETA123, idx-1, att); } -void putsModelName(coord_t x, coord_t y, char *name, uint8_t id, LcdFlags att) +void putsModelName(coord_t x, coord_t y, char * name, uint8_t id, LcdFlags att) { uint8_t len = sizeof(g_model.header.name); while (len>0 && !name[len-1]) --len; @@ -355,6 +320,7 @@ void drawValueWithUnit(coord_t x, coord_t y, int32_t val, uint8_t unit, LcdFlags void drawDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags att) { + // TODO if (att & DBLSIZE) { x -= 42; att &= ~0x0F00; // TODO constant diff --git a/radio/src/gui/480x272/lcd.h b/radio/src/gui/480x272/lcd.h index be5153f20..9282863f2 100644 --- a/radio/src/gui/480x272/lcd.h +++ b/radio/src/gui/480x272/lcd.h @@ -107,9 +107,9 @@ extern display_t displayBuf[DISPLAY_BUFFER_SIZE]; extern coord_t lcdNextPos; -void lcdDrawChar(coord_t x, coord_t y, const unsigned char c, LcdFlags attr=0); +void lcdDrawChar(coord_t x, coord_t y, char c, LcdFlags flags=0); -void lcdDrawTextAtIndex(coord_t x, coord_t y, const pm_char * s, uint8_t idx, LcdFlags attr=0); +void lcdDrawTextAtIndex(coord_t x, coord_t y, const pm_char * s, uint8_t idx, LcdFlags flags=0); inline void lcdClear() { @@ -141,14 +141,8 @@ void drawTrimMode(coord_t x, coord_t y, uint8_t phase, uint8_t idx, LcdFlags att #define putsChn(x, y, idx, att) drawSource(x, y, MIXSRC_CH1+idx-1, att) void putsChnLetter(coord_t x, coord_t y, uint8_t idx, LcdFlags attr); -void drawSourceCustomValue(coord_t x, coord_t y, source_t channel, int32_t val, LcdFlags att=0); -void drawSourceValue(coord_t x, coord_t y, source_t channel, LcdFlags att=0); -void drawSensorCustomValue(coord_t x, coord_t y, uint8_t channel, int32_t val, LcdFlags att=0); - #define putstime_t int32_t -#define LEN_TIMER_STRING 10 -void getTimerString(char * str, putstime_t tme, LcdFlags att=0); void drawRtcTime(coord_t x, coord_t y, LcdFlags att=0); void drawTimer(coord_t x, coord_t y, putstime_t tme, LcdFlags att=0); diff --git a/radio/src/gui/480x272/model_inputs.cpp b/radio/src/gui/480x272/model_inputs.cpp index 0f563b26b..3686ccee4 100644 --- a/radio/src/gui/480x272/model_inputs.cpp +++ b/radio/src/gui/480x272/model_inputs.cpp @@ -159,6 +159,7 @@ enum ExposFields { EXPO_FIELD_INPUT_NAME, EXPO_FIELD_NAME, EXPO_FIELD_SOURCE, + EXPO_FIELD_SCALE, EXPO_FIELD_WEIGHT, EXPO_FIELD_OFFSET, CASE_CURVES(EXPO_FIELD_CURVE) @@ -175,7 +176,7 @@ bool menuModelExpoOne(event_t event) { ExpoData * ed = expoAddress(s_currIdx); - SUBMENU_WITH_OPTIONS(STR_MENUINPUTS, ICON_MODEL_INPUTS, EXPO_FIELD_MAX, OPTION_MENU_NO_FOOTER|OPTION_MENU_NO_SCROLLBAR, { 0, 0, (ed->srcRaw >= MIXSRC_FIRST_TELEM ? (uint8_t)1 : (uint8_t)0), 0, 0, CASE_CURVES(CURVE_ROWS) CASE_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0 /*, ...*/}); + SUBMENU_WITH_OPTIONS(STR_MENUINPUTS, ICON_MODEL_INPUTS, EXPO_FIELD_MAX, OPTION_MENU_NO_FOOTER|OPTION_MENU_NO_SCROLLBAR, { 0, 0, 0, (ed->srcRaw >= MIXSRC_FIRST_TELEM ? (uint8_t)0 : (uint8_t)HIDDEN_ROW), 0, 0, CASE_CURVES(CURVE_ROWS) CASE_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0 /*, ...*/}); lcdDrawSizedText(50, 3+FH, g_model.inputNames[ed->chn], LEN_INPUT_NAME, ZCHAR|MENU_TITLE_COLOR); lcdDrawSolidFilledRect(0, MENU_FOOTER_TOP, 230, MENU_FOOTER_HEIGHT, HEADER_BGCOLOR); @@ -243,6 +244,12 @@ bool menuModelExpoOne(event_t event) menuHorizontalPosition = 0; } break; + + case EXPO_FIELD_SCALE: + lcdDrawText(MENUS_MARGIN_LEFT, y, STR_SCALE); + drawSensorCustomValue(EXPO_ONE_2ND_COLUMN, y, (ed->srcRaw - MIXSRC_FIRST_TELEM)/3, convertTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1, ed->scale), LEFT|attr); + if (attr) ed->scale = checkIncDec(event, ed->scale, 0, maxTelemValue(ed->srcRaw - MIXSRC_FIRST_TELEM + 1), EE_MODEL); + break; case EXPO_FIELD_WEIGHT: lcdDrawText(MENUS_MARGIN_LEFT, y, STR_WEIGHT); diff --git a/radio/src/gui/480x272/model_logical_switches.cpp b/radio/src/gui/480x272/model_logical_switches.cpp index c854b7351..6967f86c0 100644 --- a/radio/src/gui/480x272/model_logical_switches.cpp +++ b/radio/src/gui/480x272/model_logical_switches.cpp @@ -171,7 +171,7 @@ bool menuModelLogicalSwitches(event_t event) INCDEC_ENABLE_CHECK(NULL); } v2_max = getMaximumValue(v1_val); - v2_min = - v2_max; + v2_min = -v2_max; drawSourceCustomValue(CSW_3RD_COLUMN, y, v1_val, v1_val <= MIXSRC_LAST_CH ? calc100toRESX(cs->v2) : cs->v2, LEFT|attr2); } diff --git a/radio/src/gui/480x272/popups.cpp b/radio/src/gui/480x272/popups.cpp index 74f0fd0fe..7cbe3d7ff 100644 --- a/radio/src/gui/480x272/popups.cpp +++ b/radio/src/gui/480x272/popups.cpp @@ -45,7 +45,7 @@ void runPopupWarningBox() // lcdDrawBitmap(POPUP_X+15, POPUP_Y+20, LBM_WARNING); } -void displayMessageBox() +void drawMessageBox() { // theme->drawMessageBox("", "", "", MESSAGEBOX_TYPE_INFO); // lcdDrawSolidFilledRect(POPUP_X, POPUP_Y, POPUP_W, POPUP_H, TEXT_BGCOLOR); @@ -69,7 +69,7 @@ void showAlertBox(const char * title, const char * text, const char * action, ui void showMessageBox(const char * title) { - // displayMessageBox(); + // drawMessageBox(); lcdDrawSizedText(WARNING_LINE_X, WARNING_LINE_Y, title, WARNING_LINE_LEN, DBLSIZE|WARNING_COLOR); lcdRefresh(); } diff --git a/radio/src/gui/480x272/radio_trainer.cpp b/radio/src/gui/480x272/radio_trainer.cpp index adc2856a7..3ab80970c 100644 --- a/radio/src/gui/480x272/radio_trainer.cpp +++ b/radio/src/gui/480x272/radio_trainer.cpp @@ -33,7 +33,7 @@ bool menuRadioTrainer(event_t event) MENU(STR_MENUTRAINER, RADIO_ICONS, menuTabGeneral, MENU_RADIO_TRAINER, (slave ? 0 : 6), { 2, 2, 2, 2, 0/*, 0*/ }); if (slave) { - // TODO lcd_putsCenter(5*FH, STR_SLAVE, TEXT_COLOR); + // TODO lcdDrawTextAlignedCenter(5*FH, STR_SLAVE, TEXT_COLOR); return true; } diff --git a/radio/src/gui/480x272/radio_version.cpp b/radio/src/gui/480x272/radio_version.cpp index dbec813ee..1a586b229 100644 --- a/radio/src/gui/480x272/radio_version.cpp +++ b/radio/src/gui/480x272/radio_version.cpp @@ -37,7 +37,7 @@ bool menuRadioVersion(event_t event) DEBUG_TIMER_STOP(debugTimerDrawText); // TODO EEPROM erase + backup - // lcd_putsCenter(MENU_HEADER_HEIGHT+6*FH, STR_EEBACKUP); + // lcdDrawTextAlignedCenter(MENU_HEADER_HEIGHT+6*FH, STR_EEBACKUP); // if (event == EVT_KEY_LONG(KEY_ENTER)) { // eepromBackup(); // } diff --git a/radio/src/gui/480x272/view_text.cpp b/radio/src/gui/480x272/view_text.cpp index 76704252f..71a31127f 100644 --- a/radio/src/gui/480x272/view_text.cpp +++ b/radio/src/gui/480x272/view_text.cpp @@ -130,7 +130,7 @@ bool menuTextView(event_t event) #if defined(SIMU) if (!strncmp(title, "./", 2)) title += 2; #endif - lcd_putsCenter(MENU_FOOTER_TOP, title, HEADER_COLOR); + lcdDrawTextAlignedCenter(MENU_FOOTER_TOP, title, HEADER_COLOR); #endif drawVerticalScrollbar(LCD_W-5, 50, 195, menuVerticalOffset, lines_count, NUM_BODY_LINES); diff --git a/radio/src/gui/CMakeLists.txt b/radio/src/gui/CMakeLists.txt index 577bb676e..00c201e9c 100644 --- a/radio/src/gui/CMakeLists.txt +++ b/radio/src/gui/CMakeLists.txt @@ -40,3 +40,10 @@ if(ARCH STREQUAL ARM) gui/common/arm/widgets.cpp ) endif() + +if(PCB STREQUAL FLAMENCO OR PCB STREQUAL HORUS) + set(SRC + ${SRC} + gui/common/colorlcd/widgets.cpp + ) +endif() diff --git a/radio/src/gui/common/colorlcd/widgets.cpp b/radio/src/gui/common/colorlcd/widgets.cpp new file mode 100644 index 000000000..9e191b3dc --- /dev/null +++ b/radio/src/gui/common/colorlcd/widgets.cpp @@ -0,0 +1,28 @@ +/* + * Copyright (C) OpenTX + * + * Based on code named + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "opentx.h" + +void drawStringWithIndex(coord_t x, coord_t y, const char * str, int idx, LcdFlags flags, const char * prefix) +{ + char s[64]; + strAppendUnsigned(strAppend(strAppend(s, prefix), str), abs(idx)); + lcdDrawText(x, y, s, flags); +} diff --git a/radio/src/gui/gui_common.h b/radio/src/gui/gui_common.h index 3b18f46f9..06a5fc663 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -79,10 +79,13 @@ void drawFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att=0); #if defined(CPUARM) #include "telemetry/telemetry_sensors.h" -void drawCurveRef(coord_t x, coord_t y, CurveRef & curve, LcdFlags att=0); -void drawDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags att); -void drawGPSPosition(coord_t x, coord_t y, int32_t longitude, int32_t latitude, LcdFlags flags); -void drawGPSSensorValue(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags flags); +void drawCurveRef(coord_t x, coord_t y, CurveRef & curve, LcdFlags flags=0); +void drawDate(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags flags=0); +void drawGPSPosition(coord_t x, coord_t y, int32_t longitude, int32_t latitude, LcdFlags flags=0); +void drawGPSSensorValue(coord_t x, coord_t y, TelemetryItem & telemetryItem, LcdFlags flags=0); +void drawSensorCustomValue(coord_t x, coord_t y, uint8_t sensor, int32_t value, LcdFlags flags=0); +void drawSourceCustomValue(coord_t x, coord_t y, source_t channel, int32_t val, LcdFlags flags=0); +void drawSourceValue(coord_t x, coord_t y, source_t channel, LcdFlags flags=0); #endif void drawCurve(coord_t offset=0); diff --git a/radio/src/gui/gui_common_arm.cpp b/radio/src/gui/gui_common_arm.cpp index 7f868ed59..fb7b5d0bf 100644 --- a/radio/src/gui/gui_common_arm.cpp +++ b/radio/src/gui/gui_common_arm.cpp @@ -482,7 +482,7 @@ bool isSourceAvailableInResetSpecialFunction(int index) bool isModuleAvailable(int module) { -#if defined(CROSSFIRE) +#if defined(CROSSFIRE) && !defined(PCBFLAMENCO) if (module == MODULE_TYPE_CROSSFIRE && g_model.moduleData[INTERNAL_MODULE].rfProtocol != RF_PROTO_OFF) { return false; } diff --git a/radio/src/strhelpers.cpp b/radio/src/strhelpers.cpp index f784b2ce1..3a359e234 100644 --- a/radio/src/strhelpers.cpp +++ b/radio/src/strhelpers.cpp @@ -160,6 +160,36 @@ char * getStringWithIndex(char * dest, const char * s, int idx) return dest; } +char * getTimerString(char * dest, putstime_t tme, uint8_t hours) +{ + char * s = dest; + div_t qr; + + if (tme < 0) { + tme = -tme; + *s++ = '-'; + } + + qr = div(tme, 60); + + if (hours) { + div_t qr2 = div(qr.quot, 60); + *s++ = '0' + (qr2.quot / 10); + *s++ = '0' + (qr2.quot % 10); + *s++ = ':'; + qr.quot = qr2.rem; + } + + *s++ = '0' + (qr.quot / 10); + *s++ = '0' + (qr.quot % 10); + *s++ = ':'; + *s++ = '0' + (qr.rem / 10); + *s++ = '0' + (qr.rem % 10); + *s = '\0'; + + return dest; +} + char * getCurveString(char * dest, int idx) { if (idx == 0) { diff --git a/radio/src/strhelpers.h b/radio/src/strhelpers.h index 0d3c7ae6a..6253e452c 100644 --- a/radio/src/strhelpers.h +++ b/radio/src/strhelpers.h @@ -31,6 +31,8 @@ char * strAppendFilename(char * dest, const char * filename, const int size); #if defined(CPUARM) && !defined(BOOT) char * getStringAtIndex(char * dest, const char * s, int idx); char * getStringWithIndex(char * dest, const char * s, int idx); +#define LEN_TIMER_STRING 10 // "-00:00:00" +char * getTimerString(char * dest, int32_t tme, uint8_t hours=0); char * getCurveString(char * dest, int idx); char * getSwitchString(char * dest, swsrc_t idx); char * getSourceString(char * dest, mixsrc_t idx); diff --git a/radio/src/targets/taranis/lcd_driver_spi.cpp b/radio/src/targets/taranis/lcd_driver_spi.cpp index 5724f0dc4..d54863495 100644 --- a/radio/src/targets/taranis/lcd_driver_spi.cpp +++ b/radio/src/targets/taranis/lcd_driver_spi.cpp @@ -70,14 +70,14 @@ void lcdHardwareInit() GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(LCD_NCS_GPIO, &GPIO_InitStructure); - + GPIO_InitStructure.GPIO_Pin = LCD_RST_GPIO_PIN; GPIO_Init(LCD_RST_GPIO, &GPIO_InitStructure); - + GPIO_InitStructure.GPIO_Pin = LCD_A0_GPIO_PIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(LCD_SPI_GPIO, &GPIO_InitStructure); - + GPIO_InitStructure.GPIO_Pin = LCD_CLK_GPIO_PIN | LCD_MOSI_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(LCD_SPI_GPIO, &GPIO_InitStructure); @@ -319,7 +319,7 @@ void lcdInitFinish() lcdStart(); lcdWriteCommand(0xAF); // dc2=1, IC into exit SLEEP MODE, dc3=1 gray=ON, dc4=1 Green Enhanc mode disabled - delay_ms(20); //needed for internal DC-DC converter startup + delay_ms(20); // needed for internal DC-DC converter startup } void lcdSetRefVolt(uint8_t val)