i2c update

This commit is contained in:
RogueMaster
2022-10-28 00:37:15 -04:00
parent bc53b10476
commit 6734546164
19 changed files with 682 additions and 574 deletions
@@ -0,0 +1,35 @@
#include "i2cscanner.h"
void scan_i2c_bus(i2cScanner* i2c_scanner) {
i2c_scanner->nb_found = 0;
i2c_scanner->scanned = true;
// Get the bus
furi_hal_i2c_acquire(I2C_BUS);
// scan
for(uint8_t addr = 0x01; addr < MAX_I2C_ADDR; addr++) {
// Check for peripherals
if(furi_hal_i2c_is_device_ready(I2C_BUS, addr, I2C_TIMEOUT)) {
// skip even 8-bit addr
if(addr % 2 != 0) {
continue;
}
// convert addr to 7-bits
i2c_scanner->addresses[i2c_scanner->nb_found] = addr >> 1;
i2c_scanner->nb_found++;
}
}
furi_hal_i2c_release(I2C_BUS);
}
i2cScanner* i2c_scanner_alloc() {
i2cScanner* i2c_scanner = malloc(sizeof(i2cScanner));
i2c_scanner->nb_found = 0;
i2c_scanner->menu_index = 0;
i2c_scanner->scanned = false;
return i2c_scanner;
}
void i2c_scanner_free(i2cScanner* i2c_scanner) {
furi_assert(i2c_scanner);
free(i2c_scanner);
}