eDBoxLCD::eDBoxLCD(): eLCD(eSize(132, 64))
{
+ is_oled = 0;
#ifndef NO_LCD
lcdfd = open("/dev/dbox/oled0", O_RDWR);
if (lcdfd < 0)
{
+ FILE *f=fopen("/proc/stb/fp/oled_brightness", "w");
+ if (f)
+ {
+ is_oled = 2;
+ fclose(f);
+ }
lcdfd = open("/dev/dbox/lcd0", O_RDWR);
- is_oled = 0;
} else
{
eDebug("found OLED display!");
void eDBoxLCD::update()
{
- if (!is_oled)
+ if (!is_oled || is_oled == 2)
{
unsigned char raw[132*8];
int x, y, yy;
memset(raw, 0, 64*64);
for (y=0; y<64; y++)
{
+ int pix=0;
for (x=0; x<128 / 2; x++)
- raw[y*64+x] = (_buffer[y*132 + x * 2 + 2] & 0xF0) |(_buffer[y*132 + x * 2 + 1 + 2] >> 4);
+ {
+ pix = (_buffer[y*132 + x * 2 + 2] & 0xF0) |(_buffer[y*132 + x * 2 + 1 + 2] >> 4);
+ if (inverted)
+ pix = 0xFF - pix;
+ raw[y*64+x] = pix;
+ }
}
if (lcdfd >= 0)
write(lcdfd, raw, 64*64);