1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-17 21:35:44 +03:00

Add MSP API features for OSD stat screen toggling

This commit is contained in:
Dan Nixon 2017-05-22 18:24:18 +01:00
parent d83f0ddf5e
commit 5f4a72ad5b

View file

@ -775,6 +775,9 @@ static bool mspCommonProcessOutCommand(uint8_t cmdMSP, sbuf_t *dst, mspPostProce
for (int i = 0; i < OSD_ITEM_COUNT; i++) { for (int i = 0; i < OSD_ITEM_COUNT; i++) {
sbufWriteU16(dst, osdConfig()->item_pos[i]); sbufWriteU16(dst, osdConfig()->item_pos[i]);
} }
for (int i = 0; i < OSD_STAT_COUNT; i++ ) {
sbufWriteU8(dst, osdConfig()->enabled_stats[i]);
}
#endif #endif
break; break;
} }
@ -2039,8 +2042,9 @@ static mspResult_e mspCommonProcessInCommand(uint8_t cmdMSP, sbuf_t *src)
case MSP_SET_OSD_CONFIG: case MSP_SET_OSD_CONFIG:
{ {
const uint8_t addr = sbufReadU8(src); const uint8_t addr = sbufReadU8(src);
// set all the other settings
if ((int8_t)addr == -1) { if ((int8_t)addr == -1) {
/* Set general OSD settings */
#ifdef USE_MAX7456 #ifdef USE_MAX7456
vcdProfileMutable()->video_system = sbufReadU8(src); vcdProfileMutable()->video_system = sbufReadU8(src);
#else #else
@ -2055,10 +2059,17 @@ static mspResult_e mspCommonProcessInCommand(uint8_t cmdMSP, sbuf_t *src)
#endif #endif
} else { } else {
#if defined(OSD) #if defined(OSD)
// set a position setting const uint16_t value = sbufReadU16(src);
const uint16_t pos = sbufReadU16(src);
if (addr < OSD_ITEM_COUNT) { /* Get screen index, 0 is post flight statsitsics, 1 and above are in flight OSD screens */
osdConfigMutable()->item_pos[addr] = pos; const uint8_t screen = (sbufBytesRemaining(src) >= 1) ? sbufReadU8(src) : 1;
if (screen == 0 && addr < OSD_STAT_COUNT) {
/* Set statistic item enable */
osdConfigMutable()->enabled_stats[addr] = value;
} else if (addr < OSD_ITEM_COUNT) {
/* Set element positions */
osdConfigMutable()->item_pos[addr] = value;
} }
#else #else
return MSP_RESULT_ERROR; return MSP_RESULT_ERROR;