Files
airgradient/src/Main/StatusLed.cpp
T

116 lines
1.9 KiB
C++
Raw Normal View History

2024-02-17 17:28:51 +07:00
#include "StatusLed.h"
StatusLed::StatusLed(BoardType boardType) : boardType(boardType) {}
#if defined(ESP8266)
void StatusLed::begin(Stream &debugStream) {
this->_debugStream = &debugStream;
this->begin();
}
#else
#endif
/**
* @brief Initialized LED
*
*/
void StatusLed::begin(void) {
if (this->_isBegin) {
AgLog("Initialized, call end() then try again");
return;
}
bsp = getBoardDef(this->boardType);
if ((bsp == nullptr) || (bsp->LED.supported == false)) {
AgLog("Board not support StatusLed");
return;
}
pinMode(bsp->LED.pin, OUTPUT);
digitalWrite(bsp->LED.pin, !bsp->LED.onState);
this->state = LED_OFF;
this->_isBegin = true;
AgLog("Initialize");
}
/**
* @brief Turn LED on
*
*/
void StatusLed::setOn(void) {
if (this->isBegin() == false) {
return;
}
digitalWrite(bsp->LED.pin, bsp->LED.onState);
this->state = LED_ON;
AgLog("Turn ON");
}
/**
* @brief Turn LED off
*
*/
void StatusLed::setOff(void) {
if (this->isBegin() == false) {
return;
}
digitalWrite(bsp->LED.pin, !bsp->LED.onState);
this->state = LED_OFF;
AgLog("Turn OFF");
}
/**
* @brief Set LED toggle
*
*/
void StatusLed::setToggle(void) {
if (this->state == LED_ON) {
this->setOff();
} else {
this->setOn();
}
}
/**
* @brief Get current LED state
*
* @return StatusLed::State
*/
StatusLed::State StatusLed::getState(void) { return this->state; }
/**
* @brief Convert LED state to string
*
* @param state LED state
* @return String
*/
String StatusLed::toString(StatusLed::State state) {
if (state == LED_ON) {
return "On";
}
return "Off";
}
bool StatusLed::isBegin(void) {
if (this->_isBegin == false) {
AgLog("Not-Initialized");
return false;
}
return true;
}
void StatusLed::end(void) {
if (_isBegin == false) {
return;
}
#if defined(ESP8266)
_debugStream = nullptr;
#endif
setOff();
_isBegin = false;
AgLog("De-initialize");
}