Stabilized new implementation and trimmed to maximum useful speed.

This commit is contained in:
2017-12-07 15:45:35 +01:00
parent 94e5dce045
commit 7fad229821
6 changed files with 70 additions and 91 deletions

View File

@@ -1,7 +1,7 @@
/* LEDState.c */
#include "mgos_sys_config.h"
#include "mgos_timers.h"
#include "LEDDefinition.h"
#include "LEDState.h"
#include "AnimationConfig.h"
@@ -40,23 +40,30 @@ uint16_t LEDStateEngine_getNumberOfLeds() {
return theLEDStateEngine.numberOfLeds;
}
static double minTickTime = 99999.99;
static double maxTickTime = 0;
void LEDStateEngine_tick() {
double startTime = mgos_uptime();
++ticks;
// LOG(LL_INFO, ("# %d/%d", theLEDStateEngine.numberOfLeds, ticks));
for (int i=0; i<theLEDStateEngine.numberOfLeds; ++i) {
LEDState_tick(i);
}
NeoPixel_show();
double endTime = mgos_uptime();
double usedTime = endTime - startTime;
if (usedTime > maxTickTime) maxTickTime = usedTime;
if (usedTime < minTickTime) minTickTime = usedTime;
}
double LEDStateEngine_getMinTickTime() { return minTickTime; }
double LEDStateEngine_getMaxTickTime() { return maxTickTime; }
static uint8_t adjustBrightness(uint8_t value) {
return (value * mgos_sys_config_get_led_brightness()/100);
}
static void updateLedDisplay(LEDState *state) {
// strip.setPixel(i, adjustBrightness(LEDState_getRed(i)), adjustBrightness(LEDState_getGreen(i)), adjustBrightness(LEDState_getBlue(i)));
// strip.setPixel(i, adjustBrightness(LEDState_getRed(i)), adjustBrightness(LEDState_getGreen(i)), adjustBrightness(LEDState_getBlue(i)));
NeoPixel_set(state->index,
adjustBrightness(state->currentColor.red), adjustBrightness(state->currentColor.green), adjustBrightness(state->currentColor.blue));
}

View File

@@ -38,6 +38,9 @@ extern void LEDStateEngine_addComment(char *comment);
extern LEDState *LEDStateEngine_getLedState(int n);
extern void LEDStateEngine_tick();
extern uint16_t LEDStateEngine_getNumberOfLeds();
extern double LEDStateEngine_getMinTickTime();
extern double LEDStateEngine_getMaxTickTime();
/* LEDState */
extern void LEDState_init(int n, LEDDefinition *ledDefinition);