}
/* Turn on the OLED display */
-void rit128x96_lcd_on(void)
+void rit128x96_on(void)
{
unsigned int i;
}
/* Turn off the OLED display */
-void rit128x96_lcd_off(void)
+void rit128x96_off(void)
{
LCD_SET_COMMAND();
lcd_dataWrite(exit_cmd, sizeof(exit_cmd));
}
-/* Refresh a bitmap on screen */
-void rit128x96_lcd_blitBitmap(const Bitmap *bm)
+static void lcd_start_blit(uint8_t width, uint8_t height)
{
- uint8_t lcd_row[bm->width / 2];
uint8_t buffer[3];
- uint8_t mask;
- int i, l;
- ASSERT(bm->width == LCD_WIDTH && bm->height == LCD_HEIGHT);
+ ASSERT(width == LCD_WIDTH && height == LCD_HEIGHT);
/* Enter command mode */
LCD_SET_COMMAND();
buffer[0] = 0x15;
buffer[1] = 0;
- buffer[2] = (bm->width - 2) / 2;
+ buffer[2] = (width - 2) / 2;
lcd_dataWrite(buffer, 3);
buffer[0] = 0x75;
buffer[1] = 0;
- buffer[2] = bm->height - 1;
+ buffer[2] = height - 1;
lcd_dataWrite(buffer, 3);
lcd_dataWrite((const uint8_t *)&horizontal_inc, sizeof(horizontal_inc));
+}
+
+/* Refresh a raw image on screen */
+void rit128x96_blitRaw(const uint8_t *data, uint8_t width, uint8_t height)
+{
+ lcd_start_blit(width, height);
+ /*
+ * Enter data mode and send the encoded image data to the OLED display,
+ * over the SSI bus.
+ */
+ LCD_SET_DATA();
+ while (height--)
+ {
+ /* Write an entire row at once */
+ lcd_dataWrite(data, width / 2);
+ data += width / 2;
+ }
+}
+
+/* Refresh a bitmap on screen */
+void rit128x96_blitBitmap(const Bitmap *bm)
+{
+ uint8_t lcd_row[bm->width / 2];
+ uint8_t mask;
+ int i, l;
+ lcd_start_blit(bm->width, bm->height);
/*
* Enter data mode and send the encoded image data to the OLED display,
* over the SSI bus.
}
/* Initialize the OLED display */
-void rit128x96_lcd_init(void)
+void rit128x96_init(void)
{
/* Initialize the communication bus */
lcd_bus_init();
/* Turn on the OLED display */
- rit128x96_lcd_on();
+ rit128x96_on();
}
(LCD_HEIGHT - bertos_logo.height) / 2 + h / SPEED_SCALE,
&bertos_logo);
text_xprintf(bm, 7, 0, TEXT_FILL | TEXT_CENTER, "Press SELECT to quit");
- rit128x96_lcd_blitBitmap(bm);
+ rit128x96_blitBitmap(bm);
timer_delay(5);
if (kbd_peek() & KEY_MASK)
break;
gfx_bitmapClear(bm);
gfx_rectDraw(bm, x1, y1, x2, y2);
- rit128x96_lcd_blitBitmap(bm);
+ rit128x96_blitBitmap(bm);
if (kbd_peek() & KEY_MASK)
break;
}
" %lu.%lu usec",
((end - start) * 1000000) / CPU_FREQ,
((end - start) * (100000000 / CPU_FREQ)) % 100);
- rit128x96_lcd_blitBitmap(&lcd_bitmap);
+ rit128x96_blitBitmap(&lcd_bitmap);
timer_delay(5);
if (kbd_peek() & KEY_MASK)
break;
gfx_bitmapClear(bm);
text_xprintf(bm, 0, 0, TEXT_FILL,
"CPU: Cortex-M3 %luMHz", CPU_FREQ / 1000000);
- rit128x96_lcd_blitBitmap(bm);
+ rit128x96_blitBitmap(bm);
text_xprintf(bm, 1, 0, TEXT_FILL, "Board: LM3S1968 EVB");
- rit128x96_lcd_blitBitmap(bm);
+ rit128x96_blitBitmap(bm);
res_process();
}
/* Display uptime (in ticks) */
text_xprintf(&lcd_bitmap, 2, 0, TEXT_FILL | TEXT_CENTER,
"%lu", clock / 1000);
- rit128x96_lcd_blitBitmap(bm);
+ rit128x96_blitBitmap(bm);
timer_delay(5);
if (kbd_peek() & KEY_MASK)
break;
for (i = 5; i; --i)
{
text_xprintf(bm, 2, 0, TEXT_FILL | TEXT_CENTER, "%d", i);
- rit128x96_lcd_blitBitmap(bm);
+ rit128x96_blitBitmap(bm);
timer_delay(1000);
}
text_xprintf(bm, 2, 0, TEXT_FILL | TEXT_CENTER, "REBOOT");
- rit128x96_lcd_blitBitmap(bm);
+ rit128x96_blitBitmap(bm);
timer_delay(1000);
/* Perform a software reset request */
proc_init();
kputs("Done.\n");
kputs("Init OLED display..");
- rit128x96_lcd_init();
+ rit128x96_init();
gfx_bitmapInit(&lcd_bitmap, raster, LCD_WIDTH, LCD_HEIGHT);
gfx_setFont(&lcd_bitmap, &font_helvB10);
- rit128x96_lcd_blitBitmap(&lcd_bitmap);
+ rit128x96_blitBitmap(&lcd_bitmap);
kputs("Done.\n");
kputs("Init Keypad..");
kbd_init();