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 | ||
