1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-25 17:25:18 +03:00

[MSP/CLI] Constrain receive baud rates indices to their valid values

MSP was not restricting anything an accepting any values, while
CLI had some seemingly arbitrary bounds. Now both interfaces accept
the full range of valid values.
This commit is contained in:
Alberto García Hierro 2020-06-15 12:20:55 +01:00
parent 144ba419bc
commit a25fcd5656
3 changed files with 16 additions and 21 deletions

View file

@ -811,27 +811,19 @@ static void cliSerial(char *cmdline)
switch (i) { switch (i) {
case 0: case 0:
if (baudRateIndex < BAUD_1200 || baudRateIndex > BAUD_2470000) { baudRateIndex = constrain(baudRateIndex, BAUD_MIN, BAUD_MAX);
continue;
}
portConfig.msp_baudrateIndex = baudRateIndex; portConfig.msp_baudrateIndex = baudRateIndex;
break; break;
case 1: case 1:
if (baudRateIndex < BAUD_9600 || baudRateIndex > BAUD_115200) { baudRateIndex = constrain(baudRateIndex, BAUD_MIN, BAUD_MAX);
continue;
}
portConfig.gps_baudrateIndex = baudRateIndex; portConfig.gps_baudrateIndex = baudRateIndex;
break; break;
case 2: case 2:
if (baudRateIndex != BAUD_AUTO && baudRateIndex > BAUD_115200) { baudRateIndex = constrain(baudRateIndex, BAUD_MIN, BAUD_MAX);
continue;
}
portConfig.telemetry_baudrateIndex = baudRateIndex; portConfig.telemetry_baudrateIndex = baudRateIndex;
break; break;
case 3: case 3:
if (baudRateIndex < BAUD_19200 || baudRateIndex > BAUD_250000) { baudRateIndex = constrain(baudRateIndex, BAUD_MIN, BAUD_MAX);
continue;
}
portConfig.peripheral_baudrateIndex = baudRateIndex; portConfig.peripheral_baudrateIndex = baudRateIndex;
break; break;
} }

View file

@ -2602,10 +2602,10 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
portConfig->identifier = identifier; portConfig->identifier = identifier;
portConfig->functionMask = sbufReadU16(src); portConfig->functionMask = sbufReadU16(src);
portConfig->msp_baudrateIndex = sbufReadU8(src); portConfig->msp_baudrateIndex = constrain(sbufReadU8(src), BAUD_MIN, BAUD_MAX);
portConfig->gps_baudrateIndex = sbufReadU8(src); portConfig->gps_baudrateIndex = constrain(sbufReadU8(src), BAUD_MIN, BAUD_MAX);
portConfig->telemetry_baudrateIndex = sbufReadU8(src); portConfig->telemetry_baudrateIndex = constrain(sbufReadU8(src), BAUD_MIN, BAUD_MAX);
portConfig->peripheral_baudrateIndex = sbufReadU8(src); portConfig->peripheral_baudrateIndex = constrain(sbufReadU8(src), BAUD_MIN, BAUD_MAX);
} }
} }
break; break;
@ -2630,10 +2630,10 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
portConfig->identifier = identifier; portConfig->identifier = identifier;
portConfig->functionMask = sbufReadU32(src); portConfig->functionMask = sbufReadU32(src);
portConfig->msp_baudrateIndex = sbufReadU8(src); portConfig->msp_baudrateIndex = constrain(sbufReadU8(src), BAUD_MIN, BAUD_MAX);
portConfig->gps_baudrateIndex = sbufReadU8(src); portConfig->gps_baudrateIndex = constrain(sbufReadU8(src), BAUD_MIN, BAUD_MAX);
portConfig->telemetry_baudrateIndex = sbufReadU8(src); portConfig->telemetry_baudrateIndex = constrain(sbufReadU8(src), BAUD_MIN, BAUD_MAX);
portConfig->peripheral_baudrateIndex = sbufReadU8(src); portConfig->peripheral_baudrateIndex = constrain(sbufReadU8(src), BAUD_MIN, BAUD_MAX);
} }
} }
break; break;

View file

@ -74,7 +74,10 @@ typedef enum {
BAUD_1000000, BAUD_1000000,
BAUD_1500000, BAUD_1500000,
BAUD_2000000, BAUD_2000000,
BAUD_2470000 BAUD_2470000,
BAUD_MIN = BAUD_AUTO,
BAUD_MAX = BAUD_2470000,
} baudRate_e; } baudRate_e;
extern const uint32_t baudRates[]; extern const uint32_t baudRates[];