seigaiha.c (1396B)
1 /* Copyright 2021 Yiancar-Designs 2 * 3 * This program is free software: you can redistribute it and/or modify 4 * it under the terms of the GNU General Public License as published by 5 * the Free Software Foundation, either version 2 of the License, or 6 * (at your option) any later version. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 * 13 * You should have received a copy of the GNU General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 */ 16 #include "quantum.h" 17 #include "i2c_master.h" 18 19 // There is no need to initialize the I/O it is done in matrix.c 20 21 uint8_t send_data = 0x00; 22 23 void led_update_ports(led_t led_state) { 24 if (led_state.caps_lock){ 25 send_data |= 1 << 5; 26 } else { 27 send_data &= ~(1 << 5); 28 } 29 i2c_write_register((PORT_EXPANDER_ADDRESS << 1), 0x0A, &send_data, 1, 20); 30 } 31 32 __attribute__((weak)) layer_state_t layer_state_set_user(layer_state_t state) { 33 if (IS_LAYER_ON_STATE(state, 1)) { 34 send_data |= 1 << 6; 35 } 36 if (IS_LAYER_OFF_STATE(state, 1)) { 37 send_data &= ~(1 << 6); 38 } 39 // Data is send to the port expander during led_update_kb as it runs continuously. 40 return state; 41 }