The project is a peripheral GATT server and uses the 1.4.0 BLE stack. In a noisy environment, it seems that the central device is sending an LL_CHANNEL_MAP_REQ while connected with some channels marked as Not Used. I do not see these packets being sent by the BLE dongle using BTool and I do not get disconnects.
I noticed a note on the 1.3.1 version of the stack "Occasional slave connection failures would previously occur in cases in which the master device sends Update Channel Map requests while a large slave latency value is in use. This has been fixed." I was wondering if this is related. My connection parameters are: 25ms max and 25ms min, latency 0, timeout 5s.
The sequence of events appears to be the following based on a sniffer capture:
1. Repeated Empty PDU packets on the connection interval back and forth
2. Central sends LL_CHANNEL_MAP_REQ control packet.
3. CC2541 Peripheral sends Empty PDU packet
4. Central continues sending Empty PDU packets on the connection interval with no responses from the peripheral
5. Connection fails due to timeout
Any info would be greatly appreciated. Let me know if you require more details.