keymap.c (1806B)
1 // Copyright 2018-2022 Nick Brassel (@tzarc) 2 // SPDX-License-Identifier: GPL-3.0-or-later 3 #include QMK_KEYBOARD_H 4 5 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 6 LAYOUT_ortho_1x1(QK_BOOT) 7 }; 8 9 #ifdef DEBUG_EEPROM_OUTPUT 10 11 # ifdef WEAR_LEVELING_ENABLE 12 # include "wear_leveling.h" 13 # endif // WEAR_LEVELING_ENABLE 14 15 uint8_t prng(void) { 16 static uint8_t s = 0xAA, a = 0; 17 s ^= s << 3; 18 s ^= s >> 5; 19 s ^= a++ >> 2; 20 return s; 21 } 22 23 void keyboard_post_init_user(void) { 24 debug_enable = true; 25 debug_matrix = true; 26 debug_keyboard = true; 27 } 28 29 void matrix_scan_user(void) { 30 static uint32_t last_eeprom_access = 0; 31 uint32_t now = timer_read32(); 32 if (now - last_eeprom_access > 5000) { 33 dprint("reading eeprom\n"); 34 last_eeprom_access = now; 35 36 union { 37 uint8_t bytes[4]; 38 uint32_t raw; 39 } tmp; 40 extern uint8_t prng(void); 41 tmp.bytes[0] = prng(); 42 tmp.bytes[1] = prng(); 43 tmp.bytes[2] = prng(); 44 tmp.bytes[3] = prng(); 45 46 eeconfig_update_user(tmp.raw); 47 uint32_t value = eeconfig_read_user(); 48 if (value != tmp.raw) { 49 dprint("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); 50 dprint("!! EEPROM readback mismatch!\n"); 51 dprint("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); 52 } 53 } 54 55 # ifdef WEAR_LEVELING_ENABLE 56 static uint32_t last_wear_leveling_init = 0; 57 if (now - last_wear_leveling_init > 30000) { 58 dprint("init'ing wear-leveling\n"); 59 last_wear_leveling_init = now; 60 wear_leveling_init(); 61 } 62 # endif // WEAR_LEVELING_ENABLE 63 } 64 65 #endif // DEBUG_EEPROM_OUTPUT