1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-16 04:45:24 +03:00

Add mode logic to MSP

Add msp code 238.
Add MSP_MODE_RANGES code to msp.c.
Add 2 extra byte reads to MSP_SET_MODE_RANGES.
Add check for extra bytes in MSP_SET_MODE_RANGES
Add API documentation for MSP_MODE_RANGES_EXTRA
convert linkedTo storage to boxid
Send length of array in EXTRAS data
Add note that alignment of elements of MODE_RANGES and MODE_RANGES_EXTRA is required and indicated by permanentId.
This commit is contained in:
Dave Huber 2019-02-07 10:27:07 -06:00
parent 760300b562
commit bb95d53e62
3 changed files with 44 additions and 1 deletions

View file

@ -1026,6 +1026,18 @@ static bool mspProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst)
}
break;
case MSP_MODE_RANGES_EXTRA:
sbufWriteU8(dst, MAX_MODE_ACTIVATION_CONDITION_COUNT); // prepend number of EXTRAs array elements
for (int i = 0; i < MAX_MODE_ACTIVATION_CONDITION_COUNT; i++) {
const modeActivationCondition_t *mac = modeActivationConditions(i);
const box_t *box = findBoxByBoxId(mac->modeId);
sbufWriteU8(dst, box->permanentId); // each element is aligned with MODE_RANGES by the permanentId
sbufWriteU8(dst, mac->modeLogic);
sbufWriteU8(dst, mac->linkedTo);
}
break;
case MSP_ADJUSTMENT_RANGES:
for (int i = 0; i < MAX_ADJUSTMENT_RANGE_COUNT; i++) {
const adjustmentRange_t *adjRange = adjustmentRanges(i);
@ -1709,7 +1721,12 @@ static mspResult_e mspProcessInCommand(uint8_t cmdMSP, sbuf_t *src)
mac->auxChannelIndex = sbufReadU8(src);
mac->range.startStep = sbufReadU8(src);
mac->range.endStep = sbufReadU8(src);
if (sbufBytesRemaining(src) != 0) {
mac->modeLogic = sbufReadU8(src);
i = sbufReadU8(src);
mac->linkedTo = findBoxByPermanentId(i)->boxId;
}
rcControlsInit();
} else {
return MSP_RESULT_ERROR;

View file

@ -326,6 +326,7 @@
#define MSP_GPSSVINFO 164 //out message get Signal Strength (only U-Blox)
#define MSP_GPSSTATISTICS 166 //out message get GPS debugging data
#define MSP_MULTIPLE_MSP 230 //out message request multiple MSPs in one request - limit is the TX buffer; returns each MSP in the order they were requested starting with length of MSP; MSPs with input arguments are not supported
#define MSP_MODE_RANGES_EXTRA 238 //out message Reads the extra mode range data
#define MSP_ACC_TRIM 240 //out message get acc angle trim values
#define MSP_SET_ACC_TRIM 239 //in message set acc angle trim values
#define MSP_SERVO_MIX_RULES 241 //out message Returns servo mixer configuration