1c773860b8e33a40516f1663b7356798fde0bfb9
[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
26 #define DC(p) (char)(0x3F * ((char)p - 0) / 100)
27 #define DC_RGB(r, g, b, x) { DC(r), DC(g), DC(b) }
28 char gg_buffer_dc[3] = DC_RGB(
29                           100,
30                            30,
31                            30,
32                            0);
33
34
35 ///////////////////////////////
36
37 #include "mcu.h"
38 #include "sched.h"
39 #include "tlc.h"
40
41 #include <string.h>
42
43 sched_res_t buffer_test_next(void);
44
45 volatile uint32_t g_delay;
46 volatile uint8_t g_rgb = 0;
47 void reset_counter(void)
48 {
49   g_delay = 0;
50 }
51
52 void buffer_init(void)
53 {
54 #if 0
55   #define BUFFER_INIT_KEEP 1
56   #if BUFFER_INIT_KEEP == 0
57   memset(gg_buffer_gs, 0x00, sizeof(gg_buffer_gs));
58   #endif
59
60   for (uint8_t i = 0; i < (TLC_N_CHANNELS / TLC_N_TLCS_PER_PAINTER - BUFFER_INIT_KEEP); i++)
61     for (uint8_t rgb = 0; rgb < 3; rgb++)
62       gg_buffer_gs[i * 3 + rgb] = 0xF0 | (rgb + 1);
63    reset_counter();
64 #endif
65 }
66
67 #if 0
68 void buffer_next(void)
69 {
70   //sched_put(&buffer_test_next);
71   //tlc_set_data_done();
72   buffer_test_next();
73 }
74
75 sched_res_t buffer_test_next(void)
76 {
77   char * foo = gg_buffer_gs + 15 * 3;
78
79   //if (g_delay++ < 100000) return 0;
80   //reset_counter();
81   foo[0] = (g_rgb % 3) == 0 ? 0xFF : 0x00;
82   foo[1] = (g_rgb % 3) == 1 ? 0xFF : 0x00;
83   foo[2] = (g_rgb % 3) == 2 ? 0xFF : 0x00;
84   //g_rgb--;
85
86   tlc_set_data_done();
87   return SCHED_OK;
88 }
89
90 void buffer_do(void)
91 {
92   g_rgb--;
93 }
94 #endif