CC2640R2 to CC26x2¶
This section describes the main differences an Application Developer must be aware of between the CC2640R2 and the CC26x2 along with a porting guide to demonstrate the migration effort.
Features and Benefits¶
Increased Processing Power and Scalability¶
The CC26x2 is a wireless MCU with a dedicated Arm Cortex-M4F application processor that is pin-to-pin compatible to the CC2640R2 in the 7x7mm QFN package.
More memory is available with an increase of non-volatile memory from 275kB to 608kB. This breaks down into 352kB Flash memory + 256 KB ROM. RAM has also increased from 28 kB to 80 kB. The availability of this increased memory provides support for Over-the-Air Downloads (OAD), larger applications, and more simultaneous connections.
Other improvements include an additional UART and a 70% reduction in current consumption in the Sensor Controller.
Bluetooth 5.2 Enabled¶
If your project wasn’t already on a BLE5 platform, the CC26x2 will provide the ability to support the features of Bluetooth 5.2. This includes features such as higher throughput, longer range, advertising extensions, and improved coexistence with other wireless technology. For a full list of supported features, see Supported Bluetooth LE Stack Features.
Enhanced Security¶
With additional hardware security accelerators for AES-128/256, SHA-256, and ECC, CC26x2 saves five times the processing time and current consumption for implementing security algorithms. This is critical to enable strong network security.
CC26x2R LaunchPad Support¶
All example applications are compatible with the CC26x2R LaunchPad development kit. These features allow for a unified development experience and empowers developers to rapidly release to market.
For more information on this device, see the CC26x2R LaunchPad tool page.
Compatibility Notes¶
Due to a number of improvements and feature additions, the recommended migration path for customers is to start with a CC26x2 based project and migrate any custom application code and project configuration to the new project.
The following sections describe, in general terms, the software differences when migrating from CC2640R2 to CC26x2.
SysConfig¶
The SimpleLink CC13xx/CC26xx SDK leverages SysConfig to configure both the application and BLE5-Stack. For more information on the tool, see Get started with SysConfig.
Additionally, refer to SysConfig Migration for specific migration details. The above reference should be used as a guide to familiarize yourself with the changes that SysConfig introduces and does not need to be explicitly followed if you are starting with an unmodified BLE5-Stack 2.02.05.00 project.
Application TI-RTOS Build Configuration¶
Depending on the example project, the available application build configurations are:
Build Configuration |
Description |
---|---|
|
Turns off debug features (i.e. used in production) |
|
Provides debug feature improvements: Enables exceptions, BIOS asserts, BIOS logging handling, places the BIOS in flash. |
Each build configuration provided is user configurable. For CCS users, the
build configuration can be modified in the .cfg
file located in the project
directory. For IAR users, the build configuration can be modified using the
.xscfg
located in the project’s Tools
folder.
Refer to the application’s README
file for additional application specific
information.
Stack Build Configuration¶
All BLE5-Stack 2.02.05.00 applications configuration’s use a single project configuration. This build configuration yields additional flash footprint optimizations by the linker since the application and stack can share contiguous flash pages. This configuration is further discussed in the Single Project Configuration section of this User’s Guide.
Formerly, the BLE stack was configured using the build_config.opt
command
file. The BLE5-Stack 2.02.05.00 now uses SysConfig to configure the BLE5-Stack and generates
the ti_build_config.opt
.
For more information on this, see BLE5-Stack SysConfig Features.
Predefined Symbols¶
The predefined symbols have been moved from the project properties. Instead,
SysConfig is used to configure and generate any relevant project defines inside
ti_ble_app_config.opt
.
For more information on this, see BLE5-Stack SysConfig Features.
GAP Role Removal¶
All GAP Roles source and header files (peripheral.c
, peripheral.h
,
central.c
, central.h
, etc.) have been removed. Functionality relating
to specific roles was moved into the main application. With the GAP Role
changes, GAP events are being handled differently. GAP events are now returned
to the application directly as RTOS events. As an example,
simple_peripheral.c
defines SimplePeripheral_processStackMsg
to handle
GAP Role related events.
Further discussion of this is in Porting BLE-Stack to BLE5-Stack.
Host Privacy¶
The design of the Host Privacy in BLE5-Stack 2.02.05.00 is a complete redesign of the former one on the CC2640R2.
In BLE5-Stack 2.02.05.00, the Host is responsible for the following tasks:
Configuring the privacy mode and own address type to conduct desired privacy operations on the controller
Performing pairing procedure to exchange device identity information including IRK, identity address, and address type
Updating peer device’s address information in the link DB after acquiring the identity information through pairing process
Managing resolving list by adding/removing resolving list entries or clearing
Storing resolving list to NV and restore it from, so that the privacy information is persistent across power cycles
Porting BLE-Stack to BLE5-Stack¶
This section will describe how to port from a BLEStack project to a BLE5Stack project.
Note
This example is specifically for CC2640R2 SDK 5.30 to CC13xx/CC26xx SDK 6.10 but the steps are similar for all cases. Individual differences can be found in the relevant Porting Guides
This guide will describe a way to port a project from CC2640R2 SDK 5.30 to a CC13xx/CC26xx SDK 6.10 project. If your project uses the BLE-Stack, please note that this guide won’t show how to add BLE5 features. However porting your project will allow the use of BLE5 features that are contained in CC13xx/CC26xx SDK 6.10.
See the following tables for API replacements:
Porting Steps¶
To minimize project configuration differences, start with an example project in
the CC13xx/CC26xx SDK 6.10. For example, if your base project was simple_peripheral
in
the CC2640R2 SDK 5.30, use simple_peripheral
in the CC13xx/CC26xx SDK 6.10 as the project
base to implement application-level modifications on. In other words, no
modifications will be made to the original project. All application specific
code should be inserted into the CC13xx/CC26xx SDK 6.10 project.
Some of these application-level modifications are due to various API changes. To aid in this, the guide provides an API translation table: GAP Changes.
Be sure to utilize the IDE and Tools recommended by the SDK’s release notes. For API Descriptions see BLE Stack API Reference.
Choose a CC13xx/CC26xx SDK 6.10 example Bluetooth LE project and open it in the preferred supported IDE
We’re going to use
simple_peripheral
as the starting CC13xx/CC26xx SDK 6.10 sample project to provide context.Modify the SysConfig file in the project folder. Use the SysConfig tool to transfer your project settings from the original project.
This includes:
Any modification to the example project’s original predefined symbols
Any stack modification done through predefined symbols
Desired Radio settings
TI Drivers initializations/settings
Board file configuration
For more information, see Get started with SysConfig and BLE5-Stack SysConfig Features.
Transfer any additional app specific predefined symbols into the example project
Transfer modified application files into the example project
Modify
main.c
in the CC13xx/CC26xx SDK 6.10 example to create or rename any tasks that were added or modified in the original project.In this example, the following files from the original project were moved into the target
simple_peripheral
example:two_btn_menu.c
andtwo_btn_menu.h
simple_peripheral.c
andsimple_peripheral.h
simple_peripheral_menu.c
andsimple_peripheral_menu.h
simple_gatt_profile.c
andsimple_gatt_profile.h
Adjust the Application for the GAP Role Removal
Note
GAPRole_createTask()
should not be brought over tomain.c
. See GAP Role Removal for more information.All GAP Roles source and header files (
peripheral.c
,peripheral.h
,central.c
,central.h
, etc.) have been removed in CC13xx/CC26xx SDK 6.10. These files will produce build errors and should not be included in your app. This change will introduce a structure change in the application.The functionality of the roles have been broken into distinct GAP functions: Scanner, Advertiser, and Initiator.
These functions of GAP can be independently controlled to allow the device to function as a desired GAP Role such as peripheral or central. For additional information about using these roles, it is suggested to refer to the GAP Roles section of the User Guide. If you formerly used the BLE-Stack, this section provides information about the legacy features that exist in your current application.
Utilize the GAP Changes table to port application GAP functionality. For example, in this table you’ll find information such as
TGAP_LIM_DISC_ADV_INT_MIN
is now replaced withGAP_ADV_PARAM_PRIMARY_INTERVAL_MIN
,GAPROLE_ADVERT_ENABLED
is now done withGapAdv_enable()
or thatGAPRole_StartDevice()
is replaced byGAP_DeviceInit()
to start the GAP module.It is suggested to look at an existing example in the SDK.
simple_peripheral
orsimple_central
may need to be used to assist in the porting process of the application. For example, the initialization of GAP Advertiser can be found insimple_peripheral
.After using the GAP Changes table and using a relevant CC13xx/CC26xx SDK 6.10 example project as a guide, such as
simple_peripheral
, the structure and changes will become clearer.In the context of
simple_peripheral
and using the rest of the guide, the following table provides an example of changes to understand and implement when porting: Sample Simple Peripheral App Changes.Adjust the Application for the GAP Bond Manager Changes
See GAP Bond Manager Changes for additional changes.
Include
icall_ble_api.h
if Stack/ICall APIs are used. Add the following #include AFTER all other includes for source files using Stack/ICall APIs.In this example, add:
#include "icall_ble_api.h"
into the following files AFTER all other includes. In for the
simple_peripheral
port, add this into these files:simple_peripheral.c
simple_gatt_profile.c
For more information regarding
icall_ble_api.h
see ICall Translation and Include.Warning
All Stack/ICall APIs are listed in
icall_ble_api.h
. If any APIs are used withouticall_ble_api.h
, build and or link errors may occur with erratic runtime behaviors!
Replace GAP Event processing
In addition to the GAP Role changes, GAP events are being handled differently. This used to be received by GAP Role (ie. SimpleBLEPeripheral_processStateChangeEvt), which would then call GAPBondMgr, and then translate the event to GAPRole specific events and pass it to the application through a callback (ie. SimpleBLEPeripheral_gapRoleCBs).
GAP events are now returned to the application directly as RTOS events. If the GAPBondMgr is present, they will first be received by the GAPBondMgr to do some processing but it will still be received the same in the application. This is now configured with
GAP_DeviceInit
. GAP events are received by the application (when the bond manager exists) as stack messages of typeGAP_MSG_EVENT
.See the example for
simple_peripheral
from CC13xx/CC26xx SDK 6.10 in the snippets below:// Entity ID globally used to check for source and/or destination of messages static ICall_EntityID selfEntity; //... // Event globally used to post local events and pend on system and // local events. static ICall_SyncHandle syncEvent; //... // Address mode static GAP_Addr_Modes_t addrMode = DEFAULT_ADDRESS_MODE; //... static void SimplePeripheral_init(void) { BLE_LOG_INT_TIME(0, BLE_LOG_MODULE_APP, "APP : ---- init ", SP_TASK_PRIORITY); // Create the menu SimplePeripheral_buildMenu(); // ****************************************************************** // N0 STACK API CALLS CAN OCCUR BEFORE THIS CALL TO ICall_registerApp // ****************************************************************** // Register the current thread as an ICall dispatcher application // so that the application can send and receive messages. ICall_registerApp(&selfEntity, &syncEvent); //... BLE_LOG_INT_TIME(0, BLE_LOG_MODULE_APP, "APP : ---- call GAP_DeviceInit", GAP_PROFILE_PERIPHERAL); //Initialize GAP layer for Peripheral role and register to receive GAP events GAP_DeviceInit(GAP_PROFILE_PERIPHERAL, selfEntity, addrMode, &pRandomAddress); }
static void SimplePeripheral_processGapMessage(gapEventHdr_t *pMsg); // function definition to handle GAP messages static uint8_t SimplePeripheral_processStackMsg(ICall_Hdr *pMsg) { // Always dealloc pMsg unless set otherwise uint8_t safeToDealloc = TRUE; switch (pMsg->event) { case GAP_MSG_EVENT: SimplePeripheral_processGapMessage((gapEventHdr_t*) pMsg); break; //... } } //... static void SimplePeripheral_processGapMessage(gapEventHdr_t *pMsg) { switch(pMsg->opcode) { case GAP_DEVICE_INIT_DONE_EVENT: { //... etc.
Adjust the Application for the GATT Profile Changes
Due to changes in LinkDB defines (
linkdb.h
), custom GATT profiles may need to be modified in order to account for the new definitions.Prepend
LINKDB_
to all constants starting withCONNHANDLE_
, for example insimple_gatt_profile.c
:// Initialize Client Characteristic Configuration attributes GATTServApp_InitCharCfg( LINKDB_CONNHANDLE_INVALID, simpleProfileChar4Config );
See GAP GATT Server Changes and Link Database Changes for additional changes as required.
Note that additional return parameters have been added to
HCI_EXT_ConnEventNoticeCmd()
:/** * Report describing connection event Returned via a @ref pfnGapConnEvtCB_t. */ typedef struct { GAP_ConnEvtStat_t status; //!< status of connection event uint16_t handle; //!< connection handle uint8_t channel; //!< BLE RF channel index (0-39) GAP_ConnEvtPhy_t phy; //!< PHY of connection event int8_t lastRssi; //!< RSSI of last packet received /// Number of packets received for this connection event uint16_t packets; /// Total number of CRC errors for the entire connection uint16_t errors; /// Type of next BLE task GAP_ConnEvtTaskType_t nextTaskType; /// Time to next BLE task (in us). 0xFFFFFFFF if there is no next task. uint32_t nextTaskTime; } Gap_ConnEventRpt_t; /** @} End GAP_Structs */
Note that additional parameter (signalIdentifier) has been added to
GAP_UpdateLinkParamReq
:/** * Establish Link Request parameters * * This is used by @ref GAP_UpdateLinkParamReq */ typedef struct { uint16_t connectionHandle; //!< Connection handle of the update uint16_t intervalMin; //!< Minimum Connection Interval uint16_t intervalMax; //!< Maximum Connection Interval uint16_t connLatency; //!< Connection Latency uint16_t connTimeout; //!< Connection Timeout uint8_t signalIdentifier; //!< L2CAP Signal Identifier. Must be 0 for LL Update } gapUpdateLinkParamReq_t;
HCI_EXT_ConnEventNoticeCmd()
has been replaced with Gap_RegisterConnEventCb().
API Translation Tables¶
These tables describe BLE5Stack API replacements for BLEStack API’s.
Previous Implementation |
New/Current implementation |
|
---|---|---|
Type |
Name |
Description / API / Parameter |
GAP EVENT |
GAP_ADV_DATA_UPDATE_DONE_EVENT |
Check return status of GapAdv_loadByHandle() or GapAdv_loadByBuffer() |
GAP EVENT |
GAP_DEVICE_DISCOVERY_EVENT |
This depends on how the scanner is configured but one or more of the following events will be received: |
GAP EVENT |
GAP_DEVICE_INFO_EVENT |
|
GAP EVENT |
GAP_END_DISCOVERABLE_DONE_EVENT |
Check return status of GapAdv_disable() to see that advertising is successfully being cancelled. The GAP_EVT_ADV_END_AFTER_DISABLE will be sent after the last advertisement ends. |
GAP EVENT |
GAP_MAKE_DISCOVERABLE_DONE_EVENT |
Check return status of GapAdv_enable() to see that advertising is successfully being started. The GAP_EVT_ADV_START_AFTER_ENABLE will be sent after the first advertisement starts. |
GAP EVENT |
GAP_RANDOM_ADDR_CHANGED_EVENT |
Obsolete - Address Resolution is done controller |
GAP PARAM |
TGAP_GEN_DISC_ADV_MIN |
Configured by durationOrMaxEvents parameter of GapAdv_enable() |
GAP PARAM |
TGAP_LIM_ADV_TIMEOUT |
Configured by durationOrMaxEvents parameter of GapAdv_enable() |
GAP PARAM |
TGAP_GEN_DISC_SCAN |
Configured by parameters of GapScan_enable() |
GAP PARAM |
TGAP_LIM_DISC_SCAN |
Configured by parameters of GapScan_enable() |
GAP PARAM |
TGAP_GEN_DISC_SCAN_INT |
Configured by interval parameter of GapScan_setPhyParams() |
GAP PARAM |
TGAP_GEN_DISC_SCAN_WIND |
Configured by window parameter of GapScan_setPhyParams() |
GAP PARAM |
TGAP_LIM_DISC_SCAN_INT |
Configured by interval parameter of GapScan_setPhyParams() |
GAP PARAM |
TGAP_LIM_DISC_SCAN_WIND |
Configured by window parameter of GapScan_setPhyParams() |
GAP PARAM |
TGAP_CONN_EST_ADV_TIMEOUT |
Configured by durationOrMaxEvents parameter of GapAdv_enable() |
GAP PARAM |
TGAP_CONN_PARAM_TIMEOUT |
|
GAP PARAM |
TGAP_LIM_DISC_ADV_INT_MIN |
|
GAP PARAM |
TGAP_LIM_DISC_ADV_INT_MAX |
|
GAP PARAM |
TGAP_GEN_DISC_ADV_INT_MIN |
|
GAP PARAM |
TGAP_GEN_DISC_ADV_INT_MAX |
|
GAP PARAM |
TGAP_CONN_ADV_INT_MIN |
|
GAP PARAM |
TGAP_CONN_ADV_INT_MAX |
|
GAP PARAM |
TGAP_CONN_SCAN_INT |
Configured by interval parameter of GapScan_setPhyParams() |
GAP PARAM |
TGAP_CONN_SCAN_WIND |
Configured by window parameter of GapScan_setPhyParams() |
GAP PARAM |
TGAP_CONN_HIGH_SCAN_INT |
Configured by interval parameter of GapScan_setPhyParams() |
GAP PARAM |
TGAP_CONN_HIGH_SCAN_WIND |
Configured by window parameter of GapScan_setPhyParams() |
GAP PARAM |
TGAP_GEN_DISC_SCAN_INT |
Configured by interval parameter of GapScan_setPhyParams() |
GAP PARAM |
TGAP_GEN_DISC_SCAN_WIND |
Configured by window parameter of GapScan_setPhyParams() |
GAP PARAM |
TGAP_LIM_DISC_SCAN_INT |
Configured by interval parameter of GapScan_setPhyParams() |
GAP PARAM |
TGAP_LIM_DISC_SCAN_WIND |
Configured by window parameter of GapScan_setPhyParams() |
GAP PARAM |
TGAP_CONN_EST_INT_MIN |
|
GAP PARAM |
TGAP_CONN_EST_INT_MAX |
|
GAP PARAM |
TGAP_CONN_EST_SCAN_INT |
|
GAP PARAM |
TGAP_CONN_EST_SCAN_WIND |
|
GAP PARAM |
TGAP_CONN_EST_SUPERV_TIMEOUT |
|
GAP PARAM |
TGAP_CONN_EST_LATENCY |
|
GAP PARAM |
TGAP_CONN_EST_MIN_CE_LEN |
Obsolete - Not Used by Controller |
GAP PARAM |
TGAP_CONN_EST_MAX_CE_LEN |
Obsolete - Not Used by Controller |
GAP PARAM |
TGAP_PRIVATE_ADDR_INT |
|
GAP PARAM |
TGAP_CONN_PAUSE_CENTRAL |
Obsolete - Not Used by Controller |
GAP PARAM |
TGAP_CONN_PAUSE_PERIPHERAL |
|
GAP PARAM |
TGAP_SM_TIMEOUT |
|
GAP PARAM |
TGAP_SM_MIN_KEY_LEN |
|
GAP PARAM |
TGAP_SM_MAX_KEY_LEN |
|
GAP PARAM |
TGAP_FILTER_ADV_REPORTS |
Obsolete - Duplicate Filtering done in Controller |
GAP PARAM |
TGAP_SCAN_RSP_RSSI_MIN |
|
GAP PARAM |
TGAP_REJECT_CONN_PARAMS |
|
GAP PARAM |
TGAP_AUTH_TASK_ID |
GAP_SetParamValue() with |
GAP PARAM |
TGAP_VERIFY_CAR |
DEPRECATED |
GAP PARAM |
TGAP_GGS_PARAMS |
GAP_SetParamValue() with |
GAP PARAM |
GAPROLE_IRK, GAPCENTRALROLE_IRK |
|
GAP PARAM |
GAPROLE_SRK, GAPCENTRALROLE_SRK |
|
GAP PARAM |
GAPROLE_BD_ADDR, GAPCENTRALROLE_BD_ADDR |
|
GAP PARAM |
GAPROLE_ADVERT_ENABLED, GAPROLE_ADV_NONCONN_ENABLED |
|
GAP PARAM |
GAPROLE_ADVERT_OFF_TIME |
Configured by durationOrMaxEvents parameter of GapAdv_enable() |
GAP PARAM |
GAPROLE_ADVERT_DATA |
Various API: |
GAP PARAM |
GAPROLE_SCAN_RSP_DATA |
Various API: |
GAP PARAM |
GAPROLE_ADV_EVENT_TYPE |
GapAdv_setParam() or GapAdv_getParam() with GAP_ADV_PARAM_PROPS |
GAP PARAM |
GAPROLE_ADV_DIRECT_TYPE |
GapAdv_setParam() or GapAdv_getParam() with GAP_ADV_PARAM_PEER_ADDRESS_TYPE |
GAP PARAM |
GAPROLE_ADV_DIRECT_ADDR |
GapAdv_setParam() or GapAdv_getParam() with GAP_ADV_PARAM_PEER_ADDRESS |
GAP PARAM |
GAPROLE_ADV_CHANNEL_MAP |
GapAdv_setParam() or GapAdv_getParam() with GAP_ADV_PARAM_PRIMARY_CHANNEL_MAP |
GAP PARAM |
GAPROLE_ADV_FILTER_POLICY |
GapAdv_setParam() or GapAdv_getParam() with GAP_ADV_PARAM_FILTER_POLICY |
GAP PARAM |
GAPROLE_CONNHANDLE |
Returned for each GAP event |
GAP PARAM |
GAPROLE_RSSI_READ_RATE |
RSSI can be received by HCI_ReadRssiCmd() |
GAP PARAM |
GAPROLE_PARAM_UPDATE_ENABLE |
GAP_UpdateLinkParamReq() can be called as desired |
GAP PARAM |
GAPROLE_MIN_CONN_INTERVAL |
pParams.intervalMin parameter of GAP_UpdateLinkParamReq() |
GAP PARAM |
GAPROLE_MAX_CONN_INTERVAL |
pParams.intervalMax parameter of GAP_UpdateLinkParamReq() |
GAP PARAM |
GAPROLE_SLAVE_LATENCY |
pParams.connLatency parameter of GAP_UpdateLinkParamReq() |
GAP PARAM |
GAPROLE_TIMEOUT_MULTIPLIER |
pParams.connTimeout parameter of GAP_UpdateLinkParamReq() |
GAP PARAM |
GAPROLE_STATE |
Obsolete - GAP changes remove the need for this |
GAP PARAM |
GAPROLE_CONN_BD_ADDR, GAPROLE_BD_ADDR_TYPE |
Returned in GAP_LINK_ESTABLISHED_EVENT, contained in stack message, gapEstLinkReqEvent_t when the link is established Or use linkDB_GetInfo() at any time during the connection |
GAP PARAM |
GAPROLE_CONN_INTERVAL |
Returned from linkDB_GetInfo(), as linkDBInfo_t.connInterval |
GAP PARAM |
GAPROLE_CONN_LATENCY |
Returned from linkDB_GetInfo(), as linkDBInfo_t.connLatency |
GAP PARAM |
GAPROLE_CONN_TIMEOUT |
Returned from linkDB_GetInfo(), as linkDBInfo_t.connTimeout |
GAP PARAM |
GAPCENTRALROLE_MAX_SCAN_RES |
Configured by maxNumReport parameter of GapScan_enable() |
GAP PARAM |
GAPCENTRALROLE_LINK_PARAM_UPDATE_REQ_REPLY |
|
GAP API |
GAP_DeviceInit, GAPRole_StartDevice, GAPCentralRole_StartDevice |
Declaration Change - Use GAP_DeviceInit() with parameter for roles desired |
GAP API |
GAPRole_RegisterAppCBs |
Obsolete - Functionality moved to GAPBondMgr_Register() |
GAP API |
GAP_SetAdvToken |
Obsolete - Advertisement Sets are Used |
GAP API |
GAP_GetAdvToken |
Obsolete - Advertisement Sets are Used |
GAP API |
GAP_RemoveAdvToken |
Obsolete - Advertisement Sets are Used |
GAP API |
GAP_UpdateAdvTokens |
Obsolete - Advertisement Sets are Used |
GAP API |
GAPRole_SendUpdateParam, GAPCentralRole_UpdateLink |
|
GAP API |
GAP_MakeDiscoverable |
|
GAP API |
GAP_UpdateAdvertisingData |
Various API: |
GAP API |
GAP_EndDiscoverable |
|
GAP API |
GAP_DeviceDiscoveryRequest, GAPCentralRole_StartDiscovery |
|
GAP API |
GAP_DeviceDiscoveryCancel, GAPCentralRole_CancelDiscovery |
|
GAP API |
GAP_ResolvePrivateAddr |
Obsolete - Address Resolution is done controller |
GAP API |
GAP_EstablishLinkReq, GAPCentralRole_EstablishLink |
GapInit_connect(), or GapInit_connectWl() to use Filter Accept List |
GAP API |
GAP_TerminateLinkReq, GAPRole_TerminateConnection, GAPCentralRole_TerminateLink |
GapInit_cancelConnect() for connection request, GAP_TerminateLinkReq() otherwise |
GAP API |
GAP_ConfigDeviceAddr |
Obsolete - Only way to configure the device address is as parameters in GAP_DeviceInit() |
GAP CB |
gapRolesParamUpdateCB_t, paramUpdateAppDecision_t, passThroughToApp_t |
These are handled through GAP_UPDATE_LINK_PARAM_REQ_EVENT, applies to the L2CAP Parameter Update Procedure as well. |
GAP CB |
gapRolesStateNotify_t, pfnGapCentralRoleEventCB_t |
Moved into GAP Bond Manager callbacks, gapBondCBs_t |
Previous Implementation |
New/Current implementation |
|
---|---|---|
Type |
Name |
Description / API / Parameter |
GAPBOND PARAM |
GAPBOND_DEFAULT_PASSCODE |
Use pfnPasscodeCB_t, shared default passcode defined in bcomdef.h B_APP_DEFAULT_PASSCODE |
GAPBOND PARAM |
GAPBOND_REMOTE_OOB_SC_ENABLED |
Obsolete |
GAPBOND PARAM |
GAPBOND_REMOTE_OOB_SC_DATA |
Obsolete |
GAPBOND PARAM |
GAPBOND_LOCAL_OOB_SC_ENABLED |
Obsolete |
GAPBOND PARAM |
GAPBOND_LOCAL_OOB_SC_DATA |
Obsolete |
GAPBOND STATE |
GAPBOND_PAIRING_STATE_BONDED |
|
GAPBOND DEF |
GBM_QUEUE_PAIRINGS |
Removed, is now default behavior |
GAPBOND DEF |
GBM_GATT_NO_CLIENT |
Configured by |
GAPBOND DEF |
SNP_SECURITY |
Configured by |
GAPBOND API |
GAPBondMgr_LinkEst |
Removed Application Access to API Handled Internally |
GAPBOND API |
GAPBondMgr_LinkTerm |
Removed Application Access to API Handled Internally |
GAPBOND API |
GAPBondMgr_SlaveReqSecurity |
GAPBondMgr_Pair(), allowing both Centrals and Peripherals to request pairing |
GAPBOND API |
GAPBondMgr_UpdateCharCfg |
Removed Application Access to API Handled Internally |
GAPBOND API |
GAPBondMgr_ReadGattChar |
Removed Application Access to API Handled Internally |
GAPBOND API |
GAPBondMgr_SupportsEnhancedPriv |
Removed Application Access to API Handled Internally |
GAPBOND API |
GAPBondMgr_CheckNVLen |
Removed Application Access to API Handled Internally |
GAPBOND API |
GAPBondMgr_syncResolvingList |
Removed Application Access to API Handled Internally |
Previous Implementation |
New/Current implementation |
|
---|---|---|
Type |
Name |
Description / API / Parameter |
GGS PARAM |
GGS_PERI_PRIVACY_FLAG_ATT |
Obsolete |
GGS PARAM |
GGS_RECONNCT_ADDR_ATT |
Obsolete |
GGS PARAM |
GGS_PERI_PRIVACY_FLAG_PROPS |
Obsolete |
GGS PARAM |
GGS_W_PERMIT_PRIVACY_FLAG_ATT |
Obsolete |
GGS PARAM |
GGS_TESTMODE_W_PERMIT_PRIVACY_FLAG |
Obsolete |
Previous Implementation |
New/Current implementation |
|
---|---|---|
Type |
Name |
Description / API / Parameter |
LinkDB API |
linkDB_Remove |
API now accepts linkDBInfo_t in addition to connection handle |
Previous Implementation |
BLE5-Stack 1.02.00 Implementation |
---|---|
SimpleBLEPeripheral_processStateChangeEvt |
See |
SimpleBLEPeripheral_processAppMsg |
Different events are now being handled. See |
SimpleBLEPeripheral_processStackMsg |
See the guide’s step to
|
SimpleBLEPeripheral_stateChangeCB gapRolesCBs_t SimpleBLEPeripheral_gapRoleCBs |
See the guide’s step to
|
GAP_SetParamValue(TGAP_CONN_PAUSE_PERIPHERAL, DEFAULT_CONN_PAUSE_PERIPHERAL) |
|
GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof(uint8_t),&initialAdvertEnable) |
In |
GAPRole_SetParameter(GAPROLE_ADVERT_OFF_TIME, sizeof(uint16_t),&advertOffTime) |
In |
GAPRole_SetParameter(GAPROLE_SCAN_RSP_DATA, sizeof(scanRspData),scanRspData) |
In |
GAPRole_SetParameter(GAPROLE_ADVERT_DATA, sizeof(advertData), advertData) |
In |
GAPRole_SetParameter(GAPROLE_PARAM_UPDATE_ENABLE, sizeof(uint8_t), &enableUpdateRequest) |
In |
GAPRole_SetParameter(GAPROLE_MIN_CONN_INTERVAL, sizeof(uint16_t), &desiredMinInterval) |
In |
GAPRole_SetParameter(GAPROLE_MAX_CONN_INTERVAL, sizeof(uint16_t), &desiredMaxInterval) |
In |
GAPRole_SetParameter(GAPROLE_SLAVE_LATENCY, sizeof(uint16_t), &desiredSlaveLatency) |
In |
GAPRole_SetParameter(GAPROLE_TIMEOUT_MULTIPLIER, sizeof(uint16_t), &desiredConnTimeout) |
In |
GAP_SetParamValue(TGAP_LIM_DISC_ADV_INT_MIN, advInt) GAP_SetParamValue(TGAP_GEN_DISC_ADV_INT_MIN, advInt) |
|
GAP_SetParamValue(TGAP_LIM_DISC_ADV_INT_MAX, advInt) GAP_SetParamValue(TGAP_GEN_DISC_ADV_INT_MAX, advInt) |
|
GAPBondMgr_SetParameter(GAPBOND_DEFAULT_PASSCODE, sizeof(uint32_t), &passkey) |
Use pfnPasscodeCB_t, shared default passcode defined in bcomdef.h B_APP_DEFAULT_PASSCODE |
GAPROLE_STATE |
Obsolete - GAP changes remove the need for this |
GAPROLE_CONNHANDLE |
Returned for each GAP event |