diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 528d29de3..fe6bd8146 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1326,12 +1326,10 @@ void menuModelSetup(event_t event) uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k); uint8_t receiverSlot = g_model.moduleData[moduleIdx].pxx2.getReceiverSlot(receiverIdx) - 1; - if (zexist(g_model.receiverData[receiverSlot].name, PXX2_LEN_RX_NAME)) { + if (g_model.receiverData[receiverSlot].name[0] != '\0') lcdDrawSizedText(INDENT_WIDTH * 2, y, g_model.receiverData[receiverSlot].name, PXX2_LEN_RX_NAME); - } - else { + else lcdDrawTextAlignedLeft(y, INDENT INDENT "---"); - } lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_BIND, menuHorizontalPosition==0 ? attr : 0); lcdDrawText(lcdLastRightPos + FW/2, y, BUTTON("Share"), menuHorizontalPosition==1 ? attr : 0); @@ -1351,6 +1349,7 @@ void menuModelSetup(event_t event) for (uint8_t i=0; i(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); + if (popupMenuTitle) { + y += FH / 2; + } + // white background + lcdDrawFilledRect(MENU_X - 1, popupMenuTitle ? y - FH - 3 : y, MENU_W + 2, display_count * (FH + 1) + (popupMenuTitle ? FH + 6 : 3), SOLID, ERASE); + + // title + if (popupMenuTitle) { + lcdDrawText(MENU_X + 2, y - FH, popupMenuTitle, BOLD); + lcdDrawRect(MENU_X, y - FH - 2, lcdLastRightPos - MENU_X + 3, FH + 3); + } + + // border + lcdDrawRect(MENU_X, y, MENU_W, display_count * (FH + 1) + 2, SOLID, FORCE); + + // items for (uint8_t i=0; i display_count) { drawVerticalScrollbar(MENU_X+MENU_W-1, y+1, MENU_MAX_DISPLAY_LINES * (FH+1), popupMenuOffset, popupMenuItemsCount, display_count); } @@ -116,6 +132,7 @@ const char * runPopupMenu(event_t event) popupMenuItemsCount = 0; s_menu_item = 0; popupMenuOffset = 0; + popupMenuTitle = nullptr; break; } diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index afde93d41..55ae9a9b5 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -132,6 +132,7 @@ void processBindFrame(uint8_t module, uint8_t * frame) } else if (frame[3] == 0x01) { if (memcmp(&reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[reusableBuffer.moduleSetup.pxx2.bindSelectedReceiverIndex], &frame[4], PXX2_LEN_RX_NAME) == 0) { + memcpy(&g_model.receiverData[reusableBuffer.moduleSetup.pxx2.bindReceiverSlot].name, &frame[4], PXX2_LEN_RX_NAME); reusableBuffer.moduleSetup.pxx2.bindStep = BIND_WAIT; reusableBuffer.moduleSetup.pxx2.bindWaitTimeout = get_tmr10ms() + 30; }