Added RX options (PWM/PPM, iBUS/SBUS)
This commit is contained in:
@@ -485,6 +485,8 @@ PACK(struct ModuleData {
|
||||
uint8_t telemetry:1;
|
||||
uint16_t failsafeTimeout;
|
||||
uint8_t rx_freq[2];
|
||||
uint8_t mode:2;
|
||||
uint8_t reserved:6;
|
||||
uint16_t rxFreq()
|
||||
{
|
||||
return (uint16_t)rx_freq[0] | (((uint16_t)rx_freq[1]) << 8);
|
||||
|
||||
@@ -856,12 +856,51 @@ class ModuleWindow : public FormGroup {
|
||||
[](int v) { return v == FLYSKY_SUBTYPE_AFHDS2A; });
|
||||
}
|
||||
#endif
|
||||
// RX options:
|
||||
grid.nextLine();
|
||||
new StaticText(this, grid.getLabelSlot(true), STR_OPTIONS, 0,
|
||||
COLOR_THEME_PRIMARY1);
|
||||
|
||||
// PPM / PWM
|
||||
if (isModuleAFHDS2A(moduleIdx)) {
|
||||
new Choice(
|
||||
this, grid.getFieldSlot(2, 0), STR_FLYSKY_PULSE_PROTO, 0, 1,
|
||||
[=]() { return g_model.moduleData[moduleIdx].flysky.mode >> 1; },
|
||||
[=](int v) {
|
||||
g_model.moduleData[moduleIdx].flysky.mode =
|
||||
(g_model.moduleData[moduleIdx].flysky.mode & 1) |
|
||||
((v & 1) << 1);
|
||||
});
|
||||
} else {
|
||||
new Choice(
|
||||
this, grid.getFieldSlot(2, 0), STR_FLYSKY_PULSE_PROTO, 0, 1,
|
||||
[=]() { return g_model.moduleData[moduleIdx].afhds3.mode >> 1; },
|
||||
[=](int v) {
|
||||
g_model.moduleData[moduleIdx].afhds3.mode =
|
||||
(g_model.moduleData[moduleIdx].afhds3.mode & 1) |
|
||||
((v & 1) << 1);
|
||||
});
|
||||
}
|
||||
|
||||
// SBUS / iBUS
|
||||
if (isModuleAFHDS2A(moduleIdx)) {
|
||||
new Choice(
|
||||
this, grid.getFieldSlot(2, 1), STR_FLYSKY_SERIAL_PROTO, 0, 1,
|
||||
[=]() { return g_model.moduleData[moduleIdx].flysky.mode & 1; },
|
||||
[=](int v) {
|
||||
g_model.moduleData[moduleIdx].flysky.mode =
|
||||
(g_model.moduleData[moduleIdx].flysky.mode & 2) | (v & 1);
|
||||
});
|
||||
} else {
|
||||
new Choice(
|
||||
this, grid.getFieldSlot(2, 1), STR_FLYSKY_SERIAL_PROTO, 0, 1,
|
||||
[=]() { return g_model.moduleData[moduleIdx].afhds3.mode & 1; },
|
||||
[=](int v) {
|
||||
g_model.moduleData[moduleIdx].afhds3.mode =
|
||||
(g_model.moduleData[moduleIdx].afhds3.mode & 2) | (v & 1);
|
||||
});
|
||||
}
|
||||
|
||||
// TODO:
|
||||
// - options (currently taken from 'subType'...):
|
||||
// - PWM / PPM
|
||||
// - SBUS / iBUS
|
||||
|
||||
#if defined(AFHDS3)
|
||||
if (isModuleAFHDS3(moduleIdx)) {
|
||||
|
||||
|
||||
@@ -549,7 +549,7 @@ inline bool isSbus(uint8_t mode)
|
||||
|
||||
inline bool isPWM(uint8_t mode)
|
||||
{
|
||||
return mode < 2;
|
||||
return !(mode & 2);
|
||||
}
|
||||
|
||||
RUN_POWER PulsesData::getMaxRunPower() const
|
||||
@@ -604,7 +604,9 @@ bool PulsesData::syncSettings()
|
||||
putFrame(COMMAND::SEND_COMMAND, FRAME_TYPE::REQUEST_SET_EXPECT_DATA, data, sizeof(data));
|
||||
return true;
|
||||
}
|
||||
PULSE_MODE modelPulseMode = isPWM(moduleData->subType) ? PULSE_MODE::PWM_MODE : PULSE_MODE::PPM_MODE;
|
||||
PULSE_MODE modelPulseMode = isPWM(moduleData->afhds3.mode)
|
||||
? PULSE_MODE::PWM_MODE
|
||||
: PULSE_MODE::PPM_MODE;
|
||||
if (modelPulseMode != cfg.config.pulseMode) {
|
||||
cfg.config.pulseMode = modelPulseMode;
|
||||
TRACE("AFHDS3 PWM/PPM %d", modelPulseMode);
|
||||
@@ -613,7 +615,9 @@ bool PulsesData::syncSettings()
|
||||
return true;
|
||||
}
|
||||
|
||||
SERIAL_MODE modelSerialMode = isSbus(moduleData->subType) ? SERIAL_MODE::SBUS_MODE : SERIAL_MODE::IBUS;
|
||||
SERIAL_MODE modelSerialMode = isSbus(moduleData->afhds3.mode)
|
||||
? SERIAL_MODE::SBUS_MODE
|
||||
: SERIAL_MODE::IBUS;
|
||||
if (modelSerialMode != cfg.config.serialMode) {
|
||||
cfg.config.serialMode = modelSerialMode;
|
||||
TRACE("AFHDS3 IBUS/SBUS %d", modelSerialMode);
|
||||
@@ -660,9 +664,12 @@ void PulsesData::setConfigFromModel()
|
||||
cfg.config.emiStandard = EMI_STANDARD::FCC;
|
||||
cfg.config.telemetry = moduleData->afhds3.telemetry; //always use bidirectional mode
|
||||
cfg.config.pwmFreq = moduleData->afhds3.rxFreq();
|
||||
cfg.config.serialMode = isSbus(moduleData->subType) ? SERIAL_MODE::SBUS_MODE : SERIAL_MODE::IBUS;
|
||||
cfg.config.pulseMode = isPWM(moduleData->subType) ? PULSE_MODE::PWM_MODE : PULSE_MODE::PPM_MODE;
|
||||
//use max channels - because channel count can not be changed after bind
|
||||
cfg.config.serialMode = isSbus(moduleData->afhds3.mode)
|
||||
? SERIAL_MODE::SBUS_MODE
|
||||
: SERIAL_MODE::IBUS;
|
||||
cfg.config.pulseMode = isPWM(moduleData->afhds3.mode) ? PULSE_MODE::PWM_MODE
|
||||
: PULSE_MODE::PPM_MODE;
|
||||
// use max channels - because channel count can not be changed after bind
|
||||
cfg.config.channelCount = MAX_CHANNELS;
|
||||
cfg.config.failSafeTimout = moduleData->afhds3.failsafeTimeout;
|
||||
setFailSafe(cfg.config.failSafeMode);
|
||||
|
||||
@@ -97,7 +97,7 @@ enum FlySkyModuleState_E {
|
||||
STATE_SEND_CHANNELS = 19,
|
||||
};
|
||||
|
||||
#define AfhdsPwmMode (gRomData.mode < 2 ? FLYSKY_PWM : FLYSKY_PPM)
|
||||
#define AfhdsPwmMode (gRomData.mode & 2 ? FLYSKY_PPM : FLYSKY_PWM)
|
||||
#define AfhdsIbusMode (gRomData.mode & 1 ? FLYSKY_SBUS : FLYSKY_IBUS)
|
||||
|
||||
struct rf_info_t {
|
||||
|
||||
@@ -75,6 +75,8 @@ ISTR(R9M_PXX2_RF_PROTOCOLS);
|
||||
ISTR(DSM_PROTOCOLS);
|
||||
ISTR(AFHDS3_PROTOCOLS);
|
||||
ISTR(AFHDS3_POWERS);
|
||||
ISTR(FLYSKY_PULSE_PROTO);
|
||||
ISTR(FLYSKY_SERIAL_PROTO);
|
||||
ISTR(CURVE_TYPES);
|
||||
ISTR(VSENSORTYPES);
|
||||
ISTR(VFORMULAS);
|
||||
|
||||
@@ -187,6 +187,9 @@ extern const char STR_AFHDS3_RX_FREQ[];
|
||||
extern const char STR_AFHDS3_ACTUAL_POWER[];
|
||||
extern const char STR_AFHDS3_POWER_SOURCE[];
|
||||
|
||||
extern const char STR_FLYSKY_PULSE_PROTO[];
|
||||
extern const char STR_FLYSKY_SERIAL_PROTO[];
|
||||
|
||||
extern const char STR_CURVE_TYPES[];
|
||||
extern const char STR_VSENSORTYPES[];
|
||||
extern const char STR_VFORMULAS[];
|
||||
|
||||
@@ -176,6 +176,12 @@
|
||||
#define LEN_AFHDS3_POWERS "\006"
|
||||
#define TR_AFHDS3_POWERS "25 mW\0""100 mW""500 mW""1 W\0 ""2 W\0 "
|
||||
|
||||
#define LEN_FLYSKY_PULSE_PROTO "\x003"
|
||||
#define TR_FLYSKY_PULSE_PROTO "PWM""PPM"
|
||||
|
||||
#define LEN_FLYSKY_SERIAL_PROTO "\x004"
|
||||
#define TR_FLYSKY_SERIAL_PROTO "iBUS""SBUS"
|
||||
|
||||
#define LEN_PPM_POL "\001"
|
||||
#define TR_PPM_POL "-""+"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user