]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Adding LED function pointers
authorIBNobody <protospherex@gmail.com>
Wed, 16 Mar 2016 04:52:51 +0000 (23:52 -0500)
committerIBNobody <protospherex@gmail.com>
Wed, 16 Mar 2016 04:52:51 +0000 (23:52 -0500)
quantum/led.c
quantum/template/template.c
quantum/template/template.h
tmk_core/common/led.h

index 2c05746607df349b6e9c99bcabf527c5b5584aa2..a53e940436304e73a9c3bbd55e9fe0a7332a542b 100644 (file)
@@ -16,9 +16,13 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include <avr/io.h>
-#include "stdint.h"
+#include <stddef.h>
 #include "led.h"
 
+__attribute__ ((weak))
+void * led_set_kb(uint8_t usb_led) {
+    return NULL;
+};
 
 void led_set(uint8_t usb_led)
 {
@@ -35,4 +39,10 @@ void led_set(uint8_t usb_led)
     //     DDRE &= ~(1<<6);
     //     PORTE &= ~(1<<6);
     // }
+
+    if (led_set_kb) {
+        (*led_set_kb)(usb_led);
+    }
+
+    return;
 }
index 7be7dfc3d163f2b96508050510b26010a3441cf7..016e1130070dbc5a29f9221744e45e47b1802d7c 100644 (file)
@@ -2,28 +2,47 @@
 
 __attribute__ ((weak))
 void * matrix_init_user(void) {
-       // leave these blank
+       // leave this function blank - it can be defined in a keymap file
+       return NULL;
 };
 
 __attribute__ ((weak))
 void * matrix_scan_user(void) {
-       // leave these blank
+       // leave this function blank - it can be defined in a keymap file
+       return NULL;
+};
+
+__attribute__ ((weak))
+void * led_set_user(uint8_t usb_led) {
+       // leave this function blank - it can be defined in a keymap file
+       return NULL;
 };
 
 void * matrix_init_kb(void) {
        // put your keyboard start-up code here
        // runs once when the firmware starts up
-
+       
        if (matrix_init_user) {
                (*matrix_init_user)();
        }
+       return NULL;
 };
 
 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)
 
        if (matrix_scan_user) {
                (*matrix_scan_user)();
        }
+       return NULL;
+};
+
+void * led_set_kb(uint8_t usb_led) {
+       // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
+
+       if (led_set_user) {
+               (*led_set_user)(usb_led);
+       }
+       return NULL;
 };
\ No newline at end of file
index a15061b267b9fb32e5d782d8cdbffc68a2a6c691..ed17ca00167388d3750660f75b5a912337222026 100644 (file)
@@ -21,5 +21,6 @@
 
 void * matrix_init_user(void);
 void * matrix_scan_user(void);
+void * led_set_user(uint8_t usb_led);
 
 #endif
\ No newline at end of file
index d5fc051bf52ed573382f8edd8ed2085ceb887204..4b9632d3a4f82ec850fbaee7872546597d13e914 100644 (file)
@@ -33,6 +33,8 @@ extern "C" {
 #endif
 
 void led_set(uint8_t usb_led);
+void * led_set_kb(uint8_t usb_led);
+
 
 #ifdef __cplusplus
 }