summary refs log tree commit diff
diff options
context:
space:
mode:
authorIBNobody <protospherex@gmail.com>2016-03-15 23:52:51 -0500
committerIBNobody <protospherex@gmail.com>2016-03-15 23:52:51 -0500
commiteba9a7d74db0be548cddc107f0370dabf43b017f (patch)
tree30320f53b83f944c5c038e19ae5cb2aa34423cfd
parent35393fa9dc3d14ea80ce72f27c13b1759600b245 (diff)
Adding LED function pointers
-rw-r--r--quantum/led.c12
-rw-r--r--quantum/template/template.c29
-rw-r--r--quantum/template/template.h1
-rw-r--r--tmk_core/common/led.h2
4 files changed, 38 insertions, 6 deletions
diff --git a/quantum/led.c b/quantum/led.c
index 2c05746607..a53e940436 100644
--- a/quantum/led.c
+++ b/quantum/led.c
@@ -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;
 }
diff --git a/quantum/template/template.c b/quantum/template/template.c
index 7be7dfc3d1..016e113007 100644
--- a/quantum/template/template.c
+++ b/quantum/template/template.c
@@ -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
diff --git a/quantum/template/template.h b/quantum/template/template.h
index a15061b267..ed17ca0016 100644
--- a/quantum/template/template.h
+++ b/quantum/template/template.h
@@ -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
diff --git a/tmk_core/common/led.h b/tmk_core/common/led.h
index d5fc051bf5..4b9632d3a4 100644
--- a/tmk_core/common/led.h
+++ b/tmk_core/common/led.h
@@ -33,6 +33,8 @@ extern "C" {
 #endif
 
 void led_set(uint8_t usb_led);
+void * led_set_kb(uint8_t usb_led);
+
 
 #ifdef __cplusplus
 }