From 8caff86006c7a2ff9b2b7456f565790581999d2b Mon Sep 17 00:00:00 2001 From: Dominic Clifton Date: Fri, 16 Jan 2015 00:09:02 +0000 Subject: [PATCH] Update MSP_SET_LED_STRIP_CONFIG. Each LED must be sent one at a time since sending 32 leds needs a packet larger than the MSP receiver buffer allows. --- src/main/io/serial_msp.c | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/src/main/io/serial_msp.c b/src/main/io/serial_msp.c index 8943c4453..3860c85c6 100644 --- a/src/main/io/serial_msp.c +++ b/src/main/io/serial_msp.c @@ -1442,28 +1442,26 @@ static bool processInCommand(void) case MSP_SET_LED_STRIP_CONFIG: { - uint8_t ledCount = currentPort->dataSize / 6; - if (ledCount != MAX_LED_STRIP_LENGTH) { + i = read8(); + if (i >= MAX_LED_STRIP_LENGTH || currentPort->dataSize != 7) { headSerialError(0); break; } - for (i = 0; i < MAX_LED_STRIP_LENGTH; i++) { - ledConfig_t *ledConfig = &masterConfig.ledConfigs[i]; - uint16_t mask; - // currently we're storing directions and functions in a uint16 (flags) - // the msp uses 2 x uint16_t to cater for future expansion - mask = read16(); - ledConfig->flags = (mask << LED_DIRECTION_BIT_OFFSET) & LED_DIRECTION_MASK; - - mask = read16(); - ledConfig->flags |= (mask << LED_FUNCTION_BIT_OFFSET) & LED_FUNCTION_MASK; - - mask = read8(); - ledConfig->xy = CALCULATE_LED_X(mask); - - mask = read8(); - ledConfig->xy |= CALCULATE_LED_Y(mask); - } + ledConfig_t *ledConfig = &masterConfig.ledConfigs[i]; + uint16_t mask; + // currently we're storing directions and functions in a uint16 (flags) + // the msp uses 2 x uint16_t to cater for future expansion + mask = read16(); + ledConfig->flags = (mask << LED_DIRECTION_BIT_OFFSET) & LED_DIRECTION_MASK; + + mask = read16(); + ledConfig->flags |= (mask << LED_FUNCTION_BIT_OFFSET) & LED_FUNCTION_MASK; + + mask = read8(); + ledConfig->xy = CALCULATE_LED_X(mask); + + mask = read8(); + ledConfig->xy |= CALCULATE_LED_Y(mask); } break; #endif -- 2.11.4.GIT