It workx!
[dmxpainter.git] / src / buffer.c
1 #include "buffer.h"\r
2 \r
3 char gg_buffer_gs[512] = {\r
4   /* R     G     B */\r
5    0x01, 0x01, 0x01,\r
6    0x00, 0x00, 0xFF,\r
7 \r
8 \r
9    0x00, 0x00, 0x00,\r
10    0xDD, 0xDD, 0xDD,\r
11    0xCC, 0xCC, 0xCC,\r
12    0xBB, 0xBB, 0xBB,\r
13    0xAA, 0xAA, 0xAA,\r
14    0x99, 0x99, 0x99,\r
15    0x88, 0x88, 0x88,\r
16    0x77, 0x77, 0x77,\r
17    0x66, 0x66, 0x66,\r
18    0x55, 0x55, 0x55,\r
19    0x44, 0x44, 0x44,\r
20    0x33, 0x33, 0x33,\r
21    0x22, 0x22, 0x22,\r
22 \r
23    0xFF, 0x00, 0x00,\r
24 \r
25 \r
26 \r
27    0x00, 0x00, 0x00,\r
28    0x00, 0x00, 0x00,\r
29    0x00, 0x00, 0x00,\r
30    0x00, 0x00, 0x00,\r
31    0x00, 0x00, 0x00,\r
32    0x00, 0x00, 0x00,\r
33    0x00, 0x00, 0x00,\r
34    0x00, 0x00, 0x00,\r
35    0x00, 0x00, 0x00,\r
36    0x00, 0x00, 0x00,\r
37    0x00, 0x00, 0x00,\r
38    0x00, 0x00, 0x00,\r
39    0x00, 0x00, 0x00,\r
40    0x00, 0x00, 0x00,\r
41    0x00, 0x00, 0x00,\r
42    0x00, 0x00, 0x00,\r
43 \r
44 \r
45 \r
46    0xFF, 0xFF, 0xFF,\r
47    0xEE, 0xEE, 0xEE,\r
48    0xDD, 0xDD, 0xDD,\r
49    0xCC, 0xCC, 0xCC,\r
50    0xBB, 0xBB, 0xBB,\r
51    0xAA, 0xAA, 0xAA,\r
52    0x99, 0x99, 0x99,\r
53    0x88, 0x88, 0x88,\r
54    0x77, 0x77, 0x77,\r
55    0x66, 0x66, 0x66,\r
56    0x55, 0x55, 0x55,\r
57    0x44, 0x44, 0x44,\r
58    0x33, 0x33, 0x33,\r
59    0x22, 0x22, 0x22,\r
60    0x11, 0x11, 0x11,\r
61    0x01, 0x02, 0x03\r
62 };\r
63 \r
64 char gg_buffer_dc[3]   = {\r
65   0x08, // R\r
66   0x08, // G\r
67   0x08  // B\r
68 };\r
69 \r
70 \r
71 ///////////////////////////////\r
72 \r
73 #include "mcu.h"\r
74 #include "sched.h"\r
75 #include "tlc.h"\r
76 \r
77 #include <string.h>\r
78 \r
79 sched_res_t buffer_test_next(void);\r
80 \r
81 volatile uint32_t g_delay;\r
82 volatile uint8_t g_rgb = 0;\r
83 void reset_counter(void)\r
84 {\r
85   g_delay = 0;\r
86 }\r
87 \r
88 void buffer_init(void)\r
89 {\r
90   #define BUFFER_INIT_KEEP 1\r
91 \r
92   #if BUFFER_INIT_KEEP == 0\r
93   memset(gg_buffer_gs, 0x00, sizeof(gg_buffer_gs));\r
94   #endif\r
95   for (uint8_t i = 0; i < (TLC_N_CHANNELS / TLC_N_TLCS_PER_PAINTER - BUFFER_INIT_KEEP); i++)\r
96     for (uint8_t rgb = 0; rgb < 3; rgb++)\r
97       gg_buffer_gs[i * 3 + rgb] = 0x00;// | (rgb + 1);\r
98    reset_counter();\r
99 }\r
100 \r
101 void buffer_next(void)\r
102 {\r
103   //sched_put(&buffer_test_next);\r
104   //tlc_set_data_done();\r
105   buffer_test_next();\r
106 }\r
107 \r
108 \r
109 sched_res_t buffer_test_next(void)\r
110 {\r
111   char * foo = gg_buffer_gs + 15 * 3;\r
112 \r
113   if (g_delay++ < 100000) return 0;\r
114   reset_counter();\r
115   foo[0] = (g_rgb % 3) == 0 ? 0xFF : 0x00;\r
116   foo[1] = (g_rgb % 3) == 1 ? 0xFF : 0x00;\r
117   foo[2] = (g_rgb % 3) == 2 ? 0xFF : 0x00;\r
118   g_rgb--;\r
119 \r
120   tlc_set_data_done();\r
121   return SCHED_OK;\r
122 }\r