Datasheet
Page 86 of 161
nRF8001 Product Specification
Revision 1.2
To minimize power consumption, the nRF8001 service discovery procedure is only executed when the
existing pipe mapping is outdated or non-existent. The following conditions will initiate the nRF8001
service discovery procedure:
• the services on the peer device are unknown (that is, when connecting to a new device)
• the nRF8001 is re-connecting to a non-bonded device that contains the
Service Changed
characteristic
12
• services change while in a connection
• services have changed since last connection (only applicable for a bonded device)
The following applies to the lifetime of service discovery association:
• When bonded, the service discovery information is stored in nRF8001 until the bond is deleted.
• Any existing bond can be deleted by issuing a new
Bond command or by the peer device.
• If the peer device is not bonded and contains the Service Changed characteristic, the existing
service discovery association is lost upon connection loss.
• Upon power loss, Reset or Setup, the service discovery association is lost.
The service discovery association, bonding status and other dynamic data stored in volatile memory can
be extracted from nRF8001 using the ACI command
ReadDynamicData. When stored in the application
controller, the same data can be reinstated at any time using the
WriteDynamicData command.
22.4.3 Sending application data to a peer device
You can send application data using transmit service pipes as defined in section 20.4 on page 61. The
application data is sent to a peer device using the command
SendData(Data,ServicePipeNo). The
application data is transmitted to the peer device at the next available connection event.
If the service pipe is set with acknowledgment, the application controller receives a
DataAckEvent after a
successful data transmission.
22.4.4 Receiving application data from a peer device
You can receive application data using receive service pipes as defined in section 20.5 on page 66. Data is
sent on the peer devices initiative. When nRF8001 receives data from a peer device, it will generate a
DataReceivedEvent(Data, ServicePipeNo).
You may request the transfer of data stored on the peer device by sending a
RequestData(ServicePipeNo) command. Upon receiving the requested data from the peer device,
nRF8001 generates a
DataReceivedEvent(Data, ServicePipeNo).
22.4.5 Bonding
Bonding is the process of exchanging and storing security keys and identity information with a peer device.
Bonding is required if the application requires authentication.
The ACI command
Bond initiates the Bonding procedure
12.
with a peer device as described in the
Bluetooth low energy GAP specification.
When nRF8001 is set to bond using IO capabilities to obtain Man In The Middle (MITM) protection then a
DisplayPasskeyEvent or a KeyRequestEvent is generated.
If the application controller receives a
KeyRequestEvent it must respond with a SetKey command.
12. Bluetooth Core specification v4.0, Vol. 3, Part C, Sect. 9.4, ‘Bondable Mode’