mirror of
https://github.com/opentx/opentx.git
synced 2025-07-25 01:05:10 +03:00
D16 bind option (#7218)
D16 bind option, and several fixes that give MULTI live data priority vs OpenTX stored multi definitions Co-authored-by: pascallanger <pascal_langer@yahoo.fr>
This commit is contained in:
parent
2f793eba32
commit
ea11335273
20 changed files with 97 additions and 63 deletions
|
@ -444,6 +444,9 @@ PACK(struct ModuleData {
|
|||
uint8_t autoBindMode:1;
|
||||
uint8_t lowPowerMode:1;
|
||||
int8_t optionValue;
|
||||
uint8_t receiverTelemetryOff:1;
|
||||
uint8_t receiverHigherChannels:1;
|
||||
uint8_t spare:6;
|
||||
} multi);
|
||||
NOBACKUP(struct {
|
||||
uint8_t power:2; // 0=10 mW, 1=100 mW, 2=500 mW, 3=1W
|
||||
|
|
|
@ -1461,8 +1461,19 @@ void menuModelSetup(event_t event)
|
|||
if (MULTIMODULE_PROTOCOL_KNOWN(moduleIdx)) {
|
||||
int optionValue = g_model.moduleData[moduleIdx].multi.optionValue;
|
||||
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
const uint8_t multi_proto = g_model.moduleData[moduleIdx].getMultiProtocol();
|
||||
if (multi_proto < MODULE_SUBTYPE_MULTI_LAST) {
|
||||
|
||||
if (status.isValid()) {
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
lcdDrawText(INDENT_WIDTH, y, mm_options_strings::options[status.optionDisp]);
|
||||
if (attr && status.optionDisp == 2) {
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN + 23, y, "RSSI(", LEFT);
|
||||
lcdDrawNumber(lcdLastRightPos, y, TELEMETRY_RSSI(), LEFT);
|
||||
lcdDrawText(lcdLastRightPos, y, ")", LEFT);
|
||||
}
|
||||
}
|
||||
else {
|
||||
const mm_protocol_definition * pdef = getMultiProtocolDefinition(multi_proto);
|
||||
if (pdef->optionsstr) {
|
||||
lcdDrawText(INDENT_WIDTH, y, pdef->optionsstr);
|
||||
|
@ -1473,15 +1484,7 @@ void menuModelSetup(event_t event)
|
|||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
lcdDrawText(INDENT_WIDTH, y, mm_options_strings::options[status.optionDisp]);
|
||||
if (attr && status.optionDisp == 2) {
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN + 23, y, "RSSI(", LEFT);
|
||||
lcdDrawNumber(lcdLastRightPos, y, TELEMETRY_RSSI(), LEFT);
|
||||
lcdDrawText(lcdLastRightPos, y, ")", LEFT);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A)
|
||||
optionValue = 50 + 5 * optionValue;
|
||||
|
|
|
@ -1216,8 +1216,17 @@ void menuModelSetup(event_t event)
|
|||
if (MULTIMODULE_PROTOCOL_KNOWN(moduleIdx)) {
|
||||
int optionValue = g_model.moduleData[moduleIdx].multi.optionValue;
|
||||
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
const uint8_t multi_proto = g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol();
|
||||
if (multi_proto < MODULE_SUBTYPE_MULTI_LAST) {
|
||||
if (status.isValid()) {
|
||||
lcdDrawText(INDENT_WIDTH, y, mm_options_strings::options[status.optionDisp]);
|
||||
if (attr && status.optionDisp == 2) {
|
||||
lcdDrawText(MODEL_SETUP_3RD_COLUMN+22, y, "RSSI(", LEFT);
|
||||
lcdDrawNumber(lcdLastRightPos, y, TELEMETRY_RSSI(), LEFT);
|
||||
lcdDrawText(lcdLastRightPos, y, ")", LEFT);
|
||||
}
|
||||
}
|
||||
else {
|
||||
const mm_protocol_definition * pdef = getMultiProtocolDefinition(multi_proto);
|
||||
if (pdef->optionsstr)
|
||||
lcdDrawText(INDENT_WIDTH, y, pdef->optionsstr);
|
||||
|
@ -1227,15 +1236,7 @@ void menuModelSetup(event_t event)
|
|||
lcdDrawText(lcdLastRightPos, y, ")", LEFT);
|
||||
}
|
||||
}
|
||||
else {
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
lcdDrawText(INDENT_WIDTH, y, mm_options_strings::options[status.optionDisp]);
|
||||
if (attr && status.optionDisp == 2) {
|
||||
lcdDrawText(MODEL_SETUP_3RD_COLUMN+22, y, "RSSI(", LEFT);
|
||||
lcdDrawNumber(lcdLastRightPos, y, TELEMETRY_RSSI(), LEFT);
|
||||
lcdDrawText(lcdLastRightPos, y, ")", LEFT);
|
||||
}
|
||||
}
|
||||
|
||||
if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A)
|
||||
optionValue = 50 + 5 * optionValue;
|
||||
|
||||
|
|
|
@ -1613,23 +1613,24 @@ bool menuModelSetup(event_t event)
|
|||
if (MULTIMODULE_PROTOCOL_KNOWN(moduleIdx)) {
|
||||
int optionValue = g_model.moduleData[moduleIdx].multi.optionValue;
|
||||
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
const uint8_t multi_proto = g_model.moduleData[moduleIdx].getMultiProtocol();
|
||||
if (multi_proto < MODULE_SUBTYPE_MULTI_LAST) {
|
||||
if (status.isValid()) {
|
||||
lcdDrawText(MENUS_MARGIN_LEFT + INDENT_WIDTH, y, mm_options_strings::options[status.optionDisp]);
|
||||
if (attr && status.optionDisp == 2) {
|
||||
lcdDrawNumber(LCD_W - 10, y, TELEMETRY_RSSI(), RIGHT, 0, "RSSI(", ")");
|
||||
}
|
||||
}
|
||||
else {
|
||||
const mm_protocol_definition * pdef = getMultiProtocolDefinition(multi_proto);
|
||||
if (pdef->optionsstr) {
|
||||
lcdDrawText(MENUS_MARGIN_LEFT + INDENT_WIDTH, y, pdef->optionsstr);
|
||||
if (attr && pdef->optionsstr == STR_MULTI_RFTUNE) {
|
||||
if (attr && pdef->optionsstr == STR_MULTI_RFTUNE) {
|
||||
lcdDrawNumber(LCD_W - 10, y, TELEMETRY_RSSI(), RIGHT, 0, "RSSI(", ")");
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
lcdDrawText(MENUS_MARGIN_LEFT + INDENT_WIDTH, y, mm_options_strings::options[status.optionDisp]);
|
||||
if (attr && status.optionDisp == 2) {
|
||||
lcdDrawNumber(LCD_W - 10, y, TELEMETRY_RSSI(), RIGHT, 0, "RSSI(", ")");
|
||||
}
|
||||
}
|
||||
|
||||
if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A)
|
||||
optionValue = 50 + 5 * optionValue;
|
||||
|
||||
|
|
|
@ -22,27 +22,37 @@
|
|||
void onBindMenu(const char * result)
|
||||
{
|
||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(menuVerticalPosition - HEADER_LINE);
|
||||
uint8_t receiverTelemetryOff, receiverHigherChannels;
|
||||
|
||||
if (result == STR_BINDING_1_8_TELEM_ON) {
|
||||
g_model.moduleData[moduleIdx].pxx.receiverTelemetryOff = false;
|
||||
g_model.moduleData[moduleIdx].pxx.receiverHigherChannels = false;
|
||||
receiverTelemetryOff = false;
|
||||
receiverHigherChannels = false;
|
||||
}
|
||||
else if (result == STR_BINDING_1_8_TELEM_OFF) {
|
||||
g_model.moduleData[moduleIdx].pxx.receiverTelemetryOff = true;
|
||||
g_model.moduleData[moduleIdx].pxx.receiverHigherChannels = false;
|
||||
receiverTelemetryOff = true;
|
||||
receiverHigherChannels = false;
|
||||
}
|
||||
else if (result == STR_BINDING_9_16_TELEM_ON) {
|
||||
g_model.moduleData[moduleIdx].pxx.receiverTelemetryOff = false;
|
||||
g_model.moduleData[moduleIdx].pxx.receiverHigherChannels = true;
|
||||
receiverTelemetryOff = false;
|
||||
receiverHigherChannels = true;
|
||||
}
|
||||
else if (result == STR_BINDING_9_16_TELEM_OFF) {
|
||||
g_model.moduleData[moduleIdx].pxx.receiverTelemetryOff = true;
|
||||
g_model.moduleData[moduleIdx].pxx.receiverHigherChannels = true;
|
||||
receiverTelemetryOff = true;
|
||||
receiverHigherChannels = true;
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
|
||||
if (isModuleMultimodule(moduleIdx)) {
|
||||
g_model.moduleData[moduleIdx].multi.receiverTelemetryOff = receiverTelemetryOff;
|
||||
g_model.moduleData[moduleIdx].multi.receiverHigherChannels = receiverHigherChannels;
|
||||
}
|
||||
else {
|
||||
g_model.moduleData[moduleIdx].pxx.receiverTelemetryOff = receiverTelemetryOff;
|
||||
g_model.moduleData[moduleIdx].pxx.receiverHigherChannels = receiverHigherChannels;
|
||||
}
|
||||
|
||||
moduleState[moduleIdx].mode = MODULE_MODE_BIND;
|
||||
}
|
||||
|
||||
|
|
|
@ -926,7 +926,7 @@ const mm_protocol_definition multi_protocols[] = {
|
|||
{MM_RF_CUSTOM_SELECTED, 7, true, true, NO_SUBTYPE, STR_MULTI_OPTION},
|
||||
|
||||
// Sentinel and default for protocols not listed above (MM_RF_CUSTOM is 0xff)
|
||||
{0xfe, 0, false, true, NO_SUBTYPE, nullptr}
|
||||
{0xfe, 0, false, false, NO_SUBTYPE, nullptr}
|
||||
};
|
||||
|
||||
#undef NO_SUBTYPE
|
||||
|
|
|
@ -166,6 +166,11 @@ inline uint8_t MULTI_DISABLE_CHAN_MAP_ROW(uint8_t moduleIdx)
|
|||
if (!isModuleMultimodule(moduleIdx))
|
||||
return HIDDEN_ROW;
|
||||
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
if (status.isValid()) {
|
||||
return status.supportsDisableMapping() == true ? 0 : HIDDEN_ROW;
|
||||
}
|
||||
|
||||
uint8_t protocol = g_model.moduleData[moduleIdx].getMultiProtocol();
|
||||
if (protocol < MODULE_SUBTYPE_MULTI_LAST) {
|
||||
const mm_protocol_definition * pdef = getMultiProtocolDefinition(protocol);
|
||||
|
@ -173,11 +178,6 @@ inline uint8_t MULTI_DISABLE_CHAN_MAP_ROW(uint8_t moduleIdx)
|
|||
return 0;
|
||||
}
|
||||
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
if (status.supportsDisableMapping() && status.isValid()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return HIDDEN_ROW;
|
||||
}
|
||||
|
||||
|
@ -239,12 +239,15 @@ inline uint8_t MULTIMODULE_HASOPTIONS(uint8_t moduleIdx)
|
|||
return false;
|
||||
|
||||
uint8_t protocol = g_model.moduleData[moduleIdx].getMultiProtocol();
|
||||
if (protocol < MODULE_SUBTYPE_MULTI_LAST) {
|
||||
return getMultiProtocolDefinition(protocol)->optionsstr != nullptr;
|
||||
}
|
||||
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
return status.optionDisp;
|
||||
|
||||
if (status.isValid())
|
||||
return status.optionDisp;
|
||||
|
||||
if (protocol < MODULE_SUBTYPE_MULTI_LAST)
|
||||
return getMultiProtocolDefinition(protocol)->optionsstr != nullptr;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
#define MULTIMODULE_MODULE_ROWS(moduleIdx) MULTIMODULE_PROTOCOL_KNOWN(moduleIdx) ? (uint8_t) 0 : HIDDEN_ROW, MULTIMODULE_PROTOCOL_KNOWN(moduleIdx) ? (uint8_t) 0 : HIDDEN_ROW, MULTI_DISABLE_CHAN_MAP_ROW(moduleIdx), // AUTOBIND, DISABLE TELEM, DISABLE CN.MAP
|
||||
|
|
|
@ -127,7 +127,7 @@ inline bool isModuleISRMD16(uint8_t idx)
|
|||
|
||||
inline bool isModuleD16(uint8_t idx)
|
||||
{
|
||||
return isModuleXJTD16(idx) || isModuleISRMD16(idx);
|
||||
return isModuleXJTD16(idx) || isModuleISRMD16(idx) || IS_D16_MULTI(idx);
|
||||
}
|
||||
|
||||
inline bool isModuleISRMAccess(uint8_t idx)
|
||||
|
@ -469,7 +469,7 @@ inline bool isTelemAllowedOnBind(uint8_t moduleIndex)
|
|||
{
|
||||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
if (moduleIndex == INTERNAL_MODULE)
|
||||
return isModuleISRM(moduleIndex) || isSportLineUsedByInternalModule();
|
||||
return true;
|
||||
|
||||
if (isSportLineUsedByInternalModule())
|
||||
return false;
|
||||
|
@ -557,6 +557,8 @@ inline void resetMultiProtocolsOptions(uint8_t moduleIdx)
|
|||
g_model.moduleData[moduleIdx].multi.disableTelemetry = 0;
|
||||
g_model.moduleData[moduleIdx].multi.disableMapping = 0;
|
||||
g_model.moduleData[moduleIdx].multi.lowPowerMode = 0;
|
||||
g_model.moduleData[moduleIdx].failsafeMode = FAILSAFE_NOT_SET;
|
||||
g_model.header.modelId[moduleIdx] = 0;
|
||||
}
|
||||
|
||||
inline void getMultiOptionValues(int8_t multi_proto, int8_t & min, int8_t & max)
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
|
||||
static void sendFrameProtocolHeader(uint8_t moduleIdx, bool failsafe);
|
||||
void sendChannels(uint8_t moduleIdx);
|
||||
static void sendD16BindOption(uint8_t moduleIdx);
|
||||
#if defined(LUA)
|
||||
static void sendSport(uint8_t moduleIdx);
|
||||
static void sendHott(uint8_t moduleIdx);
|
||||
|
@ -174,10 +175,13 @@ void setupPulsesMulti(uint8_t moduleIdx)
|
|||
| g_model.moduleData[moduleIdx].multi.disableMapping));
|
||||
|
||||
// Multi V1.3.X.X -> Send protocol additional data: max 9 bytes
|
||||
#if defined(LUA)
|
||||
if (getMultiModuleStatus(moduleIdx).isValid()) {
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
if (status.minor >= 3 && !(status.flags & 0x80)) { //Version 1.3.x.x or more and Buffer not full
|
||||
if (IS_D16_MULTI(moduleIdx) && moduleState[moduleIdx].mode == MODULE_MODE_BIND) {
|
||||
sendD16BindOption(moduleIdx);//1 byte of additional data
|
||||
}
|
||||
#if defined(LUA)
|
||||
// SPort send
|
||||
if (IS_D16_MULTI(moduleIdx) && outputTelemetryBuffer.destination == TELEMETRY_ENDPOINT_SPORT && outputTelemetryBuffer.size) {
|
||||
sendSport(moduleIdx); //8 bytes of additional data
|
||||
|
@ -185,9 +189,9 @@ void setupPulsesMulti(uint8_t moduleIdx)
|
|||
else if (IS_HOTT_MULTI(moduleIdx)) {
|
||||
sendHott(moduleIdx); //1 byte of additional data
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void setupPulsesMultiExternalModule()
|
||||
|
@ -345,6 +349,13 @@ void sendFrameProtocolHeader(uint8_t moduleIdx, bool failsafe)
|
|||
sendMulti(moduleIdx, (uint8_t) optionValue);
|
||||
}
|
||||
|
||||
void sendD16BindOption(uint8_t moduleIdx)
|
||||
{
|
||||
uint8_t bind_opt = g_model.moduleData[moduleIdx].multi.receiverTelemetryOff ? 1 : 0;
|
||||
bind_opt |= g_model.moduleData[moduleIdx].multi.receiverHigherChannels ? 2 : 0;
|
||||
sendMulti(moduleIdx, bind_opt);
|
||||
}
|
||||
|
||||
#if defined(LUA)
|
||||
void sendSport(uint8_t moduleIdx)
|
||||
{
|
||||
|
|
|
@ -548,7 +548,7 @@ void MultiModuleStatus::getStatusString(char * statusText) const
|
|||
return;
|
||||
}
|
||||
|
||||
if (major == 1 && minor < 3 && SLOW_BLINK_ON_PHASE) {
|
||||
if (major <= 1 && minor <= 3 && revision <= 0 && patch <= 47 && SLOW_BLINK_ON_PHASE) {
|
||||
strcpy(statusText, STR_MODULE_UPGRADE);
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -644,7 +644,7 @@
|
|||
#define TR_MODULE_WAITFORBIND "Párovat při zavedení protokolu"
|
||||
#define TR_MODULE_BINDING TR("Bind...","Párování")
|
||||
#define TR_MODULE_UPGRADE_ALERT TR3("Upg. needed", "Module upgrade required", "Module\nUpgrade required")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. needed", "Module update recommended")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. advised", "Module update recommended")
|
||||
#define TR_REBIND "Nutno přepárovat"
|
||||
#define TR_REG_OK "Registrace ok"
|
||||
#define TR_BIND_OK "Úspěšné párovaní"
|
||||
|
|
|
@ -646,7 +646,7 @@
|
|||
#define TR_MODULE_WAITFORBIND "Bind to load protocol"
|
||||
#define TR_MODULE_BINDING "Binding"
|
||||
#define TR_MODULE_UPGRADE_ALERT TR3("Upg. needed", "Module upgrade required", "Module\nUpgrade required")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. needed", "Module update recommended")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. advised", "Module update recommended")
|
||||
#define TR_REBIND "Rebinding required"
|
||||
#define TR_REG_OK "Registration ok"
|
||||
#define TR_BIND_OK "Bind successful"
|
||||
|
|
|
@ -645,7 +645,7 @@
|
|||
#define TR_MODULE_WAITFORBIND "Bind to load protocol"
|
||||
#define TR_MODULE_BINDING TR("Bind...","Binding")
|
||||
#define TR_MODULE_UPGRADE_ALERT TR3("Upg. needed", "Module upgrade required", "Module\nUpgrade required")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. needed", "Module update recommended")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. advised", "Module update recommended")
|
||||
#define TR_REBIND "Rebinding required"
|
||||
#define TR_REG_OK "Registration ok"
|
||||
#define TR_BIND_OK "Bind successful"
|
||||
|
|
|
@ -669,7 +669,7 @@
|
|||
#define TR_MODULE_WAITFORBIND "Bind to load protocol"
|
||||
#define TR_MODULE_BINDING "Binding"
|
||||
#define TR_MODULE_UPGRADE_ALERT TR3("Upg. needed", "Module upgrade required", "Module\nUpgrade required")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. needed", "Module update recommended")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. advised", "Module update recommended")
|
||||
#define TR_REBIND "Rebinding required"
|
||||
#define TR_REG_OK "Registration ok"
|
||||
#define TR_BIND_OK "Bind successful"
|
||||
|
|
|
@ -663,7 +663,7 @@
|
|||
#define TR_MODULE_WAITFORBIND "Bind to load protocol"
|
||||
#define TR_MODULE_BINDING "Binding"
|
||||
#define TR_MODULE_UPGRADE_ALERT TR3("Upg. needed", "Module upgrade required", "Module\nUpgrade required")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. needed", "Module update recommended")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. advised", "Module update recommended")
|
||||
#define TR_REBIND "Rebinding required"
|
||||
#define TR_REG_OK "Registration ok"
|
||||
#define TR_BIND_OK "Bind successful"
|
||||
|
|
|
@ -666,7 +666,7 @@
|
|||
#define TR_MODULE_WAITFORBIND "Binder d'abord"
|
||||
#define TR_MODULE_BINDING "Bind..."
|
||||
#define TR_MODULE_UPGRADE_ALERT "Mise à jour requise"
|
||||
#define TR_MODULE_UPGRADE TR("Upg. needed", "Module update recommended")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. advised", "Module update recommended")
|
||||
#define TR_REBIND "Rebind requis"
|
||||
#define TR_REG_OK "Enregistr. ok"
|
||||
#define TR_BIND_OK "Bind ok"
|
||||
|
|
|
@ -651,7 +651,7 @@
|
|||
#define TR_MODULE_WAITFORBIND "Bind to load protocol"
|
||||
#define TR_MODULE_BINDING "Binding"
|
||||
#define TR_MODULE_UPGRADE_ALERT TR3("Upg. needed", "Module upgrade required", "Module\nUpgrade required")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. needed", "Module update recommended")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. advised", "Module update recommended")
|
||||
#define TR_REBIND "Rebinding required"
|
||||
#define TR_REG_OK "Registration ok"
|
||||
#define TR_BIND_OK "Bind successful"
|
||||
|
|
|
@ -664,7 +664,7 @@
|
|||
#define TR_MODULE_WAITFORBIND "Bind to load protocol"
|
||||
#define TR_MODULE_BINDING "Binding"
|
||||
#define TR_MODULE_UPGRADE_ALERT TR3("Upg. needed", "Module upgrade required", "Module\nUpgrade required")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. needed", "Module update recommended")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. advised", "Module update recommended")
|
||||
#define TR_REBIND "Rebinding required"
|
||||
#define TR_REG_OK "Registration ok"
|
||||
#define TR_BIND_OK "Bind successful"
|
||||
|
|
|
@ -655,7 +655,7 @@
|
|||
#define TR_MODULE_WAITFORBIND "Bind to load protocol"
|
||||
#define TR_MODULE_BINDING "Binding"
|
||||
#define TR_MODULE_UPGRADE_ALERT TR3("Upg. needed", "Module upgrade required", "Module\nUpgrade required")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. needed", "Module update recommended")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. advised", "Module update recommended")
|
||||
#define TR_REBIND "Rebinding required"
|
||||
#define TR_REG_OK "Registration ok"
|
||||
#define TR_BIND_OK "Bind successful"
|
||||
|
|
|
@ -664,7 +664,7 @@
|
|||
#define TR_MODULE_WAITFORBIND "Bind to load protocol"
|
||||
#define TR_MODULE_BINDING "Binding"
|
||||
#define TR_MODULE_UPGRADE_ALERT TR3("Upg. needed", "Module upgrade required", "Module\nUpgrade required")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. needed", "Module update recommended")
|
||||
#define TR_MODULE_UPGRADE TR("Upg. advised", "Module update recommended")
|
||||
#define TR_REBIND "Rebinding required"
|
||||
#define TR_REG_OK "Registration ok"
|
||||
#define TR_BIND_OK "Bind successful"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue