diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 14b9ec252..f9fa88cdd 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1115,12 +1115,19 @@ void menuModelSetup(event_t event) if (attr) { if (menuHorizontalPosition == 0) { if (event == EVT_KEY_BREAK(KEY_ENTER)) { - moduleSettings[INTERNAL_MODULE].mode ^= MODULE_MODE_BIND; + reusableBuffer.modelsetup.pxx2_register_or_bind_step = BIND_START; reusableBuffer.modelsetup.pxx2_bind_receiver_index = receiverIdx; + reusableBuffer.modelsetup.pxx2_bind_candidate_receivers_count = 0; + moduleSettings[INTERNAL_MODULE].mode ^= MODULE_MODE_BIND; } if (moduleSettings[INTERNAL_MODULE].mode == MODULE_MODE_BIND) { s_editMode = 1; - // TODO the menu here + if (reusableBuffer.modelsetup.pxx2_register_or_bind_step == BIND_RX_ID_RECEIVED) { + for (uint8_t i=0; i + #define MENU_X 10 #define MENU_Y 16 #define MENU_W LCD_W-(2*MENU_X) @@ -63,8 +65,8 @@ extern uint8_t warningInfoFlags; #endif #define NAVIGATION_MENUS - #define POPUP_MENU_ADD_ITEM(s) do { popupMenuOffsetType = MENU_OFFSET_INTERNAL; if (popupMenuNoItems < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuNoItems++] = s; } while (0) - #define POPUP_MENU_SELECT_ITEM(s) s_menu_item = (s > 0 ? (s < popupMenuNoItems ? s : popupMenuNoItems) : 0) + #define POPUP_MENU_ADD_ITEM(s) do { popupMenuOffsetType = MENU_OFFSET_INTERNAL; if (popupMenuItemsCount < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuItemsCount++] = s; } while (0) + #define POPUP_MENU_SELECT_ITEM(s) s_menu_item = (s > 0 ? (s < popupMenuItemsCount ? s : popupMenuItemsCount) : 0) #define POPUP_MENU_START(func) do { popupMenuHandler = (func); AUDIO_KEY_PRESS(); } while (0) #define POPUP_MENU_MAX_LINES 12 #define MENU_MAX_DISPLAY_LINES 6 @@ -81,7 +83,7 @@ extern uint8_t warningInfoFlags; #if defined(NAVIGATION_MENUS) extern uint16_t popupMenuOffset; extern const char * popupMenuItems[POPUP_MENU_MAX_LINES]; - extern uint16_t popupMenuNoItems; + extern uint16_t popupMenuItemsCount; const char * runPopupMenu(event_t event); extern void (*popupMenuHandler)(const char * result); #endif diff --git a/radio/src/gui/212x64/model_setup.cpp b/radio/src/gui/212x64/model_setup.cpp index 03c5ce1e6..de8692385 100644 --- a/radio/src/gui/212x64/model_setup.cpp +++ b/radio/src/gui/212x64/model_setup.cpp @@ -1065,7 +1065,7 @@ void menuModelSetup(event_t event) newFlag = MODULE_BIND; } else { - if (!popupMenuNoItems) { + if (!popupMenuItemsCount) { s_editMode = 0; // this is when popup is exited before a choice is made } } diff --git a/radio/src/gui/212x64/popups.h b/radio/src/gui/212x64/popups.h index 06d1be6d7..c522b5244 100644 --- a/radio/src/gui/212x64/popups.h +++ b/radio/src/gui/212x64/popups.h @@ -47,8 +47,8 @@ extern uint8_t warningInfoFlags; #define SET_WARNING_INFO(info, len, flags) (warningInfoText = info, warningInfoLength = len, warningInfoFlags = flags) #define NAVIGATION_MENUS -#define POPUP_MENU_ADD_ITEM(s) do { popupMenuOffsetType = MENU_OFFSET_INTERNAL; if (popupMenuNoItems < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuNoItems++] = s; } while (0) -#define POPUP_MENU_SELECT_ITEM(s) s_menu_item = (s > 0 ? (s < popupMenuNoItems ? s : popupMenuNoItems) : 0) +#define POPUP_MENU_ADD_ITEM(s) do { popupMenuOffsetType = MENU_OFFSET_INTERNAL; if (popupMenuItemsCount < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuItemsCount++] = s; } while (0) +#define POPUP_MENU_SELECT_ITEM(s) s_menu_item = (s > 0 ? (s < popupMenuItemsCount ? s : popupMenuItemsCount) : 0) #define POPUP_MENU_START(func) do { popupMenuHandler = (func); AUDIO_KEY_PRESS(); } while (0) #define POPUP_MENU_MAX_LINES 12 #define MENU_MAX_DISPLAY_LINES 6 @@ -56,7 +56,7 @@ extern uint8_t warningInfoFlags; #define MENU_LINE_LENGTH (LEN_MODEL_NAME+12) #define POPUP_MENU_SET_BSS_FLAG() extern const char * popupMenuItems[POPUP_MENU_MAX_LINES]; -extern uint16_t popupMenuNoItems; +extern uint16_t popupMenuItemsCount; extern uint16_t popupMenuOffset; enum { MENU_OFFSET_INTERNAL, diff --git a/radio/src/gui/480x272/menus.h b/radio/src/gui/480x272/menus.h index 6aafa5036..e88a7e916 100644 --- a/radio/src/gui/480x272/menus.h +++ b/radio/src/gui/480x272/menus.h @@ -482,15 +482,15 @@ extern uint8_t warningInfoFlags; #define SET_WARNING_INFO(info, len, flags) (warningInfoText = info, warningInfoLength = len, warningInfoFlags = flags) #define NAVIGATION_MENUS -#define POPUP_MENU_ADD_ITEM(s) do { popupMenuOffsetType = MENU_OFFSET_INTERNAL; if (popupMenuNoItems < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuNoItems++] = s; } while (0) -#define POPUP_MENU_SELECT_ITEM(s) s_menu_item = (s > 0 ? (s < popupMenuNoItems ? s : popupMenuNoItems) : 0) +#define POPUP_MENU_ADD_ITEM(s) do { popupMenuOffsetType = MENU_OFFSET_INTERNAL; if (popupMenuItemsCount < POPUP_MENU_MAX_LINES) popupMenuItems[popupMenuItemsCount++] = s; } while (0) +#define POPUP_MENU_SELECT_ITEM(s) s_menu_item = (s > 0 ? (s < popupMenuItemsCount ? s : popupMenuItemsCount) : 0) #define POPUP_MENU_START(func) do { popupMenuHandler = (func); AUDIO_KEY_PRESS(); } while(0) #define POPUP_MENU_MAX_LINES 12 #define MENU_MAX_DISPLAY_LINES 9 #define MENU_LINE_LENGTH (LEN_MODEL_NAME+12) #define POPUP_MENU_SET_BSS_FLAG() extern const char * popupMenuItems[POPUP_MENU_MAX_LINES]; -extern uint16_t popupMenuNoItems; +extern uint16_t popupMenuItemsCount; extern uint16_t popupMenuOffset; enum { MENU_OFFSET_INTERNAL, diff --git a/radio/src/gui/480x272/model_setup.cpp b/radio/src/gui/480x272/model_setup.cpp index 6258ba9b5..713fcb5bb 100644 --- a/radio/src/gui/480x272/model_setup.cpp +++ b/radio/src/gui/480x272/model_setup.cpp @@ -986,7 +986,7 @@ bool menuModelSetup(event_t event) newFlag = MODULE_MODE_BIND; } else { - if (!popupMenuNoItems) { + if (!popupMenuItemsCount) { s_editMode = 0; // this is when popup is exited before a choice is made } } diff --git a/radio/src/gui/480x272/popups.cpp b/radio/src/gui/480x272/popups.cpp index d26ccff61..56d3ad07c 100644 --- a/radio/src/gui/480x272/popups.cpp +++ b/radio/src/gui/480x272/popups.cpp @@ -32,7 +32,7 @@ int16_t warningInputValueMax; void (*popupFunc)(event_t event) = NULL; const char *popupMenuItems[POPUP_MENU_MAX_LINES]; uint8_t s_menu_item = 0; -uint16_t popupMenuNoItems = 0; +uint16_t popupMenuItemsCount = 0; uint16_t popupMenuOffset = 0; uint8_t popupMenuOffsetType = MENU_OFFSET_INTERNAL; void (*popupMenuHandler)(const char * result); @@ -105,7 +105,7 @@ const char * runPopupMenu(event_t event) { const char * result = NULL; - uint8_t display_count = min(popupMenuNoItems, MENU_MAX_DISPLAY_LINES); + uint8_t display_count = min(popupMenuItemsCount, MENU_MAX_DISPLAY_LINES); switch (event) { case EVT_ROTARY_LEFT: @@ -118,18 +118,18 @@ const char * runPopupMenu(event_t event) } else { s_menu_item = min(display_count, MENU_MAX_DISPLAY_LINES) - 1; - if (popupMenuNoItems > MENU_MAX_DISPLAY_LINES) { - popupMenuOffset = popupMenuNoItems - MENU_MAX_DISPLAY_LINES; + if (popupMenuItemsCount > MENU_MAX_DISPLAY_LINES) { + popupMenuOffset = popupMenuItemsCount - MENU_MAX_DISPLAY_LINES; result = STR_UPDATE_LIST; } } break; case EVT_ROTARY_RIGHT: - if (s_menu_item < display_count - 1 && popupMenuOffset + s_menu_item + 1 < popupMenuNoItems) { + if (s_menu_item < display_count - 1 && popupMenuOffset + s_menu_item + 1 < popupMenuItemsCount) { s_menu_item++; } - else if (popupMenuNoItems > popupMenuOffset + display_count) { + else if (popupMenuItemsCount > popupMenuOffset + display_count) { popupMenuOffset++; result = STR_UPDATE_LIST; } @@ -147,7 +147,7 @@ const char * runPopupMenu(event_t event) // no break case EVT_KEY_BREAK(KEY_EXIT): - popupMenuNoItems = 0; + popupMenuItemsCount = 0; s_menu_item = 0; popupMenuOffset = 0; break; @@ -168,8 +168,8 @@ const char * runPopupMenu(event_t event) } } - if (popupMenuNoItems > display_count) { - drawVerticalScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), popupMenuOffset, popupMenuNoItems, MENU_MAX_DISPLAY_LINES); + if (popupMenuItemsCount > display_count) { + drawVerticalScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), popupMenuOffset, popupMenuItemsCount, MENU_MAX_DISPLAY_LINES); } return result; diff --git a/radio/src/gui/common/stdlcd/popups.cpp b/radio/src/gui/common/stdlcd/popups.cpp index 448a7c753..89b6fd8e4 100644 --- a/radio/src/gui/common/stdlcd/popups.cpp +++ b/radio/src/gui/common/stdlcd/popups.cpp @@ -26,7 +26,7 @@ void (*popupFunc)(event_t event) = NULL; #if defined(NAVIGATION_MENUS) const char * popupMenuItems[POPUP_MENU_MAX_LINES]; uint8_t s_menu_item = 0; -uint16_t popupMenuNoItems = 0; +uint16_t popupMenuItemsCount = 0; uint16_t popupMenuOffset = 0; void (*popupMenuHandler)(const char * result); @@ -34,7 +34,7 @@ const char * runPopupMenu(event_t event) { const char * result = NULL; - uint8_t display_count = min(popupMenuNoItems, MENU_MAX_DISPLAY_LINES); + uint8_t display_count = min(popupMenuItemsCount, MENU_MAX_DISPLAY_LINES); uint8_t y = (display_count >= 5 ? MENU_Y - FH - 1 : MENU_Y); lcdDrawFilledRect(MENU_X, y, MENU_W, display_count * (FH+1) + 2, SOLID, ERASE); lcdDrawRect(MENU_X, y, MENU_W, display_count * (FH+1) + 2); @@ -44,8 +44,8 @@ const char * runPopupMenu(event_t event) if (i == s_menu_item) lcdDrawSolidFilledRect(MENU_X+1, i*(FH+1) + y + 1, MENU_W-2, 9); } - if (popupMenuNoItems > display_count) { - drawVerticalScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), popupMenuOffset, popupMenuNoItems, display_count); + if (popupMenuItemsCount > display_count) { + drawVerticalScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), popupMenuOffset, popupMenuItemsCount, display_count); } switch (event) { @@ -66,8 +66,8 @@ const char * runPopupMenu(event_t event) else { s_menu_item = min(display_count, MENU_MAX_DISPLAY_LINES) - 1; #if defined(SDCARD) - if (popupMenuNoItems > MENU_MAX_DISPLAY_LINES) { - popupMenuOffset = popupMenuNoItems - display_count; + if (popupMenuItemsCount > MENU_MAX_DISPLAY_LINES) { + popupMenuOffset = popupMenuItemsCount - display_count; result = STR_UPDATE_LIST; } #endif @@ -79,11 +79,11 @@ const char * runPopupMenu(event_t event) #endif 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) { + if (s_menu_item < display_count - 1 && popupMenuOffset + s_menu_item + 1 < popupMenuItemsCount) { s_menu_item++; } #if defined(SDCARD) - else if (popupMenuNoItems > popupMenuOffset + display_count) { + else if (popupMenuItemsCount > popupMenuOffset + display_count) { popupMenuOffset++; result = STR_UPDATE_LIST; } @@ -113,7 +113,7 @@ const char * runPopupMenu(event_t event) #endif case EVT_KEY_BREAK(KEY_EXIT): - popupMenuNoItems = 0; + popupMenuItemsCount = 0; s_menu_item = 0; popupMenuOffset = 0; break; diff --git a/radio/src/keys.h b/radio/src/keys.h index 3b78a8475..8c2983637 100644 --- a/radio/src/keys.h +++ b/radio/src/keys.h @@ -21,6 +21,9 @@ #ifndef _KEYS_H_ #define _KEYS_H_ +#include +#include "board.h" + #define EVT_KEY_MASK(e) ((e) & 0x1f) #if defined(PCBHORUS) diff --git a/radio/src/main.cpp b/radio/src/main.cpp index 5bf957e56..470ff7bec 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -50,7 +50,7 @@ void handleUsbConnection() } } if (!usbStarted() && usbPlugged() && getSelectedUsbMode() == USB_UNSELECTED_MODE) { - if((g_eeGeneral.USBMode == USB_UNSELECTED_MODE) && (popupMenuNoItems == 0)) { + if((g_eeGeneral.USBMode == USB_UNSELECTED_MODE) && (popupMenuItemsCount == 0)) { POPUP_MENU_ADD_ITEM(STR_USB_JOYSTICK); POPUP_MENU_ADD_ITEM(STR_USB_MASS_STORAGE); #if defined(DEBUG) @@ -135,14 +135,14 @@ void handleJackConnection() jackState = TRAINER_ACTIVE; enableTrainer(); } - else if (popupMenuNoItems == 0) { + else if (popupMenuItemsCount == 0) { POPUP_MENU_ADD_ITEM(STR_JACK_HEADPHONE); POPUP_MENU_ADD_ITEM(STR_JACK_TRAINER); POPUP_MENU_START(onJackConnectMenu); } } - else if (jackState == SPEAKER_ACTIVE && !isJackPlugged() && popupMenuNoItems > 0 && popupMenuHandler == onJackConnectMenu) { - popupMenuNoItems = 0; + else if (jackState == SPEAKER_ACTIVE && !isJackPlugged() && popupMenuItemsCount > 0 && popupMenuHandler == onJackConnectMenu) { + popupMenuItemsCount = 0; } else if (jackState != SPEAKER_ACTIVE && !isJackPlugged()) { jackState = SPEAKER_ACTIVE; @@ -304,7 +304,7 @@ void guiMain(event_t evt) while (1) { // normal GUI from menus const char * warn = warningText; - uint8_t menu = popupMenuNoItems; + uint8_t menu = popupMenuItemsCount; static bool popupDisplayed = false; if (warn || menu) { @@ -450,7 +450,7 @@ void guiMain(event_t evt) handleGui(0); // suppress events, they are handled by the warning DISPLAY_WARNING(evt); } - else if (popupMenuNoItems > 0) { + else if (popupMenuItemsCount > 0) { // popup menu is active display it on top of normal menus handleGui(0); // suppress events, they are handled by the popup if (!inPopupMenu) { diff --git a/radio/src/sdcard.cpp b/radio/src/sdcard.cpp index 394e589c3..669a40c58 100644 --- a/radio/src/sdcard.cpp +++ b/radio/src/sdcard.cpp @@ -275,7 +275,7 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen lastpopupMenuOffset = 0; memset(reusableBuffer.modelsel.menu_bss, 0, sizeof(reusableBuffer.modelsel.menu_bss)); } - else if (popupMenuOffset == popupMenuNoItems - MENU_MAX_DISPLAY_LINES) { + else if (popupMenuOffset == popupMenuItemsCount - MENU_MAX_DISPLAY_LINES) { lastpopupMenuOffset = 0xffff; memset(reusableBuffer.modelsel.menu_bss, 0, sizeof(reusableBuffer.modelsel.menu_bss)); } @@ -292,14 +292,14 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen memset(reusableBuffer.modelsel.menu_bss[0], 0, MENU_LINE_LENGTH); } - popupMenuNoItems = 0; + popupMenuItemsCount = 0; POPUP_MENU_SET_BSS_FLAG(); FRESULT res = f_opendir(&dir, path); if (res == FR_OK) { if (flags & LIST_NONE_SD_FILE) { - popupMenuNoItems++; + popupMenuItemsCount++; if (selection) { lastpopupMenuOffset++; } @@ -338,7 +338,7 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen continue; } - popupMenuNoItems++; + popupMenuItemsCount++; if (!(flags & LIST_SD_FILE_EXT)) { fno.fname[fnLen] = '\0'; // strip extension @@ -359,10 +359,9 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen } } } - for (uint8_t i=0; i=0; i--) { @@ -374,7 +373,7 @@ bool sdListFiles(const char * path, const char * extension, const uint8_t maxlen break; } } - for (uint8_t i=0; i