Sorry, just read Will’s comment.

Did not want to repeat it. 

- Vipul

> On Aug 30, 2018, at 11:35 AM, Vipul Rahane <vi...@runtime.io> wrote:
> 
> Hey,
> 
> I think that’s a really great idea. One thing I would add is that we 
> definitely should honor timeouts in any of the retries. Also, a way to 
> disable the retries should be a good idea. Probably making it a syscfg which 
> when set to 0 does not do any retries.
> 
> I am assuming the errors codes will be HAL_I2C_ERR_XXXX error codes, so all 
> the mcus would have to return the same error codes on errors.
> 
> Personally, I like calling them retries than tries since if they are set to 0 
> the operation still happens once, but that’s just me.
> 
> Regards,
> Vipul Rahane
> 
>> On Aug 30, 2018, at 9:48 AM, will sanfilippo <wi...@runtime.io> wrote:
>> 
>> I think my only comment is tries vs retries. You always want to make at 
>> least one try so you would have to set that to 1 every time right? I like 
>> retries personally but that is just me. Mainly because you would never allow 
>> zero for tries.
>> 
>> 
>>> On Aug 30, 2018, at 9:21 AM, Christopher Collins <ch...@runtime.io> wrote:
>>> 
>>> On Wed, Aug 29, 2018 at 10:06:37PM -0500, Greg Stein wrote:
>>>> On Wed, Aug 29, 2018 at 8:59 PM Christopher Collins <ch...@runtime.io>
>>>> wrote:
>>>> 
>>>>> Hello all,
>>>>> 
>>>>> I noticed the HAL master I2C API does not include any retry logic.  As
>>>>> you probably know, in I2C, the default state of the SCL line is NACK.
>>>>> 
>>>> 
>>>> Euh... ACK/NACK is on SDA while the master cycles SCL.
>>> 
>>> Yes, you are right.  Thanks for the correction.
>>> 
>>> [...]
>>> 
>>>> Or that something monkeyed the bus, so the peripheral decided to stop
>>>> receiving/processing. ... Your basic point holds: a peripheral might just
>>>> go away for any number of reasons. I wouldn't even bother with the on_dnack
>>>> flag. Seems better to consider retry at the whole-packet level. It all gets
>>>> sent, or it did not and should be retried.
>>> 
>>> Thank you for the insight.  I am starting to think you are right -
>>> retries should be done by the low-level HAL implementation.  So, my
>>> current thinking is that we should make the following changes:
>>> 
>>> 1. Define a common set of error code for the I2C HAL [1].
>>> 2. Add a single member to the `hal_i2c_master_data` struct: `tries` [2]
>>> 3. Modify the HAL I2C implementations so that they retry up to (tries-1)
>>> times when an unexpected NACK is recieved.
>>> 
>>> [1] We should do the same for the other HAL APIs (i.e., non-I2C), but
>>> that can come later.
>>> 
>>> [2] I prefer specifying number of tries rather than number of retries.
>>> I think it helps avoid some ambiguity.
>>> 
>>> All comments welcome.
>>> 
>>> Thanks,
>>> Chris
>> 
> 

Reply via email to