Transition to new per-port & per-function baud rate configuration.

This commit is contained in:
Dominic Clifton 2015-02-27 01:05:37 +00:00
parent b6509dd1eb
commit 1a8500c768
13 changed files with 97 additions and 35 deletions

View File

@ -62,7 +62,7 @@
#ifdef BLACKBOX #ifdef BLACKBOX
#define BLACKBOX_BAUDRATE 115200 #define BLACKBOX_BAUDRATE BAUD_115200
#define BLACKBOX_INITIAL_PORT_MODE MODE_TX #define BLACKBOX_INITIAL_PORT_MODE MODE_TX
// How many bytes should we transmit per loop iteration? // How many bytes should we transmit per loop iteration?

View File

@ -256,10 +256,13 @@ void resetSerialConfig(serialConfig_t *serialConfig)
for (index = 0; index < SERIAL_PORT_COUNT; index++) { for (index = 0; index < SERIAL_PORT_COUNT; index++) {
serialConfig->portConfigs[index].identifier = serialPortIdentifiers[index]; serialConfig->portConfigs[index].identifier = serialPortIdentifiers[index];
serialConfig->portConfigs[index].msp_baudrateIndex = BAUD_115200;
serialConfig->portConfigs[index].gps_baudrateIndex = BAUD_57600;
serialConfig->portConfigs[index].telemetry_baudrateIndex = BAUD_AUTO;
serialConfig->portConfigs[index].blackbox_baudrateIndex = BAUD_115200;
} }
serialConfig->portConfigs[0].functionMask = FUNCTION_MSP; serialConfig->portConfigs[0].functionMask = FUNCTION_MSP;
serialConfig->portConfigs[0].baudrate = 115200;
#ifdef CC3D #ifdef CC3D
// Temporary workaround for CC3D non-functional VCP when using OpenPilot bootloader. // Temporary workaround for CC3D non-functional VCP when using OpenPilot bootloader.

View File

@ -100,19 +100,19 @@ static serialPort_t *gpsPort;
typedef struct gpsInitData_t { typedef struct gpsInitData_t {
uint8_t index; uint8_t index;
uint32_t baudrate; uint8_t baudrateIndex; // see baudRate_e
const char *ubx; const char *ubx;
const char *mtk; const char *mtk;
} gpsInitData_t; } gpsInitData_t;
// NMEA will cycle through these until valid data is received // NMEA will cycle through these until valid data is received
static const gpsInitData_t gpsInitData[] = { static const gpsInitData_t gpsInitData[] = {
{ GPS_BAUDRATE_115200, 115200, "$PUBX,41,1,0003,0001,115200,0*1E\r\n", "$PMTK251,115200*1F\r\n" }, { GPS_BAUDRATE_115200, BAUD_115200, "$PUBX,41,1,0003,0001,115200,0*1E\r\n", "$PMTK251,115200*1F\r\n" },
{ GPS_BAUDRATE_57600, 57600, "$PUBX,41,1,0003,0001,57600,0*2D\r\n", "$PMTK251,57600*2C\r\n" }, { GPS_BAUDRATE_57600, BAUD_57600, "$PUBX,41,1,0003,0001,57600,0*2D\r\n", "$PMTK251,57600*2C\r\n" },
{ GPS_BAUDRATE_38400, 38400, "$PUBX,41,1,0003,0001,38400,0*26\r\n", "$PMTK251,38400*27\r\n" }, { GPS_BAUDRATE_38400, BAUD_38400, "$PUBX,41,1,0003,0001,38400,0*26\r\n", "$PMTK251,38400*27\r\n" },
{ GPS_BAUDRATE_19200, 19200, "$PUBX,41,1,0003,0001,19200,0*23\r\n", "$PMTK251,19200*22\r\n" }, { GPS_BAUDRATE_19200, BAUD_19200, "$PUBX,41,1,0003,0001,19200,0*23\r\n", "$PMTK251,19200*22\r\n" },
// 9600 is not enough for 5Hz updates - leave for compatibility to dumb NMEA that only runs at this speed // 9600 is not enough for 5Hz updates - leave for compatibility to dumb NMEA that only runs at this speed
{ GPS_BAUDRATE_9600, 9600, "$PUBX,41,1,0003,0001,9600,0*16\r\n", "" } { GPS_BAUDRATE_9600, BAUD_9600, "$PUBX,41,1,0003,0001,9600,0*16\r\n", "" }
}; };
#define GPS_INIT_DATA_ENTRY_COUNT (sizeof(gpsInitData) / sizeof(gpsInitData[0])) #define GPS_INIT_DATA_ENTRY_COUNT (sizeof(gpsInitData) / sizeof(gpsInitData[0]))
@ -226,7 +226,7 @@ void gpsInit(serialConfig_t *initialSerialConfig, gpsConfig_t *initialGpsConfig)
return; return;
} }
while (gpsInitData[gpsData.baudrateIndex].baudrate != gpsPortConfig->baudrate) { while (gpsInitData[gpsData.baudrateIndex].baudrateIndex != gpsPortConfig->gps_baudrateIndex) {
gpsData.baudrateIndex++; gpsData.baudrateIndex++;
if (gpsData.baudrateIndex >= GPS_INIT_DATA_ENTRY_COUNT) { if (gpsData.baudrateIndex >= GPS_INIT_DATA_ENTRY_COUNT) {
gpsData.baudrateIndex = DEFAULT_BAUD_RATE_INDEX; gpsData.baudrateIndex = DEFAULT_BAUD_RATE_INDEX;
@ -240,7 +240,7 @@ void gpsInit(serialConfig_t *initialSerialConfig, gpsConfig_t *initialGpsConfig)
mode &= ~MODE_TX; mode &= ~MODE_TX;
// no callback - buffer will be consumed in gpsThread() // no callback - buffer will be consumed in gpsThread()
gpsPort = openSerialPort(gpsPortConfig->identifier, FUNCTION_GPS, NULL, gpsInitData[gpsData.baudrateIndex].baudrate, mode, SERIAL_NOT_INVERTED); gpsPort = openSerialPort(gpsPortConfig->identifier, FUNCTION_GPS, NULL, gpsInitData[gpsData.baudrateIndex].baudrateIndex, mode, SERIAL_NOT_INVERTED);
if (!gpsPort) { if (!gpsPort) {
featureClear(FEATURE_GPS); featureClear(FEATURE_GPS);
return; return;
@ -255,7 +255,7 @@ void gpsInitNmea(void)
switch(gpsData.state) { switch(gpsData.state) {
case GPS_INITIALIZING: case GPS_INITIALIZING:
case GPS_CHANGE_BAUD: case GPS_CHANGE_BAUD:
serialSetBaudRate(gpsPort, gpsInitData[gpsData.baudrateIndex].baudrate); serialSetBaudRate(gpsPort, baudRates[gpsInitData[gpsData.baudrateIndex].baudrateIndex]);
gpsSetState(GPS_RECEIVING_DATA); gpsSetState(GPS_RECEIVING_DATA);
break; break;
} }
@ -279,13 +279,13 @@ void gpsInitUblox(void)
if (gpsData.state_position < GPS_INIT_ENTRIES) { if (gpsData.state_position < GPS_INIT_ENTRIES) {
// try different speed to INIT // try different speed to INIT
uint32_t newBaudRate = gpsInitData[gpsData.state_position].baudrate; baudRate_e newBaudRateIndex = gpsInitData[gpsData.state_position].baudrateIndex;
gpsData.state_ts = now; gpsData.state_ts = now;
if (serialGetBaudRate(gpsPort) != newBaudRate) { if (lookupBaudRateIndex(serialGetBaudRate(gpsPort)) != newBaudRateIndex) {
// change the rate if needed and wait a little // change the rate if needed and wait a little
serialSetBaudRate(gpsPort, newBaudRate); serialSetBaudRate(gpsPort, baudRates[newBaudRateIndex]);
return; return;
} }
@ -299,7 +299,7 @@ void gpsInitUblox(void)
} }
break; break;
case GPS_CHANGE_BAUD: case GPS_CHANGE_BAUD:
serialSetBaudRate(gpsPort, gpsInitData[gpsData.baudrateIndex].baudrate); serialSetBaudRate(gpsPort, baudRates[gpsInitData[gpsData.baudrateIndex].baudrateIndex]);
gpsSetState(GPS_CONFIGURE); gpsSetState(GPS_CONFIGURE);
break; break;
case GPS_CONFIGURE: case GPS_CONFIGURE:

View File

@ -68,6 +68,22 @@ serialPortIdentifier_e serialPortIdentifiers[SERIAL_PORT_COUNT] = {
#endif #endif
}; };
uint32_t baudRates[] = {0, 9600, 19200, 38400, 57600, 115200}; // see baudRate_e
#define BAUD_RATE_COUNT (sizeof(baudRates) / sizeof(baudRates[0]))
baudRate_e lookupBaudRateIndex(uint32_t baudRate)
{
uint8_t index;
for (index = 0; index < BAUD_RATE_COUNT; index++) {
if (baudRates[index] == baudRate) {
return index;
}
}
return 0;
}
static serialPortUsage_t *findSerialPortUsageByIdentifier(serialPortIdentifier_e identifier) static serialPortUsage_t *findSerialPortUsageByIdentifier(serialPortIdentifier_e identifier)
{ {
uint8_t index; uint8_t index;
@ -220,7 +236,7 @@ serialPort_t *openSerialPort(
serialPortIdentifier_e identifier, serialPortIdentifier_e identifier,
serialPortFunction_e function, serialPortFunction_e function,
serialReceiveCallbackPtr callback, serialReceiveCallbackPtr callback,
uint32_t baudRate, baudRate_e baudRateIndex,
portMode_t mode, portMode_t mode,
serialInversion_e inversion) serialInversion_e inversion)
{ {
@ -232,6 +248,8 @@ serialPort_t *openSerialPort(
serialPort_t *serialPort = NULL; serialPort_t *serialPort = NULL;
uint32_t baudRate = baudRates[baudRateIndex];
switch(identifier) { switch(identifier) {
#ifdef USE_VCP #ifdef USE_VCP
case SERIAL_PORT_USB_VCP: case SERIAL_PORT_USB_VCP:

View File

@ -35,6 +35,17 @@ typedef enum {
FUNCTION_BLACKBOX = (1 << 7) FUNCTION_BLACKBOX = (1 << 7)
} serialPortFunction_e; } serialPortFunction_e;
typedef enum {
BAUD_AUTO = 0,
BAUD_9600,
BAUD_19200,
BAUD_38400,
BAUD_57600,
BAUD_115200
} baudRate_e;
extern uint32_t baudRates[];
// serial port identifiers are now fixed, these values are used by MSP commands. // serial port identifiers are now fixed, these values are used by MSP commands.
typedef enum { typedef enum {
SERIAL_PORT_USART1 = 0, SERIAL_PORT_USART1 = 0,
@ -64,11 +75,13 @@ serialPort_t *findNextSharedSerialPort(uint16_t functionMask, serialPortFunction
// //
// configuration // configuration
// //
typedef struct serialPortConfig_s { typedef struct serialPortConfig_s {
serialPortIdentifier_e identifier; serialPortIdentifier_e identifier;
uint16_t functionMask; uint16_t functionMask;
uint32_t baudrate; // not used for all functions, e.g. HoTT only works at 19200. uint8_t msp_baudrateIndex;
uint8_t gps_baudrateIndex;
uint8_t blackbox_baudrateIndex;
uint8_t telemetry_baudrateIndex; // not used for all telemetry systems, e.g. HoTT only works at 19200.
} serialPortConfig_t; } serialPortConfig_t;
typedef struct serialConfig_s { typedef struct serialConfig_s {
@ -97,7 +110,7 @@ serialPort_t *openSerialPort(
serialPortIdentifier_e identifier, serialPortIdentifier_e identifier,
serialPortFunction_e function, serialPortFunction_e function,
serialReceiveCallbackPtr callback, serialReceiveCallbackPtr callback,
uint32_t baudrate, baudRate_e baudrate,
portMode_t mode, portMode_t mode,
serialInversion_e inversion serialInversion_e inversion
); );
@ -105,6 +118,8 @@ void closeSerialPort(serialPort_t *serialPort);
void waitForSerialPortToFinishTransmitting(serialPort_t *serialPort); void waitForSerialPortToFinishTransmitting(serialPort_t *serialPort);
baudRate_e lookupBaudRateIndex(uint32_t baudRate);
// //
// msp/cli/bootloader // msp/cli/bootloader
// //

View File

@ -280,19 +280,34 @@ const clivalue_t valueTable[] = {
{ "fixedwing_althold_dir", VAR_INT8 | MASTER_VALUE, &masterConfig.airplaneConfig.fixedwing_althold_dir, -1, 1 }, { "fixedwing_althold_dir", VAR_INT8 | MASTER_VALUE, &masterConfig.airplaneConfig.fixedwing_althold_dir, -1, 1 },
{ "serial_port_1_functions", VAR_UINT16 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[0].functionMask, 0, 0xFFFF }, { "serial_port_1_functions", VAR_UINT16 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[0].functionMask, 0, 0xFFFF },
{ "serial_port_1_baudrate", VAR_UINT32 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[0].baudrate, 1200, 115200 }, { "serial_port_1_msp_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[0].msp_baudrateIndex, BAUD_9600, BAUD_115200 },
{ "serial_port_1_telemetry_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[0].telemetry_baudrateIndex, BAUD_AUTO, BAUD_115200 },
{ "serial_port_1_blackbox_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[0].blackbox_baudrateIndex, BAUD_9600, BAUD_115200 },
{ "serial_port_1_gps_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[0].gps_baudrateIndex, BAUD_9600, BAUD_115200 },
#if (SERIAL_PORT_COUNT >= 2) #if (SERIAL_PORT_COUNT >= 2)
{ "serial_port_2_functions", VAR_UINT16 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[1].functionMask, 0, 0xFFFF }, { "serial_port_2_functions", VAR_UINT16 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[1].functionMask, 0, 0xFFFF },
{ "serial_port_2_baudrate", VAR_UINT32 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[1].baudrate, 1200, 115200 }, { "serial_port_2_msp_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[1].msp_baudrateIndex, BAUD_9600, BAUD_115200 },
{ "serial_port_2_telemetry_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[1].telemetry_baudrateIndex, BAUD_AUTO, BAUD_115200 },
{ "serial_port_2_blackbox_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[1].blackbox_baudrateIndex, BAUD_9600, BAUD_115200 },
{ "serial_port_2_gps_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[1].gps_baudrateIndex, BAUD_9600, BAUD_115200 },
#if (SERIAL_PORT_COUNT >= 3) #if (SERIAL_PORT_COUNT >= 3)
{ "serial_port_3_functions", VAR_UINT16 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[2].functionMask, 0, 0xFFFF}, { "serial_port_3_functions", VAR_UINT16 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[2].functionMask, 0, 0xFFFF},
{ "serial_port_3_baudrate", VAR_UINT32 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[2].baudrate, 1200, 115200 }, { "serial_port_3_msp_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[2].msp_baudrateIndex, BAUD_9600, BAUD_115200 },
{ "serial_port_3_telemetry_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[2].telemetry_baudrateIndex, BAUD_AUTO, BAUD_115200 },
{ "serial_port_3_blackbox_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[2].blackbox_baudrateIndex, BAUD_9600, BAUD_115200 },
{ "serial_port_3_gps_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[2].gps_baudrateIndex, BAUD_9600, BAUD_115200 },
#if (SERIAL_PORT_COUNT >= 4) #if (SERIAL_PORT_COUNT >= 4)
{ "serial_port_4_functions", VAR_UINT16 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[3].functionMask, 0, 0xFFFF }, { "serial_port_4_functions", VAR_UINT16 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[3].functionMask, 0, 0xFFFF },
{ "serial_port_4_baudrate", VAR_UINT32 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[3].baudrate, 1200, 115200 }, { "serial_port_4_msp_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[3].msp_baudrateIndex, BAUD_9600, BAUD_115200 },
{ "serial_port_4_telemetry_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[3].telemetry_baudrateIndex, BAUD_AUTO, BAUD_115200 },
{ "serial_port_4_blackbox_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[3].blackbox_baudrateIndex, BAUD_9600, BAUD_115200 },
{ "serial_port_4_gps_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[3].gps_baudrateIndex, BAUD_9600, BAUD_115200 },
#if (SERIAL_PORT_COUNT >= 5) #if (SERIAL_PORT_COUNT >= 5)
{ "serial_port_5_functions", VAR_UINT16 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[4].functionMask, 0, 0xFFFF }, { "serial_port_5_functions", VAR_UINT16 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[4].functionMask, 0, 0xFFFF },
{ "serial_port_5_baudrate", VAR_UINT32 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[4].baudrate, 1200, 115200 }, { "serial_port_5_msp_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[4].msp_baudrateIndex, BAUD_9600, BAUD_115200 },
{ "serial_port_5_telemetry_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[4].telemetry_baudrateIndex, BAUD_AUTO, BAUD_115200 },
{ "serial_port_5_blackbox_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[4].blackbox_baudrateIndex, BAUD_9600, BAUD_115200 },
{ "serial_port_5_gps_baudrate", VAR_UINT8 | MASTER_VALUE, &masterConfig.serialConfig.portConfigs[4].gps_baudrateIndex, BAUD_9600, BAUD_115200 },
#endif #endif
#endif #endif
#endif #endif

View File

@ -602,7 +602,7 @@ void mspAllocateSerialPorts(serialConfig_t *serialConfig)
continue; continue;
} }
serialPort = openSerialPort(portConfig->identifier, FUNCTION_MSP, NULL, portConfig->baudrate, MODE_RXTX, SERIAL_NOT_INVERTED); serialPort = openSerialPort(portConfig->identifier, FUNCTION_MSP, NULL, portConfig->msp_baudrateIndex, MODE_RXTX, SERIAL_NOT_INVERTED);
if (serialPort) { if (serialPort) {
resetMspPort(mspPort, serialPort, FOR_GENERAL_MSP); resetMspPort(mspPort, serialPort, FOR_GENERAL_MSP);
portIndex++; portIndex++;
@ -1151,12 +1151,15 @@ static bool processOutCommand(uint8_t cmdMSP)
case MSP_CF_SERIAL_CONFIG: case MSP_CF_SERIAL_CONFIG:
headSerialReply( headSerialReply(
((sizeof(uint8_t) + sizeof(uint16_t) + sizeof(uint32_t)) * SERIAL_PORT_COUNT) ((sizeof(uint8_t) + sizeof(uint16_t) + (sizeof(uint8_t) * 4)) * SERIAL_PORT_COUNT)
); );
for (i = 0; i < SERIAL_PORT_COUNT; i++) { for (i = 0; i < SERIAL_PORT_COUNT; i++) {
serialize8(masterConfig.serialConfig.portConfigs[i].identifier); serialize8(masterConfig.serialConfig.portConfigs[i].identifier);
serialize16(masterConfig.serialConfig.portConfigs[i].functionMask); serialize16(masterConfig.serialConfig.portConfigs[i].functionMask);
serialize32(masterConfig.serialConfig.portConfigs[i].baudrate); serialize8(masterConfig.serialConfig.portConfigs[i].msp_baudrateIndex);
serialize8(masterConfig.serialConfig.portConfigs[i].gps_baudrateIndex);
serialize8(masterConfig.serialConfig.portConfigs[i].telemetry_baudrateIndex);
serialize8(masterConfig.serialConfig.portConfigs[i].blackbox_baudrateIndex);
} }
break; break;
@ -1529,7 +1532,7 @@ static bool processInCommand(void)
case MSP_SET_CF_SERIAL_CONFIG: case MSP_SET_CF_SERIAL_CONFIG:
{ {
uint8_t portConfigSize = sizeof(uint8_t) + sizeof(uint16_t) + sizeof(uint32_t); uint8_t portConfigSize = sizeof(uint8_t) + sizeof(uint16_t) + (sizeof(uint8_t) * 4);
if ((SERIAL_PORT_COUNT * portConfigSize) != SERIAL_PORT_COUNT) { if ((SERIAL_PORT_COUNT * portConfigSize) != SERIAL_PORT_COUNT) {
headSerialError(0); headSerialError(0);
@ -1538,7 +1541,10 @@ static bool processInCommand(void)
for (i = 0; i < SERIAL_PORT_COUNT; i++) { for (i = 0; i < SERIAL_PORT_COUNT; i++) {
masterConfig.serialConfig.portConfigs[i].identifier = read8(); masterConfig.serialConfig.portConfigs[i].identifier = read8();
masterConfig.serialConfig.portConfigs[i].functionMask = read16(); masterConfig.serialConfig.portConfigs[i].functionMask = read16();
masterConfig.serialConfig.portConfigs[i].baudrate = read32(); masterConfig.serialConfig.portConfigs[i].msp_baudrateIndex = read8();
masterConfig.serialConfig.portConfigs[i].gps_baudrateIndex = read8();
masterConfig.serialConfig.portConfigs[i].telemetry_baudrateIndex = read8();
masterConfig.serialConfig.portConfigs[i].blackbox_baudrateIndex = read8();
} }
} }
break; break;

View File

@ -43,7 +43,7 @@
#define SPEK_FRAME_SIZE 16 #define SPEK_FRAME_SIZE 16
#define SPEKTRUM_BAUDRATE 115200 #define SPEKTRUM_BAUDRATE BAUD_115200
static uint8_t spek_chan_shift; static uint8_t spek_chan_shift;
static uint8_t spek_chan_mask; static uint8_t spek_chan_mask;

View File

@ -64,7 +64,7 @@
static serialPort_t *frskyPort = NULL; static serialPort_t *frskyPort = NULL;
static serialPortConfig_t *portConfig; static serialPortConfig_t *portConfig;
#define FRSKY_BAUDRATE 9600 #define FRSKY_BAUDRATE BAUD_9600
#define FRSKY_INITIAL_PORT_MODE MODE_TX #define FRSKY_INITIAL_PORT_MODE MODE_TX
static telemetryConfig_t *telemetryConfig; static telemetryConfig_t *telemetryConfig;

View File

@ -100,7 +100,7 @@ static uint8_t hottMsgCrc;
#define HOTT_CRC_SIZE (sizeof(hottMsgCrc)) #define HOTT_CRC_SIZE (sizeof(hottMsgCrc))
#define HOTT_BAUDRATE 19200 #define HOTT_BAUDRATE BAUD_19200
#define HOTT_INITIAL_PORT_MODE MODE_RX #define HOTT_INITIAL_PORT_MODE MODE_RX
static serialPort_t *hottPort = NULL; static serialPort_t *hottPort = NULL;

View File

@ -95,7 +95,12 @@ void configureMSPTelemetryPort(void)
return; return;
} }
mspTelemetryPort = openSerialPort(portConfig->identifier, FUNCTION_MSP_TELEMETRY, NULL, portConfig->baudrate, MSP_TELEMETRY_INITIAL_PORT_MODE, SERIAL_NOT_INVERTED); baudRate_e baudRateIndex = portConfig->telemetry_baudrateIndex;
if (baudRateIndex == BAUD_AUTO) {
baudRateIndex = BAUD_19200;
}
mspTelemetryPort = openSerialPort(portConfig->identifier, FUNCTION_MSP_TELEMETRY, NULL, baudRateIndex, MSP_TELEMETRY_INITIAL_PORT_MODE, SERIAL_NOT_INVERTED);
if (!mspTelemetryPort) { if (!mspTelemetryPort) {
return; return;

View File

@ -133,7 +133,7 @@ const uint16_t frSkyDataIdTable[] = {
}; };
#define __USE_C99_MATH // for roundf() #define __USE_C99_MATH // for roundf()
#define SMARTPORT_BAUD 57600 #define SMARTPORT_BAUD BAUD_57600
#define SMARTPORT_UART_MODE MODE_BIDIR #define SMARTPORT_UART_MODE MODE_BIDIR
#define SMARTPORT_SERVICE_DELAY_MS 5 // telemetry requests comes in at roughly 12 ms intervals, keep this under that #define SMARTPORT_SERVICE_DELAY_MS 5 // telemetry requests comes in at roughly 12 ms intervals, keep this under that
#define SMARTPORT_NOT_CONNECTED_TIMEOUT_MS 7000 #define SMARTPORT_NOT_CONNECTED_TIMEOUT_MS 7000

View File

@ -187,7 +187,7 @@ void serialSetMode(serialPort_t *instance, portMode_t mode) {
} }
serialPort_t *openSerialPort(serialPortIdentifier_e identifier, serialPortFunction_e functionMask, serialReceiveCallbackPtr callback, uint32_t baudRate, portMode_t mode, serialInversion_e inversion) { serialPort_t *openSerialPort(serialPortIdentifier_e identifier, serialPortFunction_e functionMask, serialReceiveCallbackPtr callback, baudRate_e baudRateIndex, portMode_t mode, serialInversion_e inversion) {
UNUSED(identifier); UNUSED(identifier);
UNUSED(functionMask); UNUSED(functionMask);
UNUSED(baudRate); UNUSED(baudRate);