thermferm/lcd-buffer.c

changeset 204
9a14d6b2de7f
parent 200
a215ddaabbe2
child 205
ca18ff45deba
equal deleted inserted replaced
203:47e5109c7f53 204:9a14d6b2de7f
28 28
29 #ifdef HAVE_WIRINGPI_H 29 #ifdef HAVE_WIRINGPI_H
30 30
31 int current_lines = 0; 31 int current_lines = 0;
32 int current_offset = 0; 32 int current_offset = 0;
33 int first_time = 1;
34 int previous_key = KEY_NONE;
35 lcd_rows *my_lcd_rows = NULL; 33 lcd_rows *my_lcd_rows = NULL;
36 34
37 extern int lcdHandle; 35 extern int lcdHandle;
38 extern sys_config Config; 36 extern sys_config Config;
39 37
88 } 86 }
89 } 87 }
90 88
91 89
92 90
93 /* 91 void lcd_buf_step(void)
94 * This will be called from the main thread if not in edit mode.
95 */
96 void lcd_buf_show(void)
97 { 92 {
98 int i = 0, r = 0, key, doit = FALSE; 93 int key;
99 lcd_rows *tmp;
100 94
101 key = keycheck(); 95 key = keycheck();
102 96
103 if ((key == KEY_NONE) && (previous_key == KEY_DOWN)) { 97 if (key == KEY_DOWN) {
104 if (current_offset < (current_lines - Config.lcd_rows)) 98 if (current_offset < (current_lines - Config.lcd_rows))
105 current_offset = current_offset + Config.lcd_rows; 99 current_offset = current_offset + Config.lcd_rows;
106 else 100 else
107 current_offset = 0; 101 current_offset = 0;
108 doit = TRUE; 102 lcd_buf_show();
109 } 103 }
110 if ((key == KEY_NONE) && (previous_key == KEY_UP)) { 104 if (key == KEY_UP) {
111 if (current_offset > Config.lcd_rows) 105 if (current_offset > Config.lcd_rows)
112 current_offset = current_offset - Config.lcd_rows; 106 current_offset = current_offset - Config.lcd_rows;
113 else 107 else
114 current_offset = (current_lines - Config.lcd_rows); 108 current_offset = (current_lines - Config.lcd_rows);
115 doit = TRUE; 109 lcd_buf_show();
116 } 110 }
117 previous_key = key; 111 }
118 112
119 113
120 /*
121 * Make sure the display works when the program starts.
122 */
123 if (first_time) {
124 first_time = 0;
125 doit = TRUE;
126 }
127 114
128 if (! doit) 115 /*
129 return; 116 * This will be called from the main thread every second.
117 */
118 void lcd_buf_show(void)
119 {
120 int i = 0, r = 0;
121 lcd_rows *tmp;
130 122
131 for (tmp = my_lcd_rows; tmp; tmp = tmp->next) { 123 for (tmp = my_lcd_rows; tmp; tmp = tmp->next) {
132 if (i == current_offset) 124 if (i == current_offset)
133 break; 125 break;
134 i++; 126 i++;

mercurial