--- a/glcddrivers/framebuffer.c +++ b/glcddrivers/framebuffer.c @@ -24,6 +24,18 @@ #include "config.h" #include "framebuffer.h" +int proc_put(const char *path, const char *value, const int len) +{ + int ret, ret2; + int pfd = open(path, O_WRONLY); + if (pfd < 0) + return pfd; + ret = write(pfd, value, len); + ret2 = close(pfd); + if (ret2 < 0) + return ret2; + return ret; +} namespace GLCD { @@ -443,4 +455,13 @@ bbox[3] = 0; } +void cDriverFramebuffer::SetBrightness(unsigned int dimm) +{ + std::string value = std::to_string((int)(255*dimm*10/100)); + if (access("/proc/stb/lcd/oled_brightness", F_OK) == 0) + proc_put("/proc/stb/lcd/oled_brightness", value.c_str(), value.length()); + else if (access("/proc/stb/fp/oled_brightness", F_OK) == 0) + proc_put("/proc/stb/fp/oled_brightness", value.c_str(), value.length()); +} + } // end of namespace --- a/glcddrivers/framebuffer.h +++ b/glcddrivers/framebuffer.h @@ -53,6 +53,7 @@ virtual void SetPixel(int x, int y, uint32_t data); //virtual void Set8Pixels(int x, int y, unsigned char data); virtual void Refresh(bool refreshAll = false); + virtual void SetBrightness(unsigned int); }; } // end of namespace