qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

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