/*
lcd4l - Neutrino-GUI
Copyright (C) 2012 'defans'
Homepage: http://www.bluepeercrew.us/
Copyright (C) 2012-2018 'vanhofen'
Homepage: http://www.neutrino-images.de/
Copyright (C) 2016-2019 'TangoCash'
Copyright (C) 2021, Thilo Graf 'dbt'
License: GPL
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
#ifndef __lcd4l__
#define __lcd4l__
#include
#include
#include
class CLCD4l
{
public:
CLCD4l();
~CLCD4l();
static CLCD4l *getInstance();
// Displays
enum
{
PEARL320x240 = 0,
SAMSUNG800x480 = 1,
SAMSUNG800x600 = 2,
SAMSUNG1024x600 = 3,
VUSOLO4K480x320 = 4,
PNG800x480 = 5,
PNG800x600 = 6,
PNG1024x600 = 7
};
// Functions
void InitLCD4l();
void StartLCD4l();
void StopLCD4l();
void SwitchLCD4l();
void ForceRun() { wait4daemon = false; }
int CreateFile(const char *file, std::string content = "", bool convert = false);
int RemoveFile(const char *file);
int CreateEventFile(std::string content = "", bool convert = false);
int RemoveEventFile();
int CreateMenuFile(std::string content = "", bool convert = false);
int RemoveMenuFile();
int GetMaxBrightness();
void ResetParseID() { m_ParseID = 0; }
static void lcd4linux(int run);
enum
{
STOP_LCD4L = 0,
START_LCD4L = 1,
RELOAD_LCD4L = 2
};
// use signal/slot handlers
// That is helping to keep the GUI code away from code inside ./src/driver.
sigc::signal OnBeforeStart,
OnAfterStart,
OnBeforeStop,
OnAfterStop,
OnBeforeRestart,
OnAfterRestart,
OnError;
private:
std::thread *thrLCD4l;
static void *LCD4lProc(void *arg);
bool exit_proc;
struct tm *tm_struct;
bool wait4daemon;
// Functions
void Init();
void ParseInfo(uint64_t parseID, bool newID, bool firstRun = false);
uint64_t GetParseID();
bool CompareParseID(uint64_t &i_ParseID);
std::string hexStr(unsigned char data);
std::string hexStrA2A(unsigned char data);
void strReplace(std::string &orig, const std::string &fstr, const std::string &rstr);
bool WriteFile(const char *file, std::string content = "", bool convert = false);
void SetWaitStatus(bool wait) { wait4daemon = wait; }
bool GetWaitStatus() { return wait4daemon; }
// Variables
uint64_t m_ParseID;
int m_Mode;
int m_ModeChannel;
int m_Brightness;
int m_Brightness_standby;
std::string m_Resolution;
std::string m_AspectRatio;
int m_Videotext;
int m_Radiotext;
std::string m_DolbyDigital;
int m_Tuner;
int m_Tuner_sig;
int m_Tuner_snr;
int m_Tuner_ber;
int m_Volume;
int m_ModeRec;
int m_RecordCount;
int m_ModeTshift;
int m_ModeTimer;
// int m_ModeEcm;
bool m_ModeCamPresent;
int m_ModeCam;
std::string m_Service;
int m_ChannelNr;
std::string m_Logo;
int m_ModeLogo;
std::string m_Layout;
std::string m_Event;
std::string m_Info1;
std::string m_Info2;
int m_Progress;
char m_Duration[128];
std::string m_Start;
std::string m_End;
std::string m_font;
std::string m_fgcolor;
std::string m_bgcolor;
std::string m_fcolor1;
std::string m_fcolor2;
std::string m_pbcolor;
std::string m_wcity;
std::string m_wtimestamp;
std::string m_wtemp;
std::string m_wwind;
std::string m_wicon;
};
#endif