This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF8001 PipeErrorEvent error code 0x86, ACI_ERROR_STATUS_BUSY

What is the exact meaning of this error code? Is the pipe busy? The nRF8001? The peer? Is an indication of something I did wrong, or just a indication that something needs to be resent? The formal documentation (page 158, nRF8001 Product Specification, revision 1.2) seems to consist of the word "Busy". :-)

I'm receiving this code for a pipe that's an outbound indication pipe for a local-server attribute. (The services.h name is PIPE_POWERPLAY_SERVICE_POWERPLAY_LOGCOUNT_TX_ACK if that helps to clarify.) It's fairly easily reproducible in certain scenarios, but it doesn't occur consistently.

I initially thought I might be sending more than one packet to this pipe before receiving an ack from the remote peer, but after putting in some additional debugging code and checks for duplication, this scenario seems less likely. There is a separate error code for data credit problems, so I'm guessing that's not it, either.

The nRF8001 is on a custom circuit board and seems to be behaving perfectly in all other ways. I'm sure the problem is on my end; I'm just not sure what the nRF8001 is trying to tell me. The peer is an iPhone 5 running a custom app.

The error packet returned from the nRF8001 consists of 6 bytes:

Byte 0: 0x01 - Debug code Byte 1: 0x04 - Payload length Byte 2: 0x8D - Opcode, PipeErrorEvent Byte 3: 0x06 - Pipe number Byte 4: 0x86 - Error code, ACI_ERROR_STATUS_BUSY Byte 5: 0x00 - Supplemental error data (?)

nRFgo configuration is attached.

Related