mirror of
https://github.com/opentx/opentx.git
synced 2025-07-17 21:35:27 +03:00
[Exit] in a popup menu now calls onPopupHandler(nullptr)
This commit is contained in:
parent
f47b1065eb
commit
096fac2f27
21 changed files with 88 additions and 77 deletions
|
@ -37,7 +37,7 @@ void onModelCustomScriptMenu(const char *result)
|
|||
POPUP_WARNING(STR_NO_SCRIPTS_ON_SD);
|
||||
}
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
// The user choosed a lua file in the list
|
||||
copySelection(sd.file, result, sizeof(sd.file));
|
||||
memset(sd.inputs, 0, sizeof(sd.inputs));
|
||||
|
|
|
@ -73,7 +73,7 @@ void onTelemetryScriptFileSelectionMenu(const char *result)
|
|||
POPUP_WARNING(STR_NO_SCRIPTS_ON_SD);
|
||||
}
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
// The user choosed a file in the list
|
||||
memcpy(g_model.frsky.screens[screenIndex].script.file, result, sizeof(g_model.frsky.screens[screenIndex].script.file));
|
||||
storageDirty(EE_MODEL);
|
||||
|
|
|
@ -234,8 +234,7 @@ void onLogicalSwitchesMenu(const char *result)
|
|||
s_currIdx = sub;
|
||||
pushMenu(menuModelLogicalSwitchOne);
|
||||
}
|
||||
|
||||
if (result == STR_COPY) {
|
||||
else if (result == STR_COPY) {
|
||||
clipboard.type = CLIPBOARD_TYPE_CUSTOM_SWITCH;
|
||||
clipboard.data.csw = *cs;
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ void onModelSelectMenu(const char * result)
|
|||
SET_WARNING_INFO(modelHeaders[sub].name, sizeof(g_model.header.name), ZCHAR);
|
||||
}
|
||||
#if defined(SDCARD)
|
||||
else {
|
||||
else if (result) {
|
||||
// The user choosed a file on SD to restore
|
||||
storageCheck(true);
|
||||
POPUP_WARNING(eeRestoreModel(sub, (char *)result));
|
||||
|
|
|
@ -25,6 +25,7 @@ uint8_t g_moduleIdx;
|
|||
|
||||
void drawReceiverName(uint8_t x, uint8_t y, uint8_t receiverSlot)
|
||||
{
|
||||
TRACE("receiverSlot=%d", receiverSlot);
|
||||
if (g_model.receiverData[receiverSlot].name[0] != '\0')
|
||||
lcdDrawSizedText(x, y, g_model.receiverData[receiverSlot].name, PXX2_LEN_RX_NAME);
|
||||
else
|
||||
|
@ -92,7 +93,7 @@ enum MenuModelSetupItems {
|
|||
ITEM_MODEL_INTERNAL_MODULE_ANTENNA,
|
||||
#endif
|
||||
ITEM_MODEL_INTERNAL_MODULE_FAILSAFE,
|
||||
ITEM_MODEL_INTERNAL_MODULE_PXX2_RANGE_REGISTER,
|
||||
ITEM_MODEL_INTERNAL_MODULE_PXX2_REGISTER_RANGE,
|
||||
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_LABEL,
|
||||
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_PINMAP,
|
||||
ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_BIND_SHARE,
|
||||
|
@ -181,7 +182,7 @@ enum MenuModelSetupItems {
|
|||
|
||||
#if defined(PCBTARANIS)
|
||||
#define CURRENT_MODULE_EDITED(k) (k >= ITEM_MODEL_EXTERNAL_MODULE_LABEL ? EXTERNAL_MODULE : INTERNAL_MODULE)
|
||||
#define CURRENT_RECEIVER_EDITED(k) ((k - (k >= ITEM_MODEL_EXTERNAL_MODULE_LABEL ? ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_LABEL : ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_LABEL)) / 4)
|
||||
#define CURRENT_RECEIVER_EDITED(k) ((k - (k >= ITEM_MODEL_EXTERNAL_MODULE_LABEL ? ITEM_MODEL_EXTERNAL_MODULE_PXX2_RECEIVER_1_LABEL : ITEM_MODEL_INTERNAL_MODULE_PXX2_RECEIVER_1_LABEL)) / 3)
|
||||
#elif defined(PCBSKY9X) && !defined(REVA)
|
||||
#define CURRENT_MODULE_EDITED(k) (k >= ITEM_MODEL_EXTRA_MODULE_LABEL ? EXTRA_MODULE : EXTERNAL_MODULE)
|
||||
#else
|
||||
|
@ -266,8 +267,15 @@ enum MenuModelSetupItems {
|
|||
|
||||
void onPXX2BindMenu(const char * result)
|
||||
{
|
||||
reusableBuffer.moduleSetup.pxx2.bindSelectedReceiverIndex = (result - reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[0]) / PXX2_LEN_RX_NAME;
|
||||
reusableBuffer.moduleSetup.pxx2.bindStep = BIND_RX_NAME_SELECTED;
|
||||
if (result) {
|
||||
reusableBuffer.moduleSetup.pxx2.bindSelectedReceiverIndex = (result - reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[0]) / sizeof(reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[0]);
|
||||
reusableBuffer.moduleSetup.pxx2.bindStep = BIND_RX_NAME_SELECTED;
|
||||
}
|
||||
else {
|
||||
// the user pressed [Exit]
|
||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(menuVerticalPosition);
|
||||
moduleSettings[moduleIdx].mode = MODULE_MODE_NORMAL;
|
||||
}
|
||||
}
|
||||
|
||||
void onBindMenu(const char * result)
|
||||
|
@ -434,19 +442,15 @@ void menuModelSetup(event_t event)
|
|||
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/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
|
||||
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 1, 0), // Receiver3 Name + Add/Del buttons
|
||||
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 2, 0), // Receiver3 Pinmap
|
||||
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 2, 0), // Receiver3 Telemetry
|
||||
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 2, 1), // Receiver3 Bind/Share
|
||||
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 2, 0), // Receiver4 Name + Add/Del buttons
|
||||
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 3, 0), // Receiver4 Pinmap
|
||||
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 3, 0), // Receiver4 Telemetry
|
||||
IF_PXX2_RECEIVER_DISPLAYED(INTERNAL_MODULE, 3, 1), // Receiver4 Bind/Share
|
||||
|
||||
LABEL(ExternalModule),
|
||||
|
@ -465,19 +469,15 @@ void menuModelSetup(event_t event)
|
|||
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/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
|
||||
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 1, 0), // Receiver3 Name + Add/Del buttons
|
||||
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 2, 0), // Receiver3 Pinmap
|
||||
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 2, 0), // Receiver3 Telemetry
|
||||
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 2, 1), // Receiver3 Bind/Share
|
||||
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 2, 0), // Receiver4 Name + Add/Del buttons
|
||||
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 3, 0), // Receiver4 Pinmap
|
||||
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 3, 0), // Receiver4 Telemetry
|
||||
IF_PXX2_RECEIVER_DISPLAYED(EXTERNAL_MODULE, 3, 1), // Receiver4 Bind/Share
|
||||
|
||||
TRAINER_ROWS
|
||||
|
@ -1205,7 +1205,7 @@ void menuModelSetup(event_t event)
|
|||
}
|
||||
break;
|
||||
|
||||
case ITEM_MODEL_INTERNAL_MODULE_PXX2_RANGE_REGISTER:
|
||||
case ITEM_MODEL_INTERNAL_MODULE_PXX2_REGISTER_RANGE:
|
||||
case ITEM_MODEL_EXTERNAL_MODULE_PXX2_REGISTER_RANGE:
|
||||
{
|
||||
uint8_t moduleIdx = CURRENT_MODULE_EDITED(k);
|
||||
|
@ -1252,7 +1252,7 @@ void menuModelSetup(event_t event)
|
|||
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_DEL_BUTTON, attr);
|
||||
if (attr && s_editMode > 0) {
|
||||
g_model.moduleData[moduleIdx].pxx2.receivers = (g_model.moduleData[moduleIdx].pxx2.receivers & BF_MASK<uint16_t>(0, receiverIdx * 3)) | ((g_model.moduleData[moduleIdx].pxx2.receivers & BF_MASK<uint16_t>((receiverIdx + 1) * 3, (MAX_RECEIVERS_PER_MODULE - 1 - receiverIdx) * 3)) >> 3);
|
||||
memclear(&g_model.receiverData[receiverSlot], sizeof(ReceiverData));
|
||||
memclear(&g_model.receiverData[receiverSlot - 1], sizeof(ReceiverData));
|
||||
s_editMode = 0;
|
||||
killEvents(event);
|
||||
storageDirty(EE_MODEL);
|
||||
|
@ -1320,12 +1320,12 @@ void menuModelSetup(event_t event)
|
|||
if (event == EVT_KEY_BREAK(KEY_ENTER)) {
|
||||
// TODO this will go to module.cpp
|
||||
memclear(&reusableBuffer.moduleSetup.pxx2, sizeof(reusableBuffer.moduleSetup.pxx2));
|
||||
reusableBuffer.moduleSetup.pxx2.bindReceiverSlot = receiverSlot;
|
||||
reusableBuffer.moduleSetup.pxx2.bindReceiverId = receiverSlot;
|
||||
moduleSettings[moduleIdx].mode ^= MODULE_MODE_BIND;
|
||||
}
|
||||
if (moduleSettings[moduleIdx].mode == MODULE_MODE_BIND) {
|
||||
s_editMode = 1;
|
||||
if (reusableBuffer.moduleSetup.pxx2.bindStep == BIND_RX_NAME_RECEIVED) {
|
||||
if (reusableBuffer.moduleSetup.pxx2.bindStep == BIND_START && reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversCount > 0) {
|
||||
popupMenuItemsCount = min<uint8_t>(reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversCount, PXX2_MAX_RECEIVERS_PER_MODULE);
|
||||
for (uint8_t i=0; i<popupMenuItemsCount; i++) {
|
||||
popupMenuItems[i] = reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[i];
|
||||
|
|
|
@ -62,7 +62,7 @@ void onCustomFunctionsFileSelectionMenu(const char * result)
|
|||
POPUP_MENU_UNSET_BSS_FLAG();
|
||||
}
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
// The user choosed a file in the list
|
||||
memcpy(cfn->play.name, result, sizeof(cfn->play.name));
|
||||
storageDirty(eeFlags);
|
||||
|
@ -96,7 +96,7 @@ void onAdjustGvarSourceLongEnterPress(const char * result)
|
|||
CFN_PARAM(cfn) = 0;
|
||||
storageDirty(EE_MODEL);
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
onSourceLongEnterPress(result);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ void onModelCustomScriptMenu(const char *result)
|
|||
POPUP_WARNING(STR_NO_SCRIPTS_ON_SD);
|
||||
}
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
// The user choosed a lua file in the list
|
||||
copySelection(sd.file, result, sizeof(sd.file));
|
||||
memset(sd.inputs, 0, sizeof(sd.inputs));
|
||||
|
|
|
@ -72,7 +72,7 @@ void onTelemetryScriptFileSelectionMenu(const char *result)
|
|||
POPUP_WARNING(STR_NO_SCRIPTS_ON_SD);
|
||||
}
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
// The user choosed a file in the list
|
||||
memcpy(g_model.frsky.screens[screenIndex].script.file, result, sizeof(g_model.frsky.screens[screenIndex].script.file));
|
||||
storageDirty(EE_MODEL);
|
||||
|
|
|
@ -55,7 +55,7 @@ void onModelSelectMenu(const char * result)
|
|||
POPUP_CONFIRMATION(STR_DELETEMODEL);
|
||||
SET_WARNING_INFO(nametmp, sizeof(g_model.header.name), 0);
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
// The user choosed a file on SD to restore
|
||||
storageCheck(true);
|
||||
POPUP_WARNING(eeRestoreModel(sub, (char *)result));
|
||||
|
|
|
@ -148,7 +148,7 @@ void onModelSetupBitmapMenu(const char * result)
|
|||
POPUP_WARNING(STR_NO_BITMAPS_ON_SD);
|
||||
}
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
// The user choosed a bmp file in the list
|
||||
copySelection(g_model.header.bitmap, result, sizeof(g_model.header.bitmap));
|
||||
memcpy(modelHeaders[g_eeGeneral.currModel].bitmap, g_model.header.bitmap, sizeof(g_model.header.bitmap));
|
||||
|
|
|
@ -56,7 +56,7 @@ void onCustomFunctionsFileSelectionMenu(const char * result)
|
|||
POPUP_WARNING(func==FUNC_PLAY_SCRIPT ? STR_NO_SCRIPTS_ON_SD : STR_NO_SOUNDS_ON_SD);
|
||||
}
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
// The user choosed a file in the list
|
||||
memcpy(cfn->play.name, result, sizeof(cfn->play.name));
|
||||
storageDirty(eeFlags);
|
||||
|
@ -129,7 +129,7 @@ void onAdjustGvarSourceLongEnterPress(const char * result)
|
|||
CFN_PARAM(cfn) = 0;
|
||||
storageDirty(EE_MODEL);
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
onSourceLongEnterPress(result);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@ void onModelCustomScriptMenu(const char *result)
|
|||
POPUP_WARNING(STR_NO_SCRIPTS_ON_SD);
|
||||
}
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
// The user choosed a lua file in the list
|
||||
copySelection(sd.file, result, sizeof(sd.file));
|
||||
memset(sd.inputs, 0, sizeof(sd.inputs));
|
||||
|
|
|
@ -148,7 +148,7 @@ void onModelSetupBitmapMenu(const char * result)
|
|||
POPUP_WARNING(STR_NO_BITMAPS_ON_SD);
|
||||
}
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
// The user choosed a bmp file in the list
|
||||
copySelection(g_model.header.bitmap, result, sizeof(g_model.header.bitmap));
|
||||
storageDirty(EE_MODEL);
|
||||
|
|
|
@ -56,7 +56,7 @@ void onCustomFunctionsFileSelectionMenu(const char * result)
|
|||
POPUP_WARNING(func==FUNC_PLAY_SCRIPT ? STR_NO_SCRIPTS_ON_SD : STR_NO_SOUNDS_ON_SD);
|
||||
}
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
// The user choosed a file in the list
|
||||
memcpy(cf->play.name, result, sizeof(cf->play.name));
|
||||
storageDirty(eeFlags);
|
||||
|
@ -128,7 +128,7 @@ void onAdjustGvarSourceLongEnterPress(const char * result)
|
|||
CFN_PARAM(cfn) = 0;
|
||||
storageDirty(EE_MODEL);
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
onSourceLongEnterPress(result);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ void onZoneOptionFileSelectionMenu(const char * result)
|
|||
POPUP_WARNING(STR_NO_BITMAPS_ON_SD);
|
||||
}
|
||||
}
|
||||
else {
|
||||
else if (result) {
|
||||
fileSelectionDone = true;
|
||||
memcpy(fileSelection, result, sizeof(fileSelection));
|
||||
}
|
||||
|
|
|
@ -313,7 +313,7 @@ void guiMain(event_t evt)
|
|||
if (warn) DISPLAY_WARNING(evt);
|
||||
if (menu) {
|
||||
const char * result = runPopupMenu(evt);
|
||||
if (result) {
|
||||
if (popupMenuItemsCount == 0) {
|
||||
popupMenuHandler(result);
|
||||
if (menuEvent == 0) {
|
||||
evt = EVT_REFRESH;
|
||||
|
@ -451,7 +451,7 @@ void guiMain(event_t evt)
|
|||
inPopupMenu = true;
|
||||
}
|
||||
const char * result = runPopupMenu(evt);
|
||||
if (result) {
|
||||
if (popupMenuItemsCount == 0) {
|
||||
TRACE("popupMenuHandler(%s)", result);
|
||||
popupMenuHandler(result);
|
||||
}
|
||||
|
|
|
@ -1130,9 +1130,9 @@ union ReusableBuffer
|
|||
int8_t registerPopupEditMode;
|
||||
char registerRxName[PXX2_LEN_RX_NAME];
|
||||
char registrationID[PXX2_LEN_REGISTRATION_ID];
|
||||
char bindCandidateReceiversNames[PXX2_MAX_RECEIVERS_PER_MODULE][PXX2_LEN_RX_NAME];
|
||||
char bindCandidateReceiversNames[PXX2_MAX_RECEIVERS_PER_MODULE][PXX2_LEN_RX_NAME + 1];
|
||||
uint8_t bindCandidateReceiversCount;
|
||||
uint8_t bindReceiverSlot;
|
||||
uint8_t bindReceiverId;
|
||||
union {
|
||||
uint8_t bindSelectedReceiverIndex;
|
||||
uint8_t shareReceiverIndex;
|
||||
|
|
|
@ -180,7 +180,7 @@ void Pxx2Pulses::setupBindFrame(uint8_t module)
|
|||
for (uint8_t i=0; i<PXX2_LEN_RX_NAME; i++) {
|
||||
Pxx2Transport::addByte(reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[reusableBuffer.moduleSetup.pxx2.bindSelectedReceiverIndex][i]);
|
||||
}
|
||||
Pxx2Transport::addByte(reusableBuffer.moduleSetup.pxx2.bindReceiverSlot); // RX_UID is the slot index (which is unique and never moved)
|
||||
Pxx2Transport::addByte(reusableBuffer.moduleSetup.pxx2.bindReceiverId); // RX_UID is the slot index (which is unique and never moved)
|
||||
Pxx2Transport::addByte(g_model.header.modelId[module]);
|
||||
}
|
||||
else {
|
||||
|
@ -232,22 +232,29 @@ void Pxx2Pulses::setupFrame(uint8_t module)
|
|||
{
|
||||
initFrame();
|
||||
|
||||
uint8_t mode = moduleSettings[module].mode;
|
||||
|
||||
if (mode == MODULE_MODE_GET_HARDWARE_INFO)
|
||||
setupHardwareInfoFrame(module);
|
||||
else if (mode == MODULE_MODE_RECEIVER_SETTINGS)
|
||||
setupReceiverSettingsFrame(module);
|
||||
else if (mode == MODULE_MODE_REGISTER)
|
||||
setupRegisterFrame(module);
|
||||
else if (mode == MODULE_MODE_BIND)
|
||||
setupBindFrame(module);
|
||||
else if (mode == MODULE_MODE_SPECTRUM_ANALYSER)
|
||||
setupSpectrumAnalyser(module);
|
||||
else if (mode == MODULE_MODE_SHARE)
|
||||
setupShareMode(module);
|
||||
else
|
||||
setupChannelsFrame(module);
|
||||
switch (moduleSettings[module].mode) {
|
||||
case MODULE_MODE_GET_HARDWARE_INFO:
|
||||
setupHardwareInfoFrame(module);
|
||||
break;
|
||||
case MODULE_MODE_RECEIVER_SETTINGS:
|
||||
setupReceiverSettingsFrame(module);
|
||||
break;
|
||||
case MODULE_MODE_REGISTER:
|
||||
setupRegisterFrame(module);
|
||||
break;
|
||||
case MODULE_MODE_BIND:
|
||||
setupBindFrame(module);
|
||||
break;
|
||||
case MODULE_MODE_SPECTRUM_ANALYSER:
|
||||
setupSpectrumAnalyser(module);
|
||||
break;
|
||||
case MODULE_MODE_SHARE:
|
||||
setupShareMode(module);
|
||||
break;
|
||||
default:
|
||||
setupChannelsFrame(module);
|
||||
break;
|
||||
}
|
||||
|
||||
if (moduleSettings[module].counter-- == 0) {
|
||||
moduleSettings[module].counter = 1000;
|
||||
|
|
|
@ -54,7 +54,6 @@ enum PXX2RegisterSteps {
|
|||
|
||||
enum PXX2BindSteps {
|
||||
BIND_START,
|
||||
BIND_RX_NAME_RECEIVED,
|
||||
BIND_RX_NAME_SELECTED,
|
||||
BIND_WAIT,
|
||||
BIND_OK
|
||||
|
|
|
@ -130,26 +130,32 @@ void processBindFrame(uint8_t module, uint8_t * frame)
|
|||
return;
|
||||
}
|
||||
|
||||
if (frame[3] == 0x00) {
|
||||
bool found = false;
|
||||
for (uint8_t i=0; i<reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversCount; i++) {
|
||||
if (memcmp(&reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[i], &frame[4], PXX2_LEN_RX_NAME) == 0) {
|
||||
found = true;
|
||||
break;
|
||||
switch(frame[3]) {
|
||||
case 0x00:
|
||||
if (reusableBuffer.moduleSetup.pxx2.bindStep == BIND_START) {
|
||||
bool found = false;
|
||||
for (uint8_t i=0; i<reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversCount; i++) {
|
||||
if (memcmp(reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[i], &frame[4], PXX2_LEN_RX_NAME) == 0) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found && reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversCount < PXX2_MAX_RECEIVERS_PER_MODULE) {
|
||||
memcpy(reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversCount++], &frame[4], PXX2_LEN_RX_NAME);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!found && reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversCount < PXX2_MAX_RECEIVERS_PER_MODULE) {
|
||||
memcpy(&reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversCount], &frame[4], PXX2_LEN_RX_NAME);
|
||||
++reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversCount;
|
||||
reusableBuffer.moduleSetup.pxx2.bindStep = BIND_RX_NAME_RECEIVED;
|
||||
}
|
||||
}
|
||||
else if (frame[3] == 0x01) {
|
||||
if (memcmp(&reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[reusableBuffer.moduleSetup.pxx2.bindSelectedReceiverIndex], &frame[4], PXX2_LEN_RX_NAME) == 0) {
|
||||
memcpy(&g_model.receiverData[reusableBuffer.moduleSetup.pxx2.bindReceiverSlot].name, &frame[4], PXX2_LEN_RX_NAME);
|
||||
reusableBuffer.moduleSetup.pxx2.bindStep = BIND_WAIT;
|
||||
reusableBuffer.moduleSetup.pxx2.bindWaitTimeout = get_tmr10ms() + 30;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x01:
|
||||
if (reusableBuffer.moduleSetup.pxx2.bindStep == BIND_RX_NAME_SELECTED) {
|
||||
if (memcmp(&reusableBuffer.moduleSetup.pxx2.bindCandidateReceiversNames[reusableBuffer.moduleSetup.pxx2.bindSelectedReceiverIndex], &frame[4], PXX2_LEN_RX_NAME) == 0) {
|
||||
TRACE("SET SLOT %d name", reusableBuffer.moduleSetup.pxx2.bindReceiverId);
|
||||
memcpy(g_model.receiverData[reusableBuffer.moduleSetup.pxx2.bindReceiverId].name, &frame[4], PXX2_LEN_RX_NAME);
|
||||
reusableBuffer.moduleSetup.pxx2.bindStep = BIND_WAIT;
|
||||
reusableBuffer.moduleSetup.pxx2.bindWaitTimeout = get_tmr10ms() + 30;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -711,8 +711,8 @@ const char STR_RX_NAME[] = TR_RX_NAME;
|
|||
|
||||
#if defined(PCBTARANIS) || defined(DSM2)
|
||||
const char STR_MODULE_RANGE[] = TR_MODULE_RANGE;
|
||||
const char STR_RECEIVER_OPTIONS[] = TR_RECEIVER_OPTIONS;
|
||||
const char STR_DEL_BUTTON[] = TR_DEL_BUTTON;
|
||||
const char STR_RECEIVER_OPTIONS[] = TR_RECEIVER_OPTIONS;
|
||||
const char STR_DEL_BUTTON[] = TR_DEL_BUTTON;
|
||||
#endif
|
||||
|
||||
#if defined(BLUETOOTH)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue