/*
Copyright 2016 flabbergast <s3+flabbergast@sdfeu.org>
+Copyright 2017 jpetermans <tibcmhhm@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#define CAPS_LOCK_LED_ADDRESS 46 //pin matrix location
#define NUM_LOCK_LED_ADDRESS 85
-#define BACKLIGHT_OFF_LOCK_LED_OFF 0 //set to 0 to show lock leds even if backlight off
/* =============================
* IS31 chip related definitions
#define IS31_REG_DISPLAYOPT 0x05
#define IS31_REG_DISPLAYOPT_INTENSITY_SAME 0x20 // same intensity for all frames
-#define IS31_REG_DISPLAYOPT_BLINK_ENABLE 0x8
+#define IS31_REG_DISPLAYOPT_BLINK_ENABLE 0x08
// D2:D0 bits blink period time (*0.27s)
#define IS31_REG_AUDIOSYNC 0x06
// D2:D0 extinguish time (3.5ms*2^i)
#define IS31_REG_SHUTDOWN 0x0A
-#define IS31_REG_SHUTDOWN_ON 0x1
+#define IS31_REG_SHUTDOWN_OFF 0x1
+#define IS31_REG_SHUTDOWN_ON 0x0
#define IS31_REG_AGCCTRL 0x0B
#define IS31_REG_ADCRATE 0x0C
#define IS31_TIMEOUT 10000 // needs to be long enough to write a whole page
/* ========================================
- * LED Thread related functions/definitions
+ * LED Thread related items
* ========================================*/
extern mailbox_t led_mailbox;
void set_led_bit (uint8_t page, uint8_t *led_control_reg, uint8_t led_addr, uint8_t action);
-void set_lock_leds (uint8_t lock_addr, uint8_t led_action);
+void set_lock_leds (uint8_t led_addr, uint8_t led_action, uint8_t page);
+void write_led_byte (uint8_t page, uint8_t row, uint8_t led_byte);
void write_led_page (uint8_t page, uint8_t *led_array, uint8_t led_count);
// constants for signaling the LED controller thread
enum led_msg_t {
KEY_LIGHT,
+ SET_FULL_ROW,
OFF_LED,
ON_LED,
TOGGLE_LED,
+ BLINK_OFF_LED,
+ BLINK_ON_LED,
+ BLINK_TOGGLE_LED,
TOGGLE_ALL,
TOGGLE_BACKLIGHT,
DISPLAY_PAGE,
RESET_PAGE,
TOGGLE_NUM_LOCK,
TOGGLE_CAPS_LOCK,
- MODE_BREATH,
+ TOGGLE_BREATH,
STEP_BRIGHTNESS
};