Skip to content

Commit 0cddf67

Browse files
committed
stm32/mboot: Fix mboot i2c slave.
Signed-off-by: Damien George <[email protected]>
1 parent e9f1c32 commit 0cddf67

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

ports/stm32/mboot/main.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -805,9 +805,9 @@ int i2c_slave_process_addr_match(i2c_slave_t *i2c, int rw) {
805805
return 0; // ACK
806806
}
807807

808-
int i2c_slave_process_rx_byte(i2c_slave_t *i2c, uint8_t val) {
808+
int i2c_slave_process_rx_byte(i2c_slave_t *i2c) {
809809
if (i2c_obj.cmd_buf_pos < sizeof(i2c_obj.cmd_buf)) {
810-
i2c_obj.cmd_buf[i2c_obj.cmd_buf_pos++] = val;
810+
i2c_obj.cmd_buf[i2c_obj.cmd_buf_pos++] = i2c_slave_read_byte(i2c);
811811
}
812812
return 0; // ACK
813813
}
@@ -909,15 +909,17 @@ void i2c_slave_process_rx_end(i2c_slave_t *i2c) {
909909
i2c_obj.cmd_arg_sent = false;
910910
}
911911

912-
uint8_t i2c_slave_process_tx_byte(i2c_slave_t *i2c) {
912+
void i2c_slave_process_tx_byte(i2c_slave_t *i2c) {
913+
uint8_t value;
913914
if (i2c_obj.cmd_send_arg) {
914915
i2c_obj.cmd_arg_sent = true;
915-
return i2c_obj.cmd_arg;
916+
value = i2c_obj.cmd_arg;
916917
} else if (i2c_obj.cmd_buf_pos < sizeof(i2c_obj.cmd_buf)) {
917-
return i2c_obj.cmd_buf[i2c_obj.cmd_buf_pos++];
918+
value = i2c_obj.cmd_buf[i2c_obj.cmd_buf_pos++];
918919
} else {
919-
return 0;
920+
value = 0;
920921
}
922+
i2c_slave_write_byte(i2c, value);
921923
}
922924

923925
void i2c_slave_process_tx_end(i2c_slave_t *i2c) {

0 commit comments

Comments
 (0)