I have been using CEC for a while now on the 7511. We recently ran into a strange problem with the allocation of a Logical Address.
The error being returned from the CEC driver code in the CEC Logical Address Allocation callback is 0x10. Normally the value returned is the Logical Address that was allocated. I didn't even know it could return something other than one of the Logical Addresses passed to it in the list of LAs to possibly allocate or 0xFF (which indicates the end of the list). So the value 0x10 was a surprise.
So I looked at the source code for the CEC driver, the file atv_cec.c. In this code is a function called HandleLogAddrAllocInts. This function can return the value 0x10 in the callback under the following conditions:
- The CEC Interrupt bit Timeout is set - this is the normal path for a successful LA allocation.
- It reads the CEC TX NACK counter and compares it to the CEC Retry Count value + 1. If they are equal, then a successful LA allocation has occurred and it will return the LA in the callback function.
- However, if the CEC TX NACK counter is not equal to the CEC Retry Counter + 1 then it will retry the allocation again. If this fails N times then it will finally generate a callback with the error code 0x10.
So my question is, what does it mean when the TX NACK counter is not equal to the CEC Retry Counter + 1 with respect to Logical Address Allocation?
The conditions under which this is occurring are:
- A particular AVR is attached downstream of the 7511. When this AVR is in standby mode, no problems. When this AVR is on, the problem occurs 100% of the time. Currently CEC is disabled in the AVR. I am having my customer enable CEC in the AVR to see if that changes things.
I have not had this problem occur with any other device I have ever tested CEC with. So I would like to understand what this error is trying to tell me. Ideas anyone?