X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fdrv%2Flcd_rit128x96.c;h=f917cbb71b1ddf6bde38c264ea1c639e2a35f4da;hb=1ebcf9b89595826a5c158ae6a68d4c2407b1dd52;hp=fd2f359579bdea84b40e566906cbe867a1e08689;hpb=d76509a30e7b0ff2440538e2a06210dc64da9214;p=bertos.git diff --git a/bertos/drv/lcd_rit128x96.c b/bertos/drv/lcd_rit128x96.c index fd2f3595..f917cbb7 100644 --- a/bertos/drv/lcd_rit128x96.c +++ b/bertos/drv/lcd_rit128x96.c @@ -35,10 +35,13 @@ * \author Andrea Righi */ +#include "lcd_rit128x96.h" + +#include "hw/hw_rit128x96.h" + #include #include -#include "lcd_rit128x96.h" /* * Hard-coded command initialization sequence. @@ -127,31 +130,33 @@ void rit128x96_off(void) lcd_dataWrite(exit_cmd, sizeof(exit_cmd)); } -static void lcd_start_blit(uint8_t width, uint8_t height) +static void lcd_start_blit(uint8_t x, uint8_t y, uint8_t width, uint8_t height) { uint8_t buffer[3]; - ASSERT(width == LCD_WIDTH && height == LCD_HEIGHT); + ASSERT((x + width) <= LCD_WIDTH); + ASSERT((y + height) <= LCD_HEIGHT); /* Enter command mode */ LCD_SET_COMMAND(); buffer[0] = 0x15; - buffer[1] = 0; - buffer[2] = (width - 2) / 2; + buffer[1] = x / 2; + buffer[2] = (x + width - 2) / 2; lcd_dataWrite(buffer, 3); buffer[0] = 0x75; - buffer[1] = 0; - buffer[2] = height - 1; + buffer[1] = y; + buffer[2] = y + 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) +void rit128x96_blitRaw(const uint8_t *data, + uint8_t x, uint8_t y, uint8_t width, uint8_t height) { - lcd_start_blit(width, height); + lcd_start_blit(x, y, width, height); /* * Enter data mode and send the encoded image data to the OLED display, * over the SSI bus. @@ -172,7 +177,7 @@ void rit128x96_blitBitmap(const Bitmap *bm) uint8_t mask; int i, l; - lcd_start_blit(bm->width, bm->height); + lcd_start_blit(0, 0, bm->width, bm->height); /* * Enter data mode and send the encoded image data to the OLED display, * over the SSI bus. @@ -199,7 +204,7 @@ void rit128x96_blitBitmap(const Bitmap *bm) void rit128x96_init(void) { /* Initialize the communication bus */ - lcd_bus_init(); + lcd_rit128x96_hw_bus_init(); /* Turn on the OLED display */ rit128x96_on();