Explicitly initialize all LED values in LedDriverPhase_InitLedValues before moving on to LedDriverPhase_Initialized.

This commit is contained in:
László Monda
2017-08-10 13:16:37 +02:00
parent c81291346f
commit e9976f6888
2 changed files with 7 additions and 6 deletions
+6 -6
View File
@@ -93,19 +93,20 @@ void LedSlaveDriver_Update(uint8_t ledDriverId) {
break; break;
case LedDriverPhase_InitLedControlRegisters: case LedDriverPhase_InitLedControlRegisters:
I2cAsyncWrite(ledDriverAddress, currentLedDriverState->setupLedControlRegistersCommand, LED_CONTROL_REGISTERS_COMMAND_LENGTH); I2cAsyncWrite(ledDriverAddress, currentLedDriverState->setupLedControlRegistersCommand, LED_CONTROL_REGISTERS_COMMAND_LENGTH);
*ledDriverPhase = LedDriverPhase_Initialized; *ledDriverPhase = LedDriverPhase_InitLedValues;
break; break;
case LedDriverPhase_Initialized: case LedDriverPhase_InitLedValues:
{
#ifdef LED_DRIVER_STRESS_TEST
updatePwmRegistersBuffer[0] = FRAME_REGISTER_PWM_FIRST + *ledIndex; updatePwmRegistersBuffer[0] = FRAME_REGISTER_PWM_FIRST + *ledIndex;
memcpy(updatePwmRegistersBuffer+1, currentLedDriverState->sourceLedValues + *ledIndex, PMW_REGISTER_UPDATE_CHUNK_SIZE); memcpy(updatePwmRegistersBuffer+1, currentLedDriverState->sourceLedValues + *ledIndex, PMW_REGISTER_UPDATE_CHUNK_SIZE);
I2cAsyncWrite(ledDriverAddress, updatePwmRegistersBuffer, PWM_REGISTER_BUFFER_LENGTH); I2cAsyncWrite(ledDriverAddress, updatePwmRegistersBuffer, PWM_REGISTER_BUFFER_LENGTH);
*ledIndex += PMW_REGISTER_UPDATE_CHUNK_SIZE; *ledIndex += PMW_REGISTER_UPDATE_CHUNK_SIZE;
if (*ledIndex >= LED_DRIVER_LED_COUNT) { if (*ledIndex >= LED_DRIVER_LED_COUNT) {
*ledIndex = 0; *ledIndex = 0;
*ledDriverPhase = LedDriverPhase_Initialized;
} }
#else break;
case LedDriverPhase_Initialized:
{
uint8_t *sourceLedValues = currentLedDriverState->sourceLedValues; uint8_t *sourceLedValues = currentLedDriverState->sourceLedValues;
uint8_t *targetLedValues = currentLedDriverState->targetLedValues; uint8_t *targetLedValues = currentLedDriverState->targetLedValues;
@@ -147,7 +148,6 @@ void LedSlaveDriver_Update(uint8_t ledDriverId) {
if (*ledIndex >= LED_DRIVER_LED_COUNT) { if (*ledIndex >= LED_DRIVER_LED_COUNT) {
*ledIndex = 0; *ledIndex = 0;
} }
#endif
break; break;
} }
} }
@@ -26,6 +26,7 @@
LedDriverPhase_SetShutdownModeNormal, LedDriverPhase_SetShutdownModeNormal,
LedDriverPhase_SetFrame1, LedDriverPhase_SetFrame1,
LedDriverPhase_InitLedControlRegisters, LedDriverPhase_InitLedControlRegisters,
LedDriverPhase_InitLedValues,
LedDriverPhase_Initialized, LedDriverPhase_Initialized,
} led_driver_phase_t; } led_driver_phase_t;