diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index 309254cca..5022e1819 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -440,7 +440,7 @@ bool isAudioFileReferenced(uint32_t i, char * filename) { uint8_t category = (i >> 24); uint8_t index = (i >> 16) & 0xFF; - uint8_t event = i & 0xFF; + event_t event = i & 0xFF; // TRACE("isAudioFileReferenced(%08x)", i); @@ -474,7 +474,7 @@ bool isAudioFileReferenced(uint32_t i, char * filename) tmr10ms_t timeAutomaticPromptsSilence = 0; -void playModelEvent(uint8_t category, uint8_t index, uint8_t event) +void playModelEvent(uint8_t category, uint8_t index, event_t event) { char filename[AUDIO_FILENAME_MAXLEN+1]; // TRACE("playModelEvent(): cat: %u, idx: %u, evt:%u", (uint32_t)category, (uint32_t)index, (uint32_t)event); diff --git a/radio/src/audio_arm.h b/radio/src/audio_arm.h index 4ddaf8b16..3b6b0820b 100644 --- a/radio/src/audio_arm.h +++ b/radio/src/audio_arm.h @@ -380,7 +380,7 @@ void playModelName(); #if defined(SDCARD) extern tmr10ms_t timeAutomaticPromptsSilence; - void playModelEvent(uint8_t category, uint8_t index, uint8_t event=0); + void playModelEvent(uint8_t category, uint8_t index, event_t event=0); #define PLAY_PHASE_OFF(phase) playModelEvent(PHASE_AUDIO_CATEGORY, phase, AUDIO_EVENT_OFF) #define PLAY_PHASE_ON(phase) playModelEvent(PHASE_AUDIO_CATEGORY, phase, AUDIO_EVENT_ON) #define PLAY_SWITCH_MOVED(sw) playModelEvent(SWITCH_AUDIO_CATEGORY, sw) diff --git a/radio/src/cli.cpp b/radio/src/cli.cpp index 405c1cc91..873cd8d2d 100644 --- a/radio/src/cli.cpp +++ b/radio/src/cli.cpp @@ -502,8 +502,8 @@ int cliDisplay(const char ** argv) name[len] = '\0'; serialPrint("[%s] = %s", name, keyState(i) ? "on" : "off"); } -#if defined(ROTARY_ENCODER_NAVIGATION) || defined(PCBX9E) || defined(PCBHORUS) || defined(PCBFLAMENCO) - serialPrint("[Enc.] = %d", rotencValue / 2); +#if defined(ROTARY_ENCODER_NAVIGATION) + serialPrint("[Enc.] = %d", rotencValue[0] / ROTARY_ENCODER_GRANULARITY); #endif for (int i=TRM_BASE; i<=TRM_LAST; i++) { serialPrint("[Trim%d] = %s", i-TRM_BASE, keyState(i) ? "on" : "off"); diff --git a/radio/src/debug.h b/radio/src/debug.h index 7ced8d202..81cd24f2b 100644 --- a/radio/src/debug.h +++ b/radio/src/debug.h @@ -118,7 +118,7 @@ enum TraceEvent { struct TraceElement { gtime_t time; uint8_t time_ms; - uint8_t event; + event_t event; uint32_t data; }; diff --git a/radio/src/functions.cpp b/radio/src/functions.cpp index 701c7cf6e..3c3adf5d1 100644 --- a/radio/src/functions.cpp +++ b/radio/src/functions.cpp @@ -351,7 +351,7 @@ void evalFunctions() #if ROTARY_ENCODERS > 1 case FUNC_RESET_ROTENC2: #endif - g_rotenc[CFN_PARAM(cfn)-FUNC_RESET_ROTENC1] = 0; + rotencValue[CFN_PARAM(cfn)-FUNC_RESET_ROTENC1] = 0; break; #endif } @@ -423,7 +423,7 @@ void evalFunctions() } #if defined(ROTARY_ENCODERS) else if (CFN_PARAM(cfn) >= MIXSRC_REa && CFN_PARAM(cfn) < MIXSRC_TrimRud) { - int8_t scroll = rePreviousValues[CFN_PARAM(cfn)-MIXSRC_REa] - (g_rotenc[CFN_PARAM(cfn)-MIXSRC_REa] / ROTARY_ENCODER_GRANULARITY); + int8_t scroll = rePreviousValues[CFN_PARAM(cfn)-MIXSRC_REa] - (rotencValue[CFN_PARAM(cfn)-MIXSRC_REa] / ROTARY_ENCODER_GRANULARITY); if (scroll) { SET_GVAR(CFN_GVAR_INDEX(cfn), GVAR_VALUE(CFN_GVAR_INDEX(cfn), getGVarFlightMode(mixerCurrentFlightMode, CFN_GVAR_INDEX(cfn))) + scroll, mixerCurrentFlightMode); } @@ -612,7 +612,7 @@ void evalFunctions() #if defined(ROTARY_ENCODERS) && defined(GVARS) for (uint8_t i=0; i= 0x0e) - #define CASE_EVT_ROTARY_BREAK case EVT_ROTARY_BREAK: - #define CASE_EVT_ROTARY_LONG case EVT_ROTARY_LONG: - #define CASE_EVT_ROTARY_LEFT case EVT_ROTARY_LEFT: - #define CASE_EVT_ROTARY_RIGHT case EVT_ROTARY_RIGHT: - void repeatLastCursorMove(uint8_t event); + void repeatLastCursorMove(event_t event); #define REPEAT_LAST_CURSOR_MOVE() { if (EVT_KEY_MASK(event) >= 0x0e) putEvent(event); else repeatLastCursorMove(event); } #define MOVE_CURSOR_FROM_HERE() if (menuHorizontalPosition > 0) REPEAT_LAST_CURSOR_MOVE() #else @@ -387,17 +393,17 @@ void drawStatusLine(); #define IS_ROTARY_BREAK(evt) (0) #define IS_ROTARY_LONG(evt) (0) #define IS_ROTARY_EVENT(evt) (0) - #define CASE_EVT_ROTARY_BREAK - #define CASE_EVT_ROTARY_LONG - #define CASE_EVT_ROTARY_LEFT - #define CASE_EVT_ROTARY_RIGHT - void repeatLastCursorMove(uint8_t event); + void repeatLastCursorMove(event_t event); #define REPEAT_LAST_CURSOR_MOVE() repeatLastCursorMove(event) #define MOVE_CURSOR_FROM_HERE() REPEAT_LAST_CURSOR_MOVE() #endif -#define POS_HORZ_INIT(posVert) 0 +// TODO enum +#if defined(PCBX7D) +#define EDIT_MODE_INIT 0 +#else #define EDIT_MODE_INIT -1 +#endif typedef int (*FnFuncP) (int x); void drawFunction(FnFuncP fn, uint8_t offset=0); @@ -457,12 +463,12 @@ void showAlertBox(const pm_char * title, const pm_char * text, const char * acti #define IS_OTHER_VIEW_DISPLAYED() false #if defined(CPUARM) -void editCurveRef(coord_t x, coord_t y, CurveRef & curve, uint8_t event, LcdFlags flags); +void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlags flags); #endif #if defined(FLIGHT_MODES) void displayFlightModes(coord_t x, coord_t y, FlightModesType value); -FlightModesType editFlightModes(coord_t x, coord_t y, uint8_t event, FlightModesType value, uint8_t attr); +FlightModesType editFlightModes(coord_t x, coord_t y, event_t event, FlightModesType value, uint8_t attr); #else #define displayFlightModes(...) #endif diff --git a/radio/src/gui/128x64/menu_model.cpp b/radio/src/gui/128x64/menu_model.cpp index 41ab99ca1..d34a3ed89 100644 --- a/radio/src/gui/128x64/menu_model.cpp +++ b/radio/src/gui/128x64/menu_model.cpp @@ -24,7 +24,7 @@ #include "view_mavlink.h" #endif -uint8_t editDelay(const coord_t y, const uint8_t event, const uint8_t attr, const pm_char *str, uint8_t delay) +uint8_t editDelay(coord_t y, event_t event, uint8_t attr, const pm_char * str, uint8_t delay) { lcdDrawTextAlignedLeft(y, str); lcdDrawNumber(MIXES_2ND_COLUMN, y, (10/DELAY_STEP)*delay, attr|PREC1|LEFT); @@ -46,7 +46,7 @@ uint8_t s_copySrcCh; #endif #if defined(PCBX7D) -void editName(coord_t x, coord_t y, char * name, uint8_t size, uint8_t event, uint8_t active/* TODO, uint8_t attr*/) +void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, uint8_t active/* TODO, uint8_t attr*/) { LcdFlags attr = ZCHAR; // TODO in args uint8_t mode = 0; @@ -135,7 +135,7 @@ void editName(coord_t x, coord_t y, char * name, uint8_t size, uint8_t event, ui } } #else -void editName(coord_t x, coord_t y, char * name, uint8_t size, uint8_t event, uint8_t active) +void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, uint8_t active) { #if defined(CPUM64) // in order to save flash @@ -221,7 +221,7 @@ void editName(coord_t x, coord_t y, char * name, uint8_t size, uint8_t event, ui #endif #if !defined(CPUM64) -void editSingleName(coord_t x, coord_t y, const pm_char * label, char * name, uint8_t size, uint8_t event, uint8_t active) +void editSingleName(coord_t x, coord_t y, const pm_char * label, char * name, uint8_t size, event_t event, uint8_t active) { lcdDrawTextAlignedLeft(y, label); editName(x, y, name, size, event, active); diff --git a/radio/src/gui/128x64/menu_radio.cpp b/radio/src/gui/128x64/menu_radio.cpp index b069cb69d..e3ceeabdb 100644 --- a/radio/src/gui/128x64/menu_radio.cpp +++ b/radio/src/gui/128x64/menu_radio.cpp @@ -21,7 +21,7 @@ #include "opentx.h" #if defined(CPUARM) -void menuRadioSpecialFunctions(uint8_t event) +void menuRadioSpecialFunctions(event_t event) { MENU(STR_MENUSPECIALFUNCS, menuTabGeneral, MENU_RADIO_SPECIAL_FUNCTIONS, HEADER_LINE+MAX_SPECIAL_FUNCTIONS, { HEADER_LINE_COLUMNS NAVIGATION_LINE_BY_LINE|4/*repeated*/ }); return menuSpecialFunctions(event, g_eeGeneral.customFn, &globalFunctionsContext); diff --git a/radio/src/gui/128x64/menus.cpp b/radio/src/gui/128x64/menus.cpp index 064846b72..33d5e3773 100644 --- a/radio/src/gui/128x64/menus.cpp +++ b/radio/src/gui/128x64/menus.cpp @@ -61,7 +61,7 @@ void pushMenu(MenuHandlerFunc newMenu) } #if defined(CPUARM) -void menuModelNotes(uint8_t event) +void menuModelNotes(event_t event) { if (event == EVT_ENTRY) { strcpy(s_text_file, MODELS_PATH "/"); diff --git a/radio/src/gui/128x64/menus.h b/radio/src/gui/128x64/menus.h index 8572e17ae..1000ddde7 100644 --- a/radio/src/gui/128x64/menus.h +++ b/radio/src/gui/128x64/menus.h @@ -39,7 +39,7 @@ typedef uint16_t vertpos_t; typedef uint8_t vertpos_t; #endif -typedef void (*MenuHandlerFunc)(uint8_t event); +typedef void (*MenuHandlerFunc)(event_t event); #if defined(CPUARM) extern tmr10ms_t menuEntryTime; @@ -66,11 +66,11 @@ inline MenuHandlerFunc lastPopMenu() void onMainViewMenu(const char * result); -void menuFirstCalib(uint8_t event); -void menuMainView(uint8_t event); -void menuViewTelemetryFrsky(uint8_t event); -void menuViewTelemetryMavlink(uint8_t event); -void menuSpecialFunctions(uint8_t event, CustomFunctionData * functions, CustomFunctionsContext * functionsContext); +void menuFirstCalib(event_t event); +void menuMainView(event_t event); +void menuViewTelemetryFrsky(event_t event); +void menuViewTelemetryMavlink(event_t event); +void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomFunctionsContext * functionsContext); enum MenuRadioIndexes { @@ -86,15 +86,15 @@ enum MenuRadioIndexes MENU_RADIO_PAGES_COUNT }; -void menuRadioSetup(uint8_t event); -void menuRadioSdManager(uint8_t event); -void menuRadioSpecialFunctions(uint8_t event); -void menuRadioTrainer(uint8_t event); -void menuRadioVersion(uint8_t event); -void menuRadioDiagKeys(uint8_t event); -void menuRadioDiagAnalogs(uint8_t event); -void menuRadioHardware(uint8_t event); -void menuRadioCalibration(uint8_t event); +void menuRadioSetup(event_t event); +void menuRadioSdManager(event_t event); +void menuRadioSpecialFunctions(event_t event); +void menuRadioTrainer(event_t event); +void menuRadioVersion(event_t event); +void menuRadioDiagKeys(event_t event); +void menuRadioDiagAnalogs(event_t event); +void menuRadioHardware(event_t event); +void menuRadioCalibration(event_t event); static const MenuHandlerFunc menuTabGeneral[] PROGMEM = { menuRadioSetup, @@ -126,23 +126,23 @@ enum MenuModelIndexes { MENU_MODEL_PAGES_COUNT }; -void menuModelSelect(uint8_t event); -void menuModelSetup(uint8_t event); -void menuModelHeli(uint8_t event); -void menuModelFlightModesAll(uint8_t event); -void menuModelExposAll(uint8_t event); -void menuModelMixAll(uint8_t event); -void menuModelLimits(uint8_t event); -void menuModelCurvesAll(uint8_t event); -void menuModelCurveOne(uint8_t event); -void menuModelGVars(uint8_t event); -void menuModelLogicalSwitches(uint8_t event); -void menuModelSpecialFunctions(uint8_t event); -void menuModelTelemetryFrsky(uint8_t event); -void menuModelTelemetryMavlink(uint8_t event); -void menuModelDisplay(uint8_t event); -void menuModelTemplates(uint8_t event); -void menuModelExpoOne(uint8_t event); +void menuModelSelect(event_t event); +void menuModelSetup(event_t event); +void menuModelHeli(event_t event); +void menuModelFlightModesAll(event_t event); +void menuModelExposAll(event_t event); +void menuModelMixAll(event_t event); +void menuModelLimits(event_t event); +void menuModelCurvesAll(event_t event); +void menuModelCurveOne(event_t event); +void menuModelGVars(event_t event); +void menuModelLogicalSwitches(event_t event); +void menuModelSpecialFunctions(event_t event); +void menuModelTelemetryFrsky(event_t event); +void menuModelTelemetryMavlink(event_t event); +void menuModelDisplay(event_t event); +void menuModelTemplates(event_t event); +void menuModelExpoOne(event_t event); static const MenuHandlerFunc menuTabModel[] PROGMEM = { menuModelSelect, @@ -161,12 +161,12 @@ static const MenuHandlerFunc menuTabModel[] PROGMEM = { CASE_TEMPLATES(menuModelTemplates) }; -void menuStatisticsView(uint8_t event); -void menuStatisticsDebug(uint8_t event); -void menuAboutView(uint8_t event); +void menuStatisticsView(event_t event); +void menuStatisticsDebug(event_t event); +void menuAboutView(event_t event); #if defined(DEBUG_TRACE_BUFFER) -void menuTraceBuffer(uint8_t event); +void menuTraceBuffer(event_t event); #endif #endif // _MENUS_H_ diff --git a/radio/src/gui/128x64/model_curve_edit.cpp b/radio/src/gui/128x64/model_curve_edit.cpp index 80ede56f8..4b3849884 100644 --- a/radio/src/gui/128x64/model_curve_edit.cpp +++ b/radio/src/gui/128x64/model_curve_edit.cpp @@ -20,7 +20,7 @@ #include "opentx.h" -void displayPresetChoice(uint8_t event) +void displayPresetChoice(event_t event) { runPopupWarning(event); lcdDrawNumber(WARNING_LINE_X+FW*7, WARNING_LINE_Y, 45*warningInputValue/4, LEFT|INVERS); @@ -64,7 +64,7 @@ void onCurveOneMenu(const char * result) } } -void menuModelCurveOne(uint8_t event) +void menuModelCurveOne(event_t event) { CurveData & crv = g_model.curves[s_curveChan]; int8_t * points = curveAddress(s_curveChan); diff --git a/radio/src/gui/128x64/model_curve_simple_edit.cpp b/radio/src/gui/128x64/model_curve_simple_edit.cpp index d60901a97..256243008 100644 --- a/radio/src/gui/128x64/model_curve_simple_edit.cpp +++ b/radio/src/gui/128x64/model_curve_simple_edit.cpp @@ -20,7 +20,7 @@ #include "opentx.h" -void menuModelCurveOne(uint8_t event) +void menuModelCurveOne(event_t event) { TITLE(STR_MENUCURVE); lcdDrawNumber(PSIZE(TR_MENUCURVE)*FW+1, 0, s_curveChan+1, INVERS|LEFT); diff --git a/radio/src/gui/128x64/model_display.cpp b/radio/src/gui/128x64/model_display.cpp index 406e06602..69f1fe4bd 100644 --- a/radio/src/gui/128x64/model_display.cpp +++ b/radio/src/gui/128x64/model_display.cpp @@ -82,7 +82,7 @@ void onTelemetryScriptFileSelectionMenu(const char *result) } #endif -void menuModelDisplay(uint8_t event) +void menuModelDisplay(event_t event) { MENU(STR_MENU_DISPLAY, menuTabModel, MENU_MODEL_DISPLAY, HEADER_LINE + ITEM_DISPLAY_MAX, { HEADER_LINE_COLUMNS TELEMETRY_SCREEN_ROWS(0), TELEMETRY_SCREEN_ROWS(1), TELEMETRY_SCREEN_ROWS(2), TELEMETRY_SCREEN_ROWS(3) }); diff --git a/radio/src/gui/128x64/model_flightmodes.cpp b/radio/src/gui/128x64/model_flightmodes.cpp index 95dc29d6d..cdb2725b1 100644 --- a/radio/src/gui/128x64/model_flightmodes.cpp +++ b/radio/src/gui/128x64/model_flightmodes.cpp @@ -32,7 +32,7 @@ void displayFlightModes(coord_t x, coord_t y, FlightModesType value) } #if !defined(CPUARM) -FlightModesType editFlightModes(coord_t x, coord_t y, uint8_t event, FlightModesType value, uint8_t attr) +FlightModesType editFlightModes(coord_t x, coord_t y, event_t event, FlightModesType value, uint8_t attr) { drawFieldLabel(x, y, STR_FLMODE); @@ -84,7 +84,7 @@ bool isTrimModeAvailable(int mode) return (mode < 0 || (mode%2) == 0 || (mode/2) != s_currIdx); } -void menuModelPhaseOne(uint8_t event) +void menuModelPhaseOne(event_t event) { FlightModeData * fm = flightModeAddress(s_currIdx); drawFlightMode(13*FW, 0, s_currIdx+1, (getFlightMode()==s_currIdx ? BOLD : 0)); @@ -246,7 +246,7 @@ void menuModelPhaseOne(uint8_t event) #define TRIMS_OFS (FW/2) #endif -void menuModelFlightModesAll(uint8_t event) +void menuModelFlightModesAll(event_t event) { SIMPLE_MENU(STR_MENUFLIGHTMODES, menuTabModel, MENU_MODEL_FLIGHT_MODES, HEADER_LINE+MAX_FLIGHT_MODES+1); diff --git a/radio/src/gui/128x64/model_inputs.cpp b/radio/src/gui/128x64/model_inputs.cpp index 2e348f0ef..f967afba1 100644 --- a/radio/src/gui/128x64/model_inputs.cpp +++ b/radio/src/gui/128x64/model_inputs.cpp @@ -175,7 +175,7 @@ enum ExposFields { EXPO_FIELD_MAX }; -void menuModelExpoOne(uint8_t event) +void menuModelExpoOne(event_t event) { if (event == EVT_KEY_LONG(KEY_MENU)) { // TODO pushMenu(menuChannelsView); @@ -350,7 +350,7 @@ void displayExpoLine(coord_t y, ExpoData * ed) displayFlightModes(EXPO_LINE_INFOS_POS, y, ed->flightModes); } -void menuModelExposAll(uint8_t event) +void menuModelExposAll(event_t event) { int8_t sub = menuVerticalPosition - HEADER_LINE; diff --git a/radio/src/gui/128x64/model_inputs_mixes.cpp b/radio/src/gui/128x64/model_inputs_mixes.cpp index b61a3054b..fb29cd31e 100644 --- a/radio/src/gui/128x64/model_inputs_mixes.cpp +++ b/radio/src/gui/128x64/model_inputs_mixes.cpp @@ -229,7 +229,7 @@ enum ExposFields { #define CURVE_ROWS 0 -void menuModelExpoOne(uint8_t event) +void menuModelExpoOne(event_t event) { ExpoData * ed = expoAddress(s_currIdx); drawSource(7*FW+FW/2, 0, MIXSRC_Rud+ed->chn, 0); @@ -339,7 +339,7 @@ enum MixFields { MIX_FIELD_COUNT }; -void gvarWeightItem(coord_t x, coord_t y, MixData *md, uint8_t attr, uint8_t event) +void gvarWeightItem(coord_t x, coord_t y, MixData * md, uint8_t attr, event_t event) { u_int8int16_t weight; MD_WEIGHT_TO_UNION(md, weight); @@ -400,7 +400,7 @@ void drawOffsetBar(uint8_t x, uint8_t y, MixData * md) #undef GAUGE_HEIGHT #endif -void menuModelMixOne(uint8_t event) +void menuModelMixOne(event_t event) { TITLE(STR_MIXER); MixData * md2 = mixAddress(s_currIdx) ; @@ -658,7 +658,7 @@ void displayExpoLine(coord_t y, ExpoData *ed) displayFlightModes(EXPO_LINE_FM_POS, y, ed->flightModes) #endif -void menuModelExpoMix(uint8_t expo, uint8_t event) +void menuModelExpoMix(uint8_t expo, event_t event) { uint8_t sub = menuVerticalPosition; @@ -920,12 +920,12 @@ void menuModelExpoMix(uint8_t expo, uint8_t event) if (sub >= s_maxLines-1) menuVerticalPosition = s_maxLines-1; } -void menuModelExposAll(uint8_t event) +void menuModelExposAll(event_t event) { return menuModelExpoMix(1, event); } -void menuModelMixAll(uint8_t event) +void menuModelMixAll(event_t event) { return menuModelExpoMix(0, event); } diff --git a/radio/src/gui/128x64/model_logical_switches.cpp b/radio/src/gui/128x64/model_logical_switches.cpp index fb3eed737..27f275517 100644 --- a/radio/src/gui/128x64/model_logical_switches.cpp +++ b/radio/src/gui/128x64/model_logical_switches.cpp @@ -58,7 +58,7 @@ void putsEdgeDelayParam(coord_t x, coord_t y, LogicalSwitchData *cs, uint8_t lat #define CSWONE_2ND_COLUMN (11*FW) -void menuModelLogicalSwitchOne(uint8_t event) +void menuModelLogicalSwitchOne(event_t event) { TITLE(STR_MENULOGICALSWITCH); @@ -215,7 +215,7 @@ void menuModelLogicalSwitchOne(uint8_t event) } } -void menuModelLogicalSwitches(uint8_t event) +void menuModelLogicalSwitches(event_t event) { SIMPLE_MENU(STR_MENULOGICALSWITCHES, menuTabModel, MENU_MODEL_LOGICAL_SWITCHES, HEADER_LINE+MAX_LOGICAL_SWITCHES); @@ -294,7 +294,7 @@ void menuModelLogicalSwitches(uint8_t event) #else -void menuModelLogicalSwitches(uint8_t event) +void menuModelLogicalSwitches(event_t event) { INCDEC_DECLARE_VARS(EE_MODEL); diff --git a/radio/src/gui/128x64/model_mixes.cpp b/radio/src/gui/128x64/model_mixes.cpp index 6d6bb8169..93827405d 100644 --- a/radio/src/gui/128x64/model_mixes.cpp +++ b/radio/src/gui/128x64/model_mixes.cpp @@ -142,7 +142,7 @@ enum MixFields { MIX_FIELD_COUNT }; -void gvarWeightItem(coord_t x, coord_t y, MixData *md, uint8_t attr, uint8_t event) +void gvarWeightItem(coord_t x, coord_t y, MixData *md, uint8_t attr, event_t event) { u_int8int16_t weight; MD_WEIGHT_TO_UNION(md, weight); @@ -195,7 +195,7 @@ void drawOffsetBar(uint8_t x, uint8_t y, MixData * md) } } -void menuModelMixOne(uint8_t event) +void menuModelMixOne(event_t event) { if (event == EVT_KEY_LONG(KEY_MENU)) { // TODO pushMenu(menuChannelsView); @@ -375,7 +375,7 @@ void displayMixLine(coord_t y, MixData * md) displayFlightModes(MIX_LINE_FM_POS, y, md->flightModes); } -void menuModelMixAll(uint8_t event) +void menuModelMixAll(event_t event) { int8_t sub = menuVerticalPosition - HEADER_LINE; diff --git a/radio/src/gui/128x64/model_outputs.cpp b/radio/src/gui/128x64/model_outputs.cpp index 928d20d39..c983f0a90 100644 --- a/radio/src/gui/128x64/model_outputs.cpp +++ b/radio/src/gui/128x64/model_outputs.cpp @@ -87,7 +87,7 @@ enum MenuModelOutputsItems { #define MIN_MAX_DISPLAY(x) ((int8_t)(x)) #endif -void menuModelLimits(uint8_t event) +void menuModelLimits(event_t event) { uint8_t sub = menuVerticalPosition - HEADER_LINE; diff --git a/radio/src/gui/128x64/model_select.cpp b/radio/src/gui/128x64/model_select.cpp index f822d1dc6..395907b7c 100644 --- a/radio/src/gui/128x64/model_select.cpp +++ b/radio/src/gui/128x64/model_select.cpp @@ -20,11 +20,11 @@ #include "opentx.h" -#define MODELSIZE_POS_X 170 -#define MODELSEL_W LCD_W +#define MODELSIZE_POS_X 170 +#define MODELSEL_W LCD_W #if defined(NAVIGATION_MENUS) -void onModelSelectMenu(const char *result) +void onModelSelectMenu(const char * result) { int8_t sub = menuVerticalPosition; @@ -75,7 +75,7 @@ void onModelSelectMenu(const char *result) } #endif -void menuModelSelect(uint8_t event) +void menuModelSelect(event_t event) { if (warningResult) { warningResult = 0; @@ -84,7 +84,7 @@ void menuModelSelect(uint8_t event) event = EVT_ENTRY_UP; } - uint8_t _event_ = (IS_ROTARY_BREAK(event) || IS_ROTARY_LONG(event) ? 0 : event); + event_t _event_ = (IS_ROTARY_BREAK(event) || IS_ROTARY_LONG(event) ? 0 : event); if ((s_copyMode && EVT_KEY_MASK(event) == KEY_EXIT) || event == EVT_KEY_BREAK(KEY_EXIT)) { _event_ -= KEY_EXIT; @@ -111,205 +111,209 @@ void menuModelSelect(uint8_t event) int8_t sub = menuVerticalPosition; switch (event) { - case EVT_ENTRY: + case EVT_ENTRY: + menuVerticalPosition = sub = g_eeGeneral.currModel; + if (sub >= LCD_LINES-1) menuVerticalOffset = sub-LCD_LINES+2; + s_copyMode = 0; + s_editMode = EDIT_MODE_INIT; + storageCheck(true); + break; + + case EVT_KEY_LONG(KEY_EXIT): + killEvents(event); + if (s_copyMode && s_copyTgtOfs == 0 && g_eeGeneral.currModel != sub && eeModelExists(sub)) { + POPUP_CONFIRMATION(STR_DELETEMODEL); +#if defined(CPUARM) + SET_WARNING_INFO(modelHeaders[sub].name, sizeof(g_model.header.name), ZCHAR); +#else + char * name = reusableBuffer.modelsel.mainname; + eeLoadModelName(sub, name); + SET_WARNING_INFO(name, sizeof(g_model.header.name), ZCHAR); +#endif + } + else { + s_copyMode = 0; + menuVerticalPosition = g_eeGeneral.currModel; + } + break; + +#if defined(ROTARY_ENCODERS) + case EVT_ROTARY_LONG: + killEvents(event); + if (s_editMode < 0) { + popMenu(); + break; + } + else if (!s_copyMode) { menuVerticalPosition = sub = g_eeGeneral.currModel; - if (sub >= LCD_LINES-1) menuVerticalOffset = sub-LCD_LINES+2; s_copyMode = 0; s_editMode = EDIT_MODE_INIT; - storageCheck(true); - break; - - case EVT_KEY_LONG(KEY_EXIT): - killEvents(event); - if (s_copyMode && s_copyTgtOfs == 0 && g_eeGeneral.currModel != sub && eeModelExists(sub)) { - POPUP_CONFIRMATION(STR_DELETEMODEL); -#if defined(CPUARM) - SET_WARNING_INFO(modelHeaders[sub].name, sizeof(g_model.header.name), ZCHAR); -#else - char * name = reusableBuffer.modelsel.mainname; - eeLoadModelName(sub, name); - SET_WARNING_INFO(name, sizeof(g_model.header.name), ZCHAR); -#endif - } - else { - s_copyMode = 0; - menuVerticalPosition = g_eeGeneral.currModel; - } - break; - -#if defined(ROTARY_ENCODER_NAVIGATION) - case EVT_ROTARY_LONG: - killEvents(event); - if (s_editMode < 0) { - popMenu(); - break; - } - else if (!s_copyMode) { - menuVerticalPosition = sub = g_eeGeneral.currModel; - s_copyMode = 0; - s_editMode = EDIT_MODE_INIT; - } - // no break + } + // no break #endif - case EVT_KEY_BREAK(KEY_EXIT): - if (s_copyMode) { - sub = menuVerticalPosition = (s_copyMode == MOVE_MODE || s_copySrcRow<0) ? (MAX_MODELS+sub+s_copyTgtOfs) % MAX_MODELS : s_copySrcRow; - s_copyMode = 0; - } - else if (uint8_t(menuVerticalPosition) != g_eeGeneral.currModel) { - menuVerticalPosition = g_eeGeneral.currModel; - } - else { - popMenu(); - } - break; + case EVT_KEY_BREAK(KEY_EXIT): + if (s_copyMode) { + sub = menuVerticalPosition = (s_copyMode == MOVE_MODE || s_copySrcRow<0) ? (MAX_MODELS+sub+s_copyTgtOfs) % MAX_MODELS : s_copySrcRow; + s_copyMode = 0; + } + else if (uint8_t(menuVerticalPosition) != g_eeGeneral.currModel) { + menuVerticalPosition = g_eeGeneral.currModel; + } + else { + popMenu(); + } + break; -#if defined(ROTARY_ENCODER_NAVIGATION) - case EVT_ROTARY_BREAK: - if (s_editMode == -1) { - s_editMode = 0; - break; - } - // no break; -#endif - - case EVT_KEY_LONG(KEY_ENTER): - case EVT_KEY_BREAK(KEY_ENTER): +#if defined(ROTARY_ENCODERS) + case EVT_ROTARY_BREAK: + if (s_editMode == -1) { s_editMode = 0; - if (READ_ONLY()) { - if (g_eeGeneral.currModel != sub && eeModelExists(sub)) { - selectModel(sub); - } - } - else if (s_copyMode && (s_copyTgtOfs || s_copySrcRow>=0)) { - showMessageBox(s_copyMode==COPY_MODE ? STR_COPYINGMODEL : STR_MOVINGMODEL); - storageCheck(true); // force writing of current model data before this is changed - - uint8_t cur = (MAX_MODELS + sub + s_copyTgtOfs) % MAX_MODELS; - - if (s_copyMode == COPY_MODE) { - if (!eeCopyModel(cur, s_copySrcRow)) { - cur = sub; - } - } - - s_copySrcRow = g_eeGeneral.currModel; // to update the currModel value - while (sub != cur) { - uint8_t src = cur; - cur = (s_copyTgtOfs > 0 ? cur+MAX_MODELS-1 : cur+1) % MAX_MODELS; - eeSwapModels(src, cur); - if (src == s_copySrcRow) - s_copySrcRow = cur; - else if (cur == s_copySrcRow) - s_copySrcRow = src; - } - - if (s_copySrcRow != g_eeGeneral.currModel) { - g_eeGeneral.currModel = s_copySrcRow; - storageDirty(EE_GENERAL); - } - - s_copyMode = 0; - event = EVT_ENTRY_UP; - } - else if (event == EVT_KEY_LONG(KEY_ENTER) || IS_ROTARY_BREAK(event)) { - s_copyMode = 0; - killEvents(event); -#if defined(NAVIGATION_MENUS) - if (g_eeGeneral.currModel != sub) { - if (eeModelExists(sub)) { - POPUP_MENU_ADD_ITEM(STR_SELECT_MODEL); - POPUP_MENU_ADD_SD_ITEM(STR_BACKUP_MODEL); - POPUP_MENU_ADD_ITEM(STR_COPY_MODEL); - POPUP_MENU_ADD_ITEM(STR_MOVE_MODEL); - POPUP_MENU_ADD_ITEM(STR_DELETE_MODEL); - } - else { -#if defined(SDCARD) - POPUP_MENU_ADD_ITEM(STR_CREATE_MODEL); - POPUP_MENU_ADD_ITEM(STR_RESTORE_MODEL); -#else - selectModel(sub); + break; + } + // no break; #endif - } + + case EVT_KEY_LONG(KEY_ENTER): + case EVT_KEY_BREAK(KEY_ENTER): + s_editMode = 0; + if (READ_ONLY()) { + if (g_eeGeneral.currModel != sub && eeModelExists(sub)) { + selectModel(sub); + } + } + else if (s_copyMode && (s_copyTgtOfs || s_copySrcRow>=0)) { + showMessageBox(s_copyMode==COPY_MODE ? STR_COPYINGMODEL : STR_MOVINGMODEL); + storageCheck(true); // force writing of current model data before this is changed + + uint8_t cur = (MAX_MODELS + sub + s_copyTgtOfs) % MAX_MODELS; + + if (s_copyMode == COPY_MODE) { + if (!eeCopyModel(cur, s_copySrcRow)) { + cur = sub; } - else { + } + + s_copySrcRow = g_eeGeneral.currModel; // to update the currModel value + while (sub != cur) { + uint8_t src = cur; + cur = (s_copyTgtOfs > 0 ? cur+MAX_MODELS-1 : cur+1) % MAX_MODELS; + eeSwapModels(src, cur); + if (src == s_copySrcRow) + s_copySrcRow = cur; + else if (cur == s_copySrcRow) + s_copySrcRow = src; + } + + if (s_copySrcRow != g_eeGeneral.currModel) { + g_eeGeneral.currModel = s_copySrcRow; + storageDirty(EE_GENERAL); + } + + s_copyMode = 0; + event = EVT_ENTRY_UP; + } + else if (event == EVT_KEY_LONG(KEY_ENTER) || IS_ROTARY_BREAK(event)) { + s_copyMode = 0; + killEvents(event); +#if defined(NAVIGATION_MENUS) + if (g_eeGeneral.currModel != sub) { + if (eeModelExists(sub)) { + POPUP_MENU_ADD_ITEM(STR_SELECT_MODEL); POPUP_MENU_ADD_SD_ITEM(STR_BACKUP_MODEL); POPUP_MENU_ADD_ITEM(STR_COPY_MODEL); POPUP_MENU_ADD_ITEM(STR_MOVE_MODEL); + POPUP_MENU_ADD_ITEM(STR_DELETE_MODEL); } - POPUP_MENU_START(onModelSelectMenu); + else { +#if defined(SDCARD) + POPUP_MENU_ADD_ITEM(STR_CREATE_MODEL); + POPUP_MENU_ADD_ITEM(STR_RESTORE_MODEL); #else - if (g_eeGeneral.currModel != sub) { selectModel(sub); +#endif } -#endif - } - else if (eeModelExists(sub)) { - s_copyMode = (s_copyMode == COPY_MODE ? MOVE_MODE : COPY_MODE); - s_copyTgtOfs = 0; - s_copySrcRow = -1; - } - break; - -#if defined(PCBX7D) - case EVT_KEY_LONG(KEY_PAGE): - chainMenu(menuTabModel[DIM(menuTabModel)-1]); - killEvents(event); - break; - - case EVT_KEY_BREAK(KEY_PAGE): - chainMenu(menuModelSetup); - break; -#else -#if defined(ROTARY_ENCODER_NAVIGATION) - case EVT_ROTARY_LEFT: - case EVT_ROTARY_RIGHT: -#endif - case EVT_KEY_FIRST(KEY_LEFT): - case EVT_KEY_FIRST(KEY_RIGHT): -#if defined(ROTARY_ENCODER_NAVIGATION) - if ((!IS_ROTARY_RIGHT(event) && !IS_ROTARY_LEFT(event)) || s_editMode < 0) { -#endif - if (sub == g_eeGeneral.currModel) { - chainMenu((IS_ROTARY_RIGHT(event) || event == EVT_KEY_FIRST(KEY_RIGHT)) ? menuModelSetup : menuTabModel[DIM(menuTabModel)-1]); } else { - AUDIO_WARNING2(); + POPUP_MENU_ADD_SD_ITEM(STR_BACKUP_MODEL); + POPUP_MENU_ADD_ITEM(STR_COPY_MODEL); + POPUP_MENU_ADD_ITEM(STR_MOVE_MODEL); } - break; + POPUP_MENU_START(onModelSelectMenu); +#else + if (g_eeGeneral.currModel != sub) { + selectModel(sub); + } +#endif + } + else if (eeModelExists(sub)) { + s_copyMode = (s_copyMode == COPY_MODE ? MOVE_MODE : COPY_MODE); + s_copyTgtOfs = 0; + s_copySrcRow = -1; + } + break; + +#if defined(PCBX7D) + case EVT_KEY_LONG(KEY_PAGE): + chainMenu(menuTabModel[DIM(menuTabModel)-1]); + killEvents(event); + break; + + case EVT_KEY_BREAK(KEY_PAGE): + chainMenu(menuModelSetup); + break; +#else #if defined(ROTARY_ENCODER_NAVIGATION) - } - // no break + case EVT_ROTARY_LEFT: + case EVT_ROTARY_RIGHT: +#endif + case EVT_KEY_FIRST(KEY_LEFT): + case EVT_KEY_FIRST(KEY_RIGHT): +#if defined(ROTARY_ENCODER_NAVIGATION) + if ((!IS_ROTARY_RIGHT(event) && !IS_ROTARY_LEFT(event)) || s_editMode < 0) { +#endif + if (sub == g_eeGeneral.currModel) { + chainMenu((IS_ROTARY_RIGHT(event) || event == EVT_KEY_FIRST(KEY_RIGHT)) ? menuModelSetup : menuTabModel[DIM(menuTabModel)-1]); + } + else { + AUDIO_WARNING2(); + } + break; +#if defined(ROTARY_ENCODER_NAVIGATION) + } + // no break #endif #endif - case EVT_KEY_FIRST(KEY_UP): - case EVT_KEY_REPT(KEY_UP): - case EVT_KEY_FIRST(KEY_DOWN): - case EVT_KEY_REPT(KEY_DOWN): - if (s_copyMode) { - int8_t next_ofs = s_copyTgtOfs + oldSub - menuVerticalPosition; - if (next_ofs == MAX_MODELS || next_ofs == -MAX_MODELS) - next_ofs = 0; +#if defined(PCBX7D) + case EVT_ROTARY_LEFT: + case EVT_ROTARY_RIGHT: +#endif + case EVT_KEY_FIRST(KEY_UP): + case EVT_KEY_REPT(KEY_UP): + case EVT_KEY_FIRST(KEY_DOWN): + case EVT_KEY_REPT(KEY_DOWN): + if (s_copyMode) { + int8_t next_ofs = s_copyTgtOfs + oldSub - menuVerticalPosition; + if (next_ofs == MAX_MODELS || next_ofs == -MAX_MODELS) + next_ofs = 0; - if (s_copySrcRow < 0 && s_copyMode==COPY_MODE) { - s_copySrcRow = oldSub; - // find a hole (in the first empty slot above / below) - sub = eeFindEmptyModel(s_copySrcRow, IS_ROTARY_RIGHT(event) || event==EVT_KEY_FIRST(KEY_DOWN)); - if (sub < 0) { - // no free room for duplicating the model - AUDIO_ERROR(); - sub = oldSub; - s_copyMode = 0; - } - next_ofs = 0; - menuVerticalPosition = sub; + if (s_copySrcRow < 0 && s_copyMode==COPY_MODE) { + s_copySrcRow = oldSub; + // find a hole (in the first empty slot above / below) + sub = eeFindEmptyModel(s_copySrcRow, IS_ROTARY_RIGHT(event) || event==EVT_KEY_FIRST(KEY_DOWN)); + if (sub < 0) { + // no free room for duplicating the model + AUDIO_ERROR(); + sub = oldSub; + s_copyMode = 0; } - s_copyTgtOfs = next_ofs; + next_ofs = 0; + menuVerticalPosition = sub; } - break; + s_copyTgtOfs = next_ofs; + } + break; } #if defined(EEPROM_RLC) && defined(CPUARM) @@ -325,7 +329,7 @@ void menuModelSelect(uint8_t event) #if defined(PCBX7D) drawScreenIndex(MENU_MODEL_SELECT, DIM(menuTabModel), 0); #elif defined(ROTARY_ENCODER_NAVIGATION) - drawScreenIndex(MENU_MODEL_SELECT, DIM(menuTabModel), (sub == g_eeGeneral.currModel) ? ((IS_RE_NAVIGATION_ENABLE() && s_editMode < 0) ? INVERS|BLINK : INVERS) : 0); + drawScreenIndex(MENU_MODEL_SELECT, DIM(menuTabModel), (sub == g_eeGeneral.currModel) ? ((IS_ROTARY_ENCODER_NAVIGATION_ENABLE() && s_editMode < 0) ? INVERS|BLINK : INVERS) : 0); #else drawScreenIndex(MENU_MODEL_SELECT, DIM(menuTabModel), (sub == g_eeGeneral.currModel) ? INVERS : 0); #endif diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 964a5a4a1..dee99f203 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -22,7 +22,7 @@ #if defined(CPUARM) uint8_t g_moduleIdx; -void menuModelFailsafe(uint8_t event); +void menuModelFailsafe(event_t event); #endif enum MenuModelSetupItems { @@ -190,7 +190,7 @@ enum MenuModelSetupItems { #define MODEL_SETUP_MAX_LINES ((IS_PPM_PROTOCOL(protocol)||IS_DSM2_PROTOCOL(protocol)||IS_PXX_PROTOCOL(protocol)) ? HEADER_LINE+ITEM_MODEL_SETUP_MAX : HEADER_LINE+ITEM_MODEL_SETUP_MAX-1) #endif -void menuModelSetup(uint8_t event) +void menuModelSetup(event_t event) { #if defined(CPUARM) MENU_TAB({ HEADER_LINE_COLUMNS 0, TIMER_ROWS, TIMER_ROWS, TIMER_ROWS, 0, 1, 0, 0, 0, 0, 0, CASE_CPUARM(LABEL(PreflightCheck)) CASE_CPUARM(0) 0, NUM_SWITCHES-1, NUM_STICKS+NUM_POTS+NUM_SLIDERS+NUM_ROTARY_ENCODERS-1, 0, @@ -1080,7 +1080,7 @@ void menuModelSetup(uint8_t event) } #if defined(CPUARM) -void menuModelFailsafe(uint8_t event) +void menuModelFailsafe(event_t event) { static bool longNames = false; bool newLongNames = false; diff --git a/radio/src/gui/128x64/model_special_functions.cpp b/radio/src/gui/128x64/model_special_functions.cpp index a8e16d8d3..021f5f865 100644 --- a/radio/src/gui/128x64/model_special_functions.cpp +++ b/radio/src/gui/128x64/model_special_functions.cpp @@ -70,7 +70,7 @@ void onCustomFunctionsFileSelectionMenu(const char *result) } #endif -void menuSpecialFunctions(uint8_t event, CustomFunctionData * functions, CustomFunctionsContext * functionsContext) +void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomFunctionsContext * functionsContext) { int8_t sub = menuVerticalPosition - HEADER_LINE; @@ -375,7 +375,7 @@ void menuSpecialFunctions(uint8_t event, CustomFunctionData * functions, CustomF } } -void menuModelSpecialFunctions(uint8_t event) +void menuModelSpecialFunctions(event_t event) { MENU(STR_MENUCUSTOMFUNC, menuTabModel, MENU_MODEL_SPECIAL_FUNCTIONS, MAX_SPECIAL_FUNCTIONS+1, {0, NAVIGATION_LINE_BY_LINE|4/*repeated*/}); return menuSpecialFunctions(event, g_model.customFn, &modelFunctionsContext); diff --git a/radio/src/gui/128x64/model_telemetry.cpp b/radio/src/gui/128x64/model_telemetry.cpp index 206d48756..31acace07 100644 --- a/radio/src/gui/128x64/model_telemetry.cpp +++ b/radio/src/gui/128x64/model_telemetry.cpp @@ -212,7 +212,7 @@ enum SensorFields { #define SENSOR_FILTER_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : HIDDEN_ROW) -void menuModelSensor(uint8_t event) +void menuModelSensor(event_t event) { TelemetrySensor * sensor = & g_model.telemetrySensors[s_currIdx]; @@ -458,7 +458,7 @@ void onSensorMenu(const char *result) } #endif -void menuModelTelemetryFrsky(uint8_t event) +void menuModelTelemetryFrsky(event_t event) { #if defined(CPUARM) if (warningResult) { diff --git a/radio/src/gui/128x64/model_templates.cpp b/radio/src/gui/128x64/model_templates.cpp index c6cf05383..b03c24151 100644 --- a/radio/src/gui/128x64/model_templates.cpp +++ b/radio/src/gui/128x64/model_templates.cpp @@ -20,7 +20,7 @@ #include "opentx.h" -void menuModelTemplates(uint8_t event) +void menuModelTemplates(event_t event) { SIMPLE_MENU(STR_MENUTEMPLATES, menuTabModel, MENU_MODEL_TEMPLATES, 1+TMPL_COUNT); diff --git a/radio/src/gui/128x64/navigation.cpp b/radio/src/gui/128x64/navigation.cpp index fccb20b69..bbfc25af4 100644 --- a/radio/src/gui/128x64/navigation.cpp +++ b/radio/src/gui/128x64/navigation.cpp @@ -70,12 +70,12 @@ INIT_STOPS(stops100, 3, -100, 0, 100) INIT_STOPS(stops1000, 3, -1000, 0, 1000) INIT_STOPS(stopsSwitch, 15, SWSRC_FIRST, CATEGORY_END(-SWSRC_FIRST_LOGICAL_SWITCH), CATEGORY_END(-SWSRC_FIRST_TRIM), CATEGORY_END(-SWSRC_LAST_SWITCH+1), 0, CATEGORY_END(SWSRC_LAST_SWITCH), CATEGORY_END(SWSRC_FIRST_TRIM-1), CATEGORY_END(SWSRC_FIRST_LOGICAL_SWITCH-1), SWSRC_LAST) - #if defined(PCBX7D) -int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int i_flags, IsValueAvailable isValueAvailable, const CheckIncDecStops &stops) +#if defined(PCBX7D) +int checkIncDec(event_t event, int val, int i_min, int i_max, unsigned int i_flags, IsValueAvailable isValueAvailable, const CheckIncDecStops &stops) { int newval = val; -#if defined(DBLKEYS) +#if 0 // TODO ? defined(DBLKEYS) uint32_t in = KEYS_PRESSED(); if (!(i_flags & NO_DBLKEYS) && (EVT_KEY_MASK(event))) { bool dblkey = true; @@ -117,33 +117,23 @@ int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int } #endif - if (s_editMode>0 && (event==EVT_KEY_FIRST(KEY_PLUS) || event==EVT_KEY_REPT(KEY_PLUS))) { - do { - if (IS_KEY_REPT(event) && (i_flags & INCDEC_REP10)) { - newval += min(10, i_max-val); - } - else { - newval++; - } - } while (isValueAvailable && !isValueAvailable(newval) && newval<=i_max); + if (s_editMode>0 && event==EVT_ROTARY_RIGHT) { + newval += min(rotencSpeed, i_max-val); + while (isValueAvailable && !isValueAvailable(newval) && newval<=i_max) { + newval++; + } if (newval > i_max) { newval = val; - killEvents(event); AUDIO_KEY_ERROR(); } } - else if (s_editMode>0 && (event==EVT_KEY_FIRST(KEY_MINUS) || event==EVT_KEY_REPT(KEY_MINUS))) { - do { - if (IS_KEY_REPT(event) && (i_flags & INCDEC_REP10)) { - newval -= min(10, val-i_min); - } - else { - newval--; - } - } while (isValueAvailable && !isValueAvailable(newval) && newval>=i_min); + else if (s_editMode>0 && event==EVT_ROTARY_LEFT) { + newval -= min(rotencSpeed, val-i_min); + while (isValueAvailable && !isValueAvailable(newval) && newval>=i_min) { + newval--; + } if (newval < i_min) { newval = val; - killEvents(event); AUDIO_KEY_ERROR(); } } @@ -179,17 +169,8 @@ int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int #endif if (newval != val) { - if (!(i_flags & NO_INCDEC_MARKS) && (newval != i_max) && (newval != i_min) && stops.contains(newval)) { - bool pause = (newval > val ? !stops.contains(newval+1) : !stops.contains(newval-1)); - if (pause) { - pauseEvents(event); // delay before auto-repeat continues - } - } storageDirty(i_flags & (EE_GENERAL|EE_MODEL)); checkIncDec_Ret = (newval > val ? 1 : -1); - if (!IS_KEY_REPT(event)) { - AUDIO_KEY_PRESS(); - } } else { checkIncDec_Ret = 0; @@ -275,8 +256,8 @@ int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int #endif return newval; } - #else -int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int i_flags, IsValueAvailable isValueAvailable, const CheckIncDecStops &stops) +#else +int checkIncDec(event_t event, int val, int i_min, int i_max, unsigned int i_flags, IsValueAvailable isValueAvailable, const CheckIncDecStops &stops) { int newval = val; @@ -397,7 +378,7 @@ int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int } #endif #else -int16_t checkIncDec(uint8_t event, int16_t val, int16_t i_min, int16_t i_max, uint8_t i_flags) +int16_t checkIncDec(event_t event, int16_t val, int16_t i_min, int16_t i_max, uint8_t i_flags) { int16_t newval = val; @@ -497,17 +478,17 @@ int16_t checkIncDec(uint8_t event, int16_t val, int16_t i_min, int16_t i_max, ui #endif #if defined(CPUM64) -int8_t checkIncDecModel(uint8_t event, int8_t i_val, int8_t i_min, int8_t i_max) +int8_t checkIncDecModel(event_t event, int8_t i_val, int8_t i_min, int8_t i_max) { return checkIncDec(event, i_val, i_min, i_max, EE_MODEL); } -int8_t checkIncDecModelZero(uint8_t event, int8_t i_val, int8_t i_max) +int8_t checkIncDecModelZero(event_t event, int8_t i_val, int8_t i_max) { return checkIncDecModel(event, i_val, 0, i_max); } -int8_t checkIncDecGen(uint8_t event, int8_t i_val, int8_t i_min, int8_t i_max) +int8_t checkIncDecGen(event_t event, int8_t i_val, int8_t i_min, int8_t i_max) { return checkIncDec(event, i_val, i_min, i_max, EE_GENERAL); } @@ -522,9 +503,8 @@ int8_t checkIncDecGen(uint8_t event, int8_t i_val, int8_t i_min, int8_t i_max) #define CURSOR_NOT_ALLOWED_IN_ROW(row) (MAXCOL(row) == TITLE_ROW) #endif -#define MAXCOL(row) (horTab ? pgm_read_byte(horTab+min(row, (vertpos_t)horTabMax)) : (const uint8_t)0) -#define INC(val, min, max) if (valmin) {val--;} else {val=max;} +#define INC(val, min, max) if (valmin) {val--;} else {val=max;} #if defined(CPUARM) tmr10ms_t menuEntryTime; @@ -536,7 +516,6 @@ tmr10ms_t menuEntryTime; #define COLATTR(row) (MAXCOL_RAW(row) == (uint8_t)-1 ? (const uint8_t)0 : (const uint8_t)(MAXCOL_RAW(row) & NAVIGATION_LINE_BY_LINE)) #define MENU_FIRST_LINE_EDIT (menuTab ? (MAXCOL((uint16_t)0) >= HIDDEN_ROW ? (MAXCOL((uint16_t)1) >= HIDDEN_ROW ? 2 : 1) : 0) : 0) #define POS_HORZ_INIT(posVert) ((COLATTR(posVert) & NAVIGATION_LINE_BY_LINE) ? -1 : 0) -#define EDIT_MODE_INIT 0 // TODO enum void check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t menuTabSize, const pm_uint8_t * horTab, uint8_t horTabMax, vertpos_t rowcount) { @@ -649,6 +628,7 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t } break; + case EVT_ROTARY_RIGHT: case EVT_KEY_FIRST(KEY_RIGHT): AUDIO_KEY_PRESS(); // no break @@ -679,6 +659,7 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t l_posHorz = POS_HORZ_INIT(l_posVert); break; + case EVT_ROTARY_LEFT: case EVT_KEY_FIRST(KEY_LEFT): AUDIO_KEY_PRESS(); // no break @@ -777,6 +758,9 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t menuHorizontalPosition = l_posHorz; } #else +#define MAXCOL(row) (horTab ? pgm_read_byte(horTab+min(row, (vertpos_t)horTabMax)) : (const uint8_t)0) +#define POS_HORZ_INIT(posVert) 0 + void check(event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t menuTabSize, const pm_uint8_t *horTab, uint8_t horTabMax, vertpos_t maxrow) { vertpos_t l_posVert = menuVerticalPosition; @@ -871,7 +855,7 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t } #if defined(ROTARY_ENCODER_NAVIGATION) - if (IS_RE_NAVIGATION_ENABLE() && s_editMode < 0) + if (IS_ROTARY_ENCODER_NAVIGATION_ENABLE() && s_editMode < 0) attr = INVERS|BLINK; #endif } @@ -1144,7 +1128,7 @@ void check_submenu_simple(event_t event, uint8_t maxrow) check_simple(event, 0, 0, 0, maxrow); } -void repeatLastCursorMove(uint8_t event) +void repeatLastCursorMove(event_t event) { if (CURSOR_MOVED_LEFT(event) || CURSOR_MOVED_RIGHT(event)) { putEvent(event); diff --git a/radio/src/gui/128x64/popups.cpp b/radio/src/gui/128x64/popups.cpp index efbb9772c..a7e2e939e 100644 --- a/radio/src/gui/128x64/popups.cpp +++ b/radio/src/gui/128x64/popups.cpp @@ -94,7 +94,7 @@ void showAlertBox(const pm_char * title, const pm_char * text, const char * acti clearKeyEvents(); } -void runPopupWarning(uint8_t event) +void runPopupWarning(event_t event) { warningResult = false; drawMessageBox(); @@ -103,18 +103,11 @@ void runPopupWarning(uint8_t event) } lcdDrawText(WARNING_LINE_X, WARNING_LINE_Y+2*FH, warningType == WARNING_TYPE_ASTERISK ? STR_EXIT : STR_POPUPS); switch (event) { -#if defined(ROTARY_ENCODER_NAVIGATION) - case EVT_ROTARY_BREAK: -#endif case EVT_KEY_BREAK(KEY_ENTER): if (warningType == WARNING_TYPE_ASTERISK) break; warningResult = true; // no break -#if defined(ROTARY_ENCODER_NAVIGATION) - case EVT_ROTARY_LONG: - killEvents(event); -#endif case EVT_KEY_BREAK(KEY_EXIT): warningText = NULL; warningType = WARNING_TYPE_ASTERISK; @@ -131,7 +124,7 @@ void runPopupWarning(uint8_t event) } #if defined(CPUARM) -void (*popupFunc)(uint8_t event) = NULL; +void (*popupFunc)(event_t event) = NULL; #endif #if defined(NAVIGATION_MENUS) @@ -146,7 +139,7 @@ void (*popupMenuHandler)(const char * result); uint8_t popupMenuOffsetType = MENU_OFFSET_INTERNAL; #endif -const char * runPopupMenu(uint8_t event) +const char * runPopupMenu(event_t event) { const char * result = NULL; @@ -164,7 +157,7 @@ const char * runPopupMenu(uint8_t event) drawVerticalScrollbar(MENU_X+MENU_W-1, y+1, POPUP_MENU_MAX_LINES * (FH+1), popupMenuOffset, popupMenuNoItems, POPUP_MENU_MAX_LINES); } - switch(event) { + switch (event) { #if defined(ROTARY_ENCODER_NAVIGATION) CASE_EVT_ROTARY_LEFT #endif diff --git a/radio/src/gui/128x64/popups.h b/radio/src/gui/128x64/popups.h index a9a31347d..5f6def26a 100644 --- a/radio/src/gui/128x64/popups.h +++ b/radio/src/gui/128x64/popups.h @@ -30,10 +30,10 @@ void drawMessageBox(); void showMessageBox(const pm_char * title); -void runPopupWarning(uint8_t event); +void runPopupWarning(event_t event); #if defined(CPUARM) -extern void (*popupFunc)(uint8_t event); +extern void (*popupFunc)(event_t event); extern int16_t warningInputValue; extern int16_t warningInputValueMin; extern int16_t warningInputValueMax; @@ -100,7 +100,7 @@ extern uint8_t warningInfoFlags; extern uint16_t popupMenuOffset; extern const char * popupMenuItems[POPUP_MENU_MAX_LINES]; extern uint16_t popupMenuNoItems; - const char * runPopupMenu(uint8_t event); + const char * runPopupMenu(event_t event); extern void (*popupMenuHandler)(const char * result); #endif diff --git a/radio/src/gui/128x64/radio_calibration.cpp b/radio/src/gui/128x64/radio_calibration.cpp index fd88bca98..0029c5887 100644 --- a/radio/src/gui/128x64/radio_calibration.cpp +++ b/radio/src/gui/128x64/radio_calibration.cpp @@ -31,7 +31,7 @@ enum CalibrationState { CALIB_FINISHED }; -void menuCommonCalib(uint8_t event) +void menuCommonCalib(event_t event) { for (uint8_t i=0; i 0 +#if defined(ROTARY_ENCODERS) case ITEM_SETUP_RE_NAVIGATION: g_eeGeneral.reNavigation = editChoice(RADIO_SETUP_2ND_COLUMN, y, STR_RENAVIG, STR_VRENAVIG, g_eeGeneral.reNavigation, 0, NUM_ROTARY_ENCODERS, attr, event); if (attr && checkIncDec_Ret) { - g_rotenc[NAVIGATION_RE_IDX()] = 0; + ROTARY_ENCODER_NAVIGATION_VALUE = 0; } break; #endif diff --git a/radio/src/gui/128x64/radio_trainer.cpp b/radio/src/gui/128x64/radio_trainer.cpp index a9be9fc28..70f91f738 100644 --- a/radio/src/gui/128x64/radio_trainer.cpp +++ b/radio/src/gui/128x64/radio_trainer.cpp @@ -20,7 +20,7 @@ #include "opentx.h" -void menuRadioTrainer(uint8_t event) +void menuRadioTrainer(event_t event) { uint8_t y; bool slave = SLAVE_MODE(); diff --git a/radio/src/gui/128x64/radio_version.cpp b/radio/src/gui/128x64/radio_version.cpp index 004e72593..7334ed96b 100644 --- a/radio/src/gui/128x64/radio_version.cpp +++ b/radio/src/gui/128x64/radio_version.cpp @@ -20,7 +20,7 @@ #include "opentx.h" -void menuRadioVersion(uint8_t event) +void menuRadioVersion(event_t event) { #if defined(CPUARM) && defined(EEPROM_RLC) if (warningResult) { diff --git a/radio/src/gui/128x64/view_about.cpp b/radio/src/gui/128x64/view_about.cpp index 73ec9abdb..264cea550 100644 --- a/radio/src/gui/128x64/view_about.cpp +++ b/radio/src/gui/128x64/view_about.cpp @@ -42,7 +42,7 @@ enum AboutScreens { #define ABOUT_X 2 #define ABOUT_INDENT 4 -void menuAboutView(uint8_t event) +void menuAboutView(event_t event) { static uint8_t screenIndex; static uint8_t greyIndex; diff --git a/radio/src/gui/128x64/view_channels.cpp b/radio/src/gui/128x64/view_channels.cpp index 41b397e73..175845898 100644 --- a/radio/src/gui/128x64/view_channels.cpp +++ b/radio/src/gui/128x64/view_channels.cpp @@ -20,7 +20,7 @@ #include "opentx.h" -void menuChannelsView(uint8_t event) +void menuChannelsView(event_t event) { static bool longNames = false; bool newLongNames = false; diff --git a/radio/src/gui/128x64/view_main.cpp b/radio/src/gui/128x64/view_main.cpp index d45e81b02..e15417e7a 100644 --- a/radio/src/gui/128x64/view_main.cpp +++ b/radio/src/gui/128x64/view_main.cpp @@ -283,7 +283,7 @@ void onMainViewMenu(const char *result) } #endif -void menuMainView(uint8_t event) +void menuMainView(event_t event) { STICK_SCROLL_DISABLE(); diff --git a/radio/src/gui/128x64/view_mavlink.cpp b/radio/src/gui/128x64/view_mavlink.cpp index 4cb0cf9d2..f48ae3bd4 100644 --- a/radio/src/gui/128x64/view_mavlink.cpp +++ b/radio/src/gui/128x64/view_mavlink.cpp @@ -35,7 +35,7 @@ uint8_t MAVLINK_menu = MENU_INFO; * lanuched by the menu button. On exit (with exit button) the mavlink * extension is reinitialized. */ -void menuViewTelemetryMavlink(uint8_t event) { +void menuViewTelemetryMavlink(event_t event) { switch (event) // new event received, branch accordingly { @@ -433,7 +433,7 @@ void lcd_outhex2(uint8_t x, uint8_t y, uint8_t val) { } //! \brief Hex dump of the current mavlink message. -void menuTelemetryMavlinkDump(uint8_t event) { +void menuTelemetryMavlinkDump(event_t event) { uint8_t x = 0; uint8_t y = FH; uint16_t count = 0; @@ -481,7 +481,7 @@ void menuTelemetryMavlinkDump(uint8_t event) { * This funcion is called from the model setup menus, not directly by the * telemetry menus */ -void menuModelTelemetryMavlink(uint8_t event) { +void menuModelTelemetryMavlink(event_t event) { MENU(STR_MAVMENUSETUP_TITLE, menuTabModel, MENU_MODEL_TELEMETRY_MAVLINK, ITEM_MAVLINK_MAX + 1, {0, 0, 1/*to force edit mode*/}); diff --git a/radio/src/gui/128x64/view_mavlink.h b/radio/src/gui/128x64/view_mavlink.h index f6222f789..083b326c3 100644 --- a/radio/src/gui/128x64/view_mavlink.h +++ b/radio/src/gui/128x64/view_mavlink.h @@ -31,7 +31,7 @@ #define APSIZE (BSS | DBLSIZE) -void menuViewTelemetryMavlink(uint8_t event); +void menuViewTelemetryMavlink(event_t event); void lcd_outdezFloat(uint8_t x, uint8_t y, float val, uint8_t precis, uint8_t mode = 0); void mav_title(const pm_char * s, uint8_t index); void menuTelemetryMavlinkInfos(void); @@ -41,7 +41,7 @@ void menuTelemetryMavlinkNavigation(void); void menuTelemetryMavlinkGPS(void); #ifdef DUMP_RX_TX void lcd_outhex2(uint8_t x, uint8_t y, uint8_t val); -void menuTelemetryMavlinkDump(uint8_t event); +void menuTelemetryMavlinkDump(event_t event); #endif /*! \brief Mavlink menu enumerator diff --git a/radio/src/gui/128x64/view_statistics.cpp b/radio/src/gui/128x64/view_statistics.cpp index 0302c0fbf..1fe9d55a3 100644 --- a/radio/src/gui/128x64/view_statistics.cpp +++ b/radio/src/gui/128x64/view_statistics.cpp @@ -20,7 +20,7 @@ #include "opentx.h" -void menuStatisticsView(uint8_t event) +void menuStatisticsView(event_t event) { TITLE(STR_MENUSTAT); @@ -81,7 +81,7 @@ void menuStatisticsView(uint8_t event) #define MENU_DEBUG_COL1_OFS (14*FW) #endif -void menuStatisticsDebug(uint8_t event) +void menuStatisticsDebug(event_t event) { TITLE(STR_MENUDEBUG); diff --git a/radio/src/gui/128x64/view_telemetry.cpp b/radio/src/gui/128x64/view_telemetry.cpp index 0553ea0f8..e6e8d93fd 100644 --- a/radio/src/gui/128x64/view_telemetry.cpp +++ b/radio/src/gui/128x64/view_telemetry.cpp @@ -490,7 +490,7 @@ void incrTelemetryScreen() } #endif -void menuViewTelemetryFrsky(uint8_t event) +void menuViewTelemetryFrsky(event_t event) { #if defined(CPUARM) enum NavigationDirection direction = none; diff --git a/radio/src/gui/128x64/view_text.cpp b/radio/src/gui/128x64/view_text.cpp index c6d426536..6f386616c 100644 --- a/radio/src/gui/128x64/view_text.cpp +++ b/radio/src/gui/128x64/view_text.cpp @@ -88,7 +88,7 @@ void readTextFile(int & lines_count) } } -void menuTextView(uint8_t event) +void menuTextView(event_t event) { static int lines_count; diff --git a/radio/src/gui/128x64/widgets.cpp b/radio/src/gui/128x64/widgets.cpp index 754234164..6eecbdc9d 100644 --- a/radio/src/gui/128x64/widgets.cpp +++ b/radio/src/gui/128x64/widgets.cpp @@ -72,7 +72,7 @@ void title(const pm_char * s) lcdDrawText(0, 0, s, INVERS); } -choice_t editChoice(coord_t x, coord_t y, const pm_char *label, const pm_char *values, choice_t value, choice_t min, choice_t max, LcdFlags attr, uint8_t event) +choice_t editChoice(coord_t x, coord_t y, const pm_char * label, const pm_char *values, choice_t value, choice_t min, choice_t max, LcdFlags attr, event_t event) { drawFieldLabel(x, y, label); if (values) lcdDrawTextAtIndex(x, y, values, value-min, attr); @@ -80,7 +80,7 @@ choice_t editChoice(coord_t x, coord_t y, const pm_char *label, const pm_char *v return value; } -uint8_t editCheckBox(uint8_t value, coord_t x, coord_t y, const pm_char *label, LcdFlags attr, uint8_t event ) +uint8_t editCheckBox(uint8_t value, coord_t x, coord_t y, const pm_char *label, LcdFlags attr, event_t event ) { #if defined(GRAPHICS) drawCheckBox(x, y, value, attr); @@ -90,7 +90,7 @@ uint8_t editCheckBox(uint8_t value, coord_t x, coord_t y, const pm_char *label, #endif } -int8_t editSwitch(coord_t x, coord_t y, int8_t value, LcdFlags attr, uint8_t event) +int8_t editSwitch(coord_t x, coord_t y, int8_t value, LcdFlags attr, event_t event) { drawFieldLabel(x, y, STR_SWITCH); drawSwitch(x, y, value, attr); @@ -120,7 +120,7 @@ bool noZero(int val) return val != 0; } -int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int16_t max, LcdFlags attr, uint8_t editflags, uint8_t event) +int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int16_t max, LcdFlags attr, uint8_t editflags, event_t event) { uint16_t delta = GV_GET_GV1_VALUE(max); bool invers = (attr & INVERS); @@ -167,7 +167,7 @@ int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int return value; } #elif defined(GVARS) -int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int16_t max, LcdFlags attr, uint8_t event) +int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int16_t max, LcdFlags attr, event_t event) { uint16_t delta = GV_GET_GV1_VALUE(max); bool invers = (attr & INVERS); @@ -207,7 +207,7 @@ int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int return value; } #else -int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int16_t max, LcdFlags attr, uint8_t event) +int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int16_t max, LcdFlags attr, event_t event) { lcdDrawNumber(x, y, value, attr); if (attr&INVERS) value = checkIncDec(event, value, min, max, EE_MODEL); diff --git a/radio/src/gui/212x64/gui.h b/radio/src/gui/212x64/gui.h index f18e768dd..12d58d627 100644 --- a/radio/src/gui/212x64/gui.h +++ b/radio/src/gui/212x64/gui.h @@ -158,7 +158,7 @@ extern const CheckIncDecStops &stopsSwitch; #define CATEGORY_END(val) \ (val), (val+1) -int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int i_flags=0, IsValueAvailable isValueAvailable=NULL, const CheckIncDecStops &stops=stops100); +int checkIncDec(event_t event, int val, int i_min, int i_max, unsigned int i_flags=0, IsValueAvailable isValueAvailable=NULL, const CheckIncDecStops &stops=stops100); swsrc_t checkIncDecMovedSwitch(swsrc_t val); #define checkIncDecModel(event, i_val, i_min, i_max) checkIncDec(event, i_val, i_min, i_max, EE_MODEL) #define checkIncDecModelZero(event, i_val, i_max) checkIncDec(event, i_val, 0, i_max, EE_MODEL) @@ -194,7 +194,7 @@ swsrc_t checkIncDecMovedSwitch(swsrc_t val); #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_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); +void check_submenu_simple(const char * title, event_t event, uint8_t maxrow); void title(const pm_char * s); #define TITLE(str) title(str) @@ -238,36 +238,36 @@ void title(const pm_char * s); typedef int choice_t; -choice_t editChoice(coord_t x, coord_t y, const pm_char *label, const pm_char *values, choice_t value, choice_t min, choice_t max, LcdFlags attr, uint8_t event); -uint8_t editCheckBox(uint8_t value, coord_t x, coord_t y, const pm_char *label, LcdFlags attr, uint8_t event); -swsrc_t editSwitch(coord_t x, coord_t y, swsrc_t value, LcdFlags attr, uint8_t event); +choice_t editChoice(coord_t x, coord_t y, const pm_char *label, const pm_char *values, choice_t value, choice_t min, choice_t max, LcdFlags attr, event_t event); +uint8_t editCheckBox(uint8_t value, coord_t x, coord_t y, const pm_char *label, LcdFlags attr, event_t event); +swsrc_t editSwitch(coord_t x, coord_t y, swsrc_t value, LcdFlags attr, event_t event); #define ON_OFF_MENU_ITEM(value, x, y, label, attr, event) value = editCheckBox(value, x, y, label, attr, event) #if defined(GVARS) void drawGVarName(coord_t x, coord_t y, int8_t index, LcdFlags flags=0); void drawGVarValue(coord_t x, coord_t y, uint8_t gvar, gvar_t value, LcdFlags flags=0); - int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int16_t max, LcdFlags attr, uint8_t editflags, uint8_t event); + int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int16_t max, LcdFlags attr, uint8_t editflags, event_t event); #define GVAR_MENU_ITEM(x, y, v, min, max, lcdattr, editflags, event) editGVarFieldValue(x, y, v, min, max, lcdattr, editflags, event) #define displayGVar(x, y, v, min, max) GVAR_MENU_ITEM(x, y, v, min, max, 0, 0, 0) #else #define GVAR_MENU_ITEM(x, y, v, min, max, lcdattr, editflags, event) editGVarFieldValue(x, y, v, min, max, lcdattr, event) -int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int16_t max, LcdFlags attr, uint8_t event); +int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int16_t max, LcdFlags attr, event_t event); #define displayGVar(x, y, v, min, max) lcdDrawNumber(x, y, v) #endif extern uint8_t s_curveChan; -void editCurveRef(coord_t x, coord_t y, CurveRef & curve, uint8_t event, LcdFlags flags); +void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlags flags); extern uint8_t editNameCursorPos; -void editName(coord_t x, coord_t y, char *name, uint8_t size, uint8_t event, uint8_t active, uint8_t attr=ZCHAR); -void editSingleName(coord_t x, coord_t y, const pm_char *label, char *name, uint8_t size, uint8_t event, uint8_t active); +void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, uint8_t active, uint8_t attr=ZCHAR); +void editSingleName(coord_t x, coord_t y, const pm_char * label, char * name, uint8_t size, event_t event, uint8_t active); #if MENU_COLUMNS > 1 -uint8_t editDelay(const coord_t x, const coord_t y, const uint8_t event, const uint8_t attr, const pm_char *str, uint8_t delay); +uint8_t editDelay(coord_t x, coord_t y, event_t event, uint8_t attr, const pm_char * str, uint8_t delay); #define EDIT_DELAY(x, y, event, attr, str, delay) editDelay(x, y, event, attr, str, delay) #else -uint8_t editDelay(const coord_t y, const uint8_t event, const uint8_t attr, const pm_char *str, uint8_t delay); +uint8_t editDelay(const coord_t y, const event_t event, const uint8_t attr, const pm_char *str, uint8_t delay); #define EDIT_DELAY(x, y, event, attr, str, delay) editDelay(y, event, attr, str, delay) #endif @@ -309,16 +309,21 @@ void drawStatusLine(); #define TEXT_FILENAME_MAXLEN 40 extern char s_text_file[TEXT_FILENAME_MAXLEN]; -void menuTextView(uint8_t event); +void menuTextView(event_t event); void pushMenuTextView(const char *filename); void pushModelNotes(); -void menuChannelsView(uint8_t event); +void menuChannelsView(event_t event); #define LABEL(...) (uint8_t)-1 +#if defined(ROTARY_ENCODER_NAVIGATION) +#define CURSOR_MOVED_LEFT(event) (event==EVT_ROTARY_LEFT) +#define CURSOR_MOVED_RIGHT(event) (event==EVT_ROTARY_RIGHT) +#else #define CURSOR_MOVED_LEFT(event) (EVT_KEY_MASK(event) == KEY_LEFT) #define CURSOR_MOVED_RIGHT(event) (EVT_KEY_MASK(event) == KEY_RIGHT) +#endif #define REPEAT_LAST_CURSOR_MOVE() { if (CURSOR_MOVED_LEFT(event) || CURSOR_MOVED_RIGHT(event)) putEvent(event); else menuHorizontalPosition = 0; } #define MOVE_CURSOR_FROM_HERE() if (menuHorizontalPosition > 0) REPEAT_LAST_CURSOR_MOVE() @@ -341,7 +346,7 @@ extern const pm_uchar sticks[] PROGMEM; #if defined(FLIGHT_MODES) void displayFlightModes(coord_t x, coord_t y, FlightModesType value); -FlightModesType editFlightModes(coord_t x, coord_t y, uint8_t event, FlightModesType value, uint8_t attr); +FlightModesType editFlightModes(coord_t x, coord_t y, event_t event, FlightModesType value, uint8_t attr); #else #define displayFlightModes(...) #endif diff --git a/radio/src/gui/212x64/menu_model.cpp b/radio/src/gui/212x64/menu_model.cpp index fb8007eff..571d762c7 100644 --- a/radio/src/gui/212x64/menu_model.cpp +++ b/radio/src/gui/212x64/menu_model.cpp @@ -37,13 +37,13 @@ const MenuHandlerFunc menuTabModel[] = { #if defined(LUA_MODEL_SCRIPTS) menuModelCustomScripts, #endif - menuModelTelemetryFrsky, + CASE_FRSKY(menuModelTelemetryFrsky) CASE_MAVLINK(menuModelTelemetryMavlink) menuModelDisplay }; #if MENU_COLUMNS > 1 -uint8_t editDelay(const coord_t x, const coord_t y, const uint8_t event, const uint8_t attr, const pm_char *str, uint8_t delay) +uint8_t editDelay(coord_t x, coord_t y, event_t event, uint8_t attr, const pm_char * str, uint8_t delay) { lcdDrawText(x, y, str); lcdDrawNumber(x+MIXES_2ND_COLUMN, y, (10/DELAY_STEP)*delay, attr|PREC1|LEFT); @@ -51,7 +51,7 @@ uint8_t editDelay(const coord_t x, const coord_t y, const uint8_t event, const u return delay; } #else -uint8_t editDelay(const coord_t y, const uint8_t event, const uint8_t attr, const pm_char *str, uint8_t delay) +uint8_t editDelay(coord_t y, event_t event, uint8_t attr, const pm_char * str, uint8_t delay) { lcdDrawTextAlignedLeft(y, str); lcdDrawNumber(MIXES_2ND_COLUMN, y, (10/DELAY_STEP)*delay, attr|PREC1|LEFT); @@ -71,7 +71,7 @@ uint8_t s_copySrcCh; uint8_t editNameCursorPos = 0; -void editName(coord_t x, coord_t y, char * name, uint8_t size, uint8_t event, uint8_t active, uint8_t attr) +void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, uint8_t active, uint8_t attr) { uint8_t mode = 0; if (active) { @@ -90,7 +90,7 @@ void editName(coord_t x, coord_t y, char * name, uint8_t size, uint8_t event, ui int8_t c = name[cur]; int8_t v = c; - if (event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_FIRST(KEY_UP) || event==EVT_KEY_REPT(KEY_DOWN) || event==EVT_KEY_REPT(KEY_UP)) { + if (IS_NEXT_EVENT(event) || IS_PREVIOUS_EVENT(event)) { if (attr == ZCHAR) { v = checkIncDec(event, abs(v), 0, ZCHAR_MAX, 0); if (c <= 0) v = -v; @@ -102,7 +102,7 @@ void editName(coord_t x, coord_t y, char * name, uint8_t size, uint8_t event, ui } switch (event) { - case EVT_ROTARY_BREAK: + case EVT_KEY_BREAK(KEY_ENTER): if (s_editMode == EDIT_MODIFY_FIELD) { s_editMode = EDIT_MODIFY_STRING; cur = 0; @@ -113,7 +113,7 @@ void editName(coord_t x, coord_t y, char * name, uint8_t size, uint8_t event, ui s_editMode = 0; break; - case EVT_ROTARY_LONG: + case EVT_KEY_LONG(KEY_ENTER): if (attr & ZCHAR) { if (v == 0) { s_editMode = 0; @@ -159,7 +159,7 @@ void editName(coord_t x, coord_t y, char * name, uint8_t size, uint8_t event, ui } } -void editSingleName(coord_t x, coord_t y, const pm_char * label, char *name, uint8_t size, uint8_t event, uint8_t active) +void editSingleName(coord_t x, coord_t y, const pm_char * label, char *name, uint8_t size, event_t event, uint8_t active) { lcdDrawTextAlignedLeft(y, label); editName(x, y, name, size, event, active); diff --git a/radio/src/gui/212x64/menu_radio.cpp b/radio/src/gui/212x64/menu_radio.cpp index 7e6563d86..819e4da8f 100644 --- a/radio/src/gui/212x64/menu_radio.cpp +++ b/radio/src/gui/212x64/menu_radio.cpp @@ -32,7 +32,7 @@ const MenuHandlerFunc menuTabGeneral[] = { menuRadioCalibration }; -void menuRadioSpecialFunctions(uint8_t event) +void menuRadioSpecialFunctions(event_t event) { MENU(STR_MENUSPECIALFUNCS, menuTabGeneral, MENU_RADIO_SPECIAL_FUNCTIONS, MAX_SPECIAL_FUNCTIONS, { NAVIGATION_LINE_BY_LINE|4/*repeated*/ }); return menuSpecialFunctions(event, g_eeGeneral.customFn, &globalFunctionsContext); diff --git a/radio/src/gui/212x64/menus.cpp b/radio/src/gui/212x64/menus.cpp index 17980c010..574585e2a 100644 --- a/radio/src/gui/212x64/menus.cpp +++ b/radio/src/gui/212x64/menus.cpp @@ -66,7 +66,7 @@ void pushMenu(MenuHandlerFunc newMenu) TRACE("pushMenu(%d, %p)", menuLevel, newMenu); } -void menuModelNotes(uint8_t event) +void menuModelNotes(event_t event) { if (event == EVT_ENTRY) { strcpy(s_text_file, MODELS_PATH "/"); diff --git a/radio/src/gui/212x64/menus.h b/radio/src/gui/212x64/menus.h index b7949cb25..b12060e83 100644 --- a/radio/src/gui/212x64/menus.h +++ b/radio/src/gui/212x64/menus.h @@ -26,7 +26,7 @@ typedef int8_t horzpos_t; typedef uint16_t vertpos_t; -typedef void (*MenuHandlerFunc)(uint8_t event); +typedef void (*MenuHandlerFunc)(event_t event); extern tmr10ms_t menuEntryTime; extern vertpos_t menuVerticalPosition; @@ -45,18 +45,18 @@ void popMenu(); void onMainViewMenu(const char * result); -void menuFirstCalib(uint8_t event); -void menuMainViewChannelsMonitor(uint8_t event); -void menuChannelsView(uint8_t event); -void menuMainView(uint8_t event); -void menuViewTelemetryFrsky(uint8_t event); -void menuSpecialFunctions(uint8_t event, CustomFunctionData * functions, CustomFunctionsContext * functionsContext); -void menuModelNotes(uint8_t event); -void menuStatisticsView(uint8_t event); -void menuStatisticsDebug(uint8_t event); -void menuAboutView(uint8_t event); +void menuFirstCalib(event_t event); +void menuMainViewChannelsMonitor(event_t event); +void menuChannelsView(event_t event); +void menuMainView(event_t event); +void menuViewTelemetryFrsky(event_t event); +void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomFunctionsContext * functionsContext); +void menuModelNotes(event_t event); +void menuStatisticsView(event_t event); +void menuStatisticsDebug(event_t event); +void menuAboutView(event_t event); #if defined(DEBUG_TRACE_BUFFER) -void menuTraceBuffer(uint8_t event); +void menuTraceBuffer(event_t event); #endif enum MenuRadioIndexes { @@ -72,15 +72,15 @@ enum MenuRadioIndexes { MENU_RADIO_PAGES_COUNT }; -void menuRadioSetup(uint8_t event); -void menuRadioSdManager(uint8_t event); -void menuRadioSpecialFunctions(uint8_t event); -void menuRadioTrainer(uint8_t event); -void menuRadioVersion(uint8_t event); -void menuRadioDiagKeys(uint8_t event); -void menuRadioDiagAnalogs(uint8_t event); -void menuRadioHardware(uint8_t event); -void menuRadioCalibration(uint8_t event); +void menuRadioSetup(event_t event); +void menuRadioSdManager(event_t event); +void menuRadioSpecialFunctions(event_t event); +void menuRadioTrainer(event_t event); +void menuRadioVersion(event_t event); +void menuRadioDiagKeys(event_t event); +void menuRadioDiagAnalogs(event_t event); +void menuRadioHardware(event_t event); +void menuRadioCalibration(event_t event); extern const MenuHandlerFunc menuTabGeneral[MENU_RADIO_PAGES_COUNT]; @@ -105,23 +105,23 @@ enum MenuModelIndexes { MENU_MODEL_PAGES_COUNT }; -void menuModelSelect(uint8_t event); -void menuModelSetup(uint8_t event); -void menuModelFailsafe(uint8_t event); -void menuModelHeli(uint8_t event); -void menuModelFlightModesAll(uint8_t event); -void menuModelExposAll(uint8_t event); -void menuModelMixAll(uint8_t event); -void menuModelLimits(uint8_t event); -void menuModelCurvesAll(uint8_t event); -void menuModelCurveOne(uint8_t event); -void menuModelGVars(uint8_t event); -void menuModelLogicalSwitches(uint8_t event); -void menuModelSpecialFunctions(uint8_t event); -void menuModelCustomScripts(uint8_t event); -void menuModelTelemetryFrsky(uint8_t event); -void menuModelDisplay(uint8_t event); -void menuModelExpoOne(uint8_t event); +void menuModelSelect(event_t event); +void menuModelSetup(event_t event); +void menuModelFailsafe(event_t event); +void menuModelHeli(event_t event); +void menuModelFlightModesAll(event_t event); +void menuModelExposAll(event_t event); +void menuModelMixAll(event_t event); +void menuModelLimits(event_t event); +void menuModelCurvesAll(event_t event); +void menuModelCurveOne(event_t event); +void menuModelGVars(event_t event); +void menuModelLogicalSwitches(event_t event); +void menuModelSpecialFunctions(event_t event); +void menuModelCustomScripts(event_t event); +void menuModelTelemetryFrsky(event_t event); +void menuModelDisplay(event_t event); +void menuModelExpoOne(event_t event); extern const MenuHandlerFunc menuTabModel[MENU_MODEL_PAGES_COUNT]; diff --git a/radio/src/gui/212x64/model_curve_edit.cpp b/radio/src/gui/212x64/model_curve_edit.cpp index 0d150b37a..8df822268 100644 --- a/radio/src/gui/212x64/model_curve_edit.cpp +++ b/radio/src/gui/212x64/model_curve_edit.cpp @@ -20,7 +20,7 @@ #include "opentx.h" -void displayPresetChoice(uint8_t event) +void displayPresetChoice(event_t event) { runPopupWarning(event); lcdDrawNumber(WARNING_LINE_X+FW*7, WARNING_LINE_Y, 45*warningInputValue/4, LEFT|INVERS); @@ -64,7 +64,7 @@ void onCurveOneMenu(const char * result) } } -void menuModelCurveOne(uint8_t event) +void menuModelCurveOne(event_t event) { static uint8_t pointsOfs = 0; CurveData & crv = g_model.curves[s_curveChan]; diff --git a/radio/src/gui/212x64/model_custom_scripts.cpp b/radio/src/gui/212x64/model_custom_scripts.cpp index 3112d23d9..b0b82702b 100644 --- a/radio/src/gui/212x64/model_custom_scripts.cpp +++ b/radio/src/gui/212x64/model_custom_scripts.cpp @@ -47,7 +47,7 @@ enum menuModelCustomScriptItems { #define SCRIPT_ONE_2ND_COLUMN_POS (12*FW) #define SCRIPT_ONE_3RD_COLUMN_POS (23*FW) -void menuModelCustomScriptOne(uint8_t event) +void menuModelCustomScriptOne(event_t event) { ScriptData & sd = g_model.scriptsData[s_currIdx]; @@ -116,7 +116,7 @@ void menuModelCustomScriptOne(uint8_t event) } } -void menuModelCustomScripts(uint8_t event) +void menuModelCustomScripts(event_t event) { lcdDrawNumber(19*FW, 0, luaGetMemUsed(), RIGHT); lcdDrawText(19*FW+1, 0, STR_BYTES); diff --git a/radio/src/gui/212x64/model_display.cpp b/radio/src/gui/212x64/model_display.cpp index 47ce6162a..0698e1ca0 100644 --- a/radio/src/gui/212x64/model_display.cpp +++ b/radio/src/gui/212x64/model_display.cpp @@ -81,7 +81,7 @@ void onTelemetryScriptFileSelectionMenu(const char *result) } #endif -void menuModelDisplay(uint8_t event) +void menuModelDisplay(event_t event) { MENU(STR_MENU_DISPLAY, menuTabModel, MENU_MODEL_DISPLAY, ITEM_DISPLAY_MAX, { LABEL(TopBar), 0, 0, TELEMETRY_SCREEN_ROWS(0), TELEMETRY_SCREEN_ROWS(1), TELEMETRY_SCREEN_ROWS(2), TELEMETRY_SCREEN_ROWS(3) }); diff --git a/radio/src/gui/212x64/model_flightmodes.cpp b/radio/src/gui/212x64/model_flightmodes.cpp index 7583ee428..8d7851e5a 100644 --- a/radio/src/gui/212x64/model_flightmodes.cpp +++ b/radio/src/gui/212x64/model_flightmodes.cpp @@ -48,7 +48,7 @@ bool isTrimModeAvailable(int mode) return (mode < 0 || (mode%2) == 0 || (mode/2) != menuVerticalPosition); } -void menuModelFlightModesAll(uint8_t event) +void menuModelFlightModesAll(event_t event) { MENU(STR_MENUFLIGHTMODES, menuTabModel, MENU_MODEL_FLIGHT_MODES, MAX_FLIGHT_MODES+1, { NAVIGATION_LINE_BY_LINE|(ITEM_FLIGHT_MODES_LAST-1), NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, 0 }); diff --git a/radio/src/gui/212x64/model_gvars.cpp b/radio/src/gui/212x64/model_gvars.cpp index ab0c61491..173a6d61d 100644 --- a/radio/src/gui/212x64/model_gvars.cpp +++ b/radio/src/gui/212x64/model_gvars.cpp @@ -20,7 +20,7 @@ #include "opentx.h" -void editGVarValue(coord_t x, coord_t y, uint8_t event, uint8_t gvar, uint8_t flightMode, LcdFlags flags) +void editGVarValue(coord_t x, coord_t y, event_t event, uint8_t gvar, uint8_t flightMode, LcdFlags flags) { FlightModeData * fm = &g_model.flightModeData[flightMode]; gvar_t & v = fm->gvars[gvar]; @@ -62,7 +62,7 @@ enum GVarFields { #define GVAR_2ND_COLUMN (12*FW) -void menuModelGVarOne(uint8_t event) +void menuModelGVarOne(event_t event) { GVarData * gvar = &g_model.gvars[s_currIdx]; @@ -133,7 +133,7 @@ void onGVARSMenu(const char *result) #define GVARS_COLUMNS (NAVIGATION_LINE_BY_LINE|(MAX_FLIGHT_MODES-1)) #define GVARS_FM_COLUMN(p) (7*FW - 7 + (p)*20) -void menuModelGVars(uint8_t event) +void menuModelGVars(event_t event) { tmr10ms_t tmr10ms = get_tmr10ms(); const char * menuTitle; diff --git a/radio/src/gui/212x64/model_inputs.cpp b/radio/src/gui/212x64/model_inputs.cpp index 48311782f..72e75227b 100644 --- a/radio/src/gui/212x64/model_inputs.cpp +++ b/radio/src/gui/212x64/model_inputs.cpp @@ -175,7 +175,7 @@ enum ExposFields { #define CURVE_ROWS 1 -void menuModelExpoOne(uint8_t event) +void menuModelExpoOne(event_t event) { if (event == EVT_KEY_LONG(KEY_MENU)) { pushMenu(menuChannelsView); @@ -352,7 +352,7 @@ void displayExpoLine(coord_t y, ExpoData * ed) } } -void menuModelExposAll(uint8_t event) +void menuModelExposAll(event_t event) { uint8_t sub = menuVerticalPosition; diff --git a/radio/src/gui/212x64/model_logical_switches.cpp b/radio/src/gui/212x64/model_logical_switches.cpp index ef0cd841b..d0010648c 100644 --- a/radio/src/gui/212x64/model_logical_switches.cpp +++ b/radio/src/gui/212x64/model_logical_switches.cpp @@ -39,7 +39,7 @@ enum LogicalSwitchFields { #define CSW_5TH_COLUMN (26*FW+3) #define CSW_6TH_COLUMN (31*FW+1) -void putsEdgeDelayParam(coord_t x, coord_t y, LogicalSwitchData *cs, uint8_t lattr, uint8_t rattr) +void putsEdgeDelayParam(coord_t x, coord_t y, LogicalSwitchData * cs, uint8_t lattr, uint8_t rattr) { lcdDrawChar(x-4, y, '['); lcdDrawNumber(x, y, lswTimerValue(cs->v2), LEFT|PREC1|lattr); @@ -72,7 +72,7 @@ void onLogicalSwitchesMenu(const char *result) } } -void menuModelLogicalSwitches(uint8_t event) +void menuModelLogicalSwitches(event_t event) { INCDEC_DECLARE_VARS(EE_MODEL); @@ -98,7 +98,7 @@ void menuModelLogicalSwitches(uint8_t event) POPUP_MENU_START(onLogicalSwitchesMenu); } - for (int i=0; i0) ? BLINK|INVERS : INVERS) : 0); diff --git a/radio/src/gui/212x64/model_mixes.cpp b/radio/src/gui/212x64/model_mixes.cpp index 3295e8e66..9cfb3c134 100644 --- a/radio/src/gui/212x64/model_mixes.cpp +++ b/radio/src/gui/212x64/model_mixes.cpp @@ -142,7 +142,7 @@ enum MixFields { MIX_FIELD_COUNT }; -void gvarWeightItem(coord_t x, coord_t y, MixData *md, uint8_t attr, uint8_t event) +void gvarWeightItem(coord_t x, coord_t y, MixData *md, uint8_t attr, event_t event) { u_int8int16_t weight; MD_WEIGHT_TO_UNION(md, weight); @@ -195,7 +195,7 @@ void drawOffsetBar(uint8_t x, uint8_t y, MixData * md) } } -void menuModelMixOne(uint8_t event) +void menuModelMixOne(event_t event) { if (event == EVT_KEY_LONG(KEY_MENU)) { pushMenu(menuChannelsView); @@ -382,7 +382,7 @@ void displayMixLine(coord_t y, MixData * md) lcdDrawChar(MIX_LINE_DELAY_POS, y, cs); } -void menuModelMixAll(uint8_t event) +void menuModelMixAll(event_t event) { uint8_t sub = menuVerticalPosition; diff --git a/radio/src/gui/212x64/model_outputs.cpp b/radio/src/gui/212x64/model_outputs.cpp index c99478e00..00480d506 100644 --- a/radio/src/gui/212x64/model_outputs.cpp +++ b/radio/src/gui/212x64/model_outputs.cpp @@ -97,7 +97,7 @@ void onLimitsMenu(const char *result) } } -void menuModelLimits(uint8_t event) +void menuModelLimits(event_t event) { int sub = menuVerticalPosition; diff --git a/radio/src/gui/212x64/model_select.cpp b/radio/src/gui/212x64/model_select.cpp index ab2c3f66c..a5de1a21a 100644 --- a/radio/src/gui/212x64/model_select.cpp +++ b/radio/src/gui/212x64/model_select.cpp @@ -23,7 +23,7 @@ #define MODELSIZE_POS_X 170 #define MODELSEL_W 133 -void onModelSelectMenu(const char *result) +void onModelSelectMenu(const char * result) { int8_t sub = menuVerticalPosition; @@ -63,7 +63,7 @@ void onModelSelectMenu(const char *result) } } -void menuModelSelect(uint8_t event) +void menuModelSelect(event_t event) { if (warningResult) { warningResult = 0; @@ -73,7 +73,7 @@ void menuModelSelect(uint8_t event) event = EVT_ENTRY_UP; } - uint8_t _event_ = ((event==EVT_KEY_BREAK(KEY_ENTER) || event==EVT_KEY_LONG(KEY_ENTER)) ? 0 : event); + event_t _event_ = ((event==EVT_KEY_BREAK(KEY_ENTER) || event==EVT_KEY_LONG(KEY_ENTER)) ? 0 : event); if ((s_copyMode && EVT_KEY_MASK(event) == KEY_EXIT) || event == EVT_KEY_BREAK(KEY_EXIT)) { _event_ -= KEY_EXIT; @@ -87,8 +87,7 @@ void menuModelSelect(uint8_t event) int sub = menuVerticalPosition; - switch (event) - { + switch (event) { case EVT_ENTRY: menuVerticalPosition = sub = g_eeGeneral.currModel; if (sub >= NUM_BODY_LINES) menuVerticalOffset = sub-(NUM_BODY_LINES-1); diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 69b482612..dd1037392 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -98,7 +98,7 @@ enum MenuModelSetupItems { #define MODEL_SETUP_RANGE_OFS 7*FW #define MODEL_SETUP_SET_FAILSAFE_OFS 10*FW-2 -void copySelection(char *dst, const char *src, uint8_t size) +void copySelection(char * dst, const char * src, uint8_t size) { if (memcmp(src, "---", 3) == 0) memset(dst, 0, size); @@ -106,7 +106,7 @@ void copySelection(char *dst, const char *src, uint8_t size) memcpy(dst, src, size); } -void onModelSetupBitmapMenu(const char *result) +void onModelSetupBitmapMenu(const char * result) { if (result == STR_UPDATE_LIST) { if (!sdListFiles(BITMAPS_PATH, BITMAPS_EXT, sizeof(g_model.header.bitmap), NULL)) { @@ -121,7 +121,7 @@ void onModelSetupBitmapMenu(const char *result) } } -void editTimerMode(int timerIdx, coord_t y, LcdFlags attr, uint8_t event) +void editTimerMode(int timerIdx, coord_t y, LcdFlags attr, event_t event) { TimerData & timer = g_model.timers[timerIdx]; drawStringWithIndex(0*FW, y, STR_TIMER, timerIdx+1); @@ -166,7 +166,7 @@ void editTimerMode(int timerIdx, coord_t y, LcdFlags attr, uint8_t event) } } -void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, uint8_t event) +void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event) { TimerData & timer = g_model.timers[timerIdx]; lcdDrawTextAlignedLeft(y, STR_BEEPCOUNTDOWN); @@ -258,7 +258,7 @@ int getSwitchWarningsCount() #endif -void menuModelSetup(uint8_t event) +void menuModelSetup(event_t event) { horzpos_t l_posHorz = menuHorizontalPosition; bool CURSOR_ON_CELL = (menuHorizontalPosition >= 0); @@ -1024,7 +1024,7 @@ void menuModelSetup(uint8_t event) #endif } -void menuModelFailsafe(uint8_t event) +void menuModelFailsafe(event_t event) { static bool longNames = false; bool newLongNames = false; diff --git a/radio/src/gui/212x64/model_special_functions.cpp b/radio/src/gui/212x64/model_special_functions.cpp index c3da0ea36..878622ad7 100644 --- a/radio/src/gui/212x64/model_special_functions.cpp +++ b/radio/src/gui/212x64/model_special_functions.cpp @@ -144,7 +144,7 @@ enum CustomFunctionsItems { ITEM_CUSTOM_FUNCTIONS_LAST = ITEM_CUSTOM_FUNCTIONS_COUNT-1 }; -void menuSpecialFunctions(uint8_t event, CustomFunctionData * functions, CustomFunctionsContext * functionsContext) +void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomFunctionsContext * functionsContext) { int sub = menuVerticalPosition; uint8_t eeFlags = (functions == g_model.customFn) ? EE_MODEL : EE_GENERAL; @@ -421,7 +421,7 @@ void menuSpecialFunctions(uint8_t event, CustomFunctionData * functions, CustomF } } -void menuModelSpecialFunctions(uint8_t event) +void menuModelSpecialFunctions(event_t event) { MENU(STR_MENUCUSTOMFUNC, menuTabModel, MENU_MODEL_SPECIAL_FUNCTIONS, MAX_SPECIAL_FUNCTIONS, { NAVIGATION_LINE_BY_LINE|4/*repeated*/ }); return menuSpecialFunctions(event, g_model.customFn, &modelFunctionsContext); diff --git a/radio/src/gui/212x64/navigation.cpp b/radio/src/gui/212x64/navigation.cpp index 1fff8ec5f..7863199ae 100644 --- a/radio/src/gui/212x64/navigation.cpp +++ b/radio/src/gui/212x64/navigation.cpp @@ -31,7 +31,7 @@ int checkIncDecSelection = 0; #if defined(AUTOSWITCH) swsrc_t checkIncDecMovedSwitch(swsrc_t val) { - if (s_editMode>0) { + if (s_editMode > 0) { swsrc_t swtch = getMovedSwitch(); if (swtch) { div_t info = switchInfo(swtch); @@ -92,7 +92,7 @@ void onSourceLongEnterPress(const char * result) } } -void onSwitchLongEnterPress(const char *result) +void onSwitchLongEnterPress(const char * result) { if (result == STR_MENU_SWITCHES) checkIncDecSelection = SWSRC_FIRST_SWITCH; @@ -111,7 +111,7 @@ void onSwitchLongEnterPress(const char *result) #define DBLKEYS_PRESSED_RGT_UP(in) ((in & ((1<0 && event==EVT_ROTARY_RIGHT) { + newval += min(rotencSpeed, i_max-val); + while (isValueAvailable && !isValueAvailable(newval) && newval<=i_max) { + newval++; + } + if (newval > i_max) { + newval = val; + AUDIO_KEY_ERROR(); + } + } + else if (s_editMode>0 && event==EVT_ROTARY_LEFT) { + newval -= min(rotencSpeed, val-i_min); + while (isValueAvailable && !isValueAvailable(newval) && newval>=i_min) { + newval--; + } + if (newval < i_min) { + newval = val; + AUDIO_KEY_ERROR(); + } + } +#else if (s_editMode>0 && (event==EVT_KEY_FIRST(KEY_PLUS) || event==EVT_KEY_REPT(KEY_PLUS))) { do { if (IS_KEY_REPT(event) && (i_flags & INCDEC_REP10)) { @@ -187,6 +209,7 @@ int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int AUDIO_KEY_ERROR(); } } +#endif if (!READ_ONLY() && i_min==0 && i_max==1 && event==EVT_KEY_BREAK(KEY_ENTER)) { s_editMode = 0; @@ -219,17 +242,19 @@ int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int #endif if (newval != val) { +#if !defined(ROTARY_ENCODER_NAVIGATION) if (!(i_flags & NO_INCDEC_MARKS) && (newval != i_max) && (newval != i_min) && stops.contains(newval)) { bool pause = (newval > val ? !stops.contains(newval+1) : !stops.contains(newval-1)); if (pause) { pauseEvents(event); // delay before auto-repeat continues } } - storageDirty(i_flags & (EE_GENERAL|EE_MODEL)); - checkIncDec_Ret = (newval > val ? 1 : -1); if (!IS_KEY_REPT(event)) { AUDIO_KEY_PRESS(); } +#endif + storageDirty(i_flags & (EE_GENERAL|EE_MODEL)); + checkIncDec_Ret = (newval > val ? 1 : -1); } else { checkIncDec_Ret = 0; @@ -312,16 +337,16 @@ int checkIncDec(unsigned int event, int val, int i_min, int i_max, unsigned int return newval; } -#define CURSOR_NOT_ALLOWED_IN_ROW(row) ((int8_t)MAXCOL(row) < 0) -#define MAXCOL_RAW(row) (horTab ? pgm_read_byte(horTab+min(row, (vertpos_t)horTabMax)) : (const uint8_t)0) -#define MAXCOL(row) (MAXCOL_RAW(row) >= HIDDEN_ROW ? MAXCOL_RAW(row) : (const uint8_t)(MAXCOL_RAW(row) & (~NAVIGATION_LINE_BY_LINE))) -#define COLATTR(row) (MAXCOL_RAW(row) == (uint8_t)-1 ? (const uint8_t)0 : (const uint8_t)(MAXCOL_RAW(row) & NAVIGATION_LINE_BY_LINE)) -#define INC(val, min, max) if (valmin) {val--;} else {val=max;} +#define CURSOR_NOT_ALLOWED_IN_ROW(row) ((int8_t)MAXCOL(row) < 0) +#define MAXCOL_RAW(row) (horTab ? pgm_read_byte(horTab+min(row, (vertpos_t)horTabMax)) : (const uint8_t)0) +#define MAXCOL(row) (MAXCOL_RAW(row) >= HIDDEN_ROW ? MAXCOL_RAW(row) : (const uint8_t)(MAXCOL_RAW(row) & (~NAVIGATION_LINE_BY_LINE))) +#define COLATTR(row) (MAXCOL_RAW(row) == (uint8_t)-1 ? (const uint8_t)0 : (const uint8_t)(MAXCOL_RAW(row) & NAVIGATION_LINE_BY_LINE)) +#define INC(val, min, max) if (valmin) {val=min;} +#define DEC(val, min, max) if (val>min) {val--;} else {val=max;} coord_t scrollbar_X = DEFAULT_SCROLLBAR_X; -void onLongMenuPress(const char *result) +void onLongMenuPress(const char * result) { if (result == STR_VIEW_CHANNELS) { pushMenu(menuChannelsView); @@ -331,7 +356,6 @@ void onLongMenuPress(const char *result) } } - tmr10ms_t menuEntryTime; void check(const char * name, event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t menuTabSize, const pm_uint8_t *horTab, uint8_t horTabMax, vertpos_t rowcount, uint8_t flags) @@ -403,7 +427,7 @@ void check(const char * name, event_t event, uint8_t curr, const MenuHandlerFunc SET_SCROLLBAR_X(LCD_W-1); break; - case EVT_ROTARY_BREAK: + case EVT_KEY_BREAK(KEY_ENTER): if (s_editMode > 1) break; if (menuHorizontalPosition < 0 && maxcol > 0 && READ_ONLY_UNLOCKED()) { l_posHorz = 0; @@ -445,6 +469,7 @@ void check(const char * name, event_t event, uint8_t curr, const MenuHandlerFunc } break; + CASE_EVT_ROTARY_RIGHT case EVT_KEY_FIRST(KEY_RIGHT): AUDIO_KEY_PRESS(); // no break @@ -474,7 +499,8 @@ void check(const char * name, event_t event, uint8_t curr, const MenuHandlerFunc l_posHorz = POS_HORZ_INIT(l_posVert); break; - + + CASE_EVT_ROTARY_LEFT case EVT_KEY_FIRST(KEY_LEFT): AUDIO_KEY_PRESS(); // no break @@ -588,7 +614,7 @@ void check_submenu_simple(const char * name, event_t event, uint8_t rowcount) check_simple(name, event, 0, 0, 0, rowcount); } -void repeatLastCursorMove(uint8_t event) +void repeatLastCursorMove(event_t event) { if (CURSOR_MOVED_LEFT(event) || CURSOR_MOVED_RIGHT(event)) { putEvent(event); diff --git a/radio/src/gui/212x64/popups.cpp b/radio/src/gui/212x64/popups.cpp index 7c98c7015..4573a5db4 100644 --- a/radio/src/gui/212x64/popups.cpp +++ b/radio/src/gui/212x64/popups.cpp @@ -29,7 +29,7 @@ uint8_t warningInfoFlags = ZCHAR; int16_t warningInputValue; int16_t warningInputValueMin; int16_t warningInputValueMax; -void (*popupFunc)(uint8_t event) = NULL; +void (*popupFunc)(event_t event) = NULL; const char * popupMenuItems[POPUP_MENU_MAX_LINES]; uint8_t s_menu_item = 0; uint16_t popupMenuNoItems = 0; @@ -92,7 +92,7 @@ void showAlertBox(const char * title, const char * text, const char * action, ui clearKeyEvents(); } -void runPopupWarning(uint8_t event) +void runPopupWarning(event_t event) { warningResult = false; drawMessageBox(warningText); @@ -120,7 +120,7 @@ void runPopupWarning(uint8_t event) } } -const char * runPopupMenu(uint8_t event) +const char * runPopupMenu(event_t event) { const char * result = NULL; @@ -139,6 +139,7 @@ const char * runPopupMenu(uint8_t event) } switch (event) { + CASE_EVT_ROTARY_LEFT case EVT_KEY_FIRST(KEY_UP): case EVT_KEY_REPT(KEY_UP): if (s_menu_item > 0) { @@ -156,7 +157,8 @@ const char * runPopupMenu(uint8_t event) } } break; - + + CASE_EVT_ROTARY_RIGHT case EVT_KEY_FIRST(KEY_DOWN): case EVT_KEY_REPT(KEY_DOWN): if (s_menu_item < display_count - 1 && popupMenuOffset + s_menu_item + 1 < popupMenuNoItems) { @@ -174,9 +176,11 @@ const char * runPopupMenu(uint8_t event) } } break; + case EVT_KEY_BREAK(KEY_ENTER): result = popupMenuItems[s_menu_item + (popupMenuOffsetType == MENU_OFFSET_INTERNAL ? popupMenuOffset : 0)]; // no break + case EVT_KEY_BREAK(KEY_EXIT): popupMenuNoItems = 0; s_menu_item = 0; diff --git a/radio/src/gui/212x64/popups.h b/radio/src/gui/212x64/popups.h index 9537dede8..e6ef34b2f 100644 --- a/radio/src/gui/212x64/popups.h +++ b/radio/src/gui/212x64/popups.h @@ -30,9 +30,9 @@ void drawMessageBox(const char * title); void showMessageBox(const char * title); -void runPopupWarning(uint8_t event); +void runPopupWarning(event_t event); -extern void (*popupFunc)(uint8_t event); +extern void (*popupFunc)(event_t event); extern int16_t warningInputValue; extern int16_t warningInputValueMin; extern int16_t warningInputValueMax; @@ -61,7 +61,7 @@ enum { MENU_OFFSET_EXTERNAL }; extern uint8_t popupMenuOffsetType; -const char * runPopupMenu(uint8_t event); +const char * runPopupMenu(event_t event); extern void (*popupMenuHandler)(const char * result); #endif // _POPUPS_H_ diff --git a/radio/src/gui/212x64/radio_calibration.cpp b/radio/src/gui/212x64/radio_calibration.cpp index 092f362cb..1bbdbc928 100644 --- a/radio/src/gui/212x64/radio_calibration.cpp +++ b/radio/src/gui/212x64/radio_calibration.cpp @@ -45,7 +45,7 @@ void drawPotsBars() } } -void menuCommonCalib(uint8_t event) +void menuCommonCalib(event_t event) { for (uint8_t i=0; i 2 case ITEM_MODEL_TIMER3: editTimerMode(2, y, attr, event); diff --git a/radio/src/gui/480x272/navigation.cpp b/radio/src/gui/480x272/navigation.cpp index a67e6e7ef..894eba9e0 100644 --- a/radio/src/gui/480x272/navigation.cpp +++ b/radio/src/gui/480x272/navigation.cpp @@ -31,7 +31,7 @@ int checkIncDecSelection = 0; #if defined(AUTOSWITCH) swsrc_t checkIncDecMovedSwitch(swsrc_t val) { - if (s_editMode>0) { + if (s_editMode > 0) { swsrc_t swtch = getMovedSwitch(); if (swtch) { div_t info = switchInfo(swtch); diff --git a/radio/src/gui/common/stdlcd/model_curves.cpp b/radio/src/gui/common/stdlcd/model_curves.cpp index 2b66718be..bac02bfe0 100644 --- a/radio/src/gui/common/stdlcd/model_curves.cpp +++ b/radio/src/gui/common/stdlcd/model_curves.cpp @@ -41,7 +41,7 @@ void drawCurve(coord_t offset) } while (1); } -void menuModelCurvesAll(uint8_t event) +void menuModelCurvesAll(event_t event) { #if defined(GVARS_IN_CURVES_SCREEN) SIMPLE_MENU(STR_MENUCURVES, menuTabModel, MENU_MODEL_CURVES, HEADER_LINE+MAX_CURVES+MAX_GVARS); @@ -105,7 +105,7 @@ void menuModelCurvesAll(uint8_t event) } #if defined(CPUARM) -void editCurveRef(coord_t x, coord_t y, CurveRef & curve, uint8_t event, LcdFlags flags) +void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlags flags) { coord_t x1 = x; if (flags & RIGHT) { diff --git a/radio/src/gui/common/stdlcd/model_heli.cpp b/radio/src/gui/common/stdlcd/model_heli.cpp index 7597ada87..c0b72e6ef 100644 --- a/radio/src/gui/common/stdlcd/model_heli.cpp +++ b/radio/src/gui/common/stdlcd/model_heli.cpp @@ -45,7 +45,7 @@ enum MenuModelHeliItems { #define MODEL_HELI_2ND_COLUMN (14*FW) #endif -void menuModelHeli(uint8_t event) +void menuModelHeli(event_t event) { SIMPLE_MENU(STR_MENUHELISETUP, menuTabModel, MENU_MODEL_HELI, HEADER_LINE+ITEM_HELI_MAX); diff --git a/radio/src/gui/common/stdlcd/widgets.cpp b/radio/src/gui/common/stdlcd/widgets.cpp index 72dd5a7b7..d12d53855 100644 --- a/radio/src/gui/common/stdlcd/widgets.cpp +++ b/radio/src/gui/common/stdlcd/widgets.cpp @@ -27,7 +27,7 @@ void drawStringWithIndex(coord_t x, coord_t y, const pm_char * str, uint8_t idx, } #if defined(CPUARM) -FlightModesType editFlightModes(coord_t x, coord_t y, uint8_t event, FlightModesType value, uint8_t attr) +FlightModesType editFlightModes(coord_t x, coord_t y, event_t event, FlightModesType value, uint8_t attr) { int posHorz = menuHorizontalPosition; diff --git a/radio/src/gui/gui_common.h b/radio/src/gui/gui_common.h index 221c39530..08f6ccbaa 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -24,6 +24,14 @@ #include "lcd.h" #include "keys.h" +#if defined(ROTARY_ENCODER_NAVIGATION) + #define CASE_EVT_ROTARY_LEFT case EVT_ROTARY_LEFT: + #define CASE_EVT_ROTARY_RIGHT case EVT_ROTARY_RIGHT: +#else + #define CASE_EVT_ROTARY_LEFT + #define CASE_EVT_ROTARY_RIGHT +#endif + #if defined(CPUARM) typedef bool (*IsValueAvailable)(int); diff --git a/radio/src/keys.cpp b/radio/src/keys.cpp index b2af5ab86..00ce73711 100644 --- a/radio/src/keys.cpp +++ b/radio/src/keys.cpp @@ -122,23 +122,24 @@ uint8_t Key::key() const return (this - keys); } -void pauseEvents(uint8_t event) +void pauseEvents(event_t event) { event = EVT_KEY_MASK(event); if (event < (int)DIM(keys)) keys[event].pauseEvents(); } -void killEvents(uint8_t event) +void killEvents(event_t event) { -#if defined(ROTARY_ENCODER_NAVIGATION) +#if defined(ROTARY_ENCODERS) if (event == EVT_ROTARY_LONG) { - killEvents(BTN_REa + NAVIGATION_RE_IDX()); + killEvents(BTN_REa + g_eeGeneral.reNavigation - 1); + return; } - else #endif - { - event = EVT_KEY_MASK(event); - if (event < (int)DIM(keys)) keys[event].killEvents(); + + event = EVT_KEY_MASK(event); + if (event < (int)DIM(keys)) { + keys[event].killEvents(); } } @@ -174,7 +175,7 @@ bool clearKeyEvents() putEvent(0); return true; } -#else // #if defined(CPUARM) +#else void clearKeyEvents() { // loop until all keys are up diff --git a/radio/src/keys.h b/radio/src/keys.h index fde91e73f..d7a7048c9 100644 --- a/radio/src/keys.h +++ b/radio/src/keys.h @@ -21,67 +21,77 @@ #ifndef _KEYS_H_ #define _KEYS_H_ -#define EVT_KEY_MASK(e) ((e) & 0x1f) +#define EVT_KEY_MASK(e) ((e) & 0x1f) #if defined(PCBHORUS) -#define _MSK_KEY_BREAK 0x0200 -#define _MSK_KEY_REPT 0x0400 -#define _MSK_KEY_FIRST 0x0600 -#define _MSK_KEY_LONG 0x0800 -#define _MSK_KEY_FLAGS 0x0e00 -#define EVT_ENTRY 0x1000 -#define EVT_ENTRY_UP 0x2000 +#define _MSK_KEY_BREAK 0x0200 +#define _MSK_KEY_REPT 0x0400 +#define _MSK_KEY_FIRST 0x0600 +#define _MSK_KEY_LONG 0x0800 +#define _MSK_KEY_FLAGS 0x0e00 +#define EVT_ENTRY 0x1000 +#define EVT_ENTRY_UP 0x2000 #else -#define _MSK_KEY_BREAK 0x20 -#define _MSK_KEY_REPT 0x40 -#define _MSK_KEY_FIRST 0x60 -#define _MSK_KEY_LONG 0x80 -#define _MSK_KEY_FLAGS 0xe0 -#define EVT_ENTRY 0xbf -#define EVT_ENTRY_UP 0xbe +#define _MSK_KEY_BREAK 0x20 +#define _MSK_KEY_REPT 0x40 +#define _MSK_KEY_FIRST 0x60 +#define _MSK_KEY_LONG 0x80 +#define _MSK_KEY_FLAGS 0xe0 +#define EVT_ENTRY 0xbf +#define EVT_ENTRY_UP 0xbe #endif -#define EVT_KEY_BREAK(key) ((key)|_MSK_KEY_BREAK) -#define EVT_KEY_FIRST(key) ((key)|_MSK_KEY_FIRST) -#define EVT_KEY_REPT(key) ((key)|_MSK_KEY_REPT) -#define EVT_KEY_LONG(key) ((key)|_MSK_KEY_LONG) +#define EVT_KEY_BREAK(key) ((key)|_MSK_KEY_BREAK) +#define EVT_KEY_FIRST(key) ((key)|_MSK_KEY_FIRST) +#define EVT_KEY_REPT(key) ((key)|_MSK_KEY_REPT) +#define EVT_KEY_LONG(key) ((key)|_MSK_KEY_LONG) -#define IS_KEY_BREAK(evt) (((evt) & _MSK_KEY_FLAGS) == _MSK_KEY_BREAK) -#define IS_KEY_FIRST(evt) (((evt) & _MSK_KEY_FLAGS) == _MSK_KEY_FIRST) -#define IS_KEY_LONG(evt) (((evt) & _MSK_KEY_FLAGS) == _MSK_KEY_LONG) -#define IS_KEY_REPT(evt) (((evt) & _MSK_KEY_FLAGS) == _MSK_KEY_REPT) +#define IS_KEY_BREAK(evt) (((evt) & _MSK_KEY_FLAGS) == _MSK_KEY_BREAK) +#define IS_KEY_FIRST(evt) (((evt) & _MSK_KEY_FLAGS) == _MSK_KEY_FIRST) +#define IS_KEY_LONG(evt) (((evt) & _MSK_KEY_FLAGS) == _MSK_KEY_LONG) +#define IS_KEY_REPT(evt) (((evt) & _MSK_KEY_FLAGS) == _MSK_KEY_REPT) -#if defined(PCBHORUS) || defined(PCBFLAMENCO) || defined(PCBTARANIS) - #define EVT_ROTARY_BREAK EVT_KEY_BREAK(KEY_ENTER) - #define EVT_ROTARY_LONG EVT_KEY_LONG(KEY_ENTER) - #define EVT_ROTARY_LEFT 0xDF00 - #define EVT_ROTARY_RIGHT 0xDE00 +#if (defined(PCBHORUS) || defined(PCBFLAMENCO) || defined(PCBTARANIS)) && defined(ROTARY_ENCODER_NAVIGATION) + typedef uint16_t event_t; + #define EVT_ROTARY_BREAK EVT_KEY_BREAK(KEY_ENTER) + #define EVT_ROTARY_LONG EVT_KEY_LONG(KEY_ENTER) + #define EVT_ROTARY_LEFT 0xDF00 + #define EVT_ROTARY_RIGHT 0xDE00 + #define IS_NEXT_EVENT(event) (event==EVT_ROTARY_RIGHT) + #define IS_PREVIOUS_EVENT(event) (event==EVT_ROTARY_LEFT) +#elif defined(ROTARY_ENCODER_NAVIGATION) + typedef uint8_t event_t; + #define EVT_ROTARY_BREAK 0xcf + #define EVT_ROTARY_LONG 0xce + #define EVT_ROTARY_LEFT 0xdf + #define EVT_ROTARY_RIGHT 0xde + #define IS_NEXT_EVENT(event) (event==EVT_ROTARY_RIGHT || event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_REPT(KEY_DOWN)) + #define IS_PREVIOUS_EVENT(event) (event==EVT_ROTARY_LEFT || event==EVT_KEY_FIRST(KEY_UP) || event==EVT_KEY_REPT(KEY_UP)) #else - #define EVT_ROTARY_BREAK 0xcf - #define EVT_ROTARY_LONG 0xce - #define EVT_ROTARY_LEFT 0xdf - #define EVT_ROTARY_RIGHT 0xde + typedef uint8_t event_t; + #define IS_NEXT_EVENT(event) (event==EVT_KEY_FIRST(KEY_DOWN) || event==EVT_KEY_REPT(KEY_DOWN)) + #define IS_PREVIOUS_EVENT(event) (event==EVT_KEY_FIRST(KEY_UP) || event==EVT_KEY_REPT(KEY_UP)) #endif #if defined(COLORLCD) - #define EVT_REFRESH 0xDD00 + #define EVT_REFRESH 0xDD00 #endif class Key { -#define FILTERBITS 4 +#define FILTERBITS 4 #ifdef SIMU #define FFVAL 1 #else - #define FFVAL ((1<rotaryEncoders[idx]); *value = limit((int16_t)-RESX, (int16_t)(*value + (inc * 8)), (int16_t)+RESX); storageDirty(EE_MODEL); @@ -1344,7 +1348,7 @@ void checkTrims() if (event && !IS_KEY_BREAK(event)) { int8_t k = EVT_KEY_MASK(event) - TRM_BASE; #else -uint8_t checkTrim(uint8_t event) +uint8_t checkTrim(event_t event) { int8_t k = EVT_KEY_MASK(event) - TRM_BASE; if (k>=0 && k<8 && !IS_KEY_BREAK(event)) { @@ -2469,9 +2473,13 @@ void moveTrimsToOffsets() // copy state of 3 primary to subtrim } #if defined(ROTARY_ENCODERS) - volatile rotenc_t g_rotenc[ROTARY_ENCODERS] = {0}; + volatile rotenc_t rotencValue[ROTARY_ENCODERS] = {0}; #elif defined(ROTARY_ENCODER_NAVIGATION) - volatile rotenc_t g_rotenc[1] = {0}; + volatile rotenc_t rotencValue[1] = {0}; +#endif + +#if defined(CPUARM) && defined(ROTARY_ENCODER_NAVIGATION) +uint8_t rotencSpeed; #endif #if !defined(CPUARM) && !defined(SIMU) diff --git a/radio/src/opentx.h b/radio/src/opentx.h index a7f6e62a7..b6bcc6242 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -526,15 +526,23 @@ extern uint8_t channel_order(uint8_t x); #define SPLASH_TIMEOUT (4*100) // 4 seconds #endif -#if defined(PCBTARANIS) || defined(PCBFLAMENCO) || defined(PCBHORUS) - #define IS_RE_NAVIGATION_ENABLE() true - #define NAVIGATION_RE_IDX() 0 -#elif defined(ROTARY_ENCODERS) - #define NAVIGATION_RE_IDX() (g_eeGeneral.reNavigation - 1) - #define IS_RE_NAVIGATION_ENABLE() g_eeGeneral.reNavigation +#if defined(ROTARY_ENCODERS) +#define IS_ROTARY_ENCODER_NAVIGATION_ENABLE() g_eeGeneral.reNavigation +extern volatile rotenc_t rotencValue[ROTARY_ENCODERS]; +#define ROTARY_ENCODER_NAVIGATION_VALUE rotencValue[g_eeGeneral.reNavigation - 1] #elif defined(ROTARY_ENCODER_NAVIGATION) - #define IS_RE_NAVIGATION_ENABLE() true - #define NAVIGATION_RE_IDX() 0 +#define IS_ROTARY_ENCODER_NAVIGATION_ENABLE() true +extern volatile rotenc_t rotencValue[1]; +#define ROTARY_ENCODER_NAVIGATION_VALUE rotencValue[0] +#endif + +#if defined(CPUARM) && defined(ROTARY_ENCODER_NAVIGATION) +extern uint8_t rotencSpeed; +#define ROTENC_LOWSPEED 1 +#define ROTENC_MIDSPEED 5 +#define ROTENC_HIGHSPEED 50 +#define ROTENC_DELAY_MIDSPEED 4 +#define ROTENC_DELAY_HIGHSPEED 2 #endif #define HEART_TIMER_10MS 1 @@ -1127,11 +1135,11 @@ extern uint16_t lightOffCounter; extern uint8_t flashCounter; extern uint8_t mixWarning; -FlightModeData *flightModeAddress(uint8_t idx); -ExpoData *expoAddress(uint8_t idx); -MixData *mixAddress(uint8_t idx); -LimitData *limitAddress(uint8_t idx); -LogicalSwitchData *lswAddress(uint8_t idx); +FlightModeData * flightModeAddress(uint8_t idx); +ExpoData * expoAddress(uint8_t idx); +MixData * mixAddress(uint8_t idx); +LimitData * limitAddress(uint8_t idx); +LogicalSwitchData * lswAddress(uint8_t idx); // static variables used in evalFlightModeMixes - moved here so they don't interfere with the stack // It's also easier to initialize them here. @@ -1253,13 +1261,6 @@ void evalFunctions(); #define customFunctionsReset() modelFunctionsContext.reset() #endif -#if defined(ROTARY_ENCODERS) - // Global rotary encoder registers - extern volatile rotenc_t g_rotenc[ROTARY_ENCODERS]; -#elif defined(ROTARY_ENCODER_NAVIGATION) - extern volatile rotenc_t g_rotenc[1]; -#endif - #include "telemetry/telemetry.h" #if defined(CPUARM) diff --git a/radio/src/simu.cpp b/radio/src/simu.cpp index 072cabc2d..78d1de519 100644 --- a/radio/src/simu.cpp +++ b/radio/src/simu.cpp @@ -358,20 +358,14 @@ long Open9xSim::onTimeout(FXObject*, FXSelector, void*) updateKeysAndSwitches(); -#if defined(PCBHORUS) || defined(PCBFLAMENCO) - #define ROTENC_VALUE rotencValue -#else - #define ROTENC_VALUE g_rotenc[0] -#endif - -#if defined(ROTARY_ENCODER_NAVIGATION) || defined(PCBHORUS) || defined(PCBFLAMENCO) +#if defined(ROTARY_ENCODER_NAVIGATION) static bool rotencAction = false; if (getApp()->getKeyState(KEY_X)) { - if (!rotencAction) ROTENC_VALUE += ROTARY_ENCODER_GRANULARITY; + if (!rotencAction) ROTARY_ENCODER_NAVIGATION_VALUE += ROTARY_ENCODER_GRANULARITY; rotencAction = true; } else if (getApp()->getKeyState(KEY_W)) { - if (!rotencAction) ROTENC_VALUE -= ROTARY_ENCODER_GRANULARITY; + if (!rotencAction) ROTARY_ENCODER_NAVIGATION_VALUE -= ROTARY_ENCODER_GRANULARITY; rotencAction = true; } else { diff --git a/radio/src/targets/9x/board.cpp b/radio/src/targets/9x/board.cpp index 4efd42047..b1598470b 100644 --- a/radio/src/targets/9x/board.cpp +++ b/radio/src/targets/9x/board.cpp @@ -40,7 +40,7 @@ void rotencPoll() { #if defined(TELEMETREZ) if (TrotCount != LastTrotCount) { - g_rotenc[0] = LastTrotCount = TrotCount ; + rotencValue[0] = LastTrotCount = TrotCount ; } #else // Rotary Encoder polling @@ -64,10 +64,10 @@ void rotencPoll() x <<= 1 ; x ^= rotary & 0x80 ; if ( x ) { - g_rotenc[0] -= 1 ; + rotencValue[0] -= 1 ; } else { - g_rotenc[0] += 1 ; + rotencValue[0] += 1 ; } RotPosition = rotary ; } diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index bffc34f02..54158bcd2 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -14,7 +14,7 @@ set(LUA_EXPORT lua_export_horus) set(FLAVOUR horus) set(RAMBACKUP YES) -add_definitions(-DPCBHORUS -DPCBREV=${PCBREV} -DCOLORLCD -DSTM32F429_439xx -DSDRAM -DPPM_PIN_UART -DPPM_PIN_TIMER) +add_definitions(-DPCBHORUS -DPCBREV=${PCBREV} -DSTM32F429_439xx -DSDRAM -DCOLORLCD -DPPM_PIN_UART -DPPM_PIN_TIMER) add_definitions(-DEEPROM_VARIANT=0 -DAUDIO -DVOICE -DRTCLOCK) include_directories(${RADIO_SRC_DIRECTORY}/fonts/480x272 gui/${GUI_DIR} gui/${GUI_DIR}/layouts) diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index 349600838..80f1a866e 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -255,11 +255,7 @@ uint32_t readTrims(void); #define DBLKEYS_PRESSED_LFT_DWN(in) ((in & (KEYS_GPIO_PIN_LEFT + KEYS_GPIO_PIN_DOWN)) == (KEYS_GPIO_PIN_LEFT + KEYS_GPIO_PIN_DOWN)) // Rotary encoder driver -extern int32_t rotencValue; -extern uint32_t rotencSpeed; -#define ROTENC_LOWSPEED 1 -#define ROTENC_MIDSPEED 5 -#define ROTENC_HIGHSPEED 50 +#define ROTARY_ENCODER_NAVIGATION void checkRotaryEncoder(void); // WDT driver diff --git a/radio/src/targets/horus/keys_driver.cpp b/radio/src/targets/horus/keys_driver.cpp index 223dff7b4..0a78d6082 100644 --- a/radio/src/targets/horus/keys_driver.cpp +++ b/radio/src/targets/horus/keys_driver.cpp @@ -20,6 +20,8 @@ #include "opentx.h" +uint32_t rotencPosition; + uint32_t readKeys() { uint32_t result = 0; @@ -89,22 +91,15 @@ uint8_t keyDown() return readKeys(); } -int32_t rotencValue; -uint32_t rotencPosition; -uint32_t rotencSpeed = ROTENC_LOWSPEED; - -#define ROTENC_DELAY_MIDSPEED 4 -#define ROTENC_DELAY_HIGHSPEED 2 - void checkRotaryEncoder() { register uint32_t newpos = ROTARY_ENCODER_POSITION(); if (newpos != rotencPosition) { if ((rotencPosition & 0x01) ^ ((newpos & 0x02) >> 1)) { - --rotencValue; + --rotencValue[0]; } else { - ++rotencValue; + ++rotencValue[0]; } rotencPosition = newpos; } @@ -121,28 +116,6 @@ void readKeysAndTrims() keys[index++].input(in & (1 << i)); } - static rotenc_t rePreviousValue; - rotenc_t reNewValue = (rotencValue / 2); - int8_t scrollRE = reNewValue - rePreviousValue; - static uint32_t lastTick = 0; - if (scrollRE) { - rePreviousValue = reNewValue; - if (scrollRE < 0) { - putEvent(EVT_ROTARY_LEFT); - } - else { - putEvent(EVT_ROTARY_RIGHT); - } - uint32_t delay = get_tmr10ms() - lastTick; - lastTick = get_tmr10ms(); - if (delay < ROTENC_DELAY_HIGHSPEED) - rotencSpeed = ROTENC_HIGHSPEED; - else if (delay < ROTENC_DELAY_MIDSPEED) - rotencSpeed = ROTENC_MIDSPEED; - else - rotencSpeed = ROTENC_LOWSPEED; - } - in = readTrims(); for (i = 1; i <= 1 << (TRM_LAST-TRM_BASE); i <<= 1) { keys[index++].input(in & i); diff --git a/radio/src/targets/simu/opentxsimulator.cpp b/radio/src/targets/simu/opentxsimulator.cpp index 32a799f21..c0dbbe108 100644 --- a/radio/src/targets/simu/opentxsimulator.cpp +++ b/radio/src/targets/simu/opentxsimulator.cpp @@ -98,11 +98,9 @@ void OpenTxSimulator::start(QByteArray & ee, bool tests) void OpenTxSimulator::start(const char * filename, bool tests) { -#if ROTARY_ENCODERS > 0 - g_rotenc[0] = 0; -#endif -#if ROTARY_ENCODERS > 1 - g_rotenc[1] = 0; +#if defined(ROTARY_ENCODER_NAVIGATION) + for (int i=0; i 0) - rotencValue -= 2; - else - rotencValue += 2; -#elif defined(PCBX9E) - if (steps == 255) - rotencValue -= 2; - else - rotencValue += 2; -#elif defined(PCBSKY9X) && ROTARY_ENCODERS > 0 - g_rotenc[0] += steps*4; -#elif defined(PCBGRUVIN9X) - g_rotenc[0] += steps; +#if defined(ROTARY_ENCODER_NAVIGATION) + ROTARY_ENCODER_NAVIGATION_VALUE += steps * ROTARY_ENCODER_GRANULARITY; #endif } diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index 8cb602a22..752d75b1f 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -189,7 +189,7 @@ void simuSetKey(uint8_t key, bool state) KEY_CASE(BTN_REa, PIOB->PIO_PDSR, 0x40) #elif defined(PCBGRUVIN9X) || defined(PCBMEGA2560) KEY_CASE(BTN_REa, pind, 0x20) -#elif defined(ROTARY_ENCODER_NAVIGATION) +#elif defined(PCB9X) && defined(ROTARY_ENCODER_NAVIGATION) KEY_CASE(BTN_REa, RotEncoder, 0x20) #endif } diff --git a/radio/src/targets/sky9x/CMakeLists.txt b/radio/src/targets/sky9x/CMakeLists.txt index 7f2bff6be..3df19e17a 100644 --- a/radio/src/targets/sky9x/CMakeLists.txt +++ b/radio/src/targets/sky9x/CMakeLists.txt @@ -26,7 +26,6 @@ else() set(FLAVOUR sky9x) option(PCBREV "PCB Revision" REVC) set(TARGET_SRC ${TARGET_SRC} coproc_driver.cpp rotenc_driver.cpp rtc_driver.cpp) - add_definitions(-DROTARY_ENCODERS=1) set(BOOTLOADER bootflash4.lbm) if(PCBREV STREQUAL REVA) add_definitions(-DDREVA) diff --git a/radio/src/targets/sky9x/board.h b/radio/src/targets/sky9x/board.h index 0d24741f9..374e3c938 100644 --- a/radio/src/targets/sky9x/board.h +++ b/radio/src/targets/sky9x/board.h @@ -35,6 +35,18 @@ extern uint16_t ResetReason; void boardInit(void); #define boardOff() pwrOff() +// Rotary Encoder driver +void rotencInit(); +void rotencEnd(); + +#if !defined(REVX) && !defined(AR9X) + #define ROTARY_ENCODERS 1 + #define ROTARY_ENCODER_NAVIGATION + #define REA_DOWN() (!(PIOB->PIO_PDSR & 0x40)) +#else + #define REA_DOWN() (0) +#endif + // Keys driver #define NUM_SWITCHES 7 enum EnumKeys @@ -58,13 +70,10 @@ enum EnumKeys TRM_RH_UP, TRM_LAST = TRM_RH_UP, -#if ROTARY_ENCODERS > 0 || defined(ROTARY_ENCODER_NAVIGATION) +#if defined(ROTARY_ENCODERS) BTN_REa, #endif -#if ROTARY_ENCODERS > 0 - BTN_REb, -#endif - + NUM_KEYS }; @@ -359,16 +368,6 @@ void eepromBlockErase(uint32_t address); void eepromStartRead(uint8_t * buffer, size_t address, size_t size); void eepromStartWrite(uint8_t * buffer, size_t address, size_t size); -// Rotary Encoder driver -void rotencInit(); -void rotencEnd(); - -#if ROTARY_ENCODERS > 0 - #define REA_DOWN() (!(PIOB->PIO_PDSR & 0x40)) -#else - #define REA_DOWN() (0) -#endif - // Debug driver void debugPutc(const char c); diff --git a/radio/src/targets/taranis/board.cpp b/radio/src/targets/taranis/board.cpp index 09b1a13e1..075061728 100644 --- a/radio/src/targets/taranis/board.cpp +++ b/radio/src/targets/taranis/board.cpp @@ -93,13 +93,12 @@ void interrupt5ms() HAPTIC_HEARTBEAT(); #endif - if ( ++pre_scale >= 2 ) { + if (++pre_scale >= 2) { pre_scale = 0 ; per10ms(); } -#if defined(PCBX9E) || defined(PCBX7D) - // TODO define ROTARY_ENCODER +#if defined(ROTARY_ENCODER_NAVIGATION) checkRotaryEncoder(); #endif } diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index c279c7c34..6283bfec7 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -316,9 +316,7 @@ uint32_t readTrims(void); #if defined(PCBX9E) || defined(PCBX7D) // Rotary Encoder driver -extern int32_t rotencValue; -void rotencInit(void); -void rotencEnd(void); +#define ROTARY_ENCODER_NAVIGATION void checkRotaryEncoder(void); #endif diff --git a/radio/src/targets/taranis/bootloader/boot.cpp b/radio/src/targets/taranis/bootloader/boot.cpp index 8f9d35754..3ea2e5297 100644 --- a/radio/src/targets/taranis/bootloader/boot.cpp +++ b/radio/src/targets/taranis/bootloader/boot.cpp @@ -18,45 +18,32 @@ * GNU General Public License for more details. */ -#include -#include -#include - -#include "board.h" -#include "lcd.h" -#include "storage/eeprom_rlc.h" -#include "pwr.h" -#include "keys.h" -#include "sdcard.h" -#include "FatFs/ff.h" -#include "FatFs/diskio.h" -#include "translations/en.h" +#include "opentx.h" #include "stamp.h" -#include "strhelpers.h" -#if defined(PCBTARANIS) - #define BOOTLOADER_TITLE " Taranis BootLoader - " VERSION - #if defined(PCBX9E) - #define BOOT_KEY_UP KEY_MINUS - #define BOOT_KEY_DOWN KEY_PLUS - #else - #define BOOT_KEY_UP KEY_PLUS - #define BOOT_KEY_DOWN KEY_MINUS - #endif - #define BOOT_KEY_LEFT KEY_MENU - #define BOOT_KEY_RIGHT KEY_PAGE - #define BOOT_KEY_MENU KEY_ENTER - #define BOOT_KEY_EXIT KEY_EXIT - #define DISPLAY_CHAR_WIDTH 35 -#elif defined(PCBSKY9X) - #define BOOTLOADER_TITLE "Sky9x Boot Loader - " VERSION +#define BOOTLOADER_TITLE " Taranis BootLoader - " VERSION +#if defined(PCBX9E) + #define BOOT_KEY_UP KEY_MINUS + #define BOOT_KEY_DOWN KEY_PLUS +#else + #define BOOT_KEY_UP KEY_PLUS + #define BOOT_KEY_DOWN KEY_MINUS #endif +#define BOOT_KEY_LEFT KEY_MENU +#define BOOT_KEY_RIGHT KEY_PAGE +#define BOOT_KEY_MENU KEY_ENTER +#define BOOT_KEY_EXIT KEY_EXIT +#define DISPLAY_CHAR_WIDTH 35 const uint8_t bootloaderVersion[] __attribute__ ((section(".version"), used)) = { 'B', 'O', 'O', 'T', '1', '0' }; +#if defined(ROTARY_ENCODER_NAVIGATION) +volatile rotenc_t rotencValue[1] = {0}; +#endif + // states enum BootLoaderStates { ST_START, @@ -100,13 +87,8 @@ FILINFO Finfo; TCHAR Filenames[20][50]; uint32_t FileSize[20]; -uint32_t FnStartIndex; uint32_t Valid; -uint32_t FlashSize; - -uint32_t LockBits; - uint32_t Block_buffer[1024]; UINT BlockCount; @@ -114,21 +96,6 @@ uint32_t memoryType; uint32_t unlocked = 0; -#if defined(PCBSKY9X) - extern int32_t EblockAddress; -#endif - -extern uint32_t EepromBlocked; - -void init_spi(void); -void writeBlock(void); -void usbPluggedIn(); - -#if defined(PCBX9E) -typedef int32_t rotenc_t; -extern rotenc_t rotencValue; -#endif - void interrupt10ms(void) { Tenms |= 1; // 10 mS has passed @@ -141,10 +108,10 @@ void interrupt10ms(void) ++index; } -#if defined(PCBX9E) +#if defined(PCBX9E) || defined(PCBX7D) checkRotaryEncoder(); static rotenc_t rePreviousValue; - rotenc_t reNewValue = (rotencValue / 2); + rotenc_t reNewValue = (rotencValue[0] / 2); int8_t scrollRE = reNewValue - rePreviousValue; if (scrollRE) { rePreviousValue = reNewValue; @@ -278,7 +245,7 @@ uint32_t isValidBufferStart(const void * buffer) return isEepromStart(buffer); } -int menuFlashFile(uint32_t index, uint8_t event) +int menuFlashFile(uint32_t index, event_t event) { FRESULT fr; @@ -401,7 +368,7 @@ int main() lcdDrawTextAlignedLeft(0, BOOTLOADER_TITLE); lcdInvertLine(0); - uint8_t event = getEvent(); + event_t event = getEvent(); if (state != ST_USB) { if (usbPlugged()) { @@ -450,9 +417,6 @@ int main() } state = ST_START; } -#if defined(PCBSKY9X) - usbMassStorage(); -#endif } if (state == ST_FLASH_MENU || state == ST_RESTORE_MENU) { diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index 8180650cb..7e7f6ad24 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -58,10 +58,12 @@ #define ENC_GPIO GPIOD #define ENC_GPIO_PIN_A GPIO_Pin_12 // PD.12 #define ENC_GPIO_PIN_B GPIO_Pin_13 // PD.13 + #define ROTARY_ENCODER_POSITION() (ENC_GPIO->IDR >> 12) & 0x03 #elif defined(PCBX7D) #define ENC_GPIO GPIOE #define ENC_GPIO_PIN_A GPIO_Pin_9 // PE.09 #define ENC_GPIO_PIN_B GPIO_Pin_11 // PE.11 + #define ROTARY_ENCODER_POSITION() (((ENC_GPIO->IDR >> 10) & 0x02) + ((ENC_GPIO->IDR >> 9) & 0x01)) #endif // This is for SIMU: reuse rotary encoder pins to map UP and DOWN keyboard keys diff --git a/radio/src/targets/taranis/keys_driver.cpp b/radio/src/targets/taranis/keys_driver.cpp index e48bc9a33..59e73b6b9 100644 --- a/radio/src/targets/taranis/keys_driver.cpp +++ b/radio/src/targets/taranis/keys_driver.cpp @@ -20,6 +20,10 @@ #include "opentx.h" +#if defined(ROTARY_ENCODER_NAVIGATION) +uint32_t rotencPosition; +#endif + uint32_t readKeys() { uint32_t result = 0; @@ -33,7 +37,7 @@ uint32_t readKeys() if (~KEYS_GPIO_REG_EXIT & KEYS_GPIO_PIN_EXIT) result |= 1 << KEY_EXIT; -#if (!defined(PCBX9E) && !defined(PCBX7D)) || defined(SIMU) +#if !defined(PCBX9E) && !defined(PCBX7D) if (~KEYS_GPIO_REG_PLUS & KEYS_GPIO_PIN_PLUS) result |= 1 << KEY_PLUS; if (~KEYS_GPIO_REG_MINUS & KEYS_GPIO_PIN_MINUS) @@ -81,29 +85,18 @@ uint8_t keyDown() return readKeys(); } -#if defined(PCBX9E) || defined(PCBX7D) -uint32_t Rotary_position; -rotenc_t rotencValue; +#if defined(ROTARY_ENCODER_NAVIGATION) void checkRotaryEncoder() { - register uint32_t dummy = ENC_GPIO->IDR; // Read Rotary encoder - - // TODO quick & dirty! -#if defined(PCBX9E) - dummy >>= 12; - dummy &= 0x03; -#else - dummy = ((dummy >> 11) & 0x01) + ((dummy >> 8) & 0x02); -#endif - if (dummy != (Rotary_position & 0x03)) { - if ((Rotary_position & 0x01) ^ ((dummy & 0x02) >> 1)) { - --rotencValue; + register uint32_t newpos = ROTARY_ENCODER_POSITION(); + if (newpos != rotencPosition) { + if ((rotencPosition & 0x01) ^ ((newpos & 0x02) >> 1)) { + --rotencValue[0]; } else { - ++rotencValue; + ++rotencValue[0]; } - Rotary_position &= ~0x03 ; - Rotary_position |= dummy ; + rotencPosition = newpos; } } #endif @@ -117,40 +110,6 @@ void readKeysAndTrims() keys[index++].input(in & i); } -#if (defined(PCBX9E) || defined(PCBX7D)) && !defined(SIMU) - #define X9E_RE_TIMEOUT 5 - static rotenc_t rePreviousValue; - rotenc_t reNewValue = (rotencValue / 2); - static int timeout = X9E_RE_TIMEOUT; - static int lastkey = 0; - int8_t scrollRE = reNewValue - rePreviousValue; - if (scrollRE) { - rePreviousValue = reNewValue; - timeout = X9E_RE_TIMEOUT; - if (scrollRE < 0) { - if (lastkey != KEY_MINUS) { - putEvent(EVT_KEY_BREAK(lastkey)); - } - putEvent(EVT_KEY_FIRST(KEY_MINUS)); - lastkey = KEY_MINUS; - } - else { - if (lastkey != KEY_PLUS) { - putEvent(EVT_KEY_BREAK(lastkey)); - } - putEvent(EVT_KEY_FIRST(KEY_PLUS)); - lastkey = KEY_PLUS; - } - } - else if (timeout > 0) { - timeout--; - } - else if (lastkey && timeout == 0) { - putEvent(EVT_KEY_BREAK(lastkey)); - lastkey = 0; - } -#endif - in = readTrims(); for (uint8_t i = 1; i != uint8_t(1 << 8); i <<= 1) { keys[index++].input(in & i); @@ -289,4 +248,8 @@ void keysInit() GPIO_InitStructure.GPIO_Pin = KEYS_GPIOG_PINS; GPIO_Init(GPIOG, &GPIO_InitStructure); #endif + +#if defined(ROTARY_ENCODER_NAVIGATION) + rotencPosition = ROTARY_ENCODER_POSITION(); +#endif } diff --git a/radio/src/telemetry/ardupilot.cpp b/radio/src/telemetry/ardupilot.cpp index f85af467a..6294ad06c 100644 --- a/radio/src/telemetry/ardupilot.cpp +++ b/radio/src/telemetry/ardupilot.cpp @@ -145,14 +145,14 @@ uint8_t ibuf[NB_BUF]; // subscripts on buffers values char rbuf[NB_BUF][LG_BUF]; // receive buffers const char val_unknown[] = "?"; -void menuViewTelemetryArduPilot1(uint8_t event); -void menuViewTelemetryArduPilot2(uint8_t event); -void menuViewTelemetryArduPilot3(uint8_t event); -void menuViewTelemetryArduPilot4(uint8_t event); -void menuViewTelemetryArduPilot5(uint8_t event); -void menuViewTelemetryArduPilot6(uint8_t event); -void menuViewTelemetryArduPilot7(uint8_t event); -void menuViewTelemetryArduPilot8(uint8_t event); +void menuViewTelemetryArduPilot1(event_t event); +void menuViewTelemetryArduPilot2(event_t event); +void menuViewTelemetryArduPilot3(event_t event); +void menuViewTelemetryArduPilot4(event_t event); +void menuViewTelemetryArduPilot5(event_t event); +void menuViewTelemetryArduPilot6(event_t event); +void menuViewTelemetryArduPilot7(event_t event); +void menuViewTelemetryArduPilot8(event_t event); void title(char x); void initval(uint8_t num, uint8_t pack, uint8_t val); @@ -427,14 +427,14 @@ void ARDUPILOT_EnableRXD (void) UCSR0B |= (1 << RXCIE0); // enable Interrupt } -void menuViewTelemetryArduPilot(uint8_t event) +void menuViewTelemetryArduPilot(event_t event) { menuViewTelemetryArduPilot1(event); } // Start of ArduPilot menus 1-8 <<<<<<<<<<<<<<<<<<<<<<<<<<< -void menuViewTelemetryArduPilot1(uint8_t event) +void menuViewTelemetryArduPilot1(event_t event) { switch(event) // new event received, branch accordingly { @@ -504,7 +504,7 @@ void menuViewTelemetryArduPilot1(uint8_t event) lcdDrawText (1*FW, 5*FH, VALSTR(1), APSIZE); } -void menuViewTelemetryArduPilot2(uint8_t event) +void menuViewTelemetryArduPilot2(event_t event) { switch(event) { @@ -528,7 +528,7 @@ void menuViewTelemetryArduPilot2(uint8_t event) lcdDrawText (2*FW, 5*FH, VALSTR(1), APSIZE); } -void menuViewTelemetryArduPilot3(uint8_t event) +void menuViewTelemetryArduPilot3(event_t event) { switch(event) { @@ -552,7 +552,7 @@ void menuViewTelemetryArduPilot3(uint8_t event) lcdDrawText (2*FW, 5*FH, VALSTR(1), APSIZE); } -void menuViewTelemetryArduPilot4(uint8_t event) +void menuViewTelemetryArduPilot4(event_t event) { switch(event) { @@ -576,7 +576,7 @@ void menuViewTelemetryArduPilot4(uint8_t event) lcdDrawText (2*FW, 5*FH, VALSTR(1), APSIZE); } -void menuViewTelemetryArduPilot5(uint8_t event) +void menuViewTelemetryArduPilot5(event_t event) { switch(event) { @@ -602,7 +602,7 @@ void menuViewTelemetryArduPilot5(uint8_t event) lcdDrawText (2*FW, 5*FH, VALSTR(1), APSIZE); } -void menuViewTelemetryArduPilot6(uint8_t event) +void menuViewTelemetryArduPilot6(event_t event) { switch(event) { @@ -628,7 +628,7 @@ void menuViewTelemetryArduPilot6(uint8_t event) lcdDrawText (2*FW, 5*FH, VALSTR(1), APSIZE); } -void menuViewTelemetryArduPilot7(uint8_t event) +void menuViewTelemetryArduPilot7(event_t event) { switch(event) { @@ -654,7 +654,7 @@ void menuViewTelemetryArduPilot7(uint8_t event) lcdDrawText (2*FW, 5*FH, VALSTR(1), APSIZE); } -void menuViewTelemetryArduPilot8(uint8_t event) +void menuViewTelemetryArduPilot8(event_t event) { switch(event) { diff --git a/radio/src/telemetry/ardupilot.h b/radio/src/telemetry/ardupilot.h index e13edd58c..44b80b214 100644 --- a/radio/src/telemetry/ardupilot.h +++ b/radio/src/telemetry/ardupilot.h @@ -22,6 +22,6 @@ #define _ARDUPILOT_H_ void ARDUPILOT_Init(void); void ARDUPILOT_EnableRXD (void); -void menuViewTelemetryArduPilot(uint8_t event); +void menuViewTelemetryArduPilot(event_t event); #endif // _ARDUPILOT_H_ diff --git a/radio/src/telemetry/jeti.cpp b/radio/src/telemetry/jeti.cpp index 22294d25b..d41642b58 100644 --- a/radio/src/telemetry/jeti.cpp +++ b/radio/src/telemetry/jeti.cpp @@ -190,7 +190,7 @@ void JETI_put_stop (void) } #endif -void menuViewTelemetryJeti(uint8_t event) +void menuViewTelemetryJeti(event_t event) { drawTelemetryTopBar(); diff --git a/radio/src/telemetry/jeti.h b/radio/src/telemetry/jeti.h index 0b145f5b5..d545798e7 100644 --- a/radio/src/telemetry/jeti.h +++ b/radio/src/telemetry/jeti.h @@ -34,7 +34,7 @@ void JETI_EnableTXD (void); void JETI_DisableTXD (void); void telemetryInterrupt10ms(); -void menuViewTelemetryJeti(uint8_t event); +void menuViewTelemetryJeti(event_t event); #endif // _JETI_H_ diff --git a/radio/src/telemetry/mavlink.h b/radio/src/telemetry/mavlink.h index 5ddaa707b..d70e3f035 100644 --- a/radio/src/telemetry/mavlink.h +++ b/radio/src/telemetry/mavlink.h @@ -228,7 +228,7 @@ extern inline uint8_t MAVLINK_Action2CtrlMode(uint8_t action) { #endif void telemetryWakeup(); void MAVLINK_Init(void); -void menuViewTelemetryMavlink(uint8_t event); +void menuViewTelemetryMavlink(event_t event); void MAVLINK10mspoll(uint16_t time); #ifdef MAVLINK_PARAMS diff --git a/radio/src/telemetry/nmea.cpp b/radio/src/telemetry/nmea.cpp index 75a0f91df..e1917f79b 100644 --- a/radio/src/telemetry/nmea.cpp +++ b/radio/src/telemetry/nmea.cpp @@ -159,10 +159,10 @@ $GPRMC - Recommended Minimum Navigation Information #define WAIT_VAL_END 7 #define READ_VALUE 8 -void menuViewTelemetryNMEA1(uint8_t event); -void menuViewTelemetryNMEA2(uint8_t event); -void menuViewTelemetryNMEA3(uint8_t event); -void menuViewTelemetryNMEA4(uint8_t event); +void menuViewTelemetryNMEA1(event_t event); +void menuViewTelemetryNMEA2(event_t event); +void menuViewTelemetryNMEA3(event_t event); +void menuViewTelemetryNMEA4(event_t event); void title(char x); void initval(uint8_t num, uint8_t pack, uint8_t val); int32_t binary (char *str); @@ -367,14 +367,14 @@ void NMEA_EnableRXD (void) UCSR0B |= (1 << RXCIE0); // enable Interrupt } -void menuViewTelemetryNMEA(uint8_t event) +void menuViewTelemetryNMEA(event_t event) { menuViewTelemetryNMEA1(event); } // Start of NMEA menus 1-4 <<<<<<<<<<<<<<<<<<<<<<<<<<< -void menuViewTelemetryNMEA1(uint8_t event) +void menuViewTelemetryNMEA1(event_t event) { switch(event) // new event received, branch accordingly { @@ -480,7 +480,7 @@ void menuViewTelemetryNMEA1(uint8_t event) -void menuViewTelemetryNMEA2(uint8_t event) +void menuViewTelemetryNMEA2(event_t event) { static uint8_t ignore_break; @@ -642,7 +642,7 @@ void menuViewTelemetryNMEA2(uint8_t event) -void menuViewTelemetryNMEA3(uint8_t event) +void menuViewTelemetryNMEA3(event_t event) { switch(event) { @@ -691,7 +691,7 @@ void menuViewTelemetryNMEA3(uint8_t event) -void menuViewTelemetryNMEA4(uint8_t event) +void menuViewTelemetryNMEA4(event_t event) { switch(event) // new event received, branch accordingly { diff --git a/radio/src/telemetry/nmea.h b/radio/src/telemetry/nmea.h index a003cc818..14854c10d 100644 --- a/radio/src/telemetry/nmea.h +++ b/radio/src/telemetry/nmea.h @@ -23,7 +23,7 @@ void NMEA_Init(void); void NMEA_EnableRXD (void); -void menuViewTelemetryNMEA(uint8_t event); +void menuViewTelemetryNMEA(event_t event); #endif // _NMEA_H_