diff options
Diffstat (limited to 'quantum/quantum.c')
-rw-r--r-- | quantum/quantum.c | 67 |
1 files changed, 45 insertions, 22 deletions
diff --git a/quantum/quantum.c b/quantum/quantum.c index a4a12061b..5a9e771a9 100644 --- a/quantum/quantum.c +++ b/quantum/quantum.c | |||
@@ -7,6 +7,9 @@ | |||
7 | #define TAPPING_TERM 200 | 7 | #define TAPPING_TERM 200 |
8 | #endif | 8 | #endif |
9 | 9 | ||
10 | #include "backlight.h" | ||
11 | extern backlight_config_t backlight_config; | ||
12 | |||
10 | #ifdef FAUXCLICKY_ENABLE | 13 | #ifdef FAUXCLICKY_ENABLE |
11 | #include "fauxclicky.h" | 14 | #include "fauxclicky.h" |
12 | #endif | 15 | #endif |
@@ -294,14 +297,6 @@ bool process_record_quantum(keyrecord_t *record) { | |||
294 | return false; | 297 | return false; |
295 | break; | 298 | break; |
296 | #endif | 299 | #endif |
297 | #ifdef ADAFRUIT_BLE_ENABLE | ||
298 | case OUT_BLE: | ||
299 | if (record->event.pressed) { | ||
300 | set_output(OUTPUT_ADAFRUIT_BLE); | ||
301 | } | ||
302 | return false; | ||
303 | break; | ||
304 | #endif | ||
305 | #endif | 300 | #endif |
306 | case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_NKRO: | 301 | case MAGIC_SWAP_CONTROL_CAPSLOCK ... MAGIC_TOGGLE_NKRO: |
307 | if (record->event.pressed) { | 302 | if (record->event.pressed) { |
@@ -604,6 +599,10 @@ void matrix_scan_quantum() { | |||
604 | matrix_scan_combo(); | 599 | matrix_scan_combo(); |
605 | #endif | 600 | #endif |
606 | 601 | ||
602 | #if defined(BACKLIGHT_ENABLE) && defined(BACKLIGHT_PIN) | ||
603 | backlight_task(); | ||
604 | #endif | ||
605 | |||
607 | matrix_scan_kb(); | 606 | matrix_scan_kb(); |
608 | } | 607 | } |
609 | 608 | ||
@@ -671,13 +670,13 @@ __attribute__ ((weak)) | |||
671 | void backlight_set(uint8_t level) | 670 | void backlight_set(uint8_t level) |
672 | { | 671 | { |
673 | // Prevent backlight blink on lowest level | 672 | // Prevent backlight blink on lowest level |
674 | #if BACKLIGHT_ON_STATE == 0 | 673 | // #if BACKLIGHT_ON_STATE == 0 |
675 | // PORTx &= ~n | 674 | // // PORTx &= ~n |
676 | _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); | 675 | // _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); |
677 | #else | 676 | // #else |
678 | // PORTx |= n | 677 | // // PORTx |= n |
679 | _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); | 678 | // _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); |
680 | #endif | 679 | // #endif |
681 | 680 | ||
682 | if ( level == 0 ) { | 681 | if ( level == 0 ) { |
683 | #ifndef NO_BACKLIGHT_CLOCK | 682 | #ifndef NO_BACKLIGHT_CLOCK |
@@ -685,13 +684,13 @@ void backlight_set(uint8_t level) | |||
685 | TCCR1A &= ~(_BV(COM1x1)); | 684 | TCCR1A &= ~(_BV(COM1x1)); |
686 | OCR1x = 0x0; | 685 | OCR1x = 0x0; |
687 | #else | 686 | #else |
688 | #if BACKLIGHT_ON_STATE == 0 | 687 | // #if BACKLIGHT_ON_STATE == 0 |
689 | // PORTx |= n | 688 | // // PORTx |= n |
690 | _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); | 689 | // _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); |
691 | #else | 690 | // #else |
692 | // PORTx &= ~n | 691 | // // PORTx &= ~n |
693 | _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); | 692 | // _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); |
694 | #endif | 693 | // #endif |
695 | #endif | 694 | #endif |
696 | } | 695 | } |
697 | #ifndef NO_BACKLIGHT_CLOCK | 696 | #ifndef NO_BACKLIGHT_CLOCK |
@@ -714,6 +713,30 @@ void backlight_set(uint8_t level) | |||
714 | #endif | 713 | #endif |
715 | } | 714 | } |
716 | 715 | ||
716 | uint8_t backlight_tick = 0; | ||
717 | |||
718 | void backlight_task(void) { | ||
719 | #ifdef NO_BACKLIGHT_CLOCK | ||
720 | if ((0xFFFF >> ((BACKLIGHT_LEVELS - backlight_config.level) * ((BACKLIGHT_LEVELS + 1) / 2))) & (1 << backlight_tick)) { | ||
721 | #if BACKLIGHT_ON_STATE == 0 | ||
722 | // PORTx &= ~n | ||
723 | _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); | ||
724 | #else | ||
725 | // PORTx |= n | ||
726 | _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); | ||
727 | #endif | ||
728 | } else { | ||
729 | #if BACKLIGHT_ON_STATE == 0 | ||
730 | // PORTx |= n | ||
731 | _SFR_IO8((backlight_pin >> 4) + 2) |= _BV(backlight_pin & 0xF); | ||
732 | #else | ||
733 | // PORTx &= ~n | ||
734 | _SFR_IO8((backlight_pin >> 4) + 2) &= ~_BV(backlight_pin & 0xF); | ||
735 | #endif | ||
736 | } | ||
737 | backlight_tick = (backlight_tick + 1) % 16; | ||
738 | #endif | ||
739 | } | ||
717 | 740 | ||
718 | #ifdef BACKLIGHT_BREATHING | 741 | #ifdef BACKLIGHT_BREATHING |
719 | 742 | ||