I did further investigations:
I installed the hello-client-application on the TAG-Board and tried to connect to the module, but the result is the same: smp_bond_result 04
Next I tried to connect to the module with the WICED Smart Explorer. This is working with smp_bond_result 03.
I can't find the problem. Is it on the module, or the TAG-Board with the hello-client-application?
I have added the log-files with the trace-output:
module.log The trace-output of the module (connecting to hello-client)
TAG-Board.log The trace-output of the hello-client (connecting to the module)
module_Android.log The trace-output connecting to WICED Smart Explorer
I had two tag3s and I configured one to be the sensor and the other the client. I followed the below instructions from the hello_client.c and was able to connect successfully and executed (7).
3. Connect from some client application (LightBlue on iOS)
4. From the client application register for notifications
5. Make sure that your slave device (hello_sensor) is up and advertising
6. Push a button on the tag board for 6 seconds. That will start connection process.
7. Push a button on the hello_sensor to deliver notification through hello_client device up to the client.
Can you try running hello_client (in its un-edited form) on your tag and hello_sensor (in its un-edited form) on your module? And try to connect them?
If I install hello-client and hello-sensor, they can connect to each other. So hardware should be working.
But if I install hello-client on the one side and my own application created with the WICED Smart Wizard on the other side, I get "smp-bond-result 04".
I have attached the logs one Post above. But I can't find anything about code 0x04 for result in bonding. Or how I could fix it.
I can't exactly pinpoint what you have created with the Smart Designer. Some folks here have reported that it is easier to start off editing from a known good source e.g. hello_sensor.c.
This is not so simple.
The Application is about 90% finished.
The bonding with the smartphone is working.
I compared both applications but can't find enormous differences. The differences are only in code created by the wizard.
In the trace-output I can see some differences between smartphone and hello-client connection:
emconninfo_getPeerAddrType returns 1 if it is a smartphone, 0 if it is hello-client
encryption_changed is called before smb_bond_result if a smartphone connectes
lesmp_pinfo->lesmpkeys_bondedInfo.adrType is 1 if a smartphone connectes, 0 if it is hello-client
Perhaps the result in smp_bond_result is 4 which is not in the enum of LESMP_PARING_RESULT is an indicator for the problem?
After some more playing with hello_client and hello_sensor I think I found the problem:
Is it possible to connect to hello_sensor if only passkey is enabled?
The passkey for the client and the sensor are the same, but if I enable passkey-pairing I always get the result of 4 of smp_bond.
We are working on a pass-key resolution and will update you shortly.
Does you module have a display or an option to feed in the passkey? If not, the scenario is not supported.
As you were saying about enabling passkey pairing with hello_client and hello_sensor, even though you have the same passkey for both coded in, you will get smp_bond 04 because it is not a supported scenario and is not how it is supposed to work. For passkey pairing, one of the two needs to have a display or an option to feed in the passkey, therefore two tag boards do not support his scenario. So you are absolutely correct, wen you enable passkey-pairing you will always get smp_bond 04 if you are testing on, for example, two tag boards.
Please check out this link (LE Security | Bluetooth Development Portal) for the different scenarios.