mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-19 14:25:20 +03:00
Moved configuration validation into 'config.c'.
This commit is contained in:
parent
b137bbe80c
commit
99f77fa88d
41 changed files with 92 additions and 76 deletions
|
@ -108,6 +108,17 @@ const uint32_t baudRates[] = {0, 9600, 19200, 38400, 57600, 115200, 230400, 2500
|
|||
|
||||
#define BAUD_RATE_COUNT (sizeof(baudRates) / sizeof(baudRates[0]))
|
||||
|
||||
serialPortConfig_t *serialFindPortConfigurationMutable(serialPortIdentifier_e identifier)
|
||||
{
|
||||
for (int index = 0; index < SERIAL_PORT_COUNT; index++) {
|
||||
serialPortConfig_t *candidate = &serialConfigMutable()->portConfigs[index];
|
||||
if (candidate->identifier == identifier) {
|
||||
return candidate;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
PG_REGISTER_WITH_RESET_FN(serialConfig_t, serialConfig, PG_SERIAL_CONFIG, 0);
|
||||
|
||||
void pgResetFn_serialConfig(serialConfig_t *serialConfig)
|
||||
|
@ -125,14 +136,14 @@ void pgResetFn_serialConfig(serialConfig_t *serialConfig)
|
|||
serialConfig->portConfigs[0].functionMask = FUNCTION_MSP;
|
||||
|
||||
#ifdef SERIALRX_UART
|
||||
serialPortConfig_t *serialRxUartConfig = serialFindPortConfiguration(SERIALRX_UART);
|
||||
serialPortConfig_t *serialRxUartConfig = serialFindPortConfigurationMutable(SERIALRX_UART);
|
||||
if (serialRxUartConfig) {
|
||||
serialRxUartConfig->functionMask = FUNCTION_RX_SERIAL;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef SBUS_TELEMETRY_UART
|
||||
serialPortConfig_t *serialTlemetryUartConfig = serialFindPortConfiguration(SBUS_TELEMETRY_UART);
|
||||
serialPortConfig_t *serialTlemetryUartConfig = serialFindPortConfigurationMutable(SBUS_TELEMETRY_UART);
|
||||
if (serialTlemetryUartConfig) {
|
||||
serialTlemetryUartConfig->functionMask = FUNCTION_TELEMETRY_SMARTPORT;
|
||||
}
|
||||
|
@ -140,7 +151,7 @@ void pgResetFn_serialConfig(serialConfig_t *serialConfig)
|
|||
|
||||
#if defined(USE_VCP) && defined(USE_MSP_UART)
|
||||
if (serialConfig->portConfigs[0].identifier == SERIAL_PORT_USB_VCP) {
|
||||
serialPortConfig_t * uart1Config = serialFindPortConfiguration(SERIAL_PORT_USART1);
|
||||
serialPortConfig_t * uart1Config = serialFindPortConfigurationMutable(SERIAL_PORT_USART1);
|
||||
if (uart1Config) {
|
||||
uart1Config->functionMask = FUNCTION_MSP;
|
||||
}
|
||||
|
@ -202,17 +213,17 @@ typedef struct findSerialPortConfigState_s {
|
|||
|
||||
static findSerialPortConfigState_t findSerialPortConfigState;
|
||||
|
||||
serialPortConfig_t *findSerialPortConfig(serialPortFunction_e function)
|
||||
const serialPortConfig_t *findSerialPortConfig(serialPortFunction_e function)
|
||||
{
|
||||
memset(&findSerialPortConfigState, 0, sizeof(findSerialPortConfigState));
|
||||
|
||||
return findNextSerialPortConfig(function);
|
||||
}
|
||||
|
||||
serialPortConfig_t *findNextSerialPortConfig(serialPortFunction_e function)
|
||||
const serialPortConfig_t *findNextSerialPortConfig(serialPortFunction_e function)
|
||||
{
|
||||
while (findSerialPortConfigState.lastIndex < SERIAL_PORT_COUNT) {
|
||||
serialPortConfig_t *candidate = &serialConfigMutable()->portConfigs[findSerialPortConfigState.lastIndex++];
|
||||
const serialPortConfig_t *candidate = &serialConfig()->portConfigs[findSerialPortConfigState.lastIndex++];
|
||||
|
||||
if (candidate->functionMask & function) {
|
||||
return candidate;
|
||||
|
@ -306,10 +317,10 @@ bool isSerialConfigValid(const serialConfig_t *serialConfigToCheck)
|
|||
return true;
|
||||
}
|
||||
|
||||
serialPortConfig_t *serialFindPortConfiguration(serialPortIdentifier_e identifier)
|
||||
const serialPortConfig_t *serialFindPortConfiguration(serialPortIdentifier_e identifier)
|
||||
{
|
||||
for (int index = 0; index < SERIAL_PORT_COUNT; index++) {
|
||||
serialPortConfig_t *candidate = &serialConfigMutable()->portConfigs[index];
|
||||
const serialPortConfig_t *candidate = &serialConfig()->portConfigs[index];
|
||||
if (candidate->identifier == identifier) {
|
||||
return candidate;
|
||||
}
|
||||
|
@ -319,7 +330,7 @@ serialPortConfig_t *serialFindPortConfiguration(serialPortIdentifier_e identifie
|
|||
|
||||
bool doesConfigurationUsePort(serialPortIdentifier_e identifier)
|
||||
{
|
||||
serialPortConfig_t *candidate = serialFindPortConfiguration(identifier);
|
||||
const serialPortConfig_t *candidate = serialFindPortConfiguration(identifier);
|
||||
return candidate != NULL && candidate->functionMask;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue