10 #define LED_STRUCT1(name, count) const struct { \ 11 uint16_t red[count]; \ 12 } __attribute__((packed)) name 14 #define LED_STRUCT2(name, count) const struct { \ 15 uint16_t red[count]; \ 16 uint16_t green[count]; \ 17 } __attribute__((packed)) name 19 LED_STRUCT2(ramp_offset_seq, 5) = {
20 {0, 0, 1000, 1000, 0},
23 const uint16_t ramp_offset_duration[] = { 0, 2000, 2000, 2000, 2000, 8000 };
25 LED_STRUCT1(red_pulse_seq, 6) = {
26 {0, 1000, 1000, 0, 200, 0}
28 const uint16_t red_pulse_duration[] = { 0, 2000, 2000, 2000, 500, 500, 7000 };
30 LED_STRUCT2(orange_wave_seq, 3) = {
34 const uint16_t orange_wave_duration[] = { 0, 2500, 2500, 5000 };
36 LED_STRUCT2(dual_freq_seq, 5) = {
37 {0, 1000, 0, 1000, 0},
38 {0, 500, 1000, 500, 0}
40 const uint16_t dual_freq_duration[] = { 0, 2000, 2000, 2000, 2000, 8000 };
42 LED_STRUCT1(pir_pulse_seq, 4) = {
45 const uint16_t pir_pulse_duration[] = { 0, 25, 250, 25, 300 };
47 LED_STRUCT2(green_wave_seq, 5) = {
51 const uint16_t green_wave_duration[] = { 0, 1000, 1000, 2000, 1000, 5000 };
53 const uint32_t led_num_len[] = {2, 1, 2, 2, 1, 2};
54 const uint32_t led_seq_len[] = {5, 6, 3, 5, 4, 5};
55 const uint16_t *
const led_seq_ptr[] = {(uint16_t *) &ramp_offset_seq, (uint16_t *) &red_pulse_seq, (uint16_t *) &orange_wave_seq, (uint16_t *) &dual_freq_seq, (uint16_t *) &pir_pulse_seq, (uint16_t *) &green_wave_seq };
56 const uint16_t *
const led_seq_duration_ptr[] = { ramp_offset_duration, red_pulse_duration, orange_wave_duration, dual_freq_duration, pir_pulse_duration, green_wave_duration };
58 const uint32_t led_pin_num[LED_COLOR_MAX] = {LED_RED, LED_GREEN};
60 const uint32_t *
const led_seq_get_pin_ptr(
void)
65 uint32_t led_seq_get_pin_num(led_sequences seq)
67 return led_num_len[seq];
70 uint32_t led_seq_get_seg_len(led_sequences seq)
72 return led_seq_len[seq];
75 uint16_t * led_seq_get_seq_color_ptr(led_sequences seq, led_seq_color color)
77 return ((uint16_t *)(led_seq_ptr[seq] + color*led_seq_len[seq]));
80 uint16_t * led_seq_get_seq_duration_ptr(led_sequences seq)
82 return (uint16_t *) led_seq_duration_ptr[seq];