diff options
author | Erich Eckner <git@eckner.net> | 2018-10-23 10:24:10 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2018-10-23 10:24:10 +0200 |
commit | 1fed55d023562d9aa54e1f08919df4cc764cc201 (patch) | |
tree | cb7fe5f34d1dc83390b266cfb77b44aed8bd6ef0 /anzeige.c | |
parent | b8d4fd77445e984d6b17e49d56583eec83c7beb2 (diff) | |
download | anzeige-1fed55d023562d9aa54e1f08919df4cc764cc201.tar.xz |
anzeige.c: scroll through temperature
Diffstat (limited to 'anzeige.c')
-rw-r--r-- | anzeige.c | 45 |
1 files changed, 16 insertions, 29 deletions
@@ -21,6 +21,7 @@ int main(int argc, char **argv) t_display_data display_data; int ret_val; unsigned char *text_buffer; + t_scroll_buffer scroll_buffers[2]; // Set up gpi pointer for direct register access ret_val = multiplexer_setup_root(); @@ -42,39 +43,25 @@ int main(int argc, char **argv) int i,j,k; - text_buffer = malloc(8); + text_buffer = malloc(24); if (text_buffer == NULL) { - fprintf(stderr, "malloc failed to allocate 8 bytes\n"); + fprintf(stderr, "malloc failed to allocate 24 bytes\n"); exit(EXIT_FAILURE); } + memset(text_buffer, 0, sizeof(text_buffer)); - for (i=0; i<20; i++) { -// usleep(2500000); -// if (i & 0x01) { - ret_val = gadgets_retrieve_temperature(text_buffer,sizeof(text_buffer)); - if (ret_val) { - free(text_buffer); - exit(ret_val); - } - for (j=0; j<39; j++) - display_data.buf[(display_data.should_buf+1)%3][j] = 0x00; - for (j=0; (j<7) && (text_buffer[j]); j++) { - text_buffer[j] = text_buffer[j] & 0xff; - printf("%02x %c\n",text_buffer[j],text_buffer[j]); - if (text_buffer[j] >= 0x7f) { - if (text_buffer[j] <= 0xaf) - continue; - text_buffer[j] -= 0xaf - 0x7f + 1; - } - text_buffer[j] -= 0x20; - if ((text_buffer[j] < 0) || (text_buffer[j] >= (sizeof(symbols)/5))) { - printf("EXCESS: %d %d %d\n", text_buffer[j], (text_buffer[j] < 0), (text_buffer[j] >= (sizeof(symbols)/5))); - continue; - } - for (k=0; k<5; k++) - display_data.buf[(display_data.should_buf+1)%3][6*j+k] = symbols[5*(text_buffer[j])+k]; -// } - } + ret_val = gadgets_retrieve_temperature(text_buffer,sizeof(text_buffer)); + if (ret_val) { + free(text_buffer); + exit(ret_val); + } + + scroll_buffers[0].scroll_len = render(text_buffer, sizeof(text_buffer), scroll_buffers[0].buf, sizeof(scroll_buffers[0].buf), 1); + + for (i=0; i<100; i++) { + usleep(250000); + for (j=0; j<39; j++) + display_data.buf[(display_data.should_buf+1)%3][j] = scroll_buffers[0].buf[(i+j) % scroll_buffers[0].scroll_len]; display_data.should_buf = (display_data.should_buf+1)%3; } |