led support configurable

This commit is contained in:
2021-03-05 10:57:28 +01:00
parent c4736640cd
commit badc6aa1f5
3 changed files with 30 additions and 11 deletions

View File

@ -1,3 +1,5 @@
led = "off"
sinkServer = "sink.hottis.de"
sinkPort = 20169

View File

@ -1,32 +1,48 @@
#include <stdbool.h>
#include <wiringPi.h>
#include <libconfig.h>
#include <stdbool.h>
#include <strings.h>
#include "led.h"
#include "logging.h"
const char LED_KEY[] = "led";
const char DEFAULT_LED[] = "off";
const char *ledsActiveStr;
bool ledActive;
const int GREEN_OUT = 20;
const int RED_OUT = 21;
const int BLUE_OUT = 26;
void ledInit() {
pinMode(GREEN_OUT, OUTPUT);
digitalWrite(GREEN_OUT, 0);
void ledInit(config_t *pCfg) {
if (! config_lookup_string(pCfg, LED_KEY, &ledsActiveStr)) {
ledsActiveStr = DEFAULT_LED;
}
ledsActive = (! strcasecmp(ledsActiveStr, "on")) || (! strcasecmp(ledsActiveStr, "true"));
logmsg(LOG_INFO, "CONFIG: ledsActive=%d, ledsActiveStr=%s\n", ledsActiveStr, ledsActive);
pinMode(RED_OUT, OUTPUT);
digitalWrite(RED_OUT, 0);
pinMode(GREEN_OUT, OUTPUT);
digitalWrite(GREEN_OUT, 0);
pinMode(BLUE_OUT, OUTPUT);
digitalWrite(BLUE_OUT, 0);
pinMode(RED_OUT, OUTPUT);
digitalWrite(RED_OUT, 0);
pinMode(BLUE_OUT, OUTPUT);
digitalWrite(BLUE_OUT, 0);
}
void led (tColor color, bool state) {
if (ledsActive) {
if (color == E_RED) {
digitalWrite(RED_OUT, state ? 1 : 0);
digitalWrite(RED_OUT, state ? 1 : 0);
} else if (color == E_BLUE) {
digitalWrite(BLUE_OUT, state ? 1 : 0);
digitalWrite(BLUE_OUT, state ? 1 : 0);
} else if (color == E_GREEN) {
digitalWrite(GREEN_OUT, state ? 1 : 0);
digitalWrite(GREEN_OUT, state ? 1 : 0);
}
}
}

View File

@ -2,10 +2,11 @@
#define _LED_H_
#include <stdbool.h>
#include <libconfig.h>
typedef enum { E_RED, E_BLUE, E_GREEN } tColor;
void ledInit();
void ledInit(config_t *pCfg);
void led(tColor color, bool state);
#endif // _LED_H_