X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=drv%2Flcd_gfx.c;h=3a5135c69a170a26ef0a111dea5e52095feda473;hb=46ac2c9347e738ee3c23109b83d522023ac4e7c9;hp=7784c63a184b69f12105fe755e462dac15a39284;hpb=0d276e51619c092016aebb0955cd83b5022d6c28;p=bertos.git diff --git a/drv/lcd_gfx.c b/drv/lcd_gfx.c index 7784c63a..3a5135c6 100755 --- a/drv/lcd_gfx.c +++ b/drv/lcd_gfx.c @@ -16,6 +16,15 @@ /*#* *#* $Log$ + *#* Revision 1.5 2006/07/19 12:56:25 bernie + *#* Convert to new Doxygen style. + *#* + *#* Revision 1.4 2006/04/27 05:40:11 bernie + *#* Naming convention fixes; Partial merge from project_grl. + *#* + *#* Revision 1.3 2006/02/10 12:35:31 bernie + *#* Enforce CONFIG_* definitions. + *#* *#* Revision 1.2 2006/01/23 23:11:27 bernie *#* Use RASTER_SIZE() to compute... err... the raster size. *#* @@ -37,20 +46,29 @@ #include #include -#ifdef CONFIG_LCD_SOFTINT_REFRESH +/* Configuration sanity checks */ +#if !defined(CONFIG_LCD_SOFTINT_REFRESH) || (CONFIG_LCD_SOFTINT_REFRESH != 0 && CONFIG_LCD_SOFTINT_REFRESH != 1) + #error CONFIG_LCD_SOFTINT_REFRESH must be defined to either 0 or 1 +#endif +#if !defined(CONFIG_LCD_SOFTINT_REFRESH) || (CONFIG_LCD_SOFTINT_REFRESH != 0 && CONFIG_LCD_SOFTINT_REFRESH != 1) + #error CONFIG_LCD_SOFTINT_REFRESH must be defined to either 0 or 1 +#endif - /*! Interval between softint driven lcd refresh */ + +#if CONFIG_LCD_SOFTINT_REFRESH + + /** Interval between softint driven lcd refresh */ # define LCD_REFRESH_INTERVAL 20 /* 20ms -> 50fps */ #endif /* CONFIG_LCD_SOFTINT_REFRESH */ -/*! Number of LCD pages */ +/** Number of LCD pages */ #define LCD_PAGES 4 -/*! Width of an LCD page */ +/** Width of an LCD page */ #define LCD_PAGESIZE (LCD_WIDTH / 2) -/*! +/** * \name LCD I/O pins/ports * @{ */ @@ -68,7 +86,7 @@ #define LCD_PE_E2 PE6 /*@}*/ -/*! +/** * \name DB high nibble (DB[4-7]) * @{ */ @@ -79,7 +97,7 @@ #define LCD_DATA_HI_MASK 0xF0 /*@}*/ -/*! +/** * \name DB low nibble (DB[0-3]) * @{ */ @@ -90,7 +108,7 @@ #define LCD_DATA_LO_MASK 0xF0 /*@}*/ -/*! +/** * \name LCD bus control macros * @{ */ @@ -106,7 +124,7 @@ #define LCD_CLR_E(x) (PORTE &= ~(x)) /*@}*/ -/*! +/** * \name Chip select bits for LCD_SET_E() * @{ */ @@ -114,41 +132,41 @@ #define LCDF_E2 (BV(LCD_PE_E2)) /*@}*/ -/*! Read from the LCD data bus (DB[0-7]) */ +/** Read from the LCD data bus (DB[0-7]) */ #define LCD_READ ( \ ((LCD_DATA_LO_PIN & LCD_DATA_LO_MASK) >> LCD_DATA_LO_SHIFT) | \ ((LCD_DATA_HI_PIN & LCD_DATA_HI_MASK) >> LCD_DATA_HI_SHIFT) \ ) -/*! Write to the LCD data bus (DB[0-7]) */ +/** Write to the LCD data bus (DB[0-7]) */ #define LCD_WRITE(d) \ do { \ LCD_DATA_LO_PORT = (LCD_DATA_LO_PORT & ~LCD_DATA_LO_MASK) | (((d)<= LCD_MIN_PWM); ASSERT(duty <= LCD_MAX_PWM); @@ -375,7 +396,7 @@ static void lcd_clear(void) } -static void lcd_writeraster(const uint8_t *raster) +static void lcd_writeRaster(const uint8_t *raster) { uint8_t page, rows; const uint8_t *right_raster; @@ -401,16 +422,19 @@ static void lcd_writeraster(const uint8_t *raster) } } - -void lcd_blit_bitmap(Bitmap *bm) +/** + * Update the LCD display with data from the provided bitmap. + */ +void lcd_blitBitmap(Bitmap *bm) { - lcd_writeraster(bm->raster); + MOD_CHECK(lcd); + lcd_writeRaster(bm->raster); } -#ifdef CONFIG_LCD_SOFTINT_REFRESH +#if CONFIG_LCD_SOFTINT_REFRESH -static void lcd_refresh_softint(void) +static void lcd_refreshSoftint(void) { lcd_blit_bitmap(&lcd_bitmap); timer_add(lcd_refresh_timer); @@ -419,7 +443,7 @@ static void lcd_refresh_softint(void) #endif /* CONFIG_LCD_SOFTINT_REFRESH */ -/*! +/** * Initialize LCD subsystem. * * \note The PWM used for LCD contrast is initialized in drv/pwm.c @@ -427,6 +451,8 @@ static void lcd_refresh_softint(void) */ void lcd_init(void) { + MOD_CHECK(timer); + // FIXME: interrupts are already disabled when we get here?!? cpuflags_t flags; IRQ_SAVE_DISABLE(flags); @@ -474,7 +500,7 @@ void lcd_init(void) gfx_bitmapInit(&lcd_bitmap, lcd_raster, LCD_WIDTH, LCD_HEIGHT); gfx_bitmapClear(&lcd_bitmap); -#ifdef CONFIG_LCD_SOFTINT_REFRESH +#if CONFIG_LCD_SOFTINT_REFRESH /* Init IRQ driven LCD refresh */ lcd_refresh_timer = timer_new(); @@ -484,4 +510,6 @@ void lcd_init(void) timer_add(lcd_refresh_timer); #endif /* CONFIG_LCD_SOFTINT_REFRESH */ + + MOD_INIT(lcd); }