Adding LED function pointers

This commit is contained in:
IBNobody 2016-03-15 23:52:51 -05:00
parent 35393fa9dc
commit eba9a7d74d
4 changed files with 38 additions and 6 deletions

View File

@ -16,9 +16,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include <avr/io.h> #include <avr/io.h>
#include "stdint.h" #include <stddef.h>
#include "led.h" #include "led.h"
__attribute__ ((weak))
void * led_set_kb(uint8_t usb_led) {
return NULL;
};
void led_set(uint8_t usb_led) void led_set(uint8_t usb_led)
{ {
@ -35,4 +39,10 @@ void led_set(uint8_t usb_led)
// DDRE &= ~(1<<6); // DDRE &= ~(1<<6);
// PORTE &= ~(1<<6); // PORTE &= ~(1<<6);
// } // }
if (led_set_kb) {
(*led_set_kb)(usb_led);
}
return;
} }

View File

@ -2,28 +2,47 @@
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_init_user(void) { void * matrix_init_user(void) {
// leave these blank // leave this function blank - it can be defined in a keymap file
return NULL;
}; };
__attribute__ ((weak)) __attribute__ ((weak))
void * matrix_scan_user(void) { 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) { void * matrix_init_kb(void) {
// put your keyboard start-up code here // put your keyboard start-up code here
// runs once when the firmware starts up // runs once when the firmware starts up
if (matrix_init_user) { if (matrix_init_user) {
(*matrix_init_user)(); (*matrix_init_user)();
} }
return NULL;
}; };
void * matrix_scan_kb(void) { void * matrix_scan_kb(void) {
// put your looping keyboard code here // put your looping keyboard code here
// runs every cycle (a lot) // runs every cycle (a lot)
if (matrix_scan_user) { if (matrix_scan_user) {
(*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;
}; };

View File

@ -21,5 +21,6 @@
void * matrix_init_user(void); void * matrix_init_user(void);
void * matrix_scan_user(void); void * matrix_scan_user(void);
void * led_set_user(uint8_t usb_led);
#endif #endif

View File

@ -33,6 +33,8 @@ extern "C" {
#endif #endif
void led_set(uint8_t usb_led); void led_set(uint8_t usb_led);
void * led_set_kb(uint8_t usb_led);
#ifdef __cplusplus #ifdef __cplusplus
} }