From af13e9a12d64f74873e5bf429fdedcda37b3036a Mon Sep 17 00:00:00 2001 From: jpetermans Date: Thu, 6 Apr 2017 16:27:51 -0700 Subject: Moved led page arrays to keymap.c and added keymap header to define individual led addresses --- keyboards/infinity60/keymaps/jpetermans/keymap.c | 80 +++++++++++++++++++++--- 1 file changed, 73 insertions(+), 7 deletions(-) (limited to 'keyboards/infinity60/keymaps/jpetermans/keymap.c') diff --git a/keyboards/infinity60/keymaps/jpetermans/keymap.c b/keyboards/infinity60/keymaps/jpetermans/keymap.c index 2c38068fef..7b90bc8ede 100644 --- a/keyboards/infinity60/keymaps/jpetermans/keymap.c +++ b/keyboards/infinity60/keymaps/jpetermans/keymap.c @@ -1,5 +1,6 @@ #include "infinity60.h" #include "led_controller.h" +#include "keymap_jpetermans.h" //Helpful Defines #define _______ KC_TRNS @@ -86,6 +87,66 @@ enum function_id { enum macro_id { ACTION_LEDS_ALL, ACTION_LEDS_GAME +//TODO: ACTION_LED_LAYER which reads current layer and turns on appropriate LED +}; + +/* + Configuring led control can be done + 1. full keyboard at a time - define led array, or + 2. individual - send specific led address (defined in keymap.h) + + The arrays relate to the mcu's LED pages (8 available) desribed in led_controller.c + 0x24 (pcb row 1) is first byte of PWM portion of LED page + 0x34 (pcb row 2) is 17th byte of PWM portion of LED page + array translates to row and column positions + + + Infinity60 LED MAP + 11 12 13 14 15 16 17 18 21 22 23 24 25 26 27* + 28 31 32 33 34 35 36 37 38 41 42 43 44 45 + 46 47 48 51 52 53 54 55 56 57 58 61 62 + 63 64 65 66 67 68 71 72 73 74 75 76 77* + 78 81 82 83 84 85 86 87 +*Unused in Alphabet Layout +*/ + +//"WASD" +const uint8_t led_game[72] = { + 0x24, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x34, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x44, + 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x64, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x74, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x94, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +const uint8_t led_all[72] = { + 0x24, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x34, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x44, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x54, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x64, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x74, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x84, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x94, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, }; const uint16_t fn_actions[] = { @@ -94,13 +155,6 @@ const uint16_t fn_actions[] = { [2] = ACTION_FUNCTION(ACTION_LEDS_ALL), [3] = ACTION_FUNCTION(ACTION_LEDS_GAME) -/* [1] = ACTION_FUNCTION(ACTION_LEDS_GAME), - - [4] = ACTION_USAGE_CONSUMER(0x1B4), - [5] = ACTION_USAGE_CONSUMER(0x196), - [6] = ACTION_USAGE_CONSUMER(0x1A6), - [7] = ACTION_USAGE_CONSUMER(0x1A0) -*/ }; /* custom action function */ @@ -140,7 +194,19 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) // Runs just one time when the keyboard initializes. void matrix_init_user(void) { + uint8_t j; + led_controller_init(); + +//TODO: do pages need to be written at init or ok on demand? + /* Write pages */ + for(j=0; j<8; j++) { + is31_write_data(1,(uint8_t *)(led_game+(9*j)),9); + chThdSleepMilliseconds(5); + is31_write_data(2,(uint8_t *)(led_all+(9*j)),9); + chThdSleepMilliseconds(5); + } + }; // Runs constantly in the background, in a loop. -- cgit v1.2.3