only link FastLED stuff when GWLED_FASTLED is defined

This commit is contained in:
andreas 2024-09-19 19:51:28 +02:00
parent d63b4d1661
commit 55145726c3
2 changed files with 45 additions and 36 deletions

View File

@ -1,8 +1,19 @@
#include "GwLedTask.h" #include "GwLedTask.h"
#include "GwHardware.h" #include "GwHardware.h"
#include "GwApi.h" #include "GwApi.h"
void handleLeds(GwApi *api);
void initLeds(GwApi *param)
{
#ifdef GWLED_FASTLED
param->addUserTask(handleLeds, "handleLeds");
#endif
}
#ifdef GWLED_FASTLED
#include "FastLED.h" #include "FastLED.h"
typedef enum { typedef enum
{
LED_OFF, LED_OFF,
LED_GREEN, LED_GREEN,
LED_BLUE, LED_BLUE,
@ -10,41 +21,38 @@ typedef enum {
LED_WHITE LED_WHITE
} GwLedMode; } GwLedMode;
static CRGB::HTMLColorCode colorFromMode(GwLedMode cmode){ static CRGB::HTMLColorCode colorFromMode(GwLedMode cmode)
switch(cmode){ {
case LED_BLUE: switch (cmode)
return CRGB::Blue; {
case LED_GREEN: case LED_BLUE:
return CRGB::Green; return CRGB::Blue;
case LED_RED: case LED_GREEN:
return CRGB::Red; return CRGB::Green;
case LED_WHITE: case LED_RED:
return CRGB::White; return CRGB::Red;
default: case LED_WHITE:
return CRGB::Black; return CRGB::White;
default:
return CRGB::Black;
} }
} }
void handleLeds(GwApi *api){ void handleLeds(GwApi *api)
GwLog *logger=api->getLogger(); {
#ifndef GWLED_FASTLED GwLog *logger = api->getLogger();
LOG_DEBUG(GwLog::LOG,"currently only fastled handling");
delay(50);
vTaskDelete(NULL);
return;
#else
CRGB leds[1]; CRGB leds[1];
#ifdef GWLED_SCHEMA #ifdef GWLED_SCHEMA
FastLED.addLeds<GWLED_TYPE,GWLED_PIN,(EOrder)GWLED_SCHEMA>(leds,1); FastLED.addLeds<GWLED_TYPE, GWLED_PIN, (EOrder)GWLED_SCHEMA>(leds, 1);
#else #else
FastLED.addLeds<GWLED_TYPE,GWLED_PIN>(leds,1); FastLED.addLeds<GWLED_TYPE, GWLED_PIN>(leds, 1);
#endif #endif
uint8_t brightness=api->getConfig()->getInt(GwConfigDefinitions::ledBrightness,128); uint8_t brightness = api->getConfig()->getInt(GwConfigDefinitions::ledBrightness, 128);
GwLedMode currentMode=LED_GREEN; GwLedMode currentMode = LED_GREEN;
leds[0]=colorFromMode(currentMode); leds[0] = colorFromMode(currentMode);
FastLED.setBrightness(brightness); FastLED.setBrightness(brightness);
FastLED.show(); FastLED.show();
LOG_DEBUG(GwLog::LOG,"led task started with mode %d, brightness=%d",(int)currentMode,(int)brightness); LOG_DEBUG(GwLog::LOG, "led task started with mode %d, brightness=%d", (int)currentMode, (int)brightness);
int apiResult=0; int apiResult = 0;
while (true) while (true)
{ {
delay(50); delay(50);
@ -77,5 +85,5 @@ void handleLeds(GwApi *api){
} }
} }
vTaskDelete(NULL); vTaskDelete(NULL);
#endif }
} #endif

View File

@ -1,8 +1,9 @@
#ifndef _GWLEDS_H #ifndef _GWLEDS_H
#define _GWLEDS_H #define _GWLEDS_H
#include "GwApi.h" #include "GwApi.h"
//task function //task init function
void handleLeds(GwApi *param);
DECLARE_USERTASK(handleLeds); void initLeds(GwApi *param);
DECLARE_INITFUNCTION(initLeds);
#endif #endif