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

GET RX SETTINGS now has a variable length. Still KO here

This commit is contained in:
Bertrand Songis 2019-03-11 16:39:40 +01:00
parent bfe5900017
commit 420b7c3ccc
5 changed files with 21 additions and 48 deletions

View file

@ -1928,14 +1928,13 @@ void menuModelReceiverOptions(event_t event)
SUBMENU_NOTITLE(ITEM_RECEIVER_PINMAP_FIRST + sentModuleChannels(g_moduleIdx), {IF_TELEM_DISPLAYED(0), IF_PWM_RATE_DISPLAYED(0)});
int8_t sub = menuVerticalPosition;
lcdDrawTextAlignedLeft(0, STR_RECEIVER_OPTIONS);
drawReceiverName(FW * 13, 0, reusableBuffer.receiverSetup.receiverId);
lcdInvertLine(0);
if (event == EVT_ENTRY || (reusableBuffer.receiverSetup.state == RECEIVER_OK && get_tmr10ms() >= reusableBuffer.receiverSetup.updateTime)) {
reusableBuffer.receiverSetup.updateTime = get_tmr10ms() + 500/*5s*/;
moduleSettings[reusableBuffer.receiverSetup.moduleIdx].mode = MODULE_MODE_RECEIVER_GET_SETTINGS;
moduleSettings[reusableBuffer.receiverSetup.moduleIdx].mode = MODULE_MODE_RECEIVER_SETTINGS;
}
#if defined(SIMU)
@ -2005,8 +2004,7 @@ void menuModelReceiverOptions(event_t event)
}
if (changed) {
reusableBuffer.receiverSetup.timeout = 0;
moduleSettings[reusableBuffer.receiverSetup.moduleIdx].mode = MODULE_MODE_RECEIVER_SET_SETTINGS;
TRACE("Change detected");
moduleSettings[reusableBuffer.receiverSetup.moduleIdx].mode = MODULE_MODE_RECEIVER_SETTINGS;
}
}
else {

View file

@ -74,8 +74,7 @@ enum ModuleSettingsMode
MODULE_MODE_NORMAL,
MODULE_MODE_SPECTRUM_ANALYSER,
MODULE_MODE_GET_HARDWARE_INFO,
MODULE_MODE_RECEIVER_SET_SETTINGS,
MODULE_MODE_RECEIVER_GET_SETTINGS,
MODULE_MODE_RECEIVER_SETTINGS,
MODULE_MODE_BEEP_FIRST,
MODULE_MODE_REGISTER = MODULE_MODE_BEEP_FIRST,
MODULE_MODE_BIND,

View file

@ -145,34 +145,17 @@ void Pxx2Pulses::setupRegisterFrame(uint8_t module)
}
}
void Pxx2Pulses::setupReceiverSetSettingsFrame(uint8_t module)
void Pxx2Pulses::setupReceiverSettingsFrame(uint8_t module)
{
TRACE("Sending SET frame");
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 |= PXX2_RECV_OPTION_MASK_FASTPWM;
if (reusableBuffer.receiverSetup.telemetryEnabled)
flag1 |= PXX2_RECV_OPTION_MASK_TELEMETRY;
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; // module will be confirming changes
moduleSettings[module].mode = MODULE_MODE_NORMAL;
}
void Pxx2Pulses::setupReceiverGetSettingsFrame(uint8_t module)
{
TRACE("Sending GET frame");
addFrameType(PXX2_TYPE_C_MODULE, PXX2_TYPE_ID_RX_SETTINGS);
Pxx2Transport::addByte(reusableBuffer.receiverSetup.state + reusableBuffer.receiverSetup.receiverId);
Pxx2Transport::addByte(0x00);
for (int i = 0; i < 24; i++) {
Pxx2Transport::addByte(0x00);
uint8_t flag1 = 0;
if (reusableBuffer.receiverSetup.pwmRate)
flag1 |= PXX2_RX_SETTINGS_FLAG1_FASTPWM;
Pxx2Transport::addByte(flag1);
uint8_t channelsCount = sentModuleChannels(module);
for (int i = 0; i < channelsCount; i++) {
Pxx2Transport::addByte(reusableBuffer.receiverSetup.channelMapping[i]);
}
reusableBuffer.receiverSetup.timeout = get_tmr10ms() + 20/*200ms*/;
reusableBuffer.receiverSetup.state = RECEIVER_WAITING_RESPONSE;
@ -253,11 +236,8 @@ void Pxx2Pulses::setupFrame(uint8_t module)
case MODULE_MODE_GET_HARDWARE_INFO:
setupHardwareInfoFrame(module);
break;
case MODULE_MODE_RECEIVER_GET_SETTINGS:
setupReceiverGetSettingsFrame(module);
break;
case MODULE_MODE_RECEIVER_SET_SETTINGS:
setupReceiverSetSettingsFrame(module);
case MODULE_MODE_RECEIVER_SETTINGS:
setupReceiverSettingsFrame(module);
break;
case MODULE_MODE_REGISTER:
setupRegisterFrame(module);

View file

@ -43,11 +43,9 @@
#define PXX2_CHANNELS_FLAG0_FAILSAFE (1 << 6)
#define PXX2_CHANNELS_FLAG0_RANGECHECK (1 << 7)
#define PXX2_RECV_OPTION_MASK_FASTPWM 0x10
#define PXX2_RECV_OPTION_MASK_TELEMETRY 0x00 // Todo : update when defined
#define PXX2_RX_SETTINGS_FLAG1_FASTPWM (1 << 4)
#define PXX2_RECV_OPTION_MASK_TELEMETRY 0x00 // TODO : update when defined
const uint8_t DEFAULT_CHANNEL_MAPPING[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF};
const uint8_t CH9TO16_CHANNEL_MAPPING[] = {0x89, 0xAB, 0xCD, 0xEF, 0x01, 0x23, 0x45, 0x67};
enum PXX2RegisterSteps {
REGISTER_START,
@ -120,9 +118,7 @@ class Pxx2Pulses: public PxxPulses<Pxx2Transport> {
void setupShareMode(uint8_t module);
void setupReceiverSetSettingsFrame(uint8_t module);
void setupReceiverGetSettingsFrame(uint8_t module);
void setupReceiverSettingsFrame(uint8_t module);
void setupChannelsFrame(uint8_t module);

View file

@ -62,14 +62,14 @@ void processGetHardwareInfoFrame(uint8_t module, uint8_t * frame)
void processReceiverSettingsFrame(uint8_t module, uint8_t * frame)
{
TRACE("Got Option frame");
for (uint8_t pin = 0; pin < 24; pin++) {
uint8_t channelsCount = sentModuleChannels(module);
for (uint8_t pin = 0; pin < channelsCount; pin++) {
reusableBuffer.receiverSetup.channelMapping[pin] = frame[5 + pin];
}
if(frame[4] & PXX2_RECV_OPTION_MASK_FASTPWM)
if (frame[4] & PXX2_RX_SETTINGS_FLAG1_FASTPWM)
reusableBuffer.receiverSetup.pwmRate = 1;
if(frame[4] & PXX2_RECV_OPTION_MASK_TELEMETRY)
reusableBuffer.receiverSetup.telemetryEnabled = 1;
// if (frame[4] & PXX2_RECV_OPTION_MASK_TELEMETRY)
// reusableBuffer.receiverSetup.telemetryEnabled = 1;
reusableBuffer.receiverSetup.state = RECEIVER_OK;
reusableBuffer.receiverSetup.timeout = 0;
moduleSettings[module].mode = MODULE_MODE_NORMAL;