]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - keyboards/infinity60/keymaps/jpetermans/keymap.c
Moved led page arrays to keymap.c and added keymap header to define
[qmk_firmware.git] / keyboards / infinity60 / keymaps / jpetermans / keymap.c
index 2c38068fef0823d6310303e41ec1f96ececf0476..7b90bc8eded09b4e4994704d966f47f59ea6ab59 100644 (file)
@@ -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.