1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-20 10:54:14 +01:00

i2c: fix error in FSM for restarted reads

The transition from the ADDR state to the read state
was broken for non-final reads.  The FSM diagram was
also wrong for this transition.

Since reads are always the last transaction in a sequence
in our current usage, this doesn't actually fix any known
bugs.

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1350 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
stac 2010-08-21 16:19:06 +00:00 committed by stac
parent 98822bff98
commit 47c36b3da0
3 changed files with 3 additions and 6 deletions

View File

@ -146,11 +146,8 @@ digraph stm32_i2c_fsm {
r_last_txn_addr -> r_last_txn_pre_one [ label="ADDR\nlen==1" ]
r_more_txn_addr -> r_more_txn_pre_one [ label="ADDR\nlen==1" ]
r_last_txn_addr -> r_last_txn_pre_last [ label="ADDR\nlen==2" ]
r_more_txn_addr -> r_more_txn_pre_last [ label="ADDR\nlen==2" ]
r_last_txn_addr -> r_last_txn_pre_first [ label="ADDR\nlen>2" ]
r_more_txn_addr -> r_more_txn_pre_first [ label="ADDR\nlen>2" ]
r_last_txn_addr -> r_last_txn_pre_first [ label="ADDR\nlen>=2" ]
r_more_txn_addr -> r_more_txn_pre_first [ label="ADDR\nlen>=2" ]
r_last_txn_pre_one -> r_last_txn_post_last [ label="BTF\nlen==1" ]
r_more_txn_pre_one -> r_more_txn_post_last [ label="BTF\nlen==1" ]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 KiB

After

Width:  |  Height:  |  Size: 201 KiB

View File

@ -133,7 +133,7 @@ const static struct i2c_adapter_transition i2c_adapter_transitions[I2C_STATE_NUM
.entry_fn = go_r_any_txn_addr,
.next_state = {
[I2C_EVENT_ADDR_SENT_LEN_EQ_1] = I2C_STATE_R_MORE_TXN_PRE_ONE,
[I2C_EVENT_ADDR_SENT_LEN_EQ_2] = I2C_STATE_R_MORE_TXN_PRE_LAST,
[I2C_EVENT_ADDR_SENT_LEN_EQ_2] = I2C_STATE_R_MORE_TXN_PRE_FIRST,
[I2C_EVENT_ADDR_SENT_LEN_GT_2] = I2C_STATE_R_MORE_TXN_PRE_FIRST,
},
},