Skip to content

Commit 8c47c33

Browse files
committed
make code more "furi styled"
1 parent 2870da3 commit 8c47c33

File tree

4 files changed

+59
-41
lines changed

4 files changed

+59
-41
lines changed

i2csniffer.c

+48-33
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,28 @@
11
#include "i2csniffer.h"
22

3-
void clearSnifferBuffers(i2csniffer* sniffer) {
3+
void clear_sniffer_buffers(i2cSniffer* i2c_sniffer) {
4+
furi_assert(i2c_sniffer);
45
for(uint8_t i = 0; i < MAX_RECORDS; i++) {
56
for(uint8_t j = 0; j < MAX_MESSAGE_SIZE; j++) {
6-
sniffer->frames[i].ack[j] = false;
7-
sniffer->frames[i].data[j] = 0;
7+
i2c_sniffer->frames[i].ack[j] = false;
8+
i2c_sniffer->frames[i].data[j] = 0;
89
}
9-
sniffer->frames[i].bit_index = 0;
10-
sniffer->frames[i].data_index = 0;
10+
i2c_sniffer->frames[i].bit_index = 0;
11+
i2c_sniffer->frames[i].data_index = 0;
1112
}
12-
sniffer->frame_index = 0;
13-
sniffer->state = I2C_BUS_FREE;
14-
sniffer->first = true;
13+
i2c_sniffer->frame_index = 0;
14+
i2c_sniffer->state = I2C_BUS_FREE;
15+
i2c_sniffer->first = true;
1516
}
1617

17-
void start_interrupts(i2csniffer* sniffer) {
18+
void start_interrupts(i2cSniffer* i2c_sniffer) {
19+
furi_assert(i2c_sniffer);
1820
furi_hal_gpio_init(pinSCL, GpioModeInterruptRise, GpioPullNo, GpioSpeedHigh);
19-
furi_hal_gpio_add_int_callback(pinSCL, SCLcallback, sniffer);
21+
furi_hal_gpio_add_int_callback(pinSCL, SCLcallback, i2c_sniffer);
2022

2123
// Add Rise and Fall Interrupt on SDA pin
2224
furi_hal_gpio_init(pinSDA, GpioModeInterruptRiseFall, GpioPullNo, GpioSpeedHigh);
23-
furi_hal_gpio_add_int_callback(pinSDA, SDAcallback, sniffer);
25+
furi_hal_gpio_add_int_callback(pinSDA, SDAcallback, i2c_sniffer);
2426
}
2527

2628
void stop_interrupts() {
@@ -30,50 +32,63 @@ void stop_interrupts() {
3032

3133
// Called on Fallin/Rising SDA
3234
// Used to monitor i2c bus state
33-
void SDAcallback(void* _sniffer) {
34-
i2csniffer* sniffer = _sniffer;
35+
void SDAcallback(void* _i2c_sniffer) {
36+
i2cSniffer* i2c_sniffer = _i2c_sniffer;
3537
// SCL is low maybe cclock strecching
3638
if(furi_hal_gpio_read(pinSCL) == false) {
3739
return;
3840
}
3941
// Check for stop condition: SDA rising while SCL is High
40-
if(sniffer->state == I2C_BUS_STARTED) {
42+
if(i2c_sniffer->state == I2C_BUS_STARTED) {
4143
if(furi_hal_gpio_read(pinSDA) == true) {
42-
sniffer->state = I2C_BUS_FREE;
44+
i2c_sniffer->state = I2C_BUS_FREE;
4345
}
4446
}
4547
// Check for start condition: SDA falling while SCL is high
4648
else if(furi_hal_gpio_read(pinSDA) == false) {
47-
sniffer->state = I2C_BUS_STARTED;
48-
if(sniffer->first) {
49-
sniffer->first = false;
49+
i2c_sniffer->state = I2C_BUS_STARTED;
50+
if(i2c_sniffer->first) {
51+
i2c_sniffer->first = false;
5052
return;
5153
}
52-
sniffer->frame_index++;
53-
if(sniffer->frame_index >= MAX_RECORDS) {
54-
clearSnifferBuffers(sniffer);
54+
i2c_sniffer->frame_index++;
55+
if(i2c_sniffer->frame_index >= MAX_RECORDS) {
56+
clear_sniffer_buffers(i2c_sniffer);
5557
}
5658
}
5759
return;
5860
}
5961

6062
// Called on Rising SCL
6163
// Used to read bus datas
62-
void SCLcallback(void* _sniffer) {
63-
i2csniffer* sniffer = _sniffer;
64-
if(sniffer->state == I2C_BUS_FREE) {
64+
void SCLcallback(void* _i2c_sniffer) {
65+
i2cSniffer* i2c_sniffer = _i2c_sniffer;
66+
if(i2c_sniffer->state == I2C_BUS_FREE) {
6567
return;
6668
}
67-
uint8_t frame = sniffer->frame_index;
68-
uint8_t bit = sniffer->frames[frame].bit_index;
69-
uint8_t data_idx = sniffer->frames[frame].data_index;
69+
uint8_t frame = i2c_sniffer->frame_index;
70+
uint8_t bit = i2c_sniffer->frames[frame].bit_index;
71+
uint8_t data_idx = i2c_sniffer->frames[frame].data_index;
7072
if(bit < 8) {
71-
sniffer->frames[frame].data[data_idx] <<= 1;
72-
sniffer->frames[frame].data[data_idx] |= (int)furi_hal_gpio_read(pinSDA);
73-
sniffer->frames[frame].bit_index++;
73+
i2c_sniffer->frames[frame].data[data_idx] <<= 1;
74+
i2c_sniffer->frames[frame].data[data_idx] |= (int)furi_hal_gpio_read(pinSDA);
75+
i2c_sniffer->frames[frame].bit_index++;
7476
} else {
75-
sniffer->frames[frame].ack[data_idx] = !furi_hal_gpio_read(pinSDA);
76-
sniffer->frames[frame].data_index++;
77-
sniffer->frames[frame].bit_index = 0;
77+
i2c_sniffer->frames[frame].ack[data_idx] = !furi_hal_gpio_read(pinSDA);
78+
i2c_sniffer->frames[frame].data_index++;
79+
i2c_sniffer->frames[frame].bit_index = 0;
7880
}
7981
}
82+
83+
i2cSniffer* i2c_sniffer_alloc() {
84+
i2cSniffer* i2c_sniffer = malloc(sizeof(i2cSniffer));
85+
i2c_sniffer->started = false;
86+
clear_sniffer_buffers(i2c_sniffer);
87+
return i2c_sniffer;
88+
}
89+
90+
void i2c_sniffer_free(i2cSniffer* i2c_sniffer) {
91+
furi_assert(i2c_sniffer);
92+
furi_check(i2c_sniffer->started == false);
93+
free(i2c_sniffer);
94+
}

i2csniffer.h

+8-5
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,13 @@ typedef struct {
3333
i2cFrame frames[MAX_RECORDS];
3434
uint8_t frame_index;
3535
uint8_t menu_index;
36-
} i2csniffer;
36+
} i2cSniffer;
3737

38-
void clearSnifferBuffers(i2csniffer* sniffer);
39-
void start_interrupts(i2csniffer* sniffer);
38+
void clear_sniffer_buffers(i2cSniffer* i2c_sniffer);
39+
void start_interrupts(i2cSniffer* i2c_sniffer);
4040
void stop_interrupts();
41-
void SDAcallback(void* _sniffer);
42-
void SCLcallback(void* _sniffer);
41+
void SDAcallback(void* _i2c_sniffer);
42+
void SCLcallback(void* _i2c_sniffer);
43+
44+
i2cSniffer* i2c_sniffer_alloc();
45+
void i2c_sniffer_free(i2cSniffer* i2c_sniffer);

i2ctools.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ int32_t i2ctools_app(void* p) {
345345
FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(InputEvent));
346346

347347
i2cTools* i2ctools = malloc(sizeof(i2cTools));
348-
i2csniffer* sniffer = malloc(sizeof(i2csniffer));
348+
i2cSniffer* sniffer = malloc(sizeof(i2cSniffer));
349349
ValueMutex i2ctools_mutex;
350350
if(!init_mutex(&i2ctools_mutex, i2ctools, sizeof(i2cTools))) {
351351
FURI_LOG_E(APP_NAME, "cannot create mutex\r\n");
@@ -371,7 +371,7 @@ int32_t i2ctools_app(void* p) {
371371

372372
InputEvent event;
373373

374-
clearSnifferBuffers(i2ctools->sniffer);
374+
clear_sniffer_buffers(i2ctools->sniffer);
375375
i2ctools->sniffer->started = false;
376376
i2ctools->sniffer->menu_index = 0;
377377

i2ctools_i.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,6 @@ typedef struct {
4545
uint8_t main_menu_index;
4646

4747
_scanner scanner;
48-
i2csniffer* sniffer;
48+
i2cSniffer* sniffer;
4949
_sender sender;
5050
} i2cTools;

0 commit comments

Comments
 (0)