[temporary commit]

This commit is contained in:
Phat Nguyen
2024-04-03 11:40:46 +07:00
parent 8e032927c6
commit c1ab99ba8d
201 changed files with 506038 additions and 0 deletions

113
src/AgOledDisplay.cpp Normal file
View File

@ -0,0 +1,113 @@
#include "AgOledDisplay.h"
#include "Libraries/U8g2/src/U8g2lib.h"
#define DISP() (U8G2_SH1106_128X64_NONAME_F_HW_I2C *)(this->u8g2)
AgOledDisplay::AgOledDisplay(AirGradient &ag, AgConfigure &config, Stream &log) : PrintLog(log, "AgOledDisplay"),
ag(ag), config(config)
{
}
AgOledDisplay::~AgOledDisplay()
{
}
/**
* @brief Initialize display
*
* @return true Success
* @return false Failure
*/
bool AgOledDisplay::begin(void)
{
if (isBegin)
{
logWarning("Already begin, call 'end' and try again");
return true;
}
/** Create u8g2 instance */
u8g2 = new U8G2_SH1106_128X64_NONAME_F_HW_I2C(U8G2_R0, U8X8_PIN_NONE);
if (u8g2 == NULL)
{
logError("Create 'U8G2' failed");
return false;
}
/** Init u8g2 */
if (DISP()->begin() == false)
{
logError("U8G2 'begin' failed");
return false;
}
isBegin = true;
logInfo("begin");
return true;
}
/**
* @brief De-Initialize display
*
*/
void AgOledDisplay::end(void)
{
if (!isBegin)
{
logWarning("Already end, call 'begin' and try again");
return;
}
/** Free u8g2 */
delete u8g2;
u8g2 = NULL;
isBegin = false;
logInfo("end");
}
void AgOledDisplay::setStatus(String &status)
{
setStatus(status.c_str());
}
void AgOledDisplay::setStatus(const char *status)
{
}
void AgOledDisplay::setText(String &line1, String &line2, String &line3)
{
setText(line1.c_str(), line2.c_str(), line3.c_str());
}
void AgOledDisplay::setText(const char *line1, const char *line2, const char *line3)
{
DISP()->firstPage();
DISP()->setFont(u8g2_font_t0_16_tf);
DISP()->drawStr(1, 10, line1);
DISP()->drawStr(1, 30, line2);
DISP()->drawStr(1, 50, line3);
}
void AgOledDisplay::setText(const char *text)
{
}
void AgOledDisplay::setText(String &text)
{
}
void AgOledDisplay::setText(String &line1, String &line2, String &line3, String &line4)
{
setText(line1.c_str(), line2.c_str(), line3.c_str(), line4.c_str());
}
void AgOledDisplay::setText(const char *line1, const char *line2, const char *line3, const char *line4)
{
DISP()->firstPage();
DISP()->setFont(u8g2_font_t0_16_tf);
DISP()->drawStr(1, 10, line1);
DISP()->drawStr(1, 25, line2);
DISP()->drawStr(1, 40, line3);
DISP()->drawStr(1, 55, line4);
}