You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
1.9 KiB
102 lines
1.9 KiB
#ifndef SPLIT_LEDS_H
|
|
#define SPLIT_LEDS_H
|
|
|
|
#ifdef USE_I2C
|
|
#include <stddef.h>
|
|
#ifdef __AVR__
|
|
#include <avr/io.h>
|
|
#include <avr/interrupt.h>
|
|
#endif
|
|
#endif
|
|
|
|
#include "split_util.h"
|
|
|
|
#define LED_RED 1
|
|
#define LED_GREEN 2
|
|
#define LED_BLUE 3
|
|
|
|
enum led_state{
|
|
LED_OFF = 0,
|
|
LED_ON
|
|
};
|
|
|
|
typedef enum led_state led_state_t;
|
|
|
|
inline void _led_1_off(void) { DDRF &= ~(1<<PF4); PORTF &= ~(1<<PF4); }
|
|
inline void _led_1_on(void) { DDRF |= (1<<PF4); PORTF |= (1<<PF4); }
|
|
inline void _led_2_off(void) { DDRF &= ~(1<<PF5); PORTF &= ~(1<<PF5); }
|
|
inline void _led_2_on(void) { DDRF |= (1<<PF5); PORTF |= (1<<PF5); }
|
|
inline void _led_3_off(void) { DDRF &= ~(1<<PF6); PORTF &= ~(1<<PF6); }
|
|
inline void _led_3_on(void) { DDRF |= (1<<PF6); PORTF |= (1<<PF6); }
|
|
|
|
inline void _led_all_off(void) { _led_1_off(); _led_2_off(); _led_3_off(); }
|
|
inline void _led_all_on(void) { _led_1_on(); _led_2_on(); _led_3_on(); }
|
|
|
|
uint8_t _slave_led_1;
|
|
uint8_t _slave_led_2;
|
|
uint8_t _slave_led_3;
|
|
|
|
// MASTER LEDS: ////////////////////////////
|
|
|
|
inline void _led_set_master(uint8_t num, led_state_t state)
|
|
{
|
|
switch (num) {
|
|
case 1:
|
|
if (state == LED_ON)
|
|
_led_1_on();
|
|
else
|
|
_led_1_off();
|
|
break;
|
|
case 2:
|
|
if (state == LED_ON)
|
|
_led_2_on();
|
|
else
|
|
_led_2_off();
|
|
break;
|
|
case 3:
|
|
if (state == LED_ON)
|
|
_led_3_on();
|
|
else
|
|
_led_3_off();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
inline void _led_set_slave(uint8_t num, led_state_t state)
|
|
{
|
|
switch (num) {
|
|
case 1:
|
|
_slave_led_1 = state;
|
|
break;
|
|
case 2:
|
|
_slave_led_2 = state;
|
|
break;
|
|
case 3:
|
|
_slave_led_3 = state;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void left_led_set(uint8_t num, led_state_t state);
|
|
void right_led_set(uint8_t num, led_state_t state);
|
|
void both_led_set(uint8_t num, led_state_t state);
|
|
|
|
|
|
void left_led_all_on(void);
|
|
void left_led_all_off(void);
|
|
|
|
void right_led_all_on(void);
|
|
void right_led_all_off(void);
|
|
|
|
void both_led_all_on(void);
|
|
void both_led_all_off(void);
|
|
|
|
|
|
void _led_init(void);
|
|
void _led_boot_animation(void);
|
|
|
|
#endif
|