Dot correction... broken?
[dmxpainter.git] / src / buffer.c
1 #include "buffer.h"
2
3 char gg_buffer_gs[512] = {
4   /* R     G     B */
5    0xFF, 0xFF, 0xFF,  // 01
6    0xFF, 0x00, 0xFF,  // 02
7    0x00, 0x00, 0x00,  // 03
8    0xDD, 0xDD, 0xDD,  // 04
9    0xCC, 0xCC, 0xCC,  // 05
10    0xBB, 0xBB, 0xBB,  // 06
11    0xAA, 0xAA, 0xAA,  // 07
12    0x99, 0x99, 0x99,  // 08
13    0x88, 0x88, 0x88,  // 09
14    0x77, 0x77, 0x77,  // 10
15    0x66, 0x66, 0x66,  // 11
16    0x55, 0x55, 0x55,  // 12
17    0x44, 0x44, 0x44,  // 13
18    0x33, 0x33, 0x33,  // 14
19    0x22, 0x22, 0x22,  // 15
20
21    0x33, 0x00, 0x33   // 16
22
23 };
24
25 char gg_buffer_dc[3]   = {
26   0x00, // R
27   0x00, // G
28   0x0B  // B
29 };
30
31
32 ///////////////////////////////
33
34 #include "mcu.h"
35 #include "sched.h"
36 #include "tlc.h"
37
38 #include <string.h>
39
40 sched_res_t buffer_test_next(void);
41
42 volatile uint32_t g_delay;
43 volatile uint8_t g_rgb = 0;
44 void reset_counter(void)
45 {
46   g_delay = 0;
47 }
48
49 void buffer_init(void)
50 {
51 #if 0
52   #define BUFFER_INIT_KEEP 1
53   #if BUFFER_INIT_KEEP == 0
54   memset(gg_buffer_gs, 0x00, sizeof(gg_buffer_gs));
55   #endif
56
57   for (uint8_t i = 0; i < (TLC_N_CHANNELS / TLC_N_TLCS_PER_PAINTER - BUFFER_INIT_KEEP); i++)
58     for (uint8_t rgb = 0; rgb < 3; rgb++)
59       gg_buffer_gs[i * 3 + rgb] = 0xF0 | (rgb + 1);
60    reset_counter();
61 #endif
62 }
63
64 #if 0
65 void buffer_next(void)
66 {
67   //sched_put(&buffer_test_next);
68   //tlc_set_data_done();
69   buffer_test_next();
70 }
71
72 sched_res_t buffer_test_next(void)
73 {
74   char * foo = gg_buffer_gs + 15 * 3;
75
76   //if (g_delay++ < 100000) return 0;
77   //reset_counter();
78   foo[0] = (g_rgb % 3) == 0 ? 0xFF : 0x00;
79   foo[1] = (g_rgb % 3) == 1 ? 0xFF : 0x00;
80   foo[2] = (g_rgb % 3) == 2 ? 0xFF : 0x00;
81   //g_rgb--;
82
83   tlc_set_data_done();
84   return SCHED_OK;
85 }
86
87 void buffer_do(void)
88 {
89   g_rgb--;
90 }
91 #endif