diff --git a/applications/plugins/flipper_i2ctools/i2cscanner.c b/applications/plugins/flipper_i2ctools/i2cscanner.c index 0ed949621..dab618b78 100644 --- a/applications/plugins/flipper_i2ctools/i2cscanner.c +++ b/applications/plugins/flipper_i2ctools/i2cscanner.c @@ -6,7 +6,7 @@ void scan_i2c_bus(i2cScanner* i2c_scanner) { // Get the bus furi_hal_i2c_acquire(I2C_BUS); // scan - for(uint8_t addr = 0x01; addr < MAX_I2C_ADDR; addr++) { + for(uint8_t addr = 0x01; addr <= MAX_I2C_ADDR << 1; addr++) { // Check for peripherals if(furi_hal_i2c_is_device_ready(I2C_BUS, addr, I2C_TIMEOUT)) { // skip even 8-bit addr diff --git a/applications/plugins/flipper_i2ctools/i2csniffer.h b/applications/plugins/flipper_i2ctools/i2csniffer.h index d7fd0df07..908e91031 100644 --- a/applications/plugins/flipper_i2ctools/i2csniffer.h +++ b/applications/plugins/flipper_i2ctools/i2csniffer.h @@ -16,7 +16,7 @@ typedef enum { I2C_BUS_FREE, I2C_BUS_STARTED } i2cBusStates; #define MAX_MESSAGE_SIZE 128 // Nb of records -#define MAX_RECORDS 32 +#define MAX_RECORDS 128 /// @brief Struct used to store our reads typedef struct { diff --git a/applications/plugins/flipper_i2ctools/views/main_view.h b/applications/plugins/flipper_i2ctools/views/main_view.h index ee7be7f9f..57b2be2e8 100644 --- a/applications/plugins/flipper_i2ctools/views/main_view.h +++ b/applications/plugins/flipper_i2ctools/views/main_view.h @@ -2,8 +2,7 @@ #include #include #include - -#define APP_NAME "I2C Tools" +#define APP_NAME "I2C_Tools" #define SCAN_MENU_TEXT "Scan" #define SCAN_MENU_X 75 diff --git a/applications/plugins/flipper_i2ctools/views/scanner_view.h b/applications/plugins/flipper_i2ctools/views/scanner_view.h index 99ba3c29f..53aee33f2 100644 --- a/applications/plugins/flipper_i2ctools/views/scanner_view.h +++ b/applications/plugins/flipper_i2ctools/views/scanner_view.h @@ -1,9 +1,7 @@ #include #include #include - #include - #include "../i2cscanner.h" #define SCAN_MENU_TEXT "Scan" diff --git a/applications/plugins/flipper_i2ctools/views/sender_view.h b/applications/plugins/flipper_i2ctools/views/sender_view.h index 866e483aa..96cc28fbc 100644 --- a/applications/plugins/flipper_i2ctools/views/sender_view.h +++ b/applications/plugins/flipper_i2ctools/views/sender_view.h @@ -1,9 +1,7 @@ #include #include #include - #include - #include "../i2csender.h" #define SEND_MENU_TEXT "Send" diff --git a/applications/plugins/flipper_i2ctools/views/sniffer_view.c b/applications/plugins/flipper_i2ctools/views/sniffer_view.c index 8f289066c..dbed3e4c9 100644 --- a/applications/plugins/flipper_i2ctools/views/sniffer_view.c +++ b/applications/plugins/flipper_i2ctools/views/sniffer_view.c @@ -20,39 +20,53 @@ void draw_sniffer_view(Canvas* canvas, i2cSniffer* i2c_sniffer) { canvas_draw_str_aligned(canvas, 85, 51, AlignLeft, AlignTop, "Stop"); } canvas_set_color(canvas, ColorBlack); + if(i2c_sniffer->first) { + canvas_draw_str_aligned(canvas, 50, 3, AlignLeft, AlignTop, "Nothing Recorded"); + return; + } + char text_buffer[8]; + // nbFrame text + canvas_draw_str_aligned(canvas, 50, 3, AlignLeft, AlignTop, "Frame: "); + snprintf(text_buffer, sizeof(text_buffer), "%d", (int)i2c_sniffer->menu_index + 1); + canvas_draw_str_aligned(canvas, 85, 3, AlignLeft, AlignTop, text_buffer); + canvas_draw_str_aligned(canvas, 100, 3, AlignLeft, AlignTop, "/"); + snprintf(text_buffer, sizeof(text_buffer), "%d", (int)i2c_sniffer->frame_index + 1); + canvas_draw_str_aligned(canvas, 110, 3, AlignLeft, AlignTop, text_buffer); // Address text - char addr_text[8]; snprintf( - addr_text, - sizeof(addr_text), + text_buffer, + sizeof(text_buffer), "0x%02x", (int)(i2c_sniffer->frames[i2c_sniffer->menu_index].data[0] >> 1)); - canvas_draw_str_aligned(canvas, 50, 3, AlignLeft, AlignTop, "Addr: "); - canvas_draw_str_aligned(canvas, 75, 3, AlignLeft, AlignTop, addr_text); + canvas_draw_str_aligned(canvas, 50, 13, AlignLeft, AlignTop, "Addr: "); + canvas_draw_str_aligned(canvas, 75, 13, AlignLeft, AlignTop, text_buffer); // R/W if((int)(i2c_sniffer->frames[i2c_sniffer->menu_index].data[0]) % 2 == 0) { - canvas_draw_str_aligned(canvas, 105, 3, AlignLeft, AlignTop, "W"); + canvas_draw_str_aligned(canvas, 105, 13, AlignLeft, AlignTop, "W"); } else { - canvas_draw_str_aligned(canvas, 105, 3, AlignLeft, AlignTop, "R"); + canvas_draw_str_aligned(canvas, 105, 13, AlignLeft, AlignTop, "R"); } - // nbFrame text - canvas_draw_str_aligned(canvas, 50, 13, AlignLeft, AlignTop, "Frames: "); - snprintf(addr_text, sizeof(addr_text), "%d", (int)i2c_sniffer->menu_index + 1); - canvas_draw_str_aligned(canvas, 90, 13, AlignLeft, AlignTop, addr_text); - canvas_draw_str_aligned(canvas, 100, 13, AlignLeft, AlignTop, "/"); - snprintf(addr_text, sizeof(addr_text), "%d", (int)i2c_sniffer->frame_index + 1); - canvas_draw_str_aligned(canvas, 110, 13, AlignLeft, AlignTop, addr_text); // Frames content + const uint8_t x_min = 50; + const uint8_t y_min = 23; uint8_t x_pos = 0; - uint8_t y_pos = 23; + uint8_t y_pos = 0; + uint8_t row = 1; + uint8_t column = 1; for(uint8_t i = 1; i < i2c_sniffer->frames[i2c_sniffer->menu_index].data_index; i++) { snprintf( - addr_text, - sizeof(addr_text), + text_buffer, + sizeof(text_buffer), "0x%02x", (int)i2c_sniffer->frames[i2c_sniffer->menu_index].data[i]); - x_pos = 50 + (i - 1) * 35; - canvas_draw_str_aligned(canvas, x_pos, y_pos, AlignLeft, AlignTop, addr_text); + x_pos = x_min + (column - 1) * 35; + y_pos = y_min + (row - 1) * 10; + column++; + if(column > 2) { + column = 1; + row++; + } + canvas_draw_str_aligned(canvas, x_pos, y_pos, AlignLeft, AlignTop, text_buffer); if(i2c_sniffer->frames[i2c_sniffer->menu_index].ack[i]) { canvas_draw_str_aligned(canvas, x_pos + 24, y_pos, AlignLeft, AlignTop, "A"); } else { diff --git a/applications/plugins/flipper_i2ctools/views/sniffer_view.h b/applications/plugins/flipper_i2ctools/views/sniffer_view.h index 56a213895..3fe1839a1 100644 --- a/applications/plugins/flipper_i2ctools/views/sniffer_view.h +++ b/applications/plugins/flipper_i2ctools/views/sniffer_view.h @@ -1,9 +1,7 @@ #include #include #include - #include - #include "../i2csniffer.h" #define SNIFF_MENU_TEXT "Sniff"