From 81589d22f89164fd5d41879666156fc6073f9a5e Mon Sep 17 00:00:00 2001 From: 3djc Date: Thu, 17 Aug 2017 08:27:04 +0200 Subject: [PATCH] B&W LCD receiver ID improvement (#5018) * - Use @schwabe int/ext matching - Display model name where the receiver in currently used * French colom doesn't seem to be standard (wonder why :D) * Implement showing multiple names * Another way * Improvement suggested by @schwabe (thx m8!) * let's say it's a typo .. * By unanimous vote of participants * Updates based on Bertrtand's comments * Colon right this time ? * Cosmetics --- radio/src/opentx.cpp | 37 ++++++++++++++++++++++++++++----- radio/src/opentx.h | 6 ++++++ radio/src/translations/en.h.txt | 2 +- radio/src/translations/fi.h.txt | 2 +- radio/src/translations/fr.h.txt | 2 +- radio/src/translations/pt.h.txt | 2 +- 6 files changed, 42 insertions(+), 9 deletions(-) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 9d55dfa70..fa0979d21 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -398,18 +398,45 @@ void applyDefaultTemplate() void checkModelIdUnique(uint8_t index, uint8_t module) { uint8_t modelId = g_model.header.modelId[module]; + uint8_t additionalOnes = 0; + char * name = reusableBuffer.msgbuf.msg; + + memset(reusableBuffer.msgbuf.msg, 0, sizeof(reusableBuffer.msgbuf.msg)); + if (modelId != 0) { - for (uint8_t i=0; i (signed)(modelHeaders[i].name[0] ? zlen(modelHeaders[i].name, LEN_MODEL_NAME) : sizeof(TR_MODEL) + 2)) { // you cannot rely exactly on WARNING_LINE_LEN so using WARNING_LINE_LEN-2 (-2 for the ",") + if (reusableBuffer.msgbuf.msg[0] != 0) { + name = strAppend(name, ", "); + } + if (modelHeaders[i].name[0] == 0) { + name = strAppend(name, STR_MODEL); + name = strAppendUnsigned(name+strlen(name),i, 2); + } + else { + name += zchar2str(name, modelHeaders[i].name, LEN_MODEL_NAME); + } + } + else { + additionalOnes++; } } } } } + + if (additionalOnes) { + name = strAppend(name, " (+"); + name = strAppendUnsigned(name, additionalOnes); + name = strAppend(name, ")"); + } + + if (reusableBuffer.msgbuf.msg[0] != 0) { + POPUP_WARNING(STR_MODELIDUSED); + SET_WARNING_INFO(reusableBuffer.msgbuf.msg, sizeof(reusableBuffer.msgbuf.msg), 0); + } } #endif diff --git a/radio/src/opentx.h b/radio/src/opentx.h index 63ca65513..7fa7674fc 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -1396,7 +1396,9 @@ union ReusableBuffer // 275 bytes struct { +#if !defined(CPUARM) char listnames[NUM_BODY_LINES][LEN_MODEL_NAME]; +#endif #if defined(EEPROM_RLC) && LCD_W < 212 uint16_t eepromfree; #endif @@ -1408,6 +1410,10 @@ union ReusableBuffer #endif } modelsel; + struct { + char msg[64]; + } msgbuf; + // 103 bytes struct { diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 00f7d6ce7..07f353abc 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1030,7 +1030,7 @@ #define TR_SET BUTTON("Set") #define TR_TRAINER "Trainer" #define TR_ANTENNAPROBLEM CENTER "TX antenna problem!" -#define TR_MODELIDUSED TR("ID already used", "Model ID already used") +#define TR_MODELIDUSED TR("ID used in:","Receiver ID used in:") #define TR_MODULE INDENT "Module" #define TR_TELEMETRY_TYPE TR("Type", "Telemetry type") #define TR_TELEMETRY_SENSORS "Sensors" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 7c651bbda..d714b9276 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -1002,7 +1002,7 @@ #define TR_SET "[Set]" #define TR_TRAINER "Trainer" #define TR_ANTENNAPROBLEM CENTER "TX Antenna problem!" -#define TR_MODELIDUSED TR("ID already used","Model ID already used") +#define TR_MODELIDUSED TR("ID used in:", "Receiver ID used in:") #define TR_MODULE INDENT "Module" #define TR_TELEMETRY_TYPE TR("Type", "Telemetry Type") #define TR_TELEMETRY_SENSORS "Sensors" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index 1b0a6f9c1..3807b5482 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1043,7 +1043,7 @@ #define TR_SET BUTTON("Déf") #define TR_TRAINER "Ecolage" #define TR_ANTENNAPROBLEM CENTER "Antenne radio défectueuse!" -#define TR_MODELIDUSED TR("ID déjà affecté", "No de modèle déjà utilisé") +#define TR_MODELIDUSED TR("ID affecté à :", "No de récepteur utilisé par :") #define TR_MODULE INDENT "Type de module" #define TR_TELEMETRY_TYPE TR("Type tél.", "Type télémesure") #define TR_TELEMETRY_SENSORS "Capteurs" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 854a08617..8989581df 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -1007,7 +1007,7 @@ #define TR_SET "[Set]" #define TR_TRAINER "Trainer" #define TR_ANTENNAPROBLEM CENTER "TX Antenna problem!" -#define TR_MODELIDUSED TR("ID already used","Model ID already used") +#define TR_MODELIDUSED TR("ID used in:", "Receiver ID used in:") #define TR_MODULE INDENT "Module" #define TR_TELEMETRY_TYPE TR("Type", "Telemetry Type") #define TR_TELEMETRY_SENSORS "Sensors"