Merge pull request #746 from pkendall64/fix-baud-rate-defaults

Fix baud rate defaults
This commit is contained in:
Raphael Coeffic
2021-09-18 07:12:00 +02:00
committed by GitHub
3 changed files with 28 additions and 14 deletions
+2 -2
View File
@@ -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();
}
+24 -10
View File
@@ -95,21 +95,35 @@ 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_DEFAULT_INDEX 1
#define CROSSFIRE_STORE_TO_INDEX(v) \
(v + CROSSFIRE_DEFAULT_INDEX) % DIM(CROSSFIRE_BAUDRATES)
#define CROSSFIRE_INDEX_TO_STORE(i) \
(i + (DIM(CROSSFIRE_BAUDRATES) - CROSSFIRE_DEFAULT_INDEX)) \
% 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