1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-25 01:05:10 +03:00

Refactoring

This commit is contained in:
Bertrand Songis 2019-02-22 16:39:26 +01:00
parent b8770a2d2f
commit aea10a342e
2 changed files with 95 additions and 120 deletions

View file

@ -419,7 +419,6 @@ PACK(struct ReceiverData {
uint8_t telemetry:1;
uint8_t spare:6;
uint64_t channelMapping; // each receiver output (16) can be assigned to one of the 16 channels
char rxName[PXX2_LEN_RX_NAME];
});
/*

View file

@ -83,17 +83,14 @@ enum MenuModelSetupItems {
#endif
ITEM_MODEL_INTERNAL_MODULE_FAILSAFE,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RANGE_REGISTER,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_NAME,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_LABEL,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_PINMAP,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_TELEM,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_BIND_DEL,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_SHARE,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_NAME,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_BIND_SHARE,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_LABEL,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_PINMAP,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_TELEM,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_BIND_DEL,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_SHARE,
ITEM_MODEL_INTERNAL_MODULE_PXX2_ADD_RECEIVER,
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_BIND_SHARE,
#endif
ITEM_MODEL_EXTERNAL_MODULE_LABEL,
ITEM_MODEL_EXTERNAL_MODULE_MODE,
@ -117,18 +114,15 @@ enum MenuModelSetupItems {
ITEM_MODEL_EXTERNAL_MODULE_FREQ,
#endif
ITEM_MODEL_EXTERNAL_MODULE_FAILSAFE,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RANGE_REGISTER,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_NAME,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_REGISTER_RANGE,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_LABEL,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_PINMAP,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_TELEM,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_BIND_DEL,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_SHARE,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_NAME,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_BIND_SHARE,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_LABEL,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_PINMAP,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_TELEM,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_BIND_DEL,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_SHARE,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_ADD_RECEIVER,
ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_BIND_SHARE,
#if defined(PCBSKY9X) && !defined(REVA)
ITEM_MODEL_EXTRA_MODULE_LABEL,
ITEM_MODEL_EXTRA_MODULE_CHANNELS,
@ -163,19 +157,15 @@ enum MenuModelSetupItems {
#define MODEL_SETUP_RANGE_OFS 4*FW+3
#define MODEL_SETUP_SET_FAILSAFE_OFS 7*FW-2
#define IF_PXX2(xxx) (isModulePXX2(INTERNAL_MODULE) ? (uint8_t)(xxx) : HIDDEN_ROW)
#define IF_NOT_PXX2(xxx) (isModulePXX2(INTERNAL_MODULE) ? HIDDEN_ROW : (uint8_t)(xxx))
#define IF_EXTERNAL_PXX2(xxx) (isModulePXX2(EXTERNAL_MODULE) ? (uint8_t)(xxx) : HIDDEN_ROW)
#define IF_NOT_EXTERNAL_PXX2(xxx) (isModulePXX2(EXTERNAL_MODULE) ? HIDDEN_ROW : (uint8_t)(xxx))
#define IF_PXX2_MODULE(module, xxx) (isModulePXX2(module) ? (uint8_t)(xxx) : HIDDEN_ROW)
#define IF_NOT_PXX2_MODULE(module, xxx) (isModulePXX2(module) ? HIDDEN_ROW : (uint8_t)(xxx))
#define IF_PXX2_RECEIVER_DISPLAYED(module, idx, xxx) ((isModulePXX2(module) && g_model.moduleData[module].pxx2.receivers[idx].enabled) ? (uint8_t)(xxx) : HIDDEN_ROW)
#if defined(PCBTARANIS)
#define CURRENT_MODULE_EDITED(k) (k >= ITEM_MODEL_EXTERNAL_MODULE_LABEL ? EXTERNAL_MODULE : INTERNAL_MODULE)
#define CURRENT_RECEIVER_EDITED(k) (k >= ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_NAME ? 1 : 0)
#define INTERNAL_MODULE_ADD_RECEIVER_ROW (g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[MAX_RECEIVERS_PER_MODULE-1].enabled ? HIDDEN_ROW : (uint8_t)0)
#define EXTERNAL_MODULE_ADD_RECEIVER_ROW (g_model.moduleData[EXTERNAL_MODULE].pxx2.receivers[MAX_RECEIVERS_PER_MODULE-1].enabled ? HIDDEN_ROW : (uint8_t)0)
#define CURRENT_RECEIVER_EDITED(k) (k >= (k >= ITEM_MODEL_EXTERNAL_MODULE_LABEL ? ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_LABEL : ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_LABEL) ? 1 : 0)
#elif defined(PCBSKY9X) && !defined(REVA)
#define CURRENT_MODULE_EDITED(k) (k>=ITEM_MODEL_EXTRA_MODULE_LABEL ? EXTRA_MODULE : EXTERNAL_MODULE)
#define CURRENT_MODULE_EDITED(k) (k >= ITEM_MODEL_EXTRA_MODULE_LABEL ? EXTRA_MODULE : EXTERNAL_MODULE)
#else
#define CURRENT_MODULE_EDITED(k) (EXTERNAL_MODULE)
#endif
@ -406,53 +396,48 @@ void menuModelSetup(event_t event)
NUM_STICKS + NUM_POTS + NUM_SLIDERS + NUM_ROTARY_ENCODERS - 1, // Center beeps
0, // Global functions
IF_PXX2(isDefaultModelRegistrationID() ? HIDDEN_ROW : READONLY_ROW), // Registration ID
isDefaultModelRegistrationID() ? HIDDEN_ROW : READONLY_ROW, // Registration ID
LABEL(InternalModule),
INTERNAL_MODULE_MODE_ROWS, // module mode (PXX(2) / None)
INTERNAL_MODULE_CHANNELS_ROWS, // Channels min and count
IF_NOT_PXX2(IF_INTERNAL_MODULE_ON(HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[INTERNAL_MODULE].rfProtocol) ? (uint8_t)2 : (uint8_t)1)),
IF_PXX2(0), // RxNum
IF_NOT_PXX2_MODULE(INTERNAL_MODULE, IF_INTERNAL_MODULE_ON(HAS_RF_PROTOCOL_MODELINDEX(g_model.moduleData[INTERNAL_MODULE].rfProtocol) ? (uint8_t)2 : (uint8_t)1)),
IF_PXX2_MODULE(INTERNAL_MODULE, 0), // RxNum
ANTENNA_ROW
IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), // Module start channel (pxx2 always send 16)
IF_PXX2(1), // Range check and Register buttons
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, (uint8_t)-1), // Receiver Name
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 0), // Receiver Range
IF_INTERNAL_MODULE_ON(FAILSAFE_ROWS(INTERNAL_MODULE)), // Module start channel
IF_PXX2_MODULE(INTERNAL_MODULE, 1), // Range check and Register buttons
IF_PXX2_MODULE(INTERNAL_MODULE, 0), // Receiver Name + Add/Del buttons
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 0), // Receiver Pinmap
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 0), // Receiver Telemetry
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 1), // Receiver Bind/Delete
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 0), // Receiver Transfer
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, (uint8_t)-1), // Receiver Number
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 0), // Receiver Range
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 0), // Receiver Telemetry
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 1), // Receiver Bind/Delete
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 0), // Receiver Transfer
IF_PXX2(INTERNAL_MODULE_ADD_RECEIVER_ROW),
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 1), // Receiver Bind/Share
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 0, 0), // Receiver2 Name + Add/Del buttons
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 0), // Receiver2 Pinmap
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 0), // Receiver2 Telemetry
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 1), // Receiver2 Bind/Share
LABEL(ExternalModule),
EXTERNAL_MODULE_MODE_ROWS,
MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE)
MULTIMODULE_STATUS_ROWS
EXTERNAL_MODULE_CHANNELS_ROWS,
IF_NOT_EXTERNAL_PXX2(EXTERNAL_MODULE_BIND_ROWS()), // line reused for PPM: PPM settings
IF_EXTERNAL_PXX2(0), // RxNum
IF_NOT_PXX2_MODULE(EXTERNAL_MODULE, EXTERNAL_MODULE_BIND_ROWS()), // line reused for PPM: PPM settings
IF_PXX2_MODULE(EXTERNAL_MODULE, 0), // RxNum
OUTPUT_TYPE_ROWS()
IF_NOT_EXTERNAL_PXX2(EXTERNAL_MODULE_OPTION_ROW),
IF_NOT_PXX2_MODULE(EXTERNAL_MODULE, EXTERNAL_MODULE_OPTION_ROW),
MULTIMODULE_MODULE_ROWS
EXTERNAL_MODULE_POWER_ROW,
EXTERNAL_MODULE_FREQ_ROW
FAILSAFE_ROWS(EXTERNAL_MODULE),
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 0, 1), // Range check and Register buttons
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 0, (uint8_t)-1), // Receiver Name
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 0, 0), // Receiver Range
IF_PXX2_MODULE(EXTERNAL_MODULE, 1), // Range check and Register buttons
IF_PXX2_MODULE(EXTERNAL_MODULE, 0), // Receiver Name + Add/Del buttons
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 0, 0), // Receiver Pinmap
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 0, 0), // Receiver Telemetry
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 0, 1), // Receiver Bind/Delete
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 0, 0), // Receiver Transfer
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 1, (uint8_t)-1), // Receiver Number
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 1, 0), // Receiver Range
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 1, 0), // Receiver Telemetry
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 1, 1), // Receiver Bind/Delete
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 1, 0), // Receiver Transfer
IF_EXTERNAL_PXX2(EXTERNAL_MODULE_ADD_RECEIVER_ROW),
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 0, 1), // Receiver Bind/Share
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 0, 0), // Receiver2 Name + Add/Del buttons
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 1, 0), // Receiver2 Range
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 1, 0), // Receiver2 Telemetry
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 1, 1), // Receiver2 Bind/Share
TRAINER_ROWS
});
@ -1180,7 +1165,7 @@ void menuModelSetup(event_t event)
break;
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RANGE_REGISTER:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RANGE_REGISTER:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_REGISTER_RANGE:
{
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
lcdDrawTextAlignedLeft(y, STR_MODULE);
@ -1206,40 +1191,47 @@ void menuModelSetup(event_t event)
}
break;
case ITEM_MODEL_INTERNAL_MODULE_PXX2_ADD_RECEIVER:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_ADD_RECEIVER:
{
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
lcdDrawTextAlignedLeft(y, STR_RECEIVER);
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_RXADD_BUTTON, attr);
if (attr && s_editMode > 0) {
if (g_model.moduleData[moduleIdx].pxx2.receivers[0].enabled) {
g_model.moduleData[moduleIdx].pxx2.receivers[1].enabled = 0x01;
memcpy(&g_model.moduleData[moduleIdx].pxx2.receivers[1].channelMapping, DEFAULT_CHANNEL_MAPPING, sizeof(uint64_t));
menuVerticalPosition = (moduleIdx ? ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_BIND_DEL : ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_BIND_DEL) + 1;
}
else {
g_model.moduleData[moduleIdx].pxx2.receivers[0].enabled = 0x01;
memcpy(&g_model.moduleData[moduleIdx].pxx2.receivers[0].channelMapping, DEFAULT_CHANNEL_MAPPING, sizeof(uint64_t));
menuVerticalPosition = (moduleIdx ? ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_BIND_DEL : ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_BIND_DEL) + 1;
}
killEvents(event);
s_editMode = 0;
storageDirty(EE_MODEL);
}
}
break;
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_NAME:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_NAME:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_NAME:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_NAME:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_LABEL:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_LABEL:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_LABEL:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_LABEL:
{
uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k);
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
lcdDrawTextAlignedLeft(y, STR_RECEIVER);
lcdDrawSizedText(MODEL_SETUP_2ND_COLUMN, y, g_model.moduleData[moduleIdx].pxx2.receivers[receiverIdx].rxName, PXX2_LEN_RX_NAME, ZCHAR);
lcdDrawNumber(lcdLastRightPos + 1, y, receiverIdx + 1);
// lcdDrawSizedText(MODEL_SETUP_2ND_COLUMN, y, g_model.moduleData[moduleIdx].pxx2.receivers[receiverIdx].rxName, PXX2_LEN_RX_NAME, ZCHAR);
if (g_model.moduleData[moduleIdx].pxx2.receivers[receiverIdx].enabled) {
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_DEL_BUTTON, attr);
if (attr && s_editMode > 0) {
if (receiverIdx == 0) {
memcpy(&g_model.moduleData[moduleIdx].pxx2.receivers[0], &g_model.moduleData[moduleIdx].pxx2.receivers[1], sizeof(ReceiverData));
}
memclear(&g_model.moduleData[moduleIdx].pxx2.receivers[1], sizeof(ReceiverData)); // we always remove the second receiver data
s_editMode = 0;
killEvents(event);
storageDirty(EE_MODEL);
}
}
else {
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_RXADD_BUTTON, attr);
if (attr && s_editMode > 0) {
if (g_model.moduleData[moduleIdx].pxx2.receivers[0].enabled) {
g_model.moduleData[moduleIdx].pxx2.receivers[1].enabled = 0x01;
memcpy(&g_model.moduleData[moduleIdx].pxx2.receivers[1].channelMapping, DEFAULT_CHANNEL_MAPPING, sizeof(uint64_t));
menuVerticalPosition += 2;
}
else {
g_model.moduleData[moduleIdx].pxx2.receivers[0].enabled = 0x01;
memcpy(&g_model.moduleData[moduleIdx].pxx2.receivers[0].channelMapping, DEFAULT_CHANNEL_MAPPING, sizeof(uint64_t));
menuVerticalPosition += 2;
}
s_editMode = 0;
killEvents(event);
storageDirty(EE_MODEL);
}
}
}
break;
@ -1271,17 +1263,20 @@ void menuModelSetup(event_t event)
}
break;
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_BIND_DEL:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_BIND_DEL:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_BIND_DEL:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_BIND_DEL:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_BIND_SHARE:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_BIND_SHARE:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_BIND_SHARE:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_BIND_SHARE:
{
uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k);
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
lcdDrawText(6, y, "Action", 0);
lcdDrawTextAlignedLeft(y, INDENT INDENT "---");
// TODO later once first telemetry frame received => the RX name
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_MODULE_BIND, menuHorizontalPosition==0 ? attr : 0);
lcdDrawText(MODEL_SETUP_2ND_COLUMN+MODEL_SETUP_RANGE_OFS, y, STR_DEL_BUTTON, menuHorizontalPosition==1 ? attr : 0);
lcdDrawText(lcdLastRightPos + FW/2, y, BUTTON("Share"), menuHorizontalPosition==1 ? attr : 0);
if (attr) {
if (menuHorizontalPosition == 0) {
if (event == EVT_KEY_BREAK(KEY_ENTER)) {
@ -1303,40 +1298,21 @@ void menuModelSetup(event_t event)
s_editMode = 0;
}
if (reusableBuffer.moduleSetup.pxx2.bindStep == BIND_OK) {
str2zchar(g_model.moduleData[moduleIdx].pxx2.receivers[receiverIdx].rxName, reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[reusableBuffer.moduleSetup.pxx2.bindSelectedReceiverIndex], PXX2_LEN_RX_NAME);
// str2zchar(g_model.moduleData[moduleIdx].pxx2.receivers[receiverIdx].rxName, reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[reusableBuffer.moduleSetup.pxx2.bindSelectedReceiverIndex], PXX2_LEN_RX_NAME);
}
}
else if (menuHorizontalPosition == 1 && s_editMode > 0) {
if (receiverIdx == 0) {
memcpy(&g_model.moduleData[moduleIdx].pxx2.receivers[0], &g_model.moduleData[moduleIdx].pxx2.receivers[1], sizeof(ReceiverData));
menuVerticalPosition = ITEM_MODEL_INTERNAL_MODULE_PXX2_ADD_RECEIVER + 1;
else {
if (event == EVT_KEY_BREAK(KEY_ENTER)) {
moduleSettings[moduleIdx].mode ^= MODULE_MODE_SHARE;
reusableBuffer.moduleSetup.pxx2.shareReceiverIndex = receiverIdx;
}
if (moduleSettings[moduleIdx].mode == MODULE_MODE_NORMAL) {
s_editMode = 0;
}
memclear(&g_model.moduleData[moduleIdx].pxx2.receivers[receiverIdx], sizeof(ReceiverData));
s_editMode = 0;
killEvents(event);
storageDirty(EE_MODEL);
}
}
}
break;
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_SHARE:
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_2_SHARE:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_SHARE:
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_2_SHARE:
{
uint8_t receiverIdx = CURRENT_RECEIVER_EDITED(k);
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_TRANSFER_BUTTON, attr);
if (event == EVT_KEY_BREAK(KEY_ENTER)) {
moduleSettings[moduleIdx].mode ^= MODULE_MODE_SHARE;
reusableBuffer.moduleSetup.pxx2.shareReceiverIndex = receiverIdx;
}
if (moduleSettings[moduleIdx].mode == MODULE_MODE_NORMAL)
s_editMode = 0;
}
break;
#endif
#if defined(PCBSKY9X)
case ITEM_MODEL_EXTRA_MODULE_BIND:
@ -1897,9 +1873,9 @@ void menuModelPinmap(event_t event)
SIMPLE_SUBMENU_NOTITLE(sentModuleChannels(g_moduleIdx));
lcdDrawTextAlignedLeft(0, STR_PINMAPSET);
for (uint8_t pos=0; pos<PXX2_LEN_RX_NAME; pos++) {
lcdDrawHexChar(50 + pos*FW*2, 0, g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[g_receiverIdx].rxName[pos], 0);
}
// for (uint8_t pos=0; pos<PXX2_LEN_RX_NAME; pos++) {
// lcdDrawHexChar(50 + pos*FW*2, 0, g_model.moduleData[INTERNAL_MODULE].pxx2.receivers[g_receiverIdx].rxName[pos], 0);
// }
lcdInvertLine(0);
const coord_t x = 1;