mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-24 03:29:57 -07:00
24 lines
887 B
C
24 lines
887 B
C
#include "gpio_i2c_scanner_control.h"
|
|
#include <furi.h>
|
|
|
|
void gpio_i2c_scanner_run_once(I2CScannerState* i2c_scanner_state) {
|
|
//Reset the number of items for rewriting the array
|
|
i2c_scanner_state->items = 0;
|
|
furi_hal_i2c_acquire(&furi_hal_i2c_handle_external);
|
|
|
|
uint32_t response_timeout_ticks = furi_ms_to_ticks(5.f);
|
|
|
|
//Addresses 0 to 7 are reserved and won't be scanned
|
|
for(int i = FIRST_NON_RESERVED_I2C_ADDRESS; i <= HIGHEST_I2C_ADDRESS; i++) {
|
|
if(furi_hal_i2c_is_device_ready(
|
|
&furi_hal_i2c_handle_external,
|
|
i << 1,
|
|
response_timeout_ticks)) { //Bitshift of 1 bit to convert 7-Bit Address into 8-Bit Address
|
|
i2c_scanner_state->responding_address[i2c_scanner_state->items] = i;
|
|
i2c_scanner_state->items++;
|
|
}
|
|
}
|
|
|
|
furi_hal_i2c_release(&furi_hal_i2c_handle_external);
|
|
}
|