RX SET SETTINGS fix
This commit is contained in:
@@ -1376,11 +1376,13 @@ void menuModelSetup(event_t event)
|
||||
}
|
||||
}
|
||||
else {
|
||||
// for now we will send the SHARE frame indefinitely (until the user manually stops it)
|
||||
if (event == EVT_KEY_BREAK(KEY_ENTER)) {
|
||||
moduleSettings[moduleIdx].mode = MODULE_MODE_SHARE;
|
||||
moduleSettings[moduleIdx].mode ^= MODULE_MODE_SHARE;
|
||||
reusableBuffer.moduleSetup.pxx2.shareReceiverIndex = receiverIdx;
|
||||
s_editMode = 0;
|
||||
POPUP_INFORMATION("Receiver shared");
|
||||
}
|
||||
else if (event == EVT_KEY_BREAK(KEY_EXIT)) {
|
||||
moduleSettings[moduleIdx].mode &= ~MODULE_MODE_SHARE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1947,8 +1949,6 @@ enum MenuModelReceiverOptions {
|
||||
};
|
||||
|
||||
#define RECEIVER_OPTIONS_2ND_COLUMN 80
|
||||
#define IF_TELEM_DISPLAYED(x) (g_model.moduleData[g_moduleIdx].pxx.receiver_telem_off ? (uint8_t)(x) : HIDDEN_ROW) //Todo need capabilities
|
||||
#define IF_PWM_RATE_DISPLAYED(x) (g_model.moduleData[g_moduleIdx].pxx.receiver_telem_off ? (uint8_t)(x) : HIDDEN_ROW) //Todo need capabilities
|
||||
|
||||
void menuModelReceiverOptions(event_t event)
|
||||
{
|
||||
@@ -1967,16 +1967,15 @@ void menuModelReceiverOptions(event_t event)
|
||||
drawReceiverName(FW * 13, 0, reusableBuffer.receiverSetup.receiverId);
|
||||
lcdInvertLine(0);
|
||||
|
||||
if (event == EVT_ENTRY || (reusableBuffer.receiverSetup.state == RECEIVER_SETTINGS_READ && get_tmr10ms() >= reusableBuffer.receiverSetup.updateTime)) {
|
||||
reusableBuffer.receiverSetup.updateTime = get_tmr10ms() + 500/*5s*/;
|
||||
if (event == EVT_ENTRY) {
|
||||
moduleSettings[g_moduleIdx].mode = MODULE_MODE_RECEIVER_SETTINGS;
|
||||
}
|
||||
|
||||
if (!s_editMode && reusableBuffer.receiverSetup.dirty && (reusableBuffer.receiverSetup.state != RECEIVER_SETTINGS_WRITE || get_tmr10ms() >= reusableBuffer.receiverSetup.updateTime)) {
|
||||
if (!s_editMode && reusableBuffer.receiverSetup.dirty && reusableBuffer.receiverSetup.state == RECEIVER_SETTINGS_OK) {
|
||||
reusableBuffer.receiverSetup.state = RECEIVER_SETTINGS_WRITE;
|
||||
reusableBuffer.receiverSetup.dirty = 0;
|
||||
reusableBuffer.receiverSetup.timeout = 0;
|
||||
reusableBuffer.receiverSetup.updateTime = get_tmr10ms() + 100/*1s*/;
|
||||
reusableBuffer.receiverSetup.dirtyTimeout = get_tmr10ms() + 300/*3s*/;
|
||||
moduleSettings[g_moduleIdx].mode = MODULE_MODE_RECEIVER_SETTINGS;
|
||||
}
|
||||
|
||||
@@ -1984,7 +1983,7 @@ void menuModelReceiverOptions(event_t event)
|
||||
reusableBuffer.receiverSetup.state = 0xFF;
|
||||
#endif
|
||||
|
||||
if (reusableBuffer.receiverSetup.state > RECEIVER_SETTINGS_READ) {
|
||||
if (reusableBuffer.receiverSetup.state == RECEIVER_SETTINGS_OK || get_tmr10ms() < reusableBuffer.receiverSetup.dirtyTimeout) {
|
||||
for (uint8_t k=0; k<LCD_LINES-1; k++) {
|
||||
coord_t y = MENU_HEADER_HEIGHT + 1 + k*FH;
|
||||
uint8_t i = k + menuVerticalOffset;
|
||||
|
||||
@@ -1144,6 +1144,7 @@ union ReusableBuffer
|
||||
struct {
|
||||
uint8_t state; // 0x00 = READ 0x40 = WRITE
|
||||
tmr10ms_t timeout;
|
||||
tmr10ms_t dirtyTimeout;
|
||||
tmr10ms_t updateTime;
|
||||
uint8_t receiverId;
|
||||
uint8_t channelMapping[24];
|
||||
|
||||
@@ -148,16 +148,12 @@ void Pxx2Pulses::setupRegisterFrame(uint8_t module)
|
||||
|
||||
void Pxx2Pulses::setupReceiverSettingsFrame(uint8_t module)
|
||||
{
|
||||
if (reusableBuffer.receiverSetup.timeout) {
|
||||
if (get_tmr10ms() > reusableBuffer.receiverSetup.timeout) {
|
||||
reusableBuffer.receiverSetup.timeout = 0;
|
||||
moduleSettings[module].mode = MODULE_MODE_NORMAL;
|
||||
}
|
||||
setupChannelsFrame(module);
|
||||
}
|
||||
else {
|
||||
if (get_tmr10ms() > reusableBuffer.receiverSetup.timeout) {
|
||||
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_RX_SETTINGS);
|
||||
Pxx2Transport::addByte(reusableBuffer.receiverSetup.state + reusableBuffer.receiverSetup.receiverId);
|
||||
uint8_t flag0 = reusableBuffer.receiverSetup.receiverId;
|
||||
if (reusableBuffer.receiverSetup.state == RECEIVER_SETTINGS_WRITE)
|
||||
flag0 |= PXX2_RX_SETTINGS_FLAG0_WRITE;
|
||||
Pxx2Transport::addByte(flag0);
|
||||
uint8_t flag1 = 0;
|
||||
if (reusableBuffer.receiverSetup.pwmRate)
|
||||
flag1 |= PXX2_RX_SETTINGS_FLAG1_FASTPWM;
|
||||
@@ -166,7 +162,10 @@ void Pxx2Pulses::setupReceiverSettingsFrame(uint8_t module)
|
||||
for (int i = 0; i < channelsCount; i++) {
|
||||
Pxx2Transport::addByte(reusableBuffer.receiverSetup.channelMapping[i]);
|
||||
}
|
||||
reusableBuffer.receiverSetup.timeout = get_tmr10ms() + 30/*300ms*/;
|
||||
reusableBuffer.receiverSetup.timeout = get_tmr10ms() + 30/*next try in 300ms*/;
|
||||
}
|
||||
else {
|
||||
setupChannelsFrame(module);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -224,10 +223,7 @@ void Pxx2Pulses::setupSpectrumAnalyser(uint8_t module)
|
||||
void Pxx2Pulses::setupShareMode(uint8_t module)
|
||||
{
|
||||
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_SHARE);
|
||||
|
||||
Pxx2Transport::addByte(reusableBuffer.moduleSetup.pxx2.shareReceiverIndex);
|
||||
|
||||
moduleSettings[module].mode = MODULE_MODE_NORMAL;
|
||||
}
|
||||
|
||||
void Pxx2Pulses::setupFrame(uint8_t module)
|
||||
|
||||
@@ -63,9 +63,9 @@ enum PXX2BindSteps {
|
||||
};
|
||||
|
||||
enum PXX2ReceiverStatus {
|
||||
RECEIVER_SETTINGS_READ = 0x00,
|
||||
RECEIVER_SETTINGS_OK,
|
||||
RECEIVER_SETTINGS_WRITE = PXX2_RX_SETTINGS_FLAG0_WRITE
|
||||
RECEIVER_SETTINGS_READ,
|
||||
RECEIVER_SETTINGS_WRITE,
|
||||
RECEIVER_SETTINGS_OK
|
||||
};
|
||||
|
||||
extern ModuleFifo intmoduleFifo;
|
||||
|
||||
Reference in New Issue
Block a user