split get/set receivers settings
This commit is contained in:
@@ -1933,19 +1933,16 @@ void menuModelReceiverOptions(event_t event)
|
||||
drawReceiverName(FW * 13, 0, reusableBuffer.receiverSetup.receiverId);
|
||||
lcdInvertLine(0);
|
||||
|
||||
if (event == EVT_ENTRY || (reusableBuffer.receiverSetup.state == 0xFF && get_tmr10ms() >= reusableBuffer.receiverSetup.updateTime)) {
|
||||
if (event == EVT_ENTRY || (reusableBuffer.receiverSetup.state == RECEIVER_OK && get_tmr10ms() >= reusableBuffer.receiverSetup.updateTime)) {
|
||||
reusableBuffer.receiverSetup.updateTime = get_tmr10ms() + 500/*5s*/;
|
||||
reusableBuffer.receiverSetup.timeout = 0;
|
||||
reusableBuffer.receiverSetup.state = 0x00; // Get options
|
||||
moduleSettings[reusableBuffer.receiverSetup.moduleIdx].mode = MODULE_MODE_RECEIVER_SETTINGS;
|
||||
TRACE("GET polling");
|
||||
moduleSettings[reusableBuffer.receiverSetup.moduleIdx].mode = MODULE_MODE_RECEIVER_GET_SETTINGS;
|
||||
}
|
||||
|
||||
#if defined(SIMU)
|
||||
reusableBuffer.receiverSetup.state = 0xFF;
|
||||
#endif
|
||||
|
||||
if (reusableBuffer.receiverSetup.state != 0) {
|
||||
if (reusableBuffer.receiverSetup.state != RECEIVER_WAITING_RESPONSE) {
|
||||
bool changed = false;
|
||||
for (uint8_t k=0; k<LCD_LINES-1; k++) {
|
||||
uint8_t previousValue = 0;
|
||||
@@ -2002,10 +1999,8 @@ void menuModelReceiverOptions(event_t event)
|
||||
}
|
||||
}
|
||||
if (changed) {
|
||||
reusableBuffer.receiverSetup.state = 0x40; // Set options
|
||||
reusableBuffer.receiverSetup.timeout = 0;
|
||||
moduleSettings[reusableBuffer.receiverSetup.moduleIdx].mode = MODULE_MODE_RECEIVER_SETTINGS;
|
||||
TRACE("CHange detected, sending SET");
|
||||
moduleSettings[reusableBuffer.receiverSetup.moduleIdx].mode = MODULE_MODE_RECEIVER_SET_SETTINGS;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -74,7 +74,8 @@ enum ModuleSettingsMode
|
||||
MODULE_MODE_NORMAL,
|
||||
MODULE_MODE_SPECTRUM_ANALYSER,
|
||||
MODULE_MODE_GET_HARDWARE_INFO,
|
||||
MODULE_MODE_RECEIVER_SETTINGS,
|
||||
MODULE_MODE_RECEIVER_SET_SETTINGS,
|
||||
MODULE_MODE_RECEIVER_GET_SETTINGS,
|
||||
MODULE_MODE_BEEP_FIRST,
|
||||
MODULE_MODE_REGISTER = MODULE_MODE_BEEP_FIRST,
|
||||
MODULE_MODE_BIND,
|
||||
|
||||
+33
-22
@@ -142,29 +142,37 @@ void Pxx2Pulses::setupRegisterFrame(uint8_t module)
|
||||
}
|
||||
}
|
||||
|
||||
void Pxx2Pulses::setupReceiverSettingsFrame(uint8_t module)
|
||||
void Pxx2Pulses::setupReceiverSetSettingsFrame(uint8_t module)
|
||||
{
|
||||
if (reusableBuffer.receiverSetup.timeout) {
|
||||
if (get_tmr10ms() > reusableBuffer.receiverSetup.timeout) {
|
||||
reusableBuffer.receiverSetup.timeout = 0;
|
||||
reusableBuffer.receiverSetup.state = 0xFF;
|
||||
moduleSettings[module].mode = MODULE_MODE_NORMAL;
|
||||
}
|
||||
setupChannelsFrame(module);
|
||||
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_RX_SETTINGS);
|
||||
Pxx2Transport::addByte(0x40 + reusableBuffer.receiverSetup.receiverId);
|
||||
uint8_t flag1 = 0;
|
||||
if (reusableBuffer.receiverSetup.pwmRate)
|
||||
flag1 |= 0x10;
|
||||
Pxx2Transport::addByte(flag1);
|
||||
for (int i = 0; i < 24; i++) {
|
||||
Pxx2Transport::addByte(reusableBuffer.receiverSetup.channelMapping[i]);
|
||||
}
|
||||
else {
|
||||
TRACE("Frame is %d", reusableBuffer.receiverSetup.state);
|
||||
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_RX_SETTINGS);
|
||||
Pxx2Transport::addByte(reusableBuffer.receiverSetup.state + reusableBuffer.receiverSetup.receiverId);
|
||||
uint8_t flag1 = 0;
|
||||
if (reusableBuffer.receiverSetup.pwmRate)
|
||||
flag1 |= 0x10;
|
||||
Pxx2Transport::addByte(flag1);
|
||||
for (int i = 0; i < 24; i++) {
|
||||
Pxx2Transport::addByte(reusableBuffer.receiverSetup.channelMapping[i]);
|
||||
}
|
||||
reusableBuffer.receiverSetup.timeout = get_tmr10ms() + 20/*200ms*/;
|
||||
reusableBuffer.receiverSetup.timeout = get_tmr10ms() + 20/*200ms*/;
|
||||
reusableBuffer.receiverSetup.state = RECEIVER_WAITING_RESPONSE; // module will be confirming changes
|
||||
moduleSettings[module].mode = MODULE_MODE_NORMAL;
|
||||
}
|
||||
|
||||
|
||||
void Pxx2Pulses::setupReceiverGetSettingsFrame(uint8_t module)
|
||||
{
|
||||
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_RX_SETTINGS);
|
||||
Pxx2Transport::addByte(reusableBuffer.receiverSetup.state + reusableBuffer.receiverSetup.receiverId);
|
||||
uint8_t flag1 = 0;
|
||||
if (reusableBuffer.receiverSetup.pwmRate)
|
||||
flag1 |= 0x10;
|
||||
Pxx2Transport::addByte(flag1);
|
||||
for (int i = 0; i < 24; i++) {
|
||||
Pxx2Transport::addByte(reusableBuffer.receiverSetup.channelMapping[i]);
|
||||
}
|
||||
reusableBuffer.receiverSetup.timeout = get_tmr10ms() + 20/*200ms*/;
|
||||
reusableBuffer.receiverSetup.state = RECEIVER_WAITING_RESPONSE;
|
||||
moduleSettings[module].mode = MODULE_MODE_NORMAL;
|
||||
}
|
||||
|
||||
void Pxx2Pulses::setupBindFrame(uint8_t module)
|
||||
@@ -241,8 +249,11 @@ void Pxx2Pulses::setupFrame(uint8_t module)
|
||||
case MODULE_MODE_GET_HARDWARE_INFO:
|
||||
setupHardwareInfoFrame(module);
|
||||
break;
|
||||
case MODULE_MODE_RECEIVER_SETTINGS:
|
||||
setupReceiverSettingsFrame(module);
|
||||
case MODULE_MODE_RECEIVER_GET_SETTINGS:
|
||||
setupReceiverGetSettingsFrame(module);
|
||||
break;
|
||||
case MODULE_MODE_RECEIVER_SET_SETTINGS:
|
||||
setupReceiverSetSettingsFrame(module);
|
||||
break;
|
||||
case MODULE_MODE_REGISTER:
|
||||
setupRegisterFrame(module);
|
||||
|
||||
@@ -59,6 +59,10 @@ enum PXX2BindSteps {
|
||||
BIND_OK
|
||||
};
|
||||
|
||||
enum PXX2ReceiverStatus {
|
||||
RECEIVER_WAITING_RESPONSE,
|
||||
RECEIVER_OK
|
||||
};
|
||||
extern ModuleFifo intmoduleFifo;
|
||||
extern ModuleFifo extmoduleFifo;
|
||||
|
||||
@@ -112,7 +116,9 @@ class Pxx2Pulses: public PxxPulses<Pxx2Transport> {
|
||||
|
||||
void setupShareMode(uint8_t module);
|
||||
|
||||
void setupReceiverSettingsFrame(uint8_t module);
|
||||
void setupReceiverSetSettingsFrame(uint8_t module);
|
||||
|
||||
void setupReceiverGetSettingsFrame(uint8_t module);
|
||||
|
||||
void setupChannelsFrame(uint8_t module);
|
||||
|
||||
|
||||
@@ -62,20 +62,16 @@ void processGetHardwareInfoFrame(uint8_t module, uint8_t * frame)
|
||||
|
||||
void processReceiverSettingsFrame(uint8_t module, uint8_t * frame)
|
||||
{
|
||||
if (moduleSettings[module].mode != MODULE_MODE_RECEIVER_SETTINGS) {
|
||||
return;
|
||||
}
|
||||
TRACE("Processing Frame");
|
||||
if (reusableBuffer.receiverSetup.state == 0x00) {
|
||||
TRACE("Frame is GET");
|
||||
if (reusableBuffer.receiverSetup.state == RECEIVER_WAITING_RESPONSE) {
|
||||
for (uint8_t pin = 0; pin < 24; pin++) {
|
||||
reusableBuffer.receiverSetup.channelMapping[pin] = frame[5 + pin];
|
||||
}
|
||||
reusableBuffer.receiverSetup.pwmRate = frame[4] & 0x30;
|
||||
reusableBuffer.receiverSetup.state = RECEIVER_OK;
|
||||
reusableBuffer.receiverSetup.timeout = 0;
|
||||
moduleSettings[module].mode = MODULE_MODE_NORMAL;
|
||||
}
|
||||
reusableBuffer.receiverSetup.state = 0xFF;
|
||||
moduleSettings[module].mode = MODULE_MODE_NORMAL;
|
||||
}
|
||||
}
|
||||
|
||||
void processRegisterFrame(uint8_t module, uint8_t * frame)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user