diff --git a/driver/st7565.c b/driver/st7565.c index dc6b125..af17e24 100644 --- a/driver/st7565.c +++ b/driver/st7565.c @@ -47,80 +47,78 @@ void ST7565_DrawLine(const unsigned int Column, const unsigned int Line, const u } -// Optimization -// -// ST7565_BlitScreen(0) = ST7565_BlitStatusLine() -// ST7565_BlitScreen(1..7) = ST7565_BlitLine() -// ST7565_BlitScreen(8) = ST7565_BlitFullScreen() -// +#ifdef ENABLE_FEAT_F4HWN + // Optimization + // + // ST7565_BlitScreen(0) = ST7565_BlitStatusLine() + // ST7565_BlitScreen(1..7) = ST7565_BlitLine() + // ST7565_BlitScreen(8) = ST7565_BlitFullScreen() + // -static void ST7565_BlitScreen(uint8_t line) -{ - SPI_ToggleMasterMode(&SPI0->CR, false); - ST7565_WriteByte(0x40); + static void ST7565_BlitScreen(uint8_t line) + { + SPI_ToggleMasterMode(&SPI0->CR, false); + ST7565_WriteByte(0x40); - if(line == 0) - { - DrawLine(0, 0, gStatusLine, LCD_WIDTH); - } - else if(line <= FRAME_LINES) - { - DrawLine(0, line, gFrameBuffer[line - 1], LCD_WIDTH); - } - else - { - for (line = 1; line <= FRAME_LINES; line++) { + if(line == 0) + { + DrawLine(0, 0, gStatusLine, LCD_WIDTH); + } + else if(line <= FRAME_LINES) + { DrawLine(0, line, gFrameBuffer[line - 1], LCD_WIDTH); } + else + { + for (line = 1; line <= FRAME_LINES; line++) { + DrawLine(0, line, gFrameBuffer[line - 1], LCD_WIDTH); + } + } + + SPI_ToggleMasterMode(&SPI0->CR, true); } - SPI_ToggleMasterMode(&SPI0->CR, true); -} + void ST7565_BlitFullScreen(void) + { + ST7565_BlitScreen(8); + } -void ST7565_BlitFullScreen(void) -{ - ST7565_BlitScreen(8); -} + void ST7565_BlitLine(unsigned line) + { + ST7565_BlitScreen(line + 1); + } -void ST7565_BlitLine(unsigned line) -{ - ST7565_BlitScreen(line + 1); -} + void ST7565_BlitStatusLine(void) + { + ST7565_BlitScreen(0); + } +#else + void ST7565_BlitFullScreen(void) + { + SPI_ToggleMasterMode(&SPI0->CR, false); + ST7565_WriteByte(0x40); + for (unsigned line = 0; line < FRAME_LINES; line++) { + DrawLine(0, line+1, gFrameBuffer[line], LCD_WIDTH); + } + SPI_ToggleMasterMode(&SPI0->CR, true); + } -void ST7565_BlitStatusLine(void) -{ - ST7565_BlitScreen(0); -} - -/* -void ST7565_BlitFullScreen(void) -{ - SPI_ToggleMasterMode(&SPI0->CR, false); - ST7565_WriteByte(0x40); - for (unsigned line = 0; line < FRAME_LINES; line++) { + void ST7565_BlitLine(unsigned line) + { + SPI_ToggleMasterMode(&SPI0->CR, false); + ST7565_WriteByte(0x40); // start line ? DrawLine(0, line+1, gFrameBuffer[line], LCD_WIDTH); + SPI_ToggleMasterMode(&SPI0->CR, true); } - SPI_ToggleMasterMode(&SPI0->CR, true); -} - -void ST7565_BlitLine(unsigned line) -{ - SPI_ToggleMasterMode(&SPI0->CR, false); - ST7565_WriteByte(0x40); // start line ? - DrawLine(0, line+1, gFrameBuffer[line], LCD_WIDTH); - SPI_ToggleMasterMode(&SPI0->CR, true); -} - -void ST7565_BlitStatusLine(void) -{ // the top small text line on the display - SPI_ToggleMasterMode(&SPI0->CR, false); - ST7565_WriteByte(0x40); // start line ? - DrawLine(0, 0, gStatusLine, LCD_WIDTH); - SPI_ToggleMasterMode(&SPI0->CR, true); -} -*/ - + void ST7565_BlitStatusLine(void) + { // the top small text line on the display + SPI_ToggleMasterMode(&SPI0->CR, false); + ST7565_WriteByte(0x40); // start line ? + DrawLine(0, 0, gStatusLine, LCD_WIDTH); + SPI_ToggleMasterMode(&SPI0->CR, true); + } +#endif void ST7565_FillScreen(uint8_t value) {