Fix baud rate defaults
Default value 0 is 400k baud, unless SPORT_MAX_BAUDRATE < 400000 in which case default value 0 is 115k baud.
This commit is contained in:
@@ -325,10 +325,10 @@ void RadioHardwarePage::build(FormWindow * window)
|
||||
new StaticText(window, grid.getLabelSlot(), STR_MAXBAUDRATE, 0, COLOR_THEME_PRIMARY1);
|
||||
new Choice(window, grid.getFieldSlot(1,0), STR_CRSF_BAUDRATE, 0, DIM(CROSSFIRE_BAUDRATES) - 1,
|
||||
[=]() -> int {
|
||||
return DIM(CROSSFIRE_BAUDRATES) - 1 - g_eeGeneral.telemetryBaudrate;
|
||||
return CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.telemetryBaudrate);
|
||||
},
|
||||
[=](int newValue) {
|
||||
g_eeGeneral.telemetryBaudrate = DIM(CROSSFIRE_BAUDRATES) - 1 - newValue;
|
||||
g_eeGeneral.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(newValue);
|
||||
SET_DIRTY();
|
||||
restartExternalModule();
|
||||
});
|
||||
|
||||
@@ -578,9 +578,9 @@ void menuRadioHardware(event_t event)
|
||||
#if (defined(CROSSFIRE) || defined(GHOST))
|
||||
case ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE:
|
||||
lcdDrawTextAlignedLeft(y, STR_MAXBAUDRATE);
|
||||
lcdDrawNumber(HW_SETTINGS_COLUMN2, y, CROSSFIRE_BAUDRATES[g_eeGeneral.telemetryBaudrate], attr|LEFT);
|
||||
lcdDrawNumber(HW_SETTINGS_COLUMN2, y, CROSSFIRE_BAUDRATE, attr|LEFT);
|
||||
if (attr) {
|
||||
g_eeGeneral.telemetryBaudrate = DIM(CROSSFIRE_BAUDRATES) - 1 - checkIncDecModel(event, DIM(CROSSFIRE_BAUDRATES) - 1 - g_eeGeneral.telemetryBaudrate, 0, DIM(CROSSFIRE_BAUDRATES) - 1);
|
||||
g_eeGeneral.telemetryBaudrate = CROSSFIRE_INDEX_TO_STORE(checkIncDecModel(event, CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.telemetryBaudrate), 0, DIM(CROSSFIRE_BAUDRATES) - 1));
|
||||
if (checkIncDec_Ret) {
|
||||
restartExternalModule();
|
||||
}
|
||||
|
||||
@@ -95,21 +95,31 @@ void crossfireSetDefault(int index, uint8_t id, uint8_t subId);
|
||||
uint8_t createCrossfireModelIDFrame(uint8_t * frame);
|
||||
|
||||
const uint32_t CROSSFIRE_BAUDRATES[] = {
|
||||
3750000,
|
||||
1870000,
|
||||
921600,
|
||||
400000,
|
||||
115200,
|
||||
400000,
|
||||
921600,
|
||||
1870000,
|
||||
3750000,
|
||||
};
|
||||
const uint8_t CROSSFIRE_FRAME_PERIODS[] = {
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
16,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
};
|
||||
#define CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[g_eeGeneral.telemetryBaudrate]
|
||||
#define CROSSFIRE_PERIOD (CROSSFIRE_FRAME_PERIODS[g_eeGeneral.telemetryBaudrate] * 1000)
|
||||
#if SPORT_MAX_BAUDRATE < 400000
|
||||
// index 0 (115200) is the default 0 value
|
||||
#define CROSSFIRE_STORE_TO_INDEX(v) v
|
||||
#define CROSSFIRE_INDEX_TO_STORE(i) i
|
||||
#else
|
||||
// index 1 (400000) is the default 0 value
|
||||
#define CROSSFIRE_STORE_TO_INDEX(v) (v + 1) % DIM(CROSSFIRE_BAUDRATES)
|
||||
#define CROSSFIRE_INDEX_TO_STORE(i) (i + 4) % DIM(CROSSFIRE_BAUDRATES)
|
||||
#endif
|
||||
|
||||
#define CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.telemetryBaudrate)]
|
||||
#define CROSSFIRE_PERIOD (CROSSFIRE_FRAME_PERIODS[CROSSFIRE_STORE_TO_INDEX(g_eeGeneral.telemetryBaudrate)] * 1000)
|
||||
|
||||
#define CROSSFIRE_TELEM_MIRROR_BAUDRATE 115200
|
||||
|
||||
|
||||
Reference in New Issue
Block a user