1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-23 16:25:31 +03:00

Refactor MSP command processing to reduce code size.

This commit is contained in:
Dominic Clifton 2018-08-07 18:24:53 +02:00
parent bf4188a70c
commit f2bdc86c61

View file

@ -100,7 +100,6 @@ static bool mspSerialProcessReceivedData(mspPort_t *mspPort, uint8_t c)
default: default:
case MSP_IDLE: // Waiting for '$' character case MSP_IDLE: // Waiting for '$' character
if (c == '$') { if (c == '$') {
mspPort->mspVersion = MSP_V1;
mspPort->c_state = MSP_HEADER_START; mspPort->c_state = MSP_HEADER_START;
} }
else { else {
@ -109,12 +108,17 @@ static bool mspSerialProcessReceivedData(mspPort_t *mspPort, uint8_t c)
break; break;
case MSP_HEADER_START: // Waiting for 'M' (MSPv1 / MSPv2_over_v1) or 'X' (MSPv2 native) case MSP_HEADER_START: // Waiting for 'M' (MSPv1 / MSPv2_over_v1) or 'X' (MSPv2 native)
mspPort->offset = 0;
mspPort->checksum1 = 0;
mspPort->checksum2 = 0;
switch (c) { switch (c) {
case 'M': case 'M':
mspPort->c_state = MSP_HEADER_M; mspPort->c_state = MSP_HEADER_M;
mspPort->mspVersion = MSP_V1;
break; break;
case 'X': case 'X':
mspPort->c_state = MSP_HEADER_X; mspPort->c_state = MSP_HEADER_X;
mspPort->mspVersion = MSP_V2_NATIVE;
break; break;
default: default:
mspPort->c_state = MSP_IDLE; mspPort->c_state = MSP_IDLE;
@ -123,20 +127,13 @@ static bool mspSerialProcessReceivedData(mspPort_t *mspPort, uint8_t c)
break; break;
case MSP_HEADER_M: // Waiting for '<' / '>' case MSP_HEADER_M: // Waiting for '<' / '>'
mspPort->c_state = MSP_HEADER_V1;
switch (c) { switch (c) {
case '<': // COMMAND case '<':
mspPort->packetType = MSP_PACKET_COMMAND; mspPort->packetType = MSP_PACKET_COMMAND;
mspPort->c_state = MSP_HEADER_V1;
mspPort->offset = 0;
mspPort->checksum1 = 0;
mspPort->checksum2 = 0;
break; break;
case '>': // REPLY case '>':
mspPort->packetType = MSP_PACKET_REPLY; mspPort->packetType = MSP_PACKET_REPLY;
mspPort->c_state = MSP_HEADER_V1;
mspPort->offset = 0;
mspPort->checksum1 = 0;
mspPort->checksum2 = 0;
break; break;
default: default:
mspPort->c_state = MSP_IDLE; mspPort->c_state = MSP_IDLE;
@ -145,21 +142,13 @@ static bool mspSerialProcessReceivedData(mspPort_t *mspPort, uint8_t c)
break; break;
case MSP_HEADER_X: case MSP_HEADER_X:
mspPort->c_state = MSP_HEADER_V2_NATIVE;
switch (c) { switch (c) {
case '<': // COMMAND case '<':
mspPort->packetType = MSP_PACKET_COMMAND; mspPort->packetType = MSP_PACKET_COMMAND;
mspPort->offset = 0;
mspPort->checksum2 = 0;
mspPort->mspVersion = MSP_V2_NATIVE;
mspPort->c_state = MSP_HEADER_V2_NATIVE;
break; break;
case '>': // REPLY case '>':
mspPort->packetType = MSP_PACKET_REPLY; mspPort->packetType = MSP_PACKET_REPLY;
mspPort->c_state = MSP_HEADER_V1;
mspPort->offset = 0;
mspPort->checksum2 = 0;
mspPort->mspVersion = MSP_V2_NATIVE;
mspPort->c_state = MSP_HEADER_V2_NATIVE;
break; break;
default: default:
mspPort->c_state = MSP_IDLE; mspPort->c_state = MSP_IDLE;