Integration and APIs
Integration
All the APIs referenced in this section are available in the connection handover library.
The available libraries are listed below:
lib_ble_handover_cm33_iar.a (for IAR projects)
lib_ble_handover_cm33_gcc.a (for MCUX or armgcc projects)
Parent topic:Bluetooth LE Connection Handover Integration and APIs
Connection Handover API availability
Gap_HandoverGetDataSize
bleResult_t Gap_HandoverGetDataSize(deviceId_t deviceId, uint32_t *pDataSize);
Description: Returns the size in octets of the Handover Data for the given peer device id.
Parameters:
deviceId: Peer device identifier.pDataSize: Pointer to the size in octets of the Handover Data.
Returns: gBleSuccess_c or error.
Gap_HandoverGetData
bleResult_t Gap_HandoverGetData(deviceId_t deviceId, uint8_t *pData);
Description: Copies the data used by the Handover feature for the given peer device id.
Parameters:
deviceId: Peer device identifier.pData: Pointer to memory location where the Handover data is to be copied.
Returns: gBleSuccess_c or error.
Gap_HandoverSetData
bleResult_t Gap_HandoverSetData(uint8_t *pData);
Description: Sets the data used by the Handover feature.
Parameters:
pData: Pointer to memory location where the Handover data is found.
Returns: gBleSuccess_c or error.
Gap_HandoverSetLlPendingData
bleResult_t Gap_HandoverSetLlPendingData(uint16_t connectionHandle, uint8_t *pTxData);
Description: Sets the LL data pending on the target device to be transmitted after handover connect.
Parameters:
connectionHandle: Handover connection identifier.pTxData: Pointer to memory location where the pending data is found.
Returns: gBleSuccess_c or error.
Gap_HandoverFreeData
bleResult_t Gap_HandoverFreeData(void);
Description: Frees reference to handover data provided through Gap_HandoverSetData().
Returns: gBleSuccess_c or gBleInvalidState_c if handover data reference is not set.
Gap_HandoverGetTime
bleResult_t Gap_HandoverGetTime(void);
Description: Gets timing information from Link Layer to be used in Handover process.
Returns: gBleSuccess_c or error.
Gap_HandoverSuspendTransmit
bleResult_t Gap_HandoverSuspendTransmit(deviceId_t deviceId, bleHandoverSuspendTransmitMode_t mode, uint16_t eventCounter, uint8_t noOfConnIntervals);
Description: Suspends TX for the given connection.
Parameters:
deviceId: Peer device identifier.mode: Mode.eventCounter: Event counter.noOfConnIntervals: Number of connection intervals during which TX is suspended. Use 0 for manual resume.
Returns: gBleSuccess_c or error.
Gap_HandoverResumeTransmit
bleResult_t Gap_HandoverResumeTransmit(deviceId_t deviceId);
Description: Resumes TX for the given connection.
Parameters:
deviceId: Peer device identifier.
Returns: gBleSuccess_c or error.
Gap_HandoverAnchorNotification
bleResult_t Gap_HandoverAnchorNotification(deviceId_t deviceId, bleHandoverAnchorNotificationEnable_t enable, uint8_t noOfReports);
Description: Enables or disables anchor notifications for the given peer.
Parameters:
deviceId: Peer device identifier.enable: Enables or disables notifications.noOfReports: Number of reports to receive (0 for manual stop).
Returns: gBleSuccess_c or error.
Gap_HandoverAnchorSearchStart
bleResult_t Gap_HandoverAnchorSearchStart(gapHandoverAnchorSearchStartParams_t *pSearchParams);
Description: Starts anchor search with the given parameters.
Parameters:
pSearchParams: Pointer to structure containing anchor search parameters. The structure contains:startTime625: Slot of the anchor point timing of the connection event.startTimeOffset: Slot offset of the anchor point timing of the connection event.lastRxInstant: Last successful access address reception instant (unit 625 us).accessAddress: Access address (4 bytes).crcInit: CRC initialization value (3 bytes).channelMap: Channel map (5 bytes, FF FF FF FF 1F if all channels are used).connInterval: Connection interval (unit 1.25ms).latency: Latency (unit connection interval).supervisionTimeout: Supervision timeout (unit 10ms).eventCounter: Current connection event counter.centralSca: Sleep clock accuracy (0 to 7).role: Role (0 for central and 1 for peripheral).centralPhy: TX/RX PHY.seqNum: Sequence number; bits 1-0: latest received SN and NESN; bits 5-4: latest transmitted SN and NESN.hopAlgo2: Hop algorithm (0/1 for hop algorithm #1 or #2).unmappedChannelIndex: Unmapped channel index (used only for hop algorithm #1).hopIncrement: Hop increment.ucNbReports: Number of connection intervals to monitor (0: continuous, 1-255: automatic stop).uiEventCounterAdvance: Event counter delay to perform the search (0 to start ASAP).timeout: Timeout in connection intervals (0 if no timeout).timingDiffSlot: Slot difference of the LL timing.timingDiffOffset: Slot offset difference of the LL timing.mode: Search mode setting.
Returns: gBleSuccess_c or error.
Gap_HandoverAnchorSearchStop
bleResult_t Gap_HandoverAnchorSearchStop(uint16_t connHandle);
Description: Stops anchor search for the given connection handle.
Parameters:
connHandle: Connection handle for which to stop the anchor search.
Returns: gBleSuccess_c or error.
Gap_HandoverTimeSyncTransmit
bleResult_t Gap_HandoverTimeSyncTransmit(gapHandoverTimeSyncTransmitParams_t *pTransmitParams);
Description: Starts time sync advertising with given parameters.
Parameters:
pTransmitParams: Pointer to structure containing time sync transmit parameters. The structure contains:enable: Enables or disables the transmit operation (0 = disable, 1 = enable).advChannel: BLE channel to use for advertising (0 to 39).deviceAddress: Packet identifier, can be the BD address or any value (6 bytes).phys: PHY setting (0 = 1M, 1 = 2M, 2 = LR S8, 3 = LR S2).txPowerLevel: TX Power level (0 to 31).txIntervalSlots625: Packet interval in slots (4 to 255).
Returns: gBleSuccess_c or error.
Gap_HandoverTimeSyncReceive
bleResult_t Gap_HandoverTimeSyncReceive(gapHandoverTimeSyncReceiveParams_t *pReceiveParams);
Description: Starts time sync scanning with the given parameters.
Parameters:
pReceiveParams: Pointer to structure containing time sync receive parameters. The structure contains:enable: Enables or disables the receive operation (0 = disable, 1 = enable).scanChannel: BLE channel to use for scanning (0 to 39).deviceAddress: Packet identifier, can be the BD address or any value (6 bytes).phys: PHY setting (0 = 1M, 1 = 2M, 2 = LR S8, 3 = LR S2).stopWhenFound: One-shot setting (0 = continue scanning, 1 = stop when packet is found).
Returns: gBleSuccess_c or error.
Gap_HandoverGetConnParams
bleResult_t Gap_HandoverGetConnParams(uint16_t connHandle, gapConnectionCallback_t connectionCallback, uint8_t anchorNotification);
Description: Connects to a peer device initialized through the Connection Handover procedure.
Parameters:
connHandle: Handover Connection handle.connectionCallback: Pointer to the connection event handler function.anchorNotification: Anchor search setting after handover, 0 - stop anchor notification, 1 - keep anchor notification.
Returns: gBleSuccess_c or error.
Gap_HandoverDisconnect
bleResult_t Gap_HandoverDisconnect(deviceId_t deviceId);
Description: Disconnects a peer device for which the connection was handed over to another device.
Parameters:
deviceId: Peer device identifier.
Returns: gBleSuccess_c or error.
Gap_HandoverInit
bleResult_t Gap_HandoverInit(void);
Description: Initializes the connection handover feature. Must be called before Ble_Initialize().
Returns: gBleInvalidState_c if Ble_Initialize() was already called, gBleSuccess_c otherwise.
Gap_HandoverSetSkd
bleResult_t Gap_HandoverSetSkd(uint8_t nvmIndex, uint8_t *pSkd);
Description: Sets the SKD of the connection that is to be handed over. Used only if gAppSecureMode_d is enabled in the application. Requires Handover Data to be set.
Parameters:
nvmIndex: Bonding Data NVM index.pSkd: Pointer to 16 octets SKD.
Returns: gBleInvalidState_c if Ble_Initialize() was already called, gBleSuccess_c otherwise.
Gap_HandoverGetCsLlContext
bleResult_t Gap_HandoverGetCsLlContext(deviceId_t deviceId);
Description: Copies the LL CS-related context data for the given peer device id.
Parameters:
deviceId: Peer device identifier.
Returns: gBleSuccess_c or error.
Gap_HandoverSetCsLlContext
bleResult_t Gap_HandoverSetCsLlContext(deviceId_t deviceId, uint16_t mask, uint8_t contextLength, uint8_t *pContextData);
Description: Sets the CS-related context data into the LL, for the given peer device id.
Parameters:
deviceId: Peer device identifier.mask: Context data bitmask (used by the LL).contextLength: Length of the context data.pContextData: Pointer to context data.
Returns: gBleSuccess_c or error.
Gap_HandoverUpdateConnParams
bleResult_t Gap_HandoverUpdateConnParams(gapHandoverUpdateConnParams_t *pConnParams);
Description: Updates the channel map and/or PHY used in the current anchor monitoring process.
Parameters:
pConnParams: Pointer to connection parameters to be updated.
Returns: gBleSuccess_c or error.
Gap_HandoverApplyConnectionUpdateProcedure
bleResult_t Gap_HandoverApplyConnectionUpdateProcedure(gapHandoverApplyConnectionUpdateProcedure_t *pConnParams);
Description: Applies the new connection parameters in case of Connection Update Procedure on the active controller.
Parameters:
pConnParams: Pointer to connection parameters to be applied.
Returns: gBleSuccess_c or error.
Connection Handover Events
The following events can be received through the GAP generic callback during the handover operations:
gHandoverGetComplete_c (0x31)
Description: Event generated when handover data get operation is complete.
Event Data: handoverGetData_t containing:
status: Command status.pData: Pointer to connection handover data.
gHandoverSetComplete_c (0x32)
Description: Event generated when handover data set operation is complete.
Event Data: handoverSetData_t containing:
status: Command status.pData: Pointer to connection handover data.
gHandoverGetCsLlContextComplete_c (0x33)
Description: Event generated when handover CS LL context data get operation is complete.
Event Data: handoverGetCsLlContext_t containing:
status: Command status.responseMask: LL context bitmap indicating the Channel Sounding context.llContextLength: Context data length.llContext: LL Context data.
gHandoverSetCsLlContextComplete_c (0x34)
Description: Event generated when handover CS LL context data set operation is complete.
Event Data: Status of the operation.
gHandoverGetTime_c (0x35)
Description: Event generated when Handover Get Time command is complete.
Event Data: handoverGetTime_t containing:
status: Command status.slot: LL timing slot counter (unit 625us).us_offset: LL timing slot offset (0 to 624, unit us).
gHandoverSuspendTransmitComplete_c (0x36)
Description: Event generated when Handover Suspend Transmit command is complete.
Event Data: handoverSuspendTransmitCompleteEvent_t containing:
connectionHandle: Connection identifier.noOfPendingAclPackets: Number of pending ACL packets.sizeOfPendingAclPackets: Pending ACL packet data size.sizeOfDataTxInOldestPacket: Size of data transmitted and acked in the oldest ACL packet.sizeOfDataNAckInOldestPacket: Size of data transmitted but not acked in the oldest ACL packet.
gHandoverResumeTransmitComplete_c (0x37)
Description: Event generated when Handover Resume Transmit command is complete.
Event Data: handoverResumeTransmitCompleteEvent_t containing:
connectionHandle: Connection identifier.
gHandoverAnchorNotificationStateChanged_c (0x38)
Description: Event generated when Handover Anchor Notification command is complete.
Event Data: handoverAnchorNotificationStateChanged_t containing:
connectionHandle: Connection identifier.
gHandoverAnchorSearchStarted_c (0x39)
Description: Event generated when Handover Anchor Search Start command is complete.
Event Data: handoverAnchorSearchStart_t containing:
status: Command status.connectionHandle: Connection identifier.
gHandoverAnchorSearchStopped_c (0x3A)
Description: Event generated when Handover Anchor Search Stop command is complete.
Event Data: handoverAnchorSearchStop_t containing:
status: Command status.connectionHandle: Connection identifier.
gHandoverTimeSyncTransmitStateChanged_c (0x3B)
Description: Event generated when Handover Time Sync Transmit command is complete.
Event Data: Status of the operation.
gHandoverTimeSyncReceiveComplete_c (0x3C)
Description: Event generated when Handover Time Sync Receive command is complete.
Event Data: Status of the operation.
gHandoverAnchorMonitorEvent_c (0x3D)
Description: Event received from Controller - Handover Anchor Monitor.
Event Data: handoverAnchorMonitorEvent_t containing:
connectionHandle: Connection identifier.connEvent: Current connection event counter.rssiRemote: RSSI of the packet from the remote device (+127 if not available).lqiRemote: LQI (Link Quality Indicator) of the packet from the remote device.statusRemote: Status of the packet from the remote device.rssiActive: RSSI of the packet from the active device (+127 if not available).lqiActive: LQI (Link Quality Indicator) of the packet from the active device.statusActive: Status of the packet from the active device.anchorClock625Us: Slot of the anchor point timing of the connection event.anchorDelay: Slot offset of the anchor point timing of the connection event.chIdx: BLE channel index.ucNbReports: Number of remaining reports to receive.
gHandoverTimeSyncEvent_c (0x3E)
Description: Event received from Controller - Handover Time Sync.
Event Data: handoverTimeSyncEvent_t containing:
txClkSlot: Transmitter packet start time in slot (625 us).txUs: Transmitter packet start time offset inside the slot (0 to 624 us).rxClkSlot: Receiver packet start time in slot (625 us).rxUs: Receiver packet start time offset inside the slot (0 to 624 us).rssi: RSSI value.
gHandoverConnParamUpdateEvent_c (0x3F)
Description: Event received from Controller - Handover Connection Parameters Update.
Event Data: handoverConnParamUpdateEvent_t containing:
status: Status indicating the event trigger source.connectionHandle: Connection identifier.ulTxAccCode: Access address.aCrcInitVal: CRC initialization value (3 bytes).uiConnInterval: Connection interval (unit 1.25ms).uiSuperTO: Supervision timeout (unit 10ms).uiConnLatency: Latency (unit connection interval).aChMapBm: Channel map (5 bytes).ucChannelSelection: Hop algorithm (0/1 for algorithm #1 or #2).ucHop: Hop increment.ucUnMapChIdx: Unmapped channel index.ucCentralSca: Sleep clock accuracy.ucRole: Role (0 for central and 1 for peripheral).aucRemoteMasRxPHY: TX/RX PHY.seqNum: Sequence number.uiConnEvent: Current connection event counter.ulAnchorClk: Slot of the anchor point timing.uiAnchorDelay: Slot offset of the anchor point timing.ulRxInstant: Last successful access address reception instant.
gHandoverFreeComplete_c (0x46)
Description: Event generated when handover data free operation is complete.
Event Data: Status of the operation.
gHandoverUpdateConnParamsComplete_c (0x47)
Description: Event generated when Handover Update Connection Parameters command is complete.
Event Data: handoverUpdateConnParams_t containing:
status: Command status.connectionHandle: Connection identifier.
gHandoverLlPendingData_c (0x4A)
Description: Event indicating ACL Data pending to be transmitted by the LL.
Event Data: handoverLlPendingDataIndication_t containing:
dataSize: Pending HCI ACL data packet size.pData: Pointer to message containing the HCI ACL data packet (should be freed by the application).
gHandoverAnchorMonitorPacketEvent_c (0x44)
Description: Event received from Controller - Handover Anchor Monitor Packet.
Event Data: handoverAnchorMonitorPacketEvent_t containing:
packetCounter: Packet counter, incremented for each event.connectionHandle: Connection identifier.statusPacket: Status of the packet.phy: PHY (0/1/2/3 for 1M/2M/LR S8/LR S2).chIdx: BLE channel index.rssiPacket: RSSI of the packet (+127 if not available).lqiPacket: LQI (Link Quality Indicator) of the packet.connEvent: Current connection event counter.anchorClock625Us: Slot value of packet start time (in 625us unit).anchorDelay: Slot offset value of packet start time (in 1us unit).ucNbConnIntervals: Number of remaining connection intervals to monitor.pduSize: PDU length.pPdu: Pointer to PDU data (must be freed by the application).
gHandoverAnchorMonitorPacketContinueEvent_c (0x45)
Description: Event received from Controller - Handover Anchor Monitor Packet Continue.
Event Data: handoverAnchorMonitorPacketContinueEvent_t containing:
packetCounter: Packet counter, incremented for each event.connectionHandle: Connection identifier.pduSize: PDU length.pPdu: Pointer to PDU data (must be freed by the application).
gHandoverConnectionUpdateProcedureEvent_c (0x4F)
Description: Event reporting new connection parameters indicated during the Connection Update procedure.
Event Data: handoverConnectionUpdateProcedureEvent_t containing:
connectionHandle: Connection identifier.winSize: Transmit window size value (in 1.25 ms units).winOffset: Transmit window offset value (in 1.25 ms units).interval: Connection interval value (in 1.25 ms units).latency: Connection peripheral latency value.timeout: Connection supervision timeout value (in 10 ms units).instant: Connection event counter value when new parameters will be applied.currentEventCounter: Current connection event counter.
gHandoverApplyConnectionUpdateProcedureComplete_c (0x50)
Description: Event reporting completion of the Connection Update procedure application.
Event Data: handoverApplyConnectionUpdateProcedure_t containing:
connectionHandle: Connection identifier.