don't offer scanning on nims where nothing is connected
[enigma2.git] / lib / gdi / lcd.cpp
index 5fe1c3ad0926770050a1cb850542b2863ed01f55..ecc19b5389853bc69bcf35f6ef95bcde9c089d68 100644 (file)
@@ -44,12 +44,18 @@ void eLCD::unlock()
 
 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!");
@@ -135,7 +141,7 @@ eDBoxLCD *eDBoxLCD::getInstance()
 
 void eDBoxLCD::update()
 {
-       if (!is_oled)
+       if (!is_oled || is_oled == 2)
        {
                unsigned char raw[132*8];
                int x, y, yy;
@@ -160,8 +166,14 @@ void eDBoxLCD::update()
                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);