mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-25 17:25:18 +03:00
Add new _EX commands for LED_STRIP
This commit is contained in:
parent
b46be809f9
commit
db941f7569
2 changed files with 49 additions and 4 deletions
|
@ -1049,12 +1049,33 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MSP_LED_STRIP_CONFIG:
|
case MSP_LED_STRIP_CONFIG:
|
||||||
|
for (int i = 0; i < LED_MAX_STRIP_LENGTH; i++) {
|
||||||
|
const ledConfig_t *ledConfig = &ledStripConfig()->ledConfigs[i];
|
||||||
|
|
||||||
|
uint32_t legacyLedConfig = ledConfig->led_position;
|
||||||
|
int shiftCount = LED_POS_BITCNT;
|
||||||
|
legacyLedConfig |= ledConfig->led_function << shiftCount;
|
||||||
|
shiftCount += LED_FUNCTION_BITCNT;
|
||||||
|
legacyLedConfig |= (ledConfig->led_overlay & 0x3F) << (shiftCount);
|
||||||
|
shiftCount += LED_OVERLAY_BITCNT - 1;
|
||||||
|
legacyLedConfig |= (ledConfig->led_color) << (shiftCount);
|
||||||
|
shiftCount += LED_COLOR_BITCNT;
|
||||||
|
legacyLedConfig |= (ledConfig->led_direction) << (shiftCount);
|
||||||
|
shiftCount += LED_DIRECTION_BITCNT;
|
||||||
|
legacyLedConfig |= (ledConfig->led_params) << (shiftCount);
|
||||||
|
|
||||||
|
sbufWriteU32(dst, legacyLedConfig);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MSP_LED_STRIP_CONFIG_EX:
|
||||||
for (int i = 0; i < LED_MAX_STRIP_LENGTH; i++) {
|
for (int i = 0; i < LED_MAX_STRIP_LENGTH; i++) {
|
||||||
const ledConfig_t *ledConfig = &ledStripConfig()->ledConfigs[i];
|
const ledConfig_t *ledConfig = &ledStripConfig()->ledConfigs[i];
|
||||||
sbufWriteDataSafe(dst, ledConfig, sizeof(ledConfig_t));
|
sbufWriteDataSafe(dst, ledConfig, sizeof(ledConfig_t));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case MSP_LED_STRIP_MODECOLOR:
|
case MSP_LED_STRIP_MODECOLOR:
|
||||||
for (int i = 0; i < LED_MODE_COUNT; i++) {
|
for (int i = 0; i < LED_MODE_COUNT; i++) {
|
||||||
for (int j = 0; j < LED_DIRECTION_COUNT; j++) {
|
for (int j = 0; j < LED_DIRECTION_COUNT; j++) {
|
||||||
|
@ -2677,6 +2698,28 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MSP_SET_LED_STRIP_CONFIG:
|
case MSP_SET_LED_STRIP_CONFIG:
|
||||||
|
if (dataSize == (1 + sizeof(uint32_t))) {
|
||||||
|
tmp_u8 = sbufReadU8(src);
|
||||||
|
if (tmp_u8 >= LED_MAX_STRIP_LENGTH) {
|
||||||
|
return MSP_RESULT_ERROR;
|
||||||
|
}
|
||||||
|
ledConfig_t *ledConfig = &ledStripConfigMutable()->ledConfigs[tmp_u8];
|
||||||
|
|
||||||
|
uint32_t legacyConfig = sbufReadU32(src);
|
||||||
|
|
||||||
|
ledConfig->led_position = legacyConfig & 0xFF;
|
||||||
|
ledConfig->led_function = (legacyConfig >> 8) & 0xF;
|
||||||
|
ledConfig->led_overlay = (legacyConfig >> 12) & 0x3F;
|
||||||
|
ledConfig->led_color = (legacyConfig >> 18) & 0xF;
|
||||||
|
ledConfig->led_direction = (legacyConfig >> 22) & 0x3F;
|
||||||
|
ledConfig->led_params = (legacyConfig >> 28) & 0xF;
|
||||||
|
|
||||||
|
reevaluateLedConfig();
|
||||||
|
} else
|
||||||
|
return MSP_RESULT_ERROR;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case MSP_SET_LED_STRIP_CONFIG_EX:
|
||||||
if (dataSize == (1 + sizeof(ledConfig_t))) {
|
if (dataSize == (1 + sizeof(ledConfig_t))) {
|
||||||
tmp_u8 = sbufReadU8(src);
|
tmp_u8 = sbufReadU8(src);
|
||||||
if (tmp_u8 >= LED_MAX_STRIP_LENGTH) {
|
if (tmp_u8 >= LED_MAX_STRIP_LENGTH) {
|
||||||
|
|
|
@ -58,8 +58,8 @@
|
||||||
|
|
||||||
#define MSP_PROTOCOL_VERSION 0 // Same version over MSPv1 & MSPv2 - message format didn't change and it backward compatible
|
#define MSP_PROTOCOL_VERSION 0 // Same version over MSPv1 & MSPv2 - message format didn't change and it backward compatible
|
||||||
|
|
||||||
#define API_VERSION_MAJOR 3 // increment when major changes are made
|
#define API_VERSION_MAJOR 2 // increment when major changes are made
|
||||||
#define API_VERSION_MINOR 0 // increment when any change is made, reset to zero when major changes are released after changing API_VERSION_MAJOR
|
#define API_VERSION_MINOR 5 // increment when any change is made, reset to zero when major changes are released after changing API_VERSION_MAJOR
|
||||||
|
|
||||||
#define API_VERSION_LENGTH 2
|
#define API_VERSION_LENGTH 2
|
||||||
|
|
||||||
|
@ -145,8 +145,10 @@
|
||||||
#define MSP_LED_COLORS 46
|
#define MSP_LED_COLORS 46
|
||||||
#define MSP_SET_LED_COLORS 47
|
#define MSP_SET_LED_COLORS 47
|
||||||
|
|
||||||
#define MSP_LED_STRIP_CONFIG 48
|
#define MSP_LED_STRIP_CONFIG 48 // Deprecated
|
||||||
#define MSP_SET_LED_STRIP_CONFIG 49
|
#define MSP_SET_LED_STRIP_CONFIG 49 // Deprecated
|
||||||
|
#define MSP_LED_STRIP_CONFIG_EX 248
|
||||||
|
#define MSP_SET_LED_STRIP_CONFIG_EX 249
|
||||||
|
|
||||||
#define MSP_RSSI_CONFIG 50
|
#define MSP_RSSI_CONFIG 50
|
||||||
#define MSP_SET_RSSI_CONFIG 51
|
#define MSP_SET_RSSI_CONFIG 51
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue