e9bd7d7ad3
* remove i2c_start and i2c_stop from i2c drivers * remove static i2c_address variable from chibios i2c driver
55 lines
1.3 KiB
C
55 lines
1.3 KiB
C
#include QMK_KEYBOARD_H
|
|
|
|
#include "i2c_master.h"
|
|
#include "debug.h"
|
|
|
|
#define TIMEOUT 50
|
|
|
|
// TODO: remove patch
|
|
#ifdef PROTOCOL_CHIBIOS
|
|
# pragma message("ChibiOS is currently 'best effort' and might not report accurate results")
|
|
#endif
|
|
|
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
LAYOUT_ortho_1x1(KC_A)
|
|
};
|
|
|
|
void do_scan(void) {
|
|
uint8_t nDevices = 0;
|
|
|
|
dprintf("Scanning...\n");
|
|
|
|
for (uint8_t address = 1; address < 127; address++) {
|
|
// The i2c_scanner uses the return value of
|
|
// i2c_ping_address to see if a device did acknowledge to the address.
|
|
i2c_status_t error = i2c_ping_address(address << 1, TIMEOUT);
|
|
if (error == I2C_STATUS_SUCCESS) {
|
|
dprintf(" I2C device found at address 0x%02X\n", address);
|
|
nDevices++;
|
|
} else {
|
|
// dprintf(" Unknown error (%u) at address 0x%02X\n", error, address);
|
|
}
|
|
}
|
|
|
|
if (nDevices == 0)
|
|
dprintf("No I2C devices found\n");
|
|
else
|
|
dprintf("done\n");
|
|
}
|
|
|
|
uint16_t scan_timer = 0;
|
|
|
|
void matrix_scan_user(void) {
|
|
if (timer_elapsed(scan_timer) > 5000) {
|
|
do_scan();
|
|
scan_timer = timer_read();
|
|
}
|
|
}
|
|
|
|
void keyboard_post_init_user(void) {
|
|
debug_enable = true;
|
|
debug_matrix = true;
|
|
|
|
i2c_init();
|
|
scan_timer = timer_read();
|
|
}
|