keyboard layout for qmk firmware
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

#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