From 135133423a21d2721d62a5b6db5e4e29832c31e7 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 11 Oct 2019 08:09:59 +0200 Subject: [PATCH] Bsongis/issue 6910 x10 express bluetooth (#6931) [X10 Express] Bluetooth function added --- radio/src/bluetooth.cpp | 10 ++-- radio/src/gui/128x64/model_setup.cpp | 2 +- radio/src/gui/212x64/model_setup.cpp | 2 +- radio/src/gui/480x272/model_setup.cpp | 54 +++++++++++++------ radio/src/gui/480x272/radio_hardware.cpp | 18 +++++-- radio/src/gui/480x272/radio_sdmanager.cpp | 4 ++ .../src/gui/common/stdlcd/radio_hardware.cpp | 8 +-- radio/src/translations/cz.h.txt | 6 +-- radio/src/translations/de.h.txt | 6 +-- radio/src/translations/en.h.txt | 4 +- radio/src/translations/es.h.txt | 4 +- radio/src/translations/fi.h.txt | 4 +- radio/src/translations/fr.h.txt | 4 +- radio/src/translations/it.h.txt | 4 +- radio/src/translations/nl.h.txt | 4 +- radio/src/translations/pl.h.txt | 4 +- radio/src/translations/pt.h.txt | 4 +- radio/src/translations/se.h.txt | 4 +- 18 files changed, 93 insertions(+), 53 deletions(-) diff --git a/radio/src/bluetooth.cpp b/radio/src/bluetooth.cpp index 877d7466b..f1be6a9d8 100644 --- a/radio/src/bluetooth.cpp +++ b/radio/src/bluetooth.cpp @@ -73,7 +73,7 @@ char * Bluetooth::readline(bool error_reset) { uint8_t byte; - while (1) { + while (true) { if (!btRxFifo.pop(byte)) { #if defined(PCBX9E) // X9E BT module can get unresponsive @@ -280,7 +280,7 @@ void Bluetooth::receiveTrainer() { uint8_t byte; - while (1) { + while (true) { if (!btRxFifo.pop(byte)) { return; } @@ -451,9 +451,11 @@ void Bluetooth::wakeup() ++reusableBuffer.moduleSetup.bt.devicesCount; } } - /* else if (state == BLUETOOTH_STATE_DISCOVER_START && !strcmp(line, "OK+DISCE")) { +#if defined(PCBHORUS) + else if (state == BLUETOOTH_STATE_DISCOVER_START && !strcmp(line, "OK+DISCE")) { state = BLUETOOTH_STATE_DISCOVER_END; - } */ + } +#endif else if (state == BLUETOOTH_STATE_CLEAR_REQUESTED) { char command[] = "AT+CLEAR"; writeString(command); diff --git a/radio/src/gui/128x64/model_setup.cpp b/radio/src/gui/128x64/model_setup.cpp index 4587bcded..59dbd299a 100644 --- a/radio/src/gui/128x64/model_setup.cpp +++ b/radio/src/gui/128x64/model_setup.cpp @@ -1023,7 +1023,7 @@ void menuModelSetup(event_t event) } if (bluetooth.state == BLUETOOTH_STATE_DISCOVER_START && reusableBuffer.moduleSetup.bt.devicesCount > 0) { - popupMenuItemsCount = min(reusableBuffer.moduleSetup.bt.devicesCount, 6); + popupMenuItemsCount = min(reusableBuffer.moduleSetup.bt.devicesCount, MAX_BLUETOOTH_DISTANT_ADDR); for (uint8_t i=0; i 0) { - popupMenuItemsCount = min(reusableBuffer.moduleSetup.bt.devicesCount, 6); + popupMenuItemsCount = min(reusableBuffer.moduleSetup.bt.devicesCount, MAX_BLUETOOTH_DISTANT_ADDR); for (uint8_t i=0; i 0) { + popupMenuItemsCount = min(reusableBuffer.moduleSetup.bt.devicesCount, MAX_BLUETOOTH_DISTANT_ADDR); + for (uint8_t i = 0; i < popupMenuItemsCount; i++) { + popupMenuItems[i] = reusableBuffer.moduleSetup.bt.devices[i]; + } + POPUP_MENU_START(onBluetoothConnectMenu); + } + } + else { + if (bluetooth.distantAddr[0]) + lcdDrawText(MENUS_MARGIN_LEFT + INDENT_WIDTH, y+1, bluetooth.distantAddr); + else + lcdDrawText(MENUS_MARGIN_LEFT + INDENT_WIDTH, y, "---"); + lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, bluetooth.state == BLUETOOTH_STATE_CONNECTED ? STR_CONNECTED : STR_NOT_CONNECTED); } break; #endif diff --git a/radio/src/gui/480x272/radio_hardware.cpp b/radio/src/gui/480x272/radio_hardware.cpp index a52af8488..4735e05fd 100644 --- a/radio/src/gui/480x272/radio_hardware.cpp +++ b/radio/src/gui/480x272/radio_hardware.cpp @@ -59,6 +59,8 @@ enum MenuRadioHardwareItems { #if defined(BLUETOOTH) ITEM_RADIO_HARDWARE_BLUETOOTH_MODE, ITEM_RADIO_HARDWARE_BLUETOOTH_PAIRING_CODE, + ITEM_RADIO_HARDWARE_BLUETOOTH_LOCAL_ADDR, + ITEM_RADIO_HARDWARE_BLUETOOTH_DISTANT_ADDR, ITEM_RADIO_HARDWARE_BLUETOOTH_NAME, #endif #if defined(INTERNAL_MODULE_PXX1) && defined(EXTERNAL_ANTENNA) @@ -80,7 +82,7 @@ enum MenuRadioHardwareItems { #define SWITCHES_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 #if defined(BLUETOOTH) - #define BLUETOOTH_ROWS 0, uint8_t(g_eeGeneral.bluetoothMode != BLUETOOTH_TELEMETRY ? HIDDEN_ROW : -1), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? -1 : 0), + #define BLUETOOTH_ROWS 0, uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_TELEMETRY ? READONLY_ROW : HIDDEN_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : READONLY_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : READONLY_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : 0), #else #define BLUETOOTH_ROWS #endif @@ -292,12 +294,22 @@ bool menuRadioHardware(event_t event) break; case ITEM_RADIO_HARDWARE_BLUETOOTH_PAIRING_CODE: - lcdDrawText(MENUS_MARGIN_LEFT, y, STR_BLUETOOTH_PIN_CODE); + lcdDrawText(INDENT_WIDTH, y, STR_BLUETOOTH_PIN_CODE); lcdDrawText(HW_SETTINGS_COLUMN+50, y, "000000", 0); break; + case ITEM_RADIO_HARDWARE_BLUETOOTH_LOCAL_ADDR: + lcdDrawText(INDENT_WIDTH, y, STR_BLUETOOTH_LOCAL_ADDR); + lcdDrawText(HW_SETTINGS_COLUMN+50, y, bluetooth.localAddr[0] == '\0' ? "---" : bluetooth.localAddr); + break; + + case ITEM_RADIO_HARDWARE_BLUETOOTH_DISTANT_ADDR: + lcdDrawText(INDENT_WIDTH, y, STR_BLUETOOTH_DIST_ADDR); + lcdDrawText(HW_SETTINGS_COLUMN+50, y, bluetooth.distantAddr[0] == '\0' ? "---" : bluetooth.distantAddr); + break; + case ITEM_RADIO_HARDWARE_BLUETOOTH_NAME: - lcdDrawText(MENUS_MARGIN_LEFT, y, STR_NAME); + lcdDrawText(INDENT_WIDTH, y, STR_NAME); editName(HW_SETTINGS_COLUMN+50, y, g_eeGeneral.bluetoothName, LEN_BLUETOOTH_NAME, event, attr); break; #endif diff --git a/radio/src/gui/480x272/radio_sdmanager.cpp b/radio/src/gui/480x272/radio_sdmanager.cpp index 9ec46442b..27302fa16 100644 --- a/radio/src/gui/480x272/radio_sdmanager.cpp +++ b/radio/src/gui/480x272/radio_sdmanager.cpp @@ -174,6 +174,10 @@ void onSdManagerMenu(const char * result) FrskyDeviceFirmwareUpdate device(SPORT_MODULE); device.flashFirmware(lfn); } + else if (result == STR_FLASH_BLUETOOTH_MODULE) { + getSelectionFullPath(lfn); + bluetooth.flashFirmware(lfn); + } #if defined(MULTIMODULE) #if defined(INTERNAL_MODULE_MULTI) else if (result == STR_FLASH_INTERNAL_MULTI) { diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 9a93701d5..91268de73 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -227,7 +227,7 @@ enum { #elif defined(PCBX9E) #define BLUETOOTH_ROWS 0, uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : READONLY_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : READONLY_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : 0), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : 0), #else - #define BLUETOOTH_ROWS uint8_t(IS_BLUETOOTH_CHIP_PRESENT() ? 0 : HIDDEN_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_TELEMETRY ? -1 : HIDDEN_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : -1), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : -1), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : 0), + #define BLUETOOTH_ROWS uint8_t(IS_BLUETOOTH_CHIP_PRESENT() ? 0 : HIDDEN_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_TELEMETRY ? READONLY_ROW : HIDDEN_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : READONLY_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : READONLY_ROW), uint8_t(g_eeGeneral.bluetoothMode == BLUETOOTH_OFF ? HIDDEN_ROW : 0), #endif #if defined(INTERNAL_MODULE_PXX1) && defined(EXTERNAL_ANTENNA) @@ -561,17 +561,17 @@ void menuRadioHardware(event_t event) break; case ITEM_RADIO_HARDWARE_BLUETOOTH_PAIRING_CODE: - lcdDrawTextAlignedLeft(y, STR_BLUETOOTH_PIN_CODE); + lcdDrawText(INDENT_WIDTH, y, STR_BLUETOOTH_PIN_CODE); lcdDrawText(HW_SETTINGS_COLUMN2, y, "000000"); break; case ITEM_RADIO_HARDWARE_BLUETOOTH_LOCAL_ADDR: - lcdDrawTextAlignedLeft(y, STR_BLUETOOTH_LOCAL_ADDR); + lcdDrawText(INDENT_WIDTH, y, STR_BLUETOOTH_LOCAL_ADDR); lcdDrawText(HW_SETTINGS_COLUMN2, y, bluetooth.localAddr[0] == '\0' ? "---" : bluetooth.localAddr); break; case ITEM_RADIO_HARDWARE_BLUETOOTH_DISTANT_ADDR: - lcdDrawTextAlignedLeft(y, STR_BLUETOOTH_DIST_ADDR); + lcdDrawText(INDENT_WIDTH, y, STR_BLUETOOTH_DIST_ADDR); lcdDrawText(HW_SETTINGS_COLUMN2, y, bluetooth.distantAddr[0] == '\0' ? "---" : bluetooth.distantAddr); break; diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 99ca3cb0d..2fd44ac86 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -780,9 +780,9 @@ #define TR_BLUETOOTH "Bluetooth" #define TR_BLUETOOTH_DISC "Hledat" #define TR_BLUETOOTH_INIT "Init" -#define TR_BLUETOOTH_DIST_ADDR INDENT "Vzdál. addr" -#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Lokál. addr" -#define TR_BLUETOOTH_PIN_CODE TR(INDENT "PIN kód", "PIN kód") +#define TR_BLUETOOTH_DIST_ADDR "Vzdál. addr" +#define TR_BLUETOOTH_LOCAL_ADDR "Lokál. addr" +#define TR_BLUETOOTH_PIN_CODE TR("PIN kód", "PIN kód") #define TR_BAUDRATE "Baudrate BT" #define LEN_BLUETOOTH_MODES "\012" #if defined(PCBX9E) diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 99d5d4d9c..bd92d701d 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -782,9 +782,9 @@ #define TR_BLUETOOTH "Bluetooth" #define TR_BLUETOOTH_DISC "Discover" #define TR_BLUETOOTH_INIT "Init" -#define TR_BLUETOOTH_DIST_ADDR INDENT "Dist addr" -#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Local addr" -#define TR_BLUETOOTH_PIN_CODE TR(INDENT "PIN code", "PIN code") +#define TR_BLUETOOTH_DIST_ADDR "Dist addr" +#define TR_BLUETOOTH_LOCAL_ADDR "Local addr" +#define TR_BLUETOOTH_PIN_CODE "PIN code" #define TR_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" #if defined(PCBX9E) diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 1187ff342..c0280a685 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -780,8 +780,8 @@ #define TR_BLUETOOTH "Bluetooth" #define TR_BLUETOOTH_DISC "Discover" #define TR_BLUETOOTH_INIT "Init" -#define TR_BLUETOOTH_DIST_ADDR INDENT "Dist addr" -#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Local addr" +#define TR_BLUETOOTH_DIST_ADDR "Dist addr" +#define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" #define TR_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index acd251727..49c469444 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -805,8 +805,8 @@ #define TR_BLUETOOTH "Bluetooth" #define TR_BLUETOOTH_DISC "Discover" #define TR_BLUETOOTH_INIT "Init" -#define TR_BLUETOOTH_DIST_ADDR INDENT "Dist addr" -#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Local addr" +#define TR_BLUETOOTH_DIST_ADDR "Dist addr" +#define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" #define TR_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 626dde6c7..6773fc1aa 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -799,8 +799,8 @@ #define TR_BLUETOOTH "Bluetooth" #define TR_BLUETOOTH_DISC "Discover" #define TR_BLUETOOTH_INIT "Init" -#define TR_BLUETOOTH_DIST_ADDR INDENT "Dist addr" -#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Local addr" +#define TR_BLUETOOTH_DIST_ADDR "Dist addr" +#define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" #define TR_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index c1347eca4..5e42b17c4 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -801,8 +801,8 @@ #define TR_BLUETOOTH "Bluetooth" #define TR_BLUETOOTH_DISC "Découvrir" #define TR_BLUETOOTH_INIT "Init" -#define TR_BLUETOOTH_DIST_ADDR INDENT "Addr dist." -#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Addr locale" +#define TR_BLUETOOTH_DIST_ADDR "Addr dist." +#define TR_BLUETOOTH_LOCAL_ADDR "Addr locale" #define TR_BLUETOOTH_PIN_CODE "Code PIN" #define TR_BAUDRATE "Baudrate BT" #define LEN_BLUETOOTH_MODES "\012" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index f6935d970..2a53c794c 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -800,8 +800,8 @@ #define TR_BLUETOOTH "Bluetooth" #define TR_BLUETOOTH_DISC "Discover" #define TR_BLUETOOTH_INIT "Init" -#define TR_BLUETOOTH_DIST_ADDR INDENT "Dist addr" -#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Local addr" +#define TR_BLUETOOTH_DIST_ADDR "Dist addr" +#define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" #define TR_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 90473d9ac..8a322d726 100644 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -788,8 +788,8 @@ TR_GYR_VSRCRAW #define TR_BLUETOOTH "Bluetooth" #define TR_BLUETOOTH_DISC "Discover" #define TR_BLUETOOTH_INIT "Init" -#define TR_BLUETOOTH_DIST_ADDR INDENT "Dist addr" -#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Local addr" +#define TR_BLUETOOTH_DIST_ADDR "Dist addr" +#define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" #define TR_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 163a25d42..b2d8d9cc9 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -800,8 +800,8 @@ #define TR_BLUETOOTH "Bluetooth" #define TR_BLUETOOTH_DISC "Discover" #define TR_BLUETOOTH_INIT "Init" -#define TR_BLUETOOTH_DIST_ADDR INDENT "Dist addr" -#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Local addr" +#define TR_BLUETOOTH_DIST_ADDR "Dist addr" +#define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" #define TR_BAUDRATE "Prędkość BT" #define LEN_BLUETOOTH_MODES "\011" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index e0087fa4c..7d0a6d372 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -790,8 +790,8 @@ #define TR_BLUETOOTH "Bluetooth" #define TR_BLUETOOTH_DISC "Discover" #define TR_BLUETOOTH_INIT "Init" -#define TR_BLUETOOTH_DIST_ADDR INDENT "Dist addr" -#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Local addr" +#define TR_BLUETOOTH_DIST_ADDR "Dist addr" +#define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" #define TR_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 043a10eba..8b6b86a02 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -800,8 +800,8 @@ #define TR_BLUETOOTH "Bluetooth" #define TR_BLUETOOTH_DISC "Discover" #define TR_BLUETOOTH_INIT "Init" -#define TR_BLUETOOTH_DIST_ADDR INDENT "Dist addr" -#define TR_BLUETOOTH_LOCAL_ADDR INDENT "Local addr" +#define TR_BLUETOOTH_DIST_ADDR "Dist addr" +#define TR_BLUETOOTH_LOCAL_ADDR "Local addr" #define TR_BLUETOOTH_PIN_CODE "PIN code" #define TR_BAUDRATE "BT Baudrate" #define LEN_BLUETOOTH_MODES "\011"