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
This commit is contained in:
3djc
2017-08-16 23:27:04 -07:00
committed by Bertrand Songis
parent 576be96935
commit 81589d22f8
6 changed files with 42 additions and 9 deletions
+32 -5
View File
@@ -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<MAX_MODELS; i++) {
for (uint8_t i = 0; i < MAX_MODELS; i++) {
if (i != index) {
for (uint8_t j=0; j<NUM_MODULES; j++) {
if (modelId == modelHeaders[i].modelId[j]) {
POPUP_WARNING(STR_MODELIDUSED);
return;
if (modelId == modelHeaders[i].modelId[module]) {
if ((WARNING_LINE_LEN - 4 - (name - reusableBuffer.msgbuf.msg)) > (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
+6
View File
@@ -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
{
+1 -1
View File
@@ -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"
+1 -1
View File
@@ -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"
+1 -1
View File
@@ -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"
+1 -1
View File
@@ -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"