diff options
Diffstat (limited to 'include/lcdlib.c')
| -rw-r--r-- | include/lcdlib.c | 53 |
1 files changed, 23 insertions, 30 deletions
diff --git a/include/lcdlib.c b/include/lcdlib.c index 69d6df0..beced28 100644 --- a/include/lcdlib.c +++ b/include/lcdlib.c @@ -17,38 +17,32 @@ #include "lcdlib.h" -static char previous_lines[LCD_HEIGHT][LCD_WIDTH+1]; -static const char* esc = "\x1B[L"; +static char previous_lines[LCD_HEIGHT][LCD_WIDTH + 1]; +static const char *esc = "\x1B[L"; static FILE *lcd = NULL; static int line_idx; -int -lcd_begin(void) { +int lcd_begin(void) { lcd = fopen("/dev/lcd", "w"); - if (lcd == NULL) return EXIT_FAILURE; + if (lcd == NULL) + return EXIT_FAILURE; lcd_clear(); return EXIT_SUCCESS; } -void -lcd_end(void) { - fclose(lcd); -} +void lcd_end(void) { fclose(lcd); } -void -lcd_set_blink(void) { +void lcd_set_blink(void) { fprintf(lcd, "%sB", esc); fflush(lcd); } -void -lcd_stop_blink(void) { +void lcd_stop_blink(void) { fprintf(lcd, "%sb", esc); fflush(lcd); } -void -lcd_clear(void) { +void lcd_clear(void) { line_idx = 0; for (int y = 0; y + 1 < LCD_HEIGHT; y++) { fprintf(lcd, "%sy%dx0;%sk", esc, y, esc); @@ -57,18 +51,17 @@ lcd_clear(void) { fflush(lcd); } -void -lcd_put_line(const enum LCD_WRITE_MODE mode, const char *line) { +void lcd_put_line(const enum LCD_WRITE_MODE mode, const char *line) { char last_line = 0; if (line_idx == LCD_HEIGHT) { if (mode == L_SCROLL) { // If we're at the bottom, ``shift'' everything up for (int y = 1; y < LCD_HEIGHT; y++) { - // Go to the start of row y, clear the line, and print the - // previous string there - fprintf(lcd, "%sy%dx0;%sk%s", esc, y-1, esc, previous_lines[y]); - // Overwrite the stored previous line with the next - strncpy(previous_lines[y-1], previous_lines[y], LCD_WIDTH+1); + // Go to the start of row y, clear the line, and print the + // previous string there + fprintf(lcd, "%sy%dx0;%sk%s", esc, y - 1, esc, previous_lines[y]); + // Overwrite the stored previous line with the next + strncpy(previous_lines[y - 1], previous_lines[y], LCD_WIDTH + 1); } } last_line = 1; @@ -77,20 +70,20 @@ lcd_put_line(const enum LCD_WRITE_MODE mode, const char *line) { fprintf(lcd, "%sy%dx0;%sk%s", esc, line_idx, esc, line); fflush(lcd); // Store this line, null-terminate! - if (last_line) line_idx--; - strncpy(previous_lines[line_idx], line, LCD_WIDTH+1); + if (last_line) + line_idx--; + strncpy(previous_lines[line_idx], line, LCD_WIDTH + 1); previous_lines[line_idx][LCD_WIDTH] = 0; - if (mode == L_SCROLL && line_idx < LCD_HEIGHT) line_idx++; + if (mode == L_SCROLL && line_idx < LCD_HEIGHT) + line_idx++; } -void -lcd_printf_line(const enum LCD_WRITE_MODE mode, - const char *format, ...) { - char buf[LCD_WIDTH+1]; +void lcd_printf_line(const enum LCD_WRITE_MODE mode, const char *format, ...) { + char buf[LCD_WIDTH + 1]; va_list(args); va_start(args, format); - vsnprintf(buf, LCD_WIDTH+1, format, args); + vsnprintf(buf, LCD_WIDTH + 1, format, args); va_end(args); lcd_put_line(mode, buf); |
