summaryrefslogtreecommitdiff
path: root/keyboards/ergodone
diff options
context:
space:
mode:
authorToshiki Yagi <mrabbit@usagigoya.jp>2017-08-27 08:21:53 +0900
committerJack Humbert <jack.humb@gmail.com>2017-08-26 23:32:25 -0400
commitde315c54eb244821aef39e75c3f5d1c8e96d1273 (patch)
tree2618504d2c2fc6f5c6b7f87573094c32fbec3226 /keyboards/ergodone
parenta6fe0320f5dbbeca1822d9b02159678fde3da8a5 (diff)
make ergodone's led work well
Diffstat (limited to 'keyboards/ergodone')
-rw-r--r--keyboards/ergodone/ergodone.c47
-rw-r--r--keyboards/ergodone/ergodone.h63
2 files changed, 98 insertions, 12 deletions
diff --git a/keyboards/ergodone/ergodone.c b/keyboards/ergodone/ergodone.c
index 6b8d8a0632..dd05a8def1 100644
--- a/keyboards/ergodone/ergodone.c
+++ b/keyboards/ergodone/ergodone.c
@@ -1,5 +1,52 @@
#include "ergodone.h"
+extern inline void ergodox_board_led_on(void);
+extern inline void ergodox_right_led_1_on(void);
+extern inline void ergodox_right_led_2_on(void);
+extern inline void ergodox_right_led_3_on(void);
+extern inline void ergodox_right_led_on(uint8_t led);
+
+extern inline void ergodox_board_led_off(void);
+extern inline void ergodox_right_led_1_off(void);
+extern inline void ergodox_right_led_2_off(void);
+extern inline void ergodox_right_led_3_off(void);
+extern inline void ergodox_right_led_off(uint8_t led);
+
+void ergodox_led_init(void);
+void ergodox_blink_all_leds(void);
+
void matrix_init_kb(void) {
+ ergodox_led_init();
+ ergodox_blink_all_leds();
matrix_init_user();
}
+
+void ergodox_led_init(void)
+ {
+ DDRB |= (1<<PB5 | 1<<PB6 | 1<<PB3);
+ PORTB &= ~(1<<PB5 | 1<<PB6 | 1<<PB3);
+ DDRB |= (1<<PB0);
+ PORTB |= (1<<PB0);
+ DDRD |= (1<<PB5);
+ PORTD |= (1<<PB5);
+}
+
+void ergodox_blink_all_leds(void)
+{
+ ergodox_led_all_off();
+ ergodox_led_all_set(LED_BRIGHTNESS_HI);
+ ergodox_right_led_1_on();
+ _delay_ms(50);
+ ergodox_right_led_2_on();
+ _delay_ms(50);
+ ergodox_right_led_3_on();
+ _delay_ms(50);
+ ergodox_right_led_1_off();
+ _delay_ms(50);
+ ergodox_right_led_2_off();
+ _delay_ms(50);
+ ergodox_right_led_3_off();
+ //ergodox_led_all_on();
+ //_delay_ms(333);
+ ergodox_led_all_off();
+}
diff --git a/keyboards/ergodone/ergodone.h b/keyboards/ergodone/ergodone.h
index 9f6c8f841b..0826e95216 100644
--- a/keyboards/ergodone/ergodone.h
+++ b/keyboards/ergodone/ergodone.h
@@ -10,18 +10,57 @@
void init_ergodox(void);
-inline void ergodox_right_led_1_off(void) {}
-inline void ergodox_right_led_1_on(void) {}
-inline void ergodox_right_led_2_off(void) {}
-inline void ergodox_right_led_2_on(void) {}
-inline void ergodox_right_led_3_off(void) {}
-inline void ergodox_right_led_3_on(void) {}
-inline void ergodox_right_led_on(uint8_t l) {}
-inline void ergodox_right_led_off(uint8_t l) {}
-inline void ergodox_board_led_off(void) {}
-inline void ergodox_board_led_on(void) {}
-inline void ergodox_led_all_on(void) {}
-inline void ergodox_led_all_off(void) {}
+inline void ergodox_right_led_1_off(void) { DDRB &= ~(1<<PB5); PORTB &= ~(1<<PB5); }
+inline void ergodox_right_led_1_on(void) { DDRB |= (1<<PB5); PORTB |= (1<<PB5); }
+inline void ergodox_right_led_2_off(void) { DDRB &= ~(1<<PB6); PORTB &= ~(1<<PB6); }
+inline void ergodox_right_led_2_on(void) { DDRB |= (1<<PB6); PORTB |= (1<<PB6); }
+inline void ergodox_right_led_3_off(void) { DDRB &= ~(1<<PB3); PORTB &= ~(1<<PB3); }
+inline void ergodox_right_led_3_on(void) { DDRB |= (1<<PB3); PORTB |= (1<<PB3); }
+inline void ergodox_right_led_on(uint8_t l) {
+ switch (l) {
+ case 1:
+ ergodox_right_led_1_on();
+ break;
+ case 2:
+ ergodox_right_led_2_on();
+ break;
+ case 3:
+ ergodox_right_led_3_on();
+ break;
+ default:
+ break;
+ }
+}
+
+inline void ergodox_right_led_off(uint8_t l) {
+ switch (l) {
+ case 1:
+ ergodox_right_led_1_off();
+ break;
+ case 2:
+ ergodox_right_led_2_off();
+ break;
+ case 3:
+ ergodox_right_led_3_off();
+ break;
+ default:
+ break;
+ }
+}
+inline void ergodox_board_led_off(void) { DDRB &= ~(1<<PB0); PORTB |= (1<<PB0); }
+inline void ergodox_board_led_on(void) { DDRB |= (1<<PB0); PORTB &= ~(1<<PB0); }
+inline void ergodox_led_all_on(void) {
+ ergodox_right_led_1_on();
+ ergodox_right_led_2_on();
+ ergodox_right_led_3_on();
+ ergodox_board_led_on();
+}
+inline void ergodox_led_all_off(void) {
+ ergodox_right_led_1_off();
+ ergodox_right_led_2_off();
+ ergodox_right_led_3_off();
+ ergodox_board_led_off();
+}
inline void ergodox_right_led_1_set(uint8_t n) {}
inline void ergodox_right_led_2_set(uint8_t n) {}
inline void ergodox_right_led_3_set(uint8_t n) {}