Stabilized new implementation and trimmed to maximum useful speed.
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user