I am developing a QN9021 peripheral device on IAR ARM 8.11.
I encountered a very strange phenomenon!
I made 2 QN9021 PCBAs (identical PCB and components) .
1st QN9021 PCBA was OK to connect my phone and my phone read/write characteristics. I used 1st QN9021 PCBA to develop/debug my project. The day before yesterday, I found my phone can connect to 1st QN9021 PCBA , but can not get a service list from it anymore.
Today I tried it with 2nd QN9021 PCBA (identical project and obj code), it works! My phone can connect to it, and read/write characteristics as well!
Is 1st QN9021 chip is broken? but 1st QN9021 chip can connect to my phone, the RSSI is the same strong with 2nd QN9021 chip (about -60 dBm). or 1st QN9021 chip is in a accidental bad configuration?
The problem is solved.
Phone will cache the service list of your BLE peripheral device. When the service list of your BLE peripheral device has changed, the peer phone just use the cached service list to bypass the service discovery procedure.
My phone 'OS is Android 4.4.4, I switch off my Bluetooth in Android setting, then switch Bluetooth on, after that, my phone can update the service list of your BLE peripheral device.