/** * Simple API for scrolling lines. Keeps things simple by not even assuming * which screen is being drawn on. */ #ifndef DEVICE_SCREEN_H #define DEVICE_SCREEN_H #include #include #include #define SCREEN_WIDTH (128) #define SCREEN_HEIGHT (32) #define FONT_WIDTH (8) #define SCREEN_MAX_CHARS (SCREEN_WIDTH / FONT_WIDTH) /** * Struct that keeps track of the lines on the screen. */ struct display_status { SSD1306Brzo *screen; /* Screen to draw on. */ time_t delta; /* Seconds/Line */ time_t last_scroll_time; /* Last second the line was scrolled */ char *message; /* Entire message to be shown */ char *first_line; /* First line on display */ char *second_line; /* Second line on display */ size_t message_len; /* Length of the message */ size_t line_cursor; /* Index of the first line being displayed. */ }; /** * Displays scrolling text on the screen. */ void display_update_scroll(struct display_status *status); /** * Initialises display_status structure so it can be used for * display_update_scroll. * * screen - screen to draw on * * status - structure to Initialise * * msg - message to scroll on the screen */ void display_status_init(SSD1306Brzo *screen, struct display_status *status, char *msg); #endif /* DEVICE_SCREEN_H */