diff options
author | Gabriel Young <gabeplaysdrums@live.com> | 2017-03-19 20:45:10 -0700 |
---|---|---|
committer | Gabriel Young <gabeplaysdrums@live.com> | 2017-03-19 20:45:10 -0700 |
commit | 7e9ca9a97612a5df11b4a2e466f34df0fd62564e (patch) | |
tree | acf4dc93ea504ced170e70f3a6004659e97e9abd /keyboards/frosty_flake | |
parent | a43ae7c92fd2c41b283d03a8543677638a7c61f1 (diff) |
support LEDs
Diffstat (limited to 'keyboards/frosty_flake')
-rw-r--r-- | keyboards/frosty_flake/frosty_flake.c | 40 | ||||
-rw-r--r-- | keyboards/frosty_flake/matrix.c | 55 |
2 files changed, 51 insertions, 44 deletions
diff --git a/keyboards/frosty_flake/frosty_flake.c b/keyboards/frosty_flake/frosty_flake.c index 22979a4515..ed17361840 100644 --- a/keyboards/frosty_flake/frosty_flake.c +++ b/keyboards/frosty_flake/frosty_flake.c @@ -1,28 +1,46 @@ #include "frosty_flake.h" void matrix_init_kb(void) { - // put your keyboard start-up code here - // runs once when the firmware starts up + // put your keyboard start-up code here + // runs once when the firmware starts up - matrix_init_user(); + matrix_init_user(); } void matrix_scan_kb(void) { - // put your looping keyboard code here - // runs every cycle (a lot) + // put your looping keyboard code here + // runs every cycle (a lot) - matrix_scan_user(); + matrix_scan_user(); } bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - // put your per-action keyboard code here - // runs for every action, just before processing by the firmware + // put your per-action keyboard code here + // runs for every action, just before processing by the firmware - return process_record_user(keycode, record); + return process_record_user(keycode, record); } void led_set_kb(uint8_t usb_led) { - // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here + DDRB |= (1<<7); + DDRC |= (1<<5) | (1<<6); - led_set_user(usb_led); + print_dec(usb_led); + + if (usb_led & (1<<USB_LED_CAPS_LOCK)) + PORTC &= ~(1<<5); + else + PORTC |= (1<<5); + + if (usb_led & (1<<USB_LED_NUM_LOCK)) + PORTB &= ~(1<<7); + else + PORTB |= (1<<7); + + if (usb_led & (1<<USB_LED_SCROLL_LOCK)) + PORTC &= ~(1<<6); + else + PORTC |= (1<<6); + + led_set_user(usb_led); } diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c index f289f506ad..5d711a660f 100644 --- a/keyboards/frosty_flake/matrix.c +++ b/keyboards/frosty_flake/matrix.c @@ -24,17 +24,6 @@ #include "util.h" #include "matrix.h" -#define CONFIG_LED_IO \ - DDRB |= (1<<7); \ - DDRC |= (1<<5) | (1<<6); - -#define USB_LED_CAPS_LOCK_ON PORTC &= ~(1<<5) -#define USB_LED_CAPS_LOCK_OFF PORTC |= (1<<5) -#define USB_LED_NUM_LOCK_ON PORTB &= ~(1<<7) -#define USB_LED_NUM_LOCK_OFF PORTB |= (1<<7) -#define USB_LED_SCROLL_LOCK_ON PORTC &= ~(1<<6) -#define USB_LED_SCROLL_LOCK_OFF PORTC |= (1<<6) - #ifndef DEBOUNCING_DELAY # define DEBOUNCING_DELAY 5 #endif @@ -62,34 +51,34 @@ void matrix_init(void) { } uint8_t matrix_scan(void) { - for (uint8_t col = 0; col < MATRIX_COLS; col++) { - select_col(col); - _delay_us(3); - matrix_row_t col_scan = scan_col(); - for (uint8_t row = 0; row < MATRIX_ROWS; row++) { - bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col); - bool curr_bit = col_scan & (1<<row); - if (prev_bit != curr_bit) { - matrix_debouncing[row] ^= ((matrix_row_t)1<<col); - debouncing = DEBOUNCING_DELAY; - } + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + select_col(col); + _delay_us(3); + matrix_row_t col_scan = scan_col(); + for (uint8_t row = 0; row < MATRIX_ROWS; row++) { + bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col); + bool curr_bit = col_scan & (1<<row); + if (prev_bit != curr_bit) { + matrix_debouncing[row] ^= ((matrix_row_t)1<<col); + debouncing = DEBOUNCING_DELAY; + } + } } - } - if (debouncing) { - if (--debouncing) - _delay_ms(1); - else - for (uint8_t i = 0; i < MATRIX_ROWS; i++) - matrix[i] = matrix_debouncing[i]; - } + if (debouncing) { + if (--debouncing) + _delay_ms(1); + else + for (uint8_t i = 0; i < MATRIX_ROWS; i++) + matrix[i] = matrix_debouncing[i]; + } - matrix_scan_quantum(); - return 1; + matrix_scan_quantum(); + return 1; } inline matrix_row_t matrix_get_row(uint8_t row) { - return matrix[row]; + return matrix[row]; } void matrix_print(void) { |