CC2640 Simple Network Processor API Guide
CC2640%20Simple%20Network%20Processor%20API%20Guide
CC2640%20Simple%20Network%20Processor%20API%20Guide
CC2640%20Simple%20Network%20Processor%20API%20Guide
User Manual: Pdf
Open the PDF directly: View PDF .
Page Count: 46
![](asset-1.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 1 of 46
SimpleLink™ Bluetooth® Low Energy
CC2640 Wireless MCU
Simple Network Processor API Guide
For BLE-Stack™ Version: 2.2.1
October 2016
![](asset-2.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 2 of 46
TABLE OF CONTENTS
1. REFERENCES .......................................................................................................................... 5
2. REVISION HISTORY ................................................................................................................ 5
3. DOCUMENT SPECIFICS ......................................................................................................... 5
4. PURPOSE ................................................................................................................................. 6
5. SNP FUNCTIONAL OVERVIEW .............................................................................................. 7
5.1 ARCHITECTURE OVERVIEW ................................................................................................... 7
5.2 DEFAULT GATT SERVICES ................................................................................................... 8
5.3 LIMITATIONS ......................................................................................................................... 9
6. COMPILING THE SNP ............................................................................................................. 9
7. UNIFIED NETWORK PROCESSOR INTERFACE ................................................................ 10
7.1 BLE SNP SUBSYSTEM ....................................................................................................... 10
7.2 EXAMPLE SNP BLE SUBSYSTEM NPI FRAME ...................................................................... 11
7.3 SETTING MRDY/SRDY PINS .............................................................................................. 11
8. SNP API SUMMARY .............................................................................................................. 11
8.1 API TABLE ......................................................................................................................... 11
8.2 SNP ERROR CODES .......................................................................................................... 15
8.3 HANDLING UUIDS .............................................................................................................. 15
9. SNP API .................................................................................................................................. 15
9.1 DEVICE SUBGROUP COMMANDS.......................................................................................... 16
9.1.1 SNP Mask Event (0x02) ........................................................................................... 16
9.1.2 SNP Get Revision (0x03) .......................................................................................... 16
9.1.3 SNP Encapsulated HCI Command (0x04) ............................................................... 16
9.1.4 SNP Get Status (0x06) ............................................................................................. 17
9.1.5 SNP Get Rand (0x08) ............................................................................................... 17
9.1.6 SNP Test (0x10) ....................................................................................................... 18
9.2 DEVICE SUBGROUP EVENTS ............................................................................................... 18
9.2.1 SNP Power Up (0x01) .............................................................................................. 18
9.2.2 SNP Mask Event Response (0x02) .......................................................................... 18
9.2.3 SNP Get Revision Response (0x03) ........................................................................ 18
9.2.4 SNP HCI Command Response (0x04) ..................................................................... 19
9.2.5 SNP Event Indication (0x05)..................................................................................... 19
9.2.6 SNP Get Status Response (0x06) ............................................................................ 22
9.2.7 SNP Invalid Synchronous Command Indication (0x07) ........................................... 23
9.2.8 SNP Get Rand Response (0x08) ............................................................................. 24
9.2.9 SNP Test Response (0x10) ...................................................................................... 24
9.3 GAP SUBGROUP COMMANDS ............................................................................................. 24
9.3.1 SNP Start Advertisement (0x42)............................................................................... 24
9.3.2 SNP Set Advertisement Data (0x43) ........................................................................ 25
9.3.3 SNP Stop Advertisement (0x44) ............................................................................... 26
9.3.4 SNP Update Connection Parameters (0x45)............................................................ 26
9.3.5 SNP Terminate Connection (0x46) ........................................................................... 27
![](asset-3.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 3 of 46
9.3.6 SNP Set GAP Parameter (0x48) .............................................................................. 27
9.3.7 SNP Get GAP Parameter (0x49) .............................................................................. 29
9.3.8 SNP Set Security Parameter (0x4A) ........................................................................ 29
9.3.9 SNP Send Security Request (0x4B) ......................................................................... 30
9.3.10 SNP Set Authentication Data (0x4C) ........................................................................ 30
9.3.11 SNP Set White List Filter Policy (0x4D) .................................................................... 30
9.4 GAP SUBGROUP EVENTS ................................................................................................... 30
9.4.1 SNP Set Advertisement Data Response (0x43) ....................................................... 30
9.4.2 SNP Update Connection Parameter Response (0x45) ............................................ 31
9.4.3 SNP Set Parameter Update Response (0x48) ......................................................... 31
9.4.4 SNP Get Parameter Update Response (0x49)......................................................... 31
9.4.5 SNP Set Security Parameter Response (0x4A) ....................................................... 32
9.4.6 SNP Send Authentication Data Response (0x4C) ................................................... 32
9.4.7 SNP Set White List Filter Policy Response (0x4D) .................................................. 32
9.5 GATT SUBGROUP COMMANDS ........................................................................................... 32
9.5.1 SNP Add Service (0x81) ........................................................................................... 32
9.5.2 SNP Add Characteristic Value Declaration (0x82) ................................................... 33
9.5.3 SNP Add Characteristic Descriptor Declaration (0x83) ............................................ 34
9.5.4 SNP Register Service (0x84) .................................................................................... 36
9.5.5 SNP Get Attribute Value (0x85) ................................................................................ 36
9.5.6 SNP Set Attribute Value (0x86) ................................................................................ 36
9.5.7 SNP Characteristic Read Confirmation (0x87) ......................................................... 37
9.5.8 SNP Characteristic Write Confirmation (0x88) ......................................................... 37
9.5.9 SNP Send Notification Indication (0x89) .................................................................. 38
9.5.10 SNP CCCD Updated Confirmation (0x8B) ............................................................... 39
9.5.11 SNP Set GATT Parameter (0x8C) ............................................................................ 39
9.5.12 SNP Get GATT Parameter (0x8D) ........................................................................... 40
9.6 GATT SUBGROUP EVENTS ................................................................................................. 41
9.6.1 SNP Add Service Response (0x81) ......................................................................... 41
9.6.2 SNP Add Characteristic Value Declaration Response (0x82) .................................. 41
9.6.3 SNP Add Characteristic Descriptor Declaration Response (0x83)........................... 41
9.6.4 SNP Register Service Response (0x84) .................................................................. 42
9.6.5 SNP Get Attribute Value Response (0x85) .............................................................. 42
9.6.6 SNP Set Attribute Value Response (0x86) ............................................................... 43
9.6.7 SNP Characteristic Read Indication (0x87) .............................................................. 43
9.6.8 SNP Characteristic Write Indication (0x88) .............................................................. 44
9.6.9 SNP Send Notification Indication Response (0x89) ................................................. 45
9.6.10 SNP CCCD Updated Indication (0x8B) .................................................................... 45
9.6.11 SNP Set GATT Parameter Response (0x8C) .......................................................... 46
9.6.12 SNP Get GATT Parameter Response (0x8D) .......................................................... 46
![](asset-4.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 4 of 46
TABLE OF FIGURES
Figure 1: BLE Stack AP / NP separation .......................................................................................... 7
Figure 2: Initial Attribute Table ......................................................................................................... 9
Figure 3: IAR Project Configurations ................................................................................................ 9
Figure 4: CCS Project Configurations. ............................................................................................. 9
TABLE OF TABLES
Table 1: Definitions ........................................................................................................................ 6
Table 2: Unified NPI frame ............................................................................................................. 10
Table 3: Unified NPI Message Types ............................................................................................. 10
Table 4: BLE Subsystem CMD1 Subgroup Header ....................................................................... 11
Table 5: Example Unified NPI frame .............................................................................................. 11
Table 6: MRDY/SRDY Default pins ................................................................................................ 11
Table 7: SNP API Summary Table ................................................................................................. 15
Table 8 : SNP Error Codes ............................................................................................................. 15
Table 9: SNP Event Values ............................................................................................................ 16
Table 10: Supported HCI Commands ............................................................................................ 17
![](asset-5.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 5 of 46
[1] Specification of the Bluetooth System, Core Version 4.2.
https://developer.bluetooth.org/TechnologyOverview/Pages/core-specification.aspx
[2] HCI Vendor Specific Guide
Can be found under the Documents folder of the TI BLE stack install location.
(Defaults to C:\ti\simplelink\ble_sdk_2_02_xx_xxxx)
[3] Software Developer’s Guide
Can be found under the Documents folder of the TI BLE stack install location.
[4] Device Info Service
https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=238689
[5] Generic Access Service
https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.ge
neric_access.xml
[6] Generic Attribute Service
https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.ge
neric_attribute.xml
[7] Wiki Page
http://www.ti.com/ble-wiki
[8] TI BLE Stack
http://www.ti.com/blestack
[9] SimpleAP + SNP Wiki Page
http://processors.wiki.ti.com/index.php/SimpleAP%2BSNP
[10] BLE Network Processor Wiki Page
http://processors.wiki.ti.com/index.php/CC2640_BLE_Network_Processor
[11] Unified NPI Wiki Page
http://processors.wiki.ti.com/index.php/Unified_Network_Processor_Interface
Date
(YMD)
Document
version
Description of changes
2015-08-25
V1.0
Initial revision
2016-01-15
V1.1
Include API errata, improve formatting
2016-04-04
V1.2
Updates for new SDK, including SAP
2016-10-21
V1.3
Updates for new SDK, additional clarifications
Numerical Notation Conventions
Multiple-octets may be specified in hexadecimal notation in one of two ways:
Standard Hexadecimal Notation
In this notation, a single hexadecimal radix indicator “0x” precedes the entire value. The octet order as
read from left to right is from most significant octet to least significant octet. For example, for the value
0x123456ABCDEF, ‘12’ is the most significant octet and ‘EF’ is the least significant octet.
1. References
2. Revision History
3. Document Specifics
![](asset-6.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 6 of 46
Colon Separated Hexadecimal Notation
In this notation, the hexadecimal radix indicator “0x” is not used and octets are colon separated. The
octet order as read from left to right is from least significant octet to most significant octet. For example,
for the value 12:34:56:AB:CD:EF, ‘12’ is the least significant octet and ‘EF’ is the most significant octet.
Hyperlinks
All underlined Section headings can be clicked on to jump to the relevant section.
Definitions
AP
Application Processor
SAP
Simple Application Processor
ATT
Attribute Protocol
BLE
Bluetooth Low Energy
BT
Bluetooth
CCCD
Client Characteristic Configuration Descriptor
GAP
Generic Access Profile
GATT
Generic Attribute Profile
HCI
Host Controller Interface
IDE
Integrated Development Environment
L2CAP
Logical Link Control and Adaptation Protocol
LE
Low Energy
LL
Link Layer
MTU
Maximum Transmission Unit
OTA
Over The Air
NPI
Network Processor Interface
NV
Non-Volatile
RFU
Reserved for Future Use
SDG
CC2640 BLE Software Developer’s Guide [3]
SNP
Simple Network Processor
TI
Texas Instruments
RTOS
Real Time Operating System
Table 1: Definitions
The purpose of this document is to describe the SNP API and interface. It will also include a functional
overview of the SNP, and a description of the NPI layer.
TI also provides an application processor reference design called the Simple Application Processor
(SAP). The SAP implementation is out of the scope of this document. For a SAP + SNP demo see the
SimpleAP + SNP Wiki Page [9]. For more information about network processor implementations on the
TI BLE Stack, please see our BLE Network Processor Wiki page [10].
It is assumed that the reader has knowledge in both BLE and the TI SDK. Therefore, it is
recommended to have read the TI SDG [3] and be familiar with the BT specification [1] before using the
SNP. Many topics covered here are further expounded upon by the SDG[3].
4. Purpose
![](asset-7.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 7 of 46
This section will provide an architectural overview of the SNP
5.1 Architecture Overview
The SNP is a dual-device solution that requires an external MCU application processor (AP) to control
the CC2650 simple network processor. The SNP was designed to simplify the complexity of the AP
application by:
Implementing as much BLE functionality as possible on the SNP, therefore simplifying what the
AP needs to do.
Using a simple interface between the AP and the SNP.
Almost the entire BLE stack is implemented on the SNP. This can be seen in Figure 1 below.
Figure 1: BLE Stack AP / NP separation
As indicated above and described throughout this document, the AP (external MCU) is responsible for
the initial configuration of the GAP and GATT services. It will also be notified of asynchronous events
relating to these services such as connection establishments, attribute value updates, etc. Using the
API provided here, the AP can then proceed accordingly after receiving these events.
5. SNP Functional Overview
![](asset-8.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 8 of 46
The general procedure is:
1. Initialize GATT (add services, characteristics, CCCD’s, etc.). See Section 9.5.
2. Initialize GAP (advertisement data, connection parameters, etc.). See Section 9.3.
3. Advertise and optionally wait for a connection. See Section 9.3.8.
4. Respond to GATT requests and send notifications / indications as desired. See Section 9.6.
As shown in Figure 1, TI-RTOS compatible processors can use the SAP library to further simplify
application processor development. The SAP library is out of the scope of this document, more
information can be found at the SimpleAP + SNP Wiki Page [9].
5.2 Default GATT Services
In order to comply with the BT spec and communicate with central devices such as mobile phones,
there are two services which must be included in any BLE device:
Generic Access Service [5]
Device Information [4]
Therefore, these services are included by default in the SNP and are managed by the GATT server on
the SNP. It is possible for the AP to modify and interact with these services via the commands and
events described in the GATT Subgroup Commands and GATT Subgroup Events sections below.
The figure below depicts how these services are initialized by default in the SNP including what handle
each attribute resides at. The Generic Access Service is assigned the value 0x1800 and the Device
Information Service is assigned 0x180A.
![](asset-9.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 9 of 46
Figure 2: Initial Attribute Table
Any custom services and characteristics that the AP adds to the attribute table will always be added
after these initial two services. Any other services that are added by the AP at run-time are managed by
the AP. That is, the AP will manage the characteristic value: it will be notified when a read / write of the
characteristic occur and can respond (or not) respond with the value as it chooses.
5.3 Limitations
The SNP will be configured by default to act only as a peripheral and/or broadcaster device. This
cannot be modified. This implies that the device can only advertise and accept/reject connection. It
cannot discover devices or initiate a connection. Also, the SNP will only be configured as a GATT
server; it cannot be a GATT client. The standard use case is for the SNP (peripheral GATT server) to
connect to a central GATT client such as a smartphone.
Furthermore, while additional features will be added for future releases, the following limitations
currently exist:
There is no NV storage available to the application.
No direct advertisements.
The maximum ATT_MTU_SIZE is 251 bytes
ATT read multiple requests are not supported
The SNP does not have the Generic Attribute service [6] defined in the embedded project. If
this is needed, it should be added and managed manually by the AP. The SDG [3] contains
instructions on adding the GATT service to your app/
L2CAP is not enabled. Therefore, connection-oriented-channel data transfer is not possible.
Only the Bluetooth 4.0 controller options are used: the Bluetooth 4.1 options are disabled.
Bluetooth 4.2 Host and Controller options are limited to Secure Connections.
User description attributes are read-only. They cannot be updated remotely by the GATT client.
Advertisements are always performed on all 3 advertisement channels.
The advertiser’s address type is always static (no private or public address).
Advertising filter policies have not been implemented.
Since only one simultaneous connection is supported, all advertising during a connection will
be non-connectable.
In order to change the type of an ongoing advertisement, it must be stopped first.
Services and characteristics are not stored in flash after they have been added. Therefore, they
will need to be re-initialized upon reset.
Authenticated notifications and indications are not supported.
The SNP project is available at: <INSTALL>\examples\<DEV_BRD >\simple_np where <INSTALL> is
the install location of the TI BLE stack [8], and <DEV_BRD> is the evaluation platform you wish to build
for (LaunchPad, EM, BoosterPack, etc). This directory has both an IAR and a CCS project. The SNP
can be configured to support one of two serial interfaces: SPI and UART. The interface can be
selected by choosing the relevant project configuration in the IDE.
Figure 3: IAR Project
Configurations
Figure 4: CCS Project Configurations.
6. Compiling the SNP
![](asset-a.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 10 of 46
Furthermore, power management can be enabled / disabled by including / excluding the
POWER_SAVING preprocessor definition. This option will be described in more detail in the Unified
Network Processor Interface section.
This section will describe TI’s Unified Network Processor Interface (NPI). NPI implements the serial link
between the application and network processor. NPI supports UART or SPI. The Unified NPI Wiki
Page[11] contains a full description of the protocol and it’s inner workings, it is highly recommended that
the user read this page. Only NPI details specific to the NPI BLE Subsystem are covered here.
7.1 BLE SNP Subsystem
Unified NPI supports automatically routing messages from the serial port to various software
subsystems within the device. This allows the application and network processor to easily exchange
different types of messages on the same serial bus without collision. Examples of subsystems include a
peripheral subsystem and a debug system. The SNP has its own subsystem. All commands and APIs
described in this document use the BLE SNP subsystem. A message’s subsystem is set through its
CMD0 field (described below).
The Unified NPI frame format is explained in detail at the Unified NPI Wiki Page, but is copied here for
simplicity in explaining the BLE SNP Subsystem.
SOF
Length
Cmd0
Cmd1
Data Payload
FCS
1 Byte (0xFE)
2 bytes
1 byte:
bits 5-7: type,
bits 0-4: subsystem
1 Byte
0-4096 bytes
1 Byte
Table 2: Unified NPI frame
SOF: start of Frame (1 byte). This byte must be 0xFE to indicate a start of frame.
Length: length of the data payload field (2 bytes). This length does not consider any other fields
besides the data payload field. The largest acceptable length is 4095. This field is little endian
Cmd0: One byte split in 2 fields:
Type (bits 5-7): type of message
Type
Description
0x1
Synchronous Request
0x2
Asynchronous Request
0x3
Synchronous Response
Table 3: Unified NPI Message Types
Subsystem (bits 0-4): The BLE SNP subsystem uses code 0x15 for all messages
More information about the type and subsystems can be found here
http://processors.wiki.ti.com/index.php/NPI_Type_SubSystem
Cmd1: opcode of the command / event (1 byte).
Header(bits 6-7): Describes the BLE stack API group
Opcode Subgroup
Description
0
SNP Device Subgroup
1
SNP GAP Subgroup
2
SNP GATT Subgroup
7. Unified Network Processor Interface
![](asset-b.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 11 of 46
3
Reserved Subgroup
Table 4: BLE Subsystem CMD1 Subgroup Header
Payload: the parameters of the command / event.
FCS: frame check sequence, calculated by an exclusive OR on all fields except SOF.
7.2 Example SNP BLE Subsystem NPI Frame
The following table shows an example of the SNP Add Service (0x81) command to send to SNP, with
service type of primary service (0x01) and UUID 0xFFF0.
The SNP frame will be the following:
SOF
Length
Cmd0
Cmd1
Payload
FCS
0xFE
0x03 0x00
0x35
0x81
0x01 0xF0 0xFF
0xB9
Table 5: Example Unified NPI frame
Note that all multi byte fields need to be in little endian format (except for variable length data payload
field where they are read in the order they arrive on the bus.)
7.3 Setting MRDY/SRDY Pins
As described on the Unified NPI Wiki Page[11], MRDY and SRDY are configurable GPIO pins. They
can be changed and set by the application. The SNP task (simple_np.c) sets these pins based on
defines in the device’s board file. The table below shows the defaults for the projects within the SDK.
See the Unified NPI wiki page for an example of how to change these pins.
PIN
Smart RF 06 Pins
LaunchPad Pins
BoosterPack Pins
MRDY
P403.12
DIO19
DIO4
SRDY
P403.16
DIO12
DIO2
Table 6: MRDY/SRDY Default pins
This section will list all of the commands that can be sent to and the events that can be received from
the SNP. See the Table of Contents for links to each command / event. Note that the CMD0 field is
filled out already using the BLE subsystem (0x15) and the appropriate message type. For payload
information, see the detailed API description. For a length field of N, this means that the payload is
variable; see detailed API description in SNP API.
8.1 API Table
Command/Event
Len
gth
CMD0
CM
D1
Device Subgroup
SNP Power Up (0x01)
0
0x55
(Async)
0x0
1
SNP Mask Event (0x02)
2
0x35
(Sync
Req)
0x0
2
SNP Mask Event Response (0x02)
2
0x75
(Sync
Resp)
0x0
2
SNP Get Revision (0x03)
0
0x35
(Sync
0x0
8. SNP API Summary
![](asset-c.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 12 of 46
Req)
3
SNP Get Revision Response (0x03)
13
0x75
(Sync
Resp)
0x0
3
SNP Encapsulated HCI Command (0x04)
N
0x55
(Async)
0x0
4
SNP HCI Command Response (0x04)
N
0x55
(Async)
0x0
4
SNP Event Indication (0x05)
N
0x55
(Async)
0x0
5
SNP Get Status (0x06)
0
0x55
(Async)
0x0
6
SNP Get Status Response (0x06)
4
0x55
(Async)
0x0
6
SNP Invalid Synchronous Command Indication (0x07)
0
0x75
(Sync
Resp)
0x0
7
SNP Get Rand (0x08)
0
0x35
(Sync
Req)
0x0
8
SNP Get Rand Response (0x08)
4
0x75
(Sync
Resp)
0x0
8
8.1.1 SNP Get Rand (0x08)
The SNP Test command is used to access the true random number
generator on the SNP and return it to the AP.
Command Parameters
This command does not take any parameters.
Event(s) Generated
In response to this command, the SNP will return the SNP Get Rand
Response (0x08) event.
SNP Test (0x10)
0
0x35
(Async
Req)
0x1
0
8.1.2 SNP Get Rand Response (0x08)
The SNP Get Rand Response event is sent from the SNP in response to the
SNP Get Rand (0x08) command. It is meant for allowing the AP access to
the SNP’s true random number generator.
Event Parameters
Rand(4 bytes)
Value
Parameter Description
0xXXXXXXXX
Random number returned by Util_GetTRNG() on SNP
SNP Test Response (0x10)
6
0x75
(Async
Resp)
0x1
0
GAP Subgroup
SNP Start Advertisement (0x42)
14
0x55
0x4
![](asset-d.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 13 of 46
(Async)
2
SNP Set Advertisement Data (0x43)
N
0x55(As
ync)
0x4
3
SNP Set Advertisement Data Response (0x43)
1
0x55
(Async)
0x4
3
SNP Stop Advertisement (0x44)
0
0x55
(Async)
0x4
4
SNP Update Connection Parameters (0x45)
10
0x55
(Async)
0x4
5
SNP Update Connection Parameter Response (0x45)
3
0x55
(Async)
0x4
5
SNP Terminate Connection (0x46)
3
0x55
(Async)
0x4
6
SNP Set GAP Parameter (0x48)
4
0x35
(Sync
Req)
0x4
8
SNP Set Parameter Update Response (0x48)
1
0x75
(Sync
Resp)
0x4
8
SNP Get GAP Parameter (0x49)
4
0x35
(Sync
Req)
0x4
9
SNP Get Parameter Update Response (0x49)
5
0x75
(Sync
Resp)
0x4
9
SNP Set Security Parameter (0x4A)
2
0x35
(Sync
Req)
0x4
A
SNP Set Security Parameter Response (0x4A)
1
0x75
(Sync
Resp)
0x4
A
SNP Send Security Request (0x4B)
0
0x55
(Async)
0x4
B
SNP Set Authentication Data (0x4C)
4
0x35
(Sync
Req)
0x4
C
SNP Send Authentication Data Response (0x4C)
1
0x75
(Sync
Resp)
0x4
C
SNP Set White List Filter Policy (0x4D)
1
0x35
(Sync
Req)
0x4
D
SNP Set White List Filter Policy Response (0x4D)
1
0x75
(Sync
Resp)
0x4
D
GATT Subgroup
![](asset-e.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 14 of 46
SNP Add Service (0x81)
N
0x35
(Sync
Req)
0x8
1
SNP Add Service Response (0x81)
1
0x75
(Sync
Resp)
0x8
1
SNP Add Characteristic Value Declaration (0x82)
N
0x35
(Sync
Req)
0x8
2
SNP Add Characteristic Value Declaration Response (0x82)
3
0x75
(Sync
Resp)
0x8
2
SNP Add Characteristic Descriptor Declaration (0x83)
N
0x35
(Sync
Req)
0x8
3
SNP Add Characteristic Descriptor Declaration Response (0x83)
N
0x75
(Sync
Resp)
0x8
3
SNP Register Service (0x84)
0
0x35
(Sync
Req)
0x8
4
SNP Register Service Response (0x84)
5
0x75
(Sync
Resp)
0x8
4
SNP Get Attribute Value (0x85)
2
0x35
(Sync
Req)
0x8
5
SNP Get Attribute Value Response (0x85)
N
0x75
(Sync
Resp)
0x8
5
SNP Set Attribute Value (0x86)
2
0x35
(Sync
Req)
0x8
6
SNP Set Attribute Value Response (0x86)
3
0x75
(Sync
Resp)
0x8
6
SNP Characteristic Read Confirmation (0x87)
N
0x55
(Async)
0x8
7
SNP Characteristic Write Confirmation (0x88)
N
0x55
(Async)
0x8
8
SNP Send Notification Indication (0x89)
N
0x55
(Async)
0x8
9
SNP Send Notification Indication Response (0x89)
3
0x55
(Async)
0x8
9
SNP CCCD Updated Indication (0x8B)
N
0x55
(Async)
0x8
B
SNP Set GATT Parameter (0x8C)
N
0x35
0x8
![](asset-f.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 15 of 46
(Sync
Req)
C
SNP Set GATT Parameter Response (0x8C)
N
0x75
(Sync
Resp)
0x8
C
SNP Get GATT Parameter (0x8D)
N
0x35
(Sync
Req)
0x8
D
SNP Get GATT Parameter Response (0x8D)
N
0x75
(Sync
Resp)
0x8
D
Table 7: SNP API Summary Table
8.2 SNP Error Codes
Error Code
Error
0x83
SNP Failure
0x84
SNP Invalid Parameters
0x85
Command Already in Progress
0x86
Command Rejected
0x87
Out of Resources
0x88
Unknown Attribute
0x89
Unknown Service
0x8A
Already Advertising
0x8B
Not Advertising
0x8C
HCI Response Collision
0x8D
HCI Unknown Command
0x8E
GATT Collision
0x8F
Notification / Indication not Enabled by Client
0x90
Notification / Indication not Allowed
0x91
Notification / Indication does not have a CCCD Attribute
0x92
Not Connected
Table 8 : SNP Error Codes
8.3 Handling UUIDs
UUIDs can either be 2 or 16 bytes long. Each service and characteristic has a UUID. UUIDs are always
sent least significant byte first over the Unified NPI transport layer. (UUIDs are little endian)
9. SNP API
![](asset-10.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 16 of 46
9.1 Device Subgroup Commands
9.1.1 SNP Mask Event (0x02)
The SNP Mask Event command enables the AP to mask some events returned from the SNP if they
are not needed by the AP. By default, all events are enabled and will be returned to the AP. Masking
events may be useful in order to limit the possible wake up conditions of the AP, thus reducing power
consumption.
All of the events that can be masked by this command are triggered asynchronously due to an action
from the AP, an action of the remote peer, or timer expiration.
See the SNP Event Indication (0x05) event for a description of the possible events.
Command Parameters
Event Mask: (2 bytes)
Value
Parameter Description
0x0001
SNP connection establishment event
0x0002
SNP connection termination event
0x0004
SNP connection parameters updated event
0x0008
SNP advertising started event
0x0010
SNP advertising ended event
0x0020
SNP ATT MTU event
0x8000
SNP error event
Table 9: SNP Event Values
Event(s) Generated
In response to this command, the SNP will return the SNP Mask Event Response (0x02) event.
9.1.2 SNP Get Revision (0x03)
The SNP Get Revision command is used to get the current revision of the SNP API as well as the full
stack revision number as defined in the HCI vendor guide.
Command Parameters
This command does not take any parameters.
Event(s) Generated
In response to this command, the SNP will return the SNP Get Revision Response (0x03) event.
9.1.3 SNP Encapsulated HCI Command (0x04)
The SNP Encapsulated HCI Command is used to encapsulate and send an HCI command to the SNP.
Only the HCI commands listed in the parameter section below are supported. The functionality of the
HCI extension commands can be found in the HCI Vendor Specific Guide [2]. The format of these
commands can also be found in the Vendor Specific guide. Note that some of these commands are
defined in the Bluetooth Spec [1].
Command Parameters
HCI Command Opcode: (2 bytes)
Value
Parameter Description
0xFC01
HCI_EXT_SetTxPowerCmd
0xFC08
HCI_EXT_ModemTestRxCmd
0xFC09
HCI_EXT_ModemHopTestTxCmd
![](asset-11.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 17 of 46
0xFC0A
HCI_EXT_ModemTestRxCmd
0xFC0B
HCI_EXT_EndModemTestCmd
0xFC0C
HCI_EXT_SetBDADDRCmd
0xFC0D
HCI_EXT_SetSCACmd
0xFC0E
HCI_EXT_EnablePTMCmd
0xFC11
HCI_EXT_SetMaxDtmTxPowerCmd
0xFC1D
HCI_EXT_ResetSystemCmd
0x1009
HCI_EXT_ReadBDADDRCmd
0x1405
HCI_ReadRssiCmd
0x201D
LE Receiver Test
0x201E
LE Transmitter Test
0x201F
LE Test End
0xFC14
HCI_EXT_PacketErrorRateCmd
0xFC05
HCI_EXT_DecryptCmd
0x2017
LE Encrypt
0xFC1A
HCI_EXT_SetSlaveLatencyOverrideCmd
0xFC07
HCI_EXT_SetFastTxResponseTimeCmd
0xFC02
HCI_EXT_OnePacketPerEventCmd
0xFC20
HCI_EXT_GetConnInfoCmd
Table 10: Supported HCI Commands
HCI Command Parameters: (n bytes)
Value
Parameter Description
0xXXXX….XXXX
The HCI Commands themselves may have parameters. These
parameters are defined in the HCI Vendor Specific Guide and the
same parameters are used here.
Event(s) Generated
In response to this command, the SNP will return an SNP HCI Command Response (0x04) event.
9.1.4 SNP Get Status (0x06)
The SNP Get Status command is used to get the current status of the SNP. See the SNP Get Status
Response (0x06) event for a description of the possible statuses returned.
Command Parameters
This command does not take any parameters.
Event(s) Generated
In response to this command, the SNP will return the SNP Get Status Response (0x06) event.
9.1.5 SNP Get Rand (0x08)
The SNP Test command is used to access the true random number generator on the SNP and return it
to the AP.
Command Parameters
This command does not take any parameters.
Event(s) Generated
![](asset-12.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 18 of 46
In response to this command, the SNP will return the SNP Get Rand Response (0x08) event.
9.1.6 SNP Test (0x10)
The SNP Test command is used to profile the heap usage of the SNP.
Command Parameters
This command does not take any parameters.
Event(s) Generated
In response to this command, the SNP will return the SNP Get Rand Response (0x08)
The SNP Get Rand Response event is sent from the SNP in response to the SNP Get Rand (0x08)
command. It is meant for allowing the AP access to the SNP’s true random number generator.
Event Parameters
Rand(4 bytes)
Value
Parameter Description
0xXXXXXXXX
Random number returned by Util_GetTRNG() on SNP
SNP Test Response (0x10) event.
9.2 Device Subgroup Events
9.2.1 SNP Power Up (0x01)
The SNP Power Up event is sent from the SNP once the device has powered up and upon reset. Upon
reception of this event, the AP should assume that the SNP has lost all previous configuration
information.
When this event is received, the SNP is initialized and running.
Event Parameters
This event does not have any parameters.
9.2.2 SNP Mask Event Response (0x02)
The SNP will return the SNP Mask Event Response event to the AP after it has performed the SNP
Mask Event (0x02) command. The event mask passed as a parameter in this event should be checked
to verify the desired events were masked correctly.
Event Parameters
Masked Events (2 bytes):
Value
Parameter Description
0xXXXX
Events that have been masked. See SNP Error Codes
9.2.3 SNP Get Revision Response (0x03)
The SNP will return the SNP Get Revision Response event to the AP after it has performed the SNP
Get Revision (0x03) command. The parameters defined below will describe the specific revision of the
SNP.
Event Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
SNP Version (2 bytes)
![](asset-13.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 19 of 46
Value
Parameter Description
0xXX
Version of the SNP (major, minor)
Stack Build Version (10 bytes)
Value
Parameter Description
0xXXXX….XXXX
Stack Revision. See the HCI Vendor Specific Guide for more info.
9.2.4 SNP HCI Command Response (0x04)
The SNP will return the SNP HCI Command Response event to the AP after it has performed the
command specified by the preceding SNP Encapsulated HCI Command (0x04). The status parameter
of this event should be checked to verify that the HCI command was performed successfully.
Event Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
Opcode (2 bytes)
Value
Parameter Description
0xXXXX
HCI opcode that this event corresponds to
HCI Response (n bytes)
Value
Parameter Description
0xXXXX….XXXX
The relevant HCI event. This will match the event described in the
HCI Vendor Specific Guide [2], including any parameters that are
part of the event. The only difference is that the event opcode is
not part of the event. Instead, the Opcode parameter described
above can be used to see what command this event corresponds
to.
9.2.5 SNP Event Indication (0x05)
The SNP Event Indication event is sent by the SNP to forward an asynchronous event to the AP. Note
these events can be optionally masked by using the SNP Mask Event (0x02) command if they are not
needed by the AP. Only one event will be indicated at a time per SNP Event Indication event. If several
events occur simultaneously, they will each be encapsulated in their own event.
Note that each SNP Event Indication event will have, at minimum, the event type parameter. The
proceeding parameters will depend on what the event type is. See the parameter section below. For
example, the connection establishment event will only have the parameters described under “SNP
Connection Establishment Parameters.”
General Event Parameters
Event Type: (2 bytes)
Value
Parameter Description
0x0001
Connection establishment event
0x0002
Connection termination event
0x0004
Connection parameters updated event
0x0008
Advertising started event
0x0010
Advertising ended event
![](asset-14.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 20 of 46
0x0020
ATT MTU event
0x0040
Security event
0x0080
Authentication event
0x8000
Error event
SNP Connection Establishment Parameters
Connection Handle (2 byte)
Value
Parameter Description
0xXXXX
An index used to refer to a connection so that multiple connections
can be differentiated between.
Connection Interval (2 bytes)
Value
Parameter Description
0xXXXX
Connection Interval used upon connection establishment
Slave Latency (2 bytes)
Value
Parameter Description
0xXXXX
Slave Latency used upon connection establishment
Supervision Timeout (2 bytes)
Value
Parameter Description
0xXXXX
Supervision timeout used upon connection establishment.
Address Type (1 byte): address type of initiator
Value
Parameter Description
0x00
Public Address.
0x01
Static Address
0x02
Private Non-resolvable Address
0x03
Private Resolvable Address
Initiator Address (6 bytes)
Value
Parameter Description
0xXXXXXXXXXXXX
Address of the device which initiated the connection.
SNP Connection Termination Parameters
Connection Handle (2 byte)
Value
Parameter Description
0xXXXX
Handle of the connection that was terminated.
Reason (1 byte): reason that the connection was terminated
Value
Parameter Description
0x08
Supervision timeout
0x13
Peer Requested
0x16
Host Requested
0x22
Control Packet Timeout
0x28
Control Packet Instance Passed
0x3B
LSTO Violation
![](asset-15.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 21 of 46
0x3D
MIC Failure
SNP Connection Parameters Updated Parameters
Connection Handle (2 byte)
Value
Parameter Description
0xXXXX
Handle of connection which was updated.
Connection Interval (2 bytes)
Value
Parameter Description
0xXXXX
Updated connection interval
Slave Latency (2 bytes)
Value
Parameter Description
0xXXXX
Updated slave latency
Supervision Timeout (2 bytes)
Value
Parameter Description
0xXXXX
Updated supervision timeout.
SNP Advertising Started Parameters
Status (1 byte)
Value
Parameter Description
0x00
Advertising Successfully Started
0xXX
See SNP Error Codes
SNP Advertising Ended Parameters
Status (1 byte)
Value
Parameter Description
0x00
Advertising Stopped Successfully
0xXX
See SNP Error Codes
SNP ATT MTU Parameters
Connection Handle (2 byte)
Value
Parameter Description
0xXXXX
Handle of the connection where the MTU size was updated.
MTU Size (2 bytes)
Value
Parameter Description
0xXXXX
New ATT MTU size negotiated between GATT client and server
SNP Security Parameters
Security State (1 byte)
Value
Parameter Description
0xXX
New Security state: Paired, Bonds saved, or Bonded.
Status (1 byte)
Value
Parameter Description
0xXX
Status upon entering state: Success or reason of failure.
SNP Authentication Parameters
User Interface Output (1 byte)
![](asset-16.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 22 of 46
Value
Parameter Description
0xXX
True if application must output authentication data
User Interface Input(1 byte)
Value
Parameter Description
0xXX
True if application must input authentication data
Numeric Comparison (4 bytes)
Value
Parameter Description
0xXXXXXXXX
Numeric comparison value. 0 if not used.
SNP Error Event Parameters
Error (1 byte): error that occurred
Value
Parameter Description
0xXX
See SNP Error Codes
Additional Notes
It is important to keep track of the ATT_MTU_SIZE in order to manage fragmentation of GATT packets.
The default ATT_MTU size is set to 23 bytes. This implies that, by default, there is no fragmentation at
the HCI layer. A GATT client can request an ATT_MTU_EXCHANGE method to change the maximum
possible ATT MTU size. The SNP is configured to manage ATT MTU size up to 251 bytes. If this
update occurs, the corresponding event will be send by the SNP. If this event is never received, the AP
should assume that ATT MTU size is 23.
9.2.6 SNP Get Status Response (0x06)
The SNP Get Status Response event is sent from the SNP in response to the SNP Get Status (0x06)
command. It returns the following sets of statuses:
Event Parameters
GAPRole Status (1 byte)
Value
Parameter Description
0x00
Waiting to be started
0x01
Started but not advertising
0x02
Advertising using connectable advertising
0x03
Advertising using non-connectable advertising
0x04
In waiting period before advertising again
0x05
Just timed out from a connection and is in waiting period before
advertising again
0x06
Connected
0x07
Connected and Advertising
0x08
Error Occurred
Advertising Status (1 byte)
Value
Parameter Description
0x00
Advertising Disabled
0x01
Advertising Enabled
ATT Status (1 byte)
![](asset-17.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 23 of 46
Value
Parameter Description
0x00
No ATT operation ongoing
0x01
Ongoing ATT operation
ATT method (1 byte): current ATT operation in progress
Value
Parameter Description
0x01
ATT Error Response
0x02
ATT Exchange MTU Request
0x03
ATT Exchange MTU Response
0x04
ATT Find Information Request
0x05
ATT Find Information Response
0x06
ATT Find By Type Value Request
0x07
ATT Find By Type Value Response
0x08
ATT Read By Type Request
0x09
ATT Read By Type Response
0x0A
ATT Read Request
0x0B
ATT Read Response
0x0C
ATT Read Blob Request
0x0D
ATT Read Blob Response
0x0E
ATT Read Multiple Request
0x0F
ATT Read Multiple Response
0x10
ATT Read By Group Type Request
0x11
ATT Read By Group Type Response
0x12
ATT Write Request
0x13
ATT Write Response
0x16
ATT Prepare Write Request
0x17
ATT Prepare Write Response
0x18
ATT Execute Write Request
0x19
ATT Execute Write Response
0x1B
ATT Handle Value Notification
0x1D
ATT Handle Value Indication
0x1E
ATT Handle Value Confirmation
0x52
ATT Write Command
0xD2
ATT Signed Write Command
9.2.7 SNP Invalid Synchronous Command Indication (0x07)
The SNP Invalid Synchronous Command Indication event will be sent from the SNP in order to allow
the AP to recover if an unknown synchronous packet is sent from the AP. This is necessary because an
unknown command sent as a synchronous packet will prevent any other commands from being sent.
After this event is received, another asynchronous error event will be sent as SNP Event Indication
(0x05) event (of SNP Error Event type) with the opcode of the offending command as a parameter.
![](asset-18.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 24 of 46
Event Parameters
This event has no parameters.
9.2.8 SNP Get Rand Response (0x08)
The SNP Get Rand Response event is sent from the SNP in response to the SNP Get Rand (0x08)
command. It is meant for allowing the AP access to the SNP’s true random number generator.
Event Parameters
Rand(4 bytes)
Value
Parameter Description
0xXXXXXXXX
Random number returned by Util_GetTRNG() on SNP
9.2.9 SNP Test Response (0x10)
The SNP Test Response event is sent from the SNP in response to the SNP Get Rand (0x08)
The SNP Test command is used to access the true random number generator on the SNP and return it
to the AP.
Command Parameters
This command does not take any parameters.
Event(s) Generated
In response to this command, the SNP will return the SNP Get Rand Response (0x08) event.
SNP Test (0x10) command. It is meant for profiling the heap.
Event Parameters
Mem Allocated (2 bytes)
Value
Parameter Description
0xXXXX
Heap memory that is allocated when this event was sent (in bytes).
Mem Max (2 bytes)
Value
Parameter Description
0xXXXX
High water mark of heap: maximum heap used (in bytes).
Mem Size (2 bytes)
Value
Parameter Description
0xXXXX
Total size of the heap (in bytes).
9.3 GAP Subgroup Commands
9.3.1 SNP Start Advertisement (0x42)
The SNP Start Advertisement command is sent to the SNP to start advertising on all 3 channels. Note
that the SNP Set Advertisement Data (0x43) command should be called before this command in order
to set the advertising data.
Command Parameters
Advertisement Type: (1 byte)
Value
Parameter Description
0x00
Connectable Undirected Advertisements
0x02
Scannable Undirected Advertisement
0x03
Non-Connectable Undirected Advertisement
![](asset-19.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 25 of 46
Timeout (2 bytes)
Value
Parameter Description
0x0000
Advertise infinitely. See additional notes below.
0xXXXX
How long to advertise for (in ms)
Interval (2 bytes)
Value
Parameter Description
0xXXXX
Advertising Interval (n * 0.625 ms)
Filter Policy (1 byte)
Value
Parameter Description
0xXX
RFU
Initiator Address Type (1 byte)
Value
Parameter Description
0xXX
RFU
Initiator Address (6 bytes)
Value
Parameter Description
0xXXXXXXXXXXXX
RFU
Behavior (1 byte)
Value
Parameter Description
0x00
Advertising is disabled during connection and will not start after.
0x01
Advertising will continue with non-connectable advertising when
connection is established. See additional notes below.
0x02
Advertising will restart with connectable advertising when a
connection is terminated.
Additional Notes
If a timeout value equal to 0 is used, the SNP will advertise infinitely if it is in general advertisement
mode or for 180 seconds if it is in limited discovery mode. See the SNP Get GAP Parameter (0x49)
command for setting the advertising mode.
If an interval value equal to 0 is used, the default value of 100 ms will be used.
Since the SNP only supports one connection, advertisement in a connection can only be non-
connectable advertisement.
If the behavior parameter is set to 0x01, advertising will continue with non-connectable advertising
when a connection is established. The advertising interval in this case is set by the
TGAP_CONN_ADV_INT_MIN and TGAP_CONN_ADV_INT_MAX parameters. By default, those
parameters are set to 1280ms. They can be changed by using SNP Get GAP Parameter (0x49)
command.
Event(s) generated
An SNP Event Indication (0x05) event with type Advertising Started will be sent from the SNP.
9.3.2 SNP Set Advertisement Data (0x43)
The SNP Set Advertisement Data command is sent to the SNP to update the raw data of either the
scan response or the advertisement information.
There are 2 buffers for the advertisement data:
- A buffer for the non-connected state (device is not in a connection)
- A buffer for the connected state (device is in a connection)
![](asset-1a.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 26 of 46
When not in a connection, if advertisement is requested, the advertisement data stored in the non-
connected state buffer will be advertised.
When in a connection, if advertisement is requested, the advertisement data stored in the connected
state buffer will be advertised. If the connected state buffer has not been set, then the advertising data
of the non-connected mode will be used. This way, if the user does not care about differentiating
advertising data in connected mode and non- connected modes, the connected mode data buffer does
not have to be set.
Command Parameters
Advertisement Type (1 byte): which buffer to update.
Value
Parameter Description
0x00
Scan Response Data
0x01
Non-connectable Advertisement Data
0x02
Connectable Advertisement Data
Data (1-31 bytes)
Value
Parameter Description
0xXXXX…XXXXXXXXX
Advertisement / Scan Response Data.
Additional Notes
The maximum advertisement / scan response size is 31 Bytes.
If this command is not called, the following default advertisement data will be used:
0x02 (length of this field)
0x01 (advertising type flags)
0x06 (general discovery, no BREDR)
0x53 (‘S’)
0x4E (‘N’)
0x50 (‘P’)
Event(s) generated
The SNP Set Advertisement Data Response (0x43) event will be returned from the SNP.
9.3.3 SNP Stop Advertisement (0x44)
The SNP Stop Advertisement command is sent to the SNP to stop advertising.
Command Parameters
This command does not have any parameters.
Event(s) generated
An SNP Event Indication (0x05) event with type Advertising Ended will be sent from the SNP.
9.3.4 SNP Update Connection Parameters (0x45)
The SNP Update Connection Parameters command is sent to the SNP to update the connection
parameters while in a connection.
Command Parameters
Connection Handle (2 bytes)
Value
Parameter Description
0xXXXX
Connection Handle to update parameters
Minimum Interval (2 bytes)
Value
Parameter Description
![](asset-1b.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 27 of 46
0xXXXX
Minimum desired connection interval
Maximum Interval (2 bytes)
Value
Parameter Description
0xXXXX
Maximum desired connection interval
Slave Latency (2 bytes)
Value
Parameter Description
0xXXXX
Desired slave latency
Supervision Timeout (2 bytes)
Value
Parameter Description
0xXXXX
Desired supervision timeout
Event(s) generated
The SNP Set Parameter Update Response (0x48) event will be returned from the SNP.
9.3.5 SNP Terminate Connection (0x46)
The SNP Terminate Connection command is sent to the SNP to terminate an ongoing connection.
Command Parameters
Connection Handle (2 bytes)
Value
Parameter Description
0xXXXX
Connection Handle to terminate connection.
0xFFFE
Terminate ongoing connection request.
0xFFFF
Terminate all connections.
Option (1 byte): type of disconnection wanted
Value
Parameter Description
0x00
Default: gracefully disconnect by sending a termination over-the-air.
0x01
Terminate immediately: abruptly end the connection by not sending any more RF
packets. The other side of the connection will experience a time out.
Event(s) generated
An SNP Event Indication (0x05)event with type Connection Termination will be sent from the SNP.
9.3.6 SNP Set GAP Parameter (0x48)
The SNP Set GAP Parameter command is sent to the SNP to modify the value of a GAP
parameter. The parameters are listed here. See section 12.17 of the HCI Vendor Specific
guide [2] or the GAP API in the SDG [3] for more information on each parameter.
Command Parameters
Parameter ID (2 bytes): which parameter to update
Value
Parameter Description
0x0001
Time (ms) to remain advertising in General Discovery mode. Setting this to 0
turns off this timeout, thus advertising infinitely. Default is 0 (continue indefinitely)
0x0002
Time (sec) to remain advertising in Limited Discovery mode. Default is 180
seconds.
0x0003
Time (ms) to perform scanning for General Discovery.
![](asset-1c.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 28 of 46
0x0004
Time (ms) to perform scanning for Limited Discovery.
0x0005
Advertising timeout (ms) when performing Connection Establishment.
0x0006
Timeout (ms) for link layer to wait to receive connection parameter update
response.
0x0007
Minimum advertising interval in limited discovery mode (n * 0.625 ms)
0x0008
Maximum advertising interval in limited discovery mode (n * 0.625 ms)
0x0009
Minimum advertising interval in general discovery mode (n * 0.625 ms)
0x000A
Maximum advertising interval in general discovery mode (n * 0.625 ms)
0x000B
Minimum advertising interval when in connectable mode (n * 0.625 ms)
0x000C
Maximum advertising interval when in connectable mode (n * 0.625 ms)
0x000D
Scan interval used during Link Layer Initiating state, when in Connectable mode
(n * 0.625 mSec)
0x000E
Scan window used during Link Layer Initiating state, when in Connectable mode
(n * 0.625 mSec)
0x000F
Scan interval used during Link Layer Initiating state, when in Connectable mode,
high duty scan cycle scan parameters (n * 0.625 mSec)
0x0010
Scan window used during Link Layer Initiating state, when in Connectable mode,
high duty scan cycle scan parameters (n * 0.625 mSec)
0x0011
Scan interval used during Link Layer Scanning state, when in General Discovery
proc (n * 0.625 mSec).
0x0012
Scan window used during Link Layer Scanning state, when in General Discovery
proc (n * 0.625 mSec)
0x0013
Scan interval used during Link Layer Scanning state, when in Limited Discovery
proc (n * 0.625 mSec)
0x0014
Scan window used during Link Layer Scanning state, when in Limited Discovery
proc (n * 0.625 mSec)
0x0015
Minimum Link Layer connection interval, when using Connection Establishment
proc (n * 1.25 mSec)
0x0016
Maximum Link Layer connection interval, when using Connection Establishment
proc (n * 1.25 mSec)
0x0017
Scan interval used during Link Layer Initiating state, when using Connection
Establishment proc (n * 0.625 mSec)
0x0018
Scan window used during Link Layer Initiating state, when using Connection
Establishment proc (n * 0.625 mSec)
0x0019
Link Layer connection supervision timeout, when using Connection
Establishment proc (n * 10 mSec)
0x001A
Link Layer connection slave latency, when using Connection Establishment proc
(in number of connection events)
0x001B
Local informational parameter about min len of connection needed, when using
Connection Establishment proc (n * 0.625 mSec)
0x001C
Local informational parameter about max len of connection needed, when using
Connection Establishment proc (n * 0.625 mSec).
0x001D
Minimum Time Interval between private (resolvable) address changes. In
minutes (default 15 minutes)
![](asset-1d.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 29 of 46
0x001E
Central idle timer. In seconds (default 1 second)
0x001F
Minimum time upon connection establishment before the peripheral starts a
connection update procedure. In seconds (default 5 seconds)
0x0020
Time (ms) to wait for security manager response before returning bleTimeout.
Default is 30 seconds.
0x0021
SM Minimum Key Length supported. Default 7.
0x0022
SM Maximum Key Length supported. Default 16.
0x0023
TRUE to filter duplicate advertising reports. Default TRUE.
0x0024
Minimum RSSI required for scan responses to be reported to the app. Default -
127.
0x0025
Whether or not to reject Connection Parameter Update Request received on
Central device. Default FALSE.
Value (2 byte)
Value
Parameter Description
0xXXXX
New value of GAP Parameter
Event(s) generated
An SNP Set Parameter Update Response (0x48) event will be sent from the SNP.
9.3.7 SNP Get GAP Parameter (0x49)
The SNP Get GAP Parameter command is sent to the SNP to read the value of a GAP
parameter. The parameters are listed in the SNP Set GAP Parameter (0x48) command. See
section 12.17 of the HCI Vendor Specific guide or the GAP API in the SDG for more
information on each parameter.
Command Parameters
Parameter ID (2 bytes)
Value
Parameter Description
0xXXXX
Which parameter to read. See SNP Set GAP Parameter (0x48)
9.3.8 SNP Set Security Parameter (0x4A)
The SNP Set Security Parameter command is sent to the SNP to read the value of a GAP
parameter. The parameters are listed here.
Command Parameters
Parameter ID (1 byte)
Value
Parameter Description
0x00
Pairing Mode – whether the device requests, waits for or does not
accept pairing. The possible values are listed below:
0x00 – Pairing Disabled.
0x01 – Wait for Request from the Central device.
0x02 – Automatically send a Security Request to the Central
Device.
0x01
IO Capabilities of the device. The possible values are listed below:
0x00 – Display Output Only
0x01 – Display Output and Yes/No Input
0x02 – Keyboard Input Only
![](asset-1e.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 30 of 46
0x03 – No Input or Output
0x04 – Display Output and Keyboard Input
0x02
Bonding. TRUE to enable, FALSE to disable.
0x03
Erase all bonds. No parameter Value.
0x04
Replace Least Recently Used Bond. TRUE to enable, FALSE to
disable.
Value (1 byte)
Value
Parameter Description
0x00
New Value of Security Parameter
9.3.9 SNP Send Security Request (0x4B)
The SNP Send Security command is sent to the SNP to request from the central device to
establish security. Note that this does not start pairing or bonding but only asks the Central
device to begin the process. There are no parameters.
9.3.10 SNP Set Authentication Data (0x4C)
The SNP Set Authentication data command is sent to the SNP to provide Authentication for
the pairing process. The parameters are listed below.
Command Parameters
Parameter ID (4 bytes)
Value
Parameter Description
0xXXXX
For passcode, the 4 byte passcode, value 000000-999999.
For Numeric Comparison, TRUE if they match or FALSE if not.
9.3.11 SNP Set White List Filter Policy (0x4D)
The SNP Set White List Filter Policy command is sent to the SNP to set the White List Filter
Policy for Scanning and Connections. The parameters are listed here. See section 12.17 of
the HCI Vendor Specific guide or the GAP API in the SDG for more information on each
parameter.
Command Parameters
Parameter ID (1 bytes)
Value
Parameter Description
0xXX
TRUE to enable White List Filtering, FALSE to disable.
9.4 GAP Subgroup Events
9.4.1 SNP Set Advertisement Data Response (0x43)
The SNP will return the SNP Set Advertisement Data Response event to the AP after it has performed
the SNP Set Advertisement Data (0x43) command. The status of this event should be checked to verify
that the advertising data was set correctly.
Event Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
![](asset-1f.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 31 of 46
0xXX
See SNP Error Codes
9.4.2 SNP Update Connection Parameter Response (0x45)
The SNP will return the SNP Update Connection Parameter Response event to the AP after it has
performed the SNP Update Connection Parameters (0x45) command. The status of this event should
be checked to verify that the connection parameters were updated successfully.
Event Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
Connection Handle (2 bytes)
Value
Parameter Description
0xXXXX
Connection handle of parameter update
9.4.3 SNP Set Parameter Update Response (0x48)
The SNP will return the SNP Set Parameter Update Response event to the AP after it has
performed the SNP Set GAP Parameter (0x48) command. The status of this event should be
checked to verify that the parameter was set correctly.
Event Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
9.4.4 SNP Get Parameter Update Response (0x49)
The SNP will return the SNP Get Parameter Update Response event to the AP after it has
performed the SNP Get GAP Parameter (0x49) command. The status of this event should be
checked to verify that the parameter was read successfully and to see what the value of the
parameter is.
Command Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
Parameter ID (2 bytes)
Value
Parameter Description
0xXXXX
Which parameter to read. See SNP Set GAP Parameter (0x48)
Value (2 bytes)
Value
Parameter Description
0xXXXX
Value of the GAP Parameter
![](asset-20.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 32 of 46
9.4.5 SNP Set Security Parameter Response (0x4A)
The SNP will return the SNP Set Security Parameter Response event to the AP after it has
performed the SNP Set Security Parameter (0x4A) command. The status of this event should
be checked to verify that the parameter was written successfully.
Command Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
9.4.6 SNP Send Authentication Data Response (0x4C)
The SNP will return the SNP Send Authentication Data Response event to the AP after it has
performed the SNP Send Authentication Data (0x4C) command. The status of this event
should be checked to verify that the parameter was written successfully.
Command Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
9.4.7 SNP Set White List Filter Policy Response (0x4D)
The SNP will return the SNP Set White List Filter Policy Response event to the AP after it has
performed the SNP Set White List Filter Policy (0x4D) command. The status of this event
should be checked to verify that the parameter was written successfully.
Command Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
9.5 GATT Subgroup Commands
Note that, after they are added to the SNP’s GATT server database, any AP-initialized
services and characteristics are not stored in flash on the SNP. Therefore, if a reset of the
SNP occurs, all services and characteristics will be lost and need to be added again from the
AP.
It is necessary to have a strong background in GATT and ATT to understand how to use these
commands. For more information, see the GATT section of the SDG[3] or Bluetooth spec.
9.5.1 SNP Add Service (0x81)
The SNP Add Service command is sent to the SNP to start the addition of a new service to
the GATT server running on the SNP. This command should be followed by the SNP Add
Characteristic Value Declaration (0x82) command and optionally the SNP Add Characteristic
Descriptor Declaration (0x83) command to add characteristics to the service. Lastly, when all
![](asset-21.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 33 of 46
characteristics have been added, the SNP Register Service command should be sent to the
SNP.
Note that only one service can be added at a time. That is, once this command has been sent,
all characteristics must then be added and the service must to be registered before adding
another service.
Command Parameters
Type (1 byte): type of the service to add
Value
Parameter Description
0x01
Primary Service
0x02
Secondary Service
UUID (16 bytes)
Value
Parameter Description
0xXXXX….XXXX
UUID of service to add.
Event(s) generated
The SNP Add Service Response (0x81) event will be returned from the SNP.
9.5.2 SNP Add Characteristic Value Declaration (0x82)
The SNP Add Characteristic Value Declaration command is sent to the SNP to add the two
BT-spec defined mandatory attributes for a characteristic:
characteristic value
characteristic declaration.
This command should be sent after the SNP Add Service (0x81) command has been sent to
begin service declaration.
Note that it is possible to add additional optional attributes to the characteristic using the SNP
Add Characteristic Descriptor Declaration (0x83) command.
Command Parameters
Value Permissions (1 byte): type of the service to add
Value
Parameter Description
0x01
GATT Read Permission
0x02
GATT Write Permission
Value Properties (2 bytes)
Value
Parameter Description
0x0002
GATT Read Properties
0x0004
GATT Write No Response Properties
0x0008
GATT Write Properties
0x0010
GATT Notification Properties
0x0020
GATT Indication Properties
Management Option (1 byte)
Value
Parameter Description
0xXX
RFU
Value Max Length (2 bytes)
![](asset-22.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 34 of 46
Value
Parameter Description
0xXXXX
Maximum length of the attribute value.
UUID (16 bytes)
Value
Parameter Description
0xXXXX….XXXX
UUID of characteristic to add.
Additional Notes
If the GATT Notify or GATT Indicate properties are enabled, a CCCD attribute for characteristic must be
added with the SNP Add Characteristic Descriptor Declaration (0x83) command. Otherwise, it will not
be possible to notify or indicate the characteristic value.
Note that the TI BLE Stack expects the properties to be aligned logically with the permissions. For
example, a characteristic with read properties would most likely have read permissions. This is
explained in more detail in the GATT section of the SDG[3].
Event(s) generated
The SNP Add Characteristic Value Declaration (0x82) event will be returned from the SNP.
9.5.3 SNP Add Characteristic Descriptor Declaration (0x83)
The SNP Add Characteristic Descriptor Declaration command is sent to the SNP to add one
or more of the following attributes to a characteristic:
User description string
CCCD
Presentation format
Server Characteristic configuration (RFU)
Aggregate format (RFU)
The first parameter of the command is a header indicating which attribute is being added. When a bit is
set corresponding to the attribute type, the corresponding set of parameters must be present in the
following parameters and will be added to the characteristic. These sets of parameters need to appear
in the same order as the bits appear in the header (from least-significant bit to most-significant bit).
For example, if both a CCCD and User Description attribute are being added, the header will have the
value 0x84. The CCCD parameter (1 byte) will then follow the header, and the user description
parameter (n Bytes) will follow the CCCD parameter. Other parameters must be omitted.
General Command Parameters
Header (1 byte): which attributes will be added to the service
Value
Parameter Description
0x01
Generic-Short UUID
0x02
Generic-Long UUID
0x04
CCCD
0x08
Presentation Format
0x80
User Description String
Generic-Short UUID Parameters
Short UUID (5 bytes)
Value
Parameter Description
0xXXXXXXXXXX
Short UUID
Generic-Long UUID Parameters
Long UUID (19 bytes)
![](asset-23.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 35 of 46
Value
Parameter Description
0xXXXX…XXXX
Long UUID
CCCD Parameters
Permissions (1 byte): GATT permissions of CCCD attribute
Value
Parameter Description
0x01
GATT Read Permissions
0x02
GATT Write Permissions
Presentation Format Parameters
Format (1 byte)
Value
Parameter Description
0xXX
Format, as described in BLE Spec
Exponent (1 byte)
Value
Parameter Description
0xXX
Exponent, as described in BLE Spec
Unit (2 bytes)
Value
Parameter Description
0xXXXX
Unit, as described in BLE Spec
Desc (2 bytes)
Value
Parameter Description
0xXXXX
Namespace, as described in BLE Spec
User Description String Parameters
Permissions (1 byte): GATT permissions of the User Description Attribute
Value
Parameter Description
0x01
GATT Read Permissions
0x02
GATT Write Permissions
Max Length (2 bytes)
Value
Parameter Description
0xXXXX
Maximum Possible length of the user description string (from 1 to 512)
Initial Length (2 bytes)
Value
Parameter Description
0xXXXX
Initial length of the string. Must be less than the Max Length.
Description (1-512 bytes)
Value
Parameter Description
0xXXXX…XXXX
Initial user description string
Additional Notes
The presentation format is described in the BLE spec [1], Vol 3, Part F, chapter 3.3.
The attribute permission for the User Description attribute will be set to GATT Read Permissions.
Event(s) generated
The SNP Add Characteristic Descriptor Declaration Response (0x83) event will be returned from
the SNP.
![](asset-24.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 36 of 46
9.5.4 SNP Register Service (0x84)
The SNP Register Service command will be sent to the SNP to register the service and characteristics
previously added to the GATT server, thus ending the creation of the service.
Command Parameters
This command does not have any parameters.
Event(s) generated
The SNP Register Service Response (0x84)SNP Add Characteristic Descriptor Declaration
Response (0x83) event will be returned from the SNP.
9.5.5 SNP Get Attribute Value (0x85)
The SNP Get Attribute Value command is sent to the SNP to read the attribute value of a characteristic
that is managed by the GATT server on the SNP. This includes characteristics in the Device
Information Service [4] and the Generic Access Service [5]. More information about these
characteristics can be found in the relevant service specification. This command can only be used to
write the following attribute types:
User Description
Presentation Format
For reading the characteristic value of an SNP-managed attribute, the SNP Get GATT Parameter
(0x8D) command can be used.
Command Parameters
Attribute Handle (2 bytes): handle of attribute value to be read
Value
Parameter Description
0xXXXX
See Figure 2: Initial Attribute Table.
Additional Notes
If the characteristic value is managed by the AP, this request will be rejected.
Generated Event(s)
The SNP Get Attribute Value Response (0x85) event will be returned from the SNP.
9.5.6 SNP Set Attribute Value (0x86)
The SNP Set Attribute Value command is sent to the SNP to write the attribute value of a characteristic
that is managed by the GATT server on the SNP. This includes characteristics in the Device
Information Service [4] and the Generic Access Service [5]. More information about these
characteristics can be found in the relevant service specification. This command can only be used to
write the following attribute types:
User Description
Presentation Format
For writing the characteristic value of an SNP-managed attribute, the SNP Get GATT Parameter (0x8D)
command can be used.
Note that the attribute value to set is indexed by the attribute handle.
Command Parameters
Attribute Handle (2 bytes): handle of attribute value to write
Value
Parameter Description
0xXXXX
See Figure 2: Initial Attribute Table.
Additional Notes
If the characteristic value is managed by the AP, this request will be rejected.
Generated Event(s)
![](asset-25.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 37 of 46
The SNP Set Attribute Value (0x86) event will be returned from the SNP.
9.5.7 SNP Characteristic Read Confirmation (0x87)
If a GATT client requests a read of a characteristic that was added by the AP, the SNP GATT
server will forward an SNP Characteristic Read Indication (0x87) event to the AP. The AP then
has 30 seconds to respond with an SNP Characteristic Read Confirmation stating whether the
read is allowed based on application-specific rules and, if so, what the characteristic value is. If
no response is received in 30 seconds, an ATT timeout will occur and no more ATT
communication can happen without reestablishing the connection.
Command Parameters
Status (1 byte): status of the read request
Value
Parameter Description
0x00
Success
0xXX
AP-define error code.
Connection Handle (2 bytes)
Value
Parameter Description
0xXXXX
Handle of the connection.
Attribute Handle (2 bytes)
Value
Parameter Description
0xXXXX
Handle of the characteristic value attribute being read.
Offset (2 bytes)
Value
Parameter Description
0xXXXX
Offset of the characteristic to start reading from.
Data (1-ATT_MTU_SIZE bytes)
Value
Parameter Description
0xXXXX….XXXX
Characteristic value data.
Additional Notes
See the SNP Characteristic Read Indication (0x87) event for more information on the offset
parameter and partial reads.
Generated Event(s)
This command will not cause any corresponding events to be sent.
9.5.8 SNP Characteristic Write Confirmation (0x88)
If a GATT client requests a write of a characteristic that was added by the AP, the SNP GATT
server will forward an SNP Characteristic Write Indication (0x88) to the AP. The AP then has 30
seconds to decide if the write is allowed based on any application-specific rules, perform the
write, and respond with a SNP Characteristic Write Confirmation stating whether the write
occurred successfully. If no response is received in 30 seconds, an ATT timeout will occur and
no more ATT communication can happen without reestablishing the connection.
Command Parameters
Status (1 byte): status of the write request
Value
Parameter Description
0x00
Success
0xXX
AP-defined error code.
![](asset-26.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 38 of 46
Connection Handle (2 bytes)
Value
Parameter Description
0xXXXX
Handle of the connection.
Additional Notes
See the SNP Characteristic Write Indication (0x88) event for more information on the offset
parameter and partial reads
Generated Event(s)
This command will not cause any corresponding events to be sent.
9.5.9 SNP Send Notification Indication (0x89)
The SNP Send Notification Indication command is sent to the SNP to send a notification or
indication to the GATT Client. This is only possible if a CCCD for the characteristic has been
created and notifications / indications have been enabled by writing to the CCCD. Note that
the final transmission of notifications and indications is managed by the GATT server.
Therefore, they can only be sent to GATT clients that are requesting them. That is,
notifications / indications cannot be forced unless the CCCD is configured correctly.
Command Parameters
Connection Handle (2 bytes)
Value
Parameter Description
0xXXXX
Handle of the connection.
Attribute Handle (2 bytes)
Value
Parameter Description
0xXXXX
Handle of the characteristic value attribute to notify / indicate.
Authenticated (1 byte)
Value
Parameter Description
0xXXXX
RFU
Request Type (1 byte)
Value
Parameter Description
0x00
Notification
0x01
Indication
Data (1-ATT_MTU_SIZE bytes)
Value
Parameter Description
0xXXXX….XXXX
Data to be notified / indicated.
Additional Notes
The maximum size possible for a notification or indication value is ATT_MTU_SIZE. If the
value sent within the command is larger than ATT_MTU_SIZE bytes, it will be truncated.
Generated Event(s)
Indications require that the remote GATT client sends a confirmation so therefore only one
indication can be sent at a time. Once the indication confirmation is received form the GATT
client, it will be forwarded to the SNP via the SNP Send Notification Indication Response
(0x89) event with the status SUCCESS. If the confirmation is not received from the GATT
client within 30s, the SNP Send Notification Indication Response (0x89) event will be sent
![](asset-27.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 39 of 46
back by the SNP with the status FAILURE. In this case, an ATT timeout has occurred and no
more ATT communication can occur without reestablishing the connection.
Notifications do not require that the remote GATT clients send a confirmation. Therefore, the
SNP Send Notification Indication Response (0x89) event will be returned from the SNP once
the notification has been forwarded successfully to the BLE host.
9.5.10 SNP CCCD Updated Confirmation (0x8B)
Depending on the desired implementation, the AP may be responsible for authorizing writes to
CCCD’s. When a GATT client attempts to write to a CCCD, the SNP will send a SNP CCCD
Updated Indication (0x8B) event to the AP. The AP must then reply with this command to
indicate whether or not it will allow the CCCD to be updated. If the update it authorized, this
command should be sent. If the update is not authorized, no command should be sent.
Command Parameters
Status (1 byte): status of the CCCD update request
Value
Parameter Description
0x00
Success
0xXX
AP-defined error code.
Connection Handle (2 bytes)
Value
Parameter Description
0xXXXX
Handle of the connection.
Additional Notes
If desired, the AP is responsible for caching CCCD values. That is, it should remember the CCCD
attribute for a specific GATT client for future connections.
Event(s) Generated
This command will not cause any corresponding events to be sent.
9.5.11 SNP Set GATT Parameter (0x8C)
The SNP Set GATT Parameter command is sent to the SNP to write the characteristic value attribute of
a characteristic that is managed by the GATT server on the SNP. This includes characteristics in the
Device Information Service [4] and the Generic Access Service [5]. More information about these
characteristics can be found in the relevant service specification. Note that this command can only be
used to write the characteristic value attribute. The SNP Set Attribute Value (0x86) command should
be used for writing to other attribute types in these two services.
Command Parameters
Service ID (1 byte)
Value
Parameter Description
0x01
Generic Access Service
0x02
Device Info Service
Parameter ID (2 bytes)
Value
Device Info Service Parameter
Generic Access Service Parameter
0x0000
System ID
Device Name
0x0001
Model Number String
Appearance
0x0002
Serial Number String
Peripheral Privacy Flag (RFU)
0x0003
Firmware Revision String
Reconnection Address (RFU)
![](asset-28.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 40 of 46
0x0004
Hardware Revision String
Peripheral Preferred Connection
Parameters
0x0005
Software Revision String
Peripheral Privacy Flag Properties
(RFU)
0x0006
Manufacturer Name String
Device Name Permissions (RFU)
0x0007
IEEE 11073-20601 Regulatory
Certification Data List
Appearance Permissions (RFU)
0x0008
PnP ID
Peripheral Privacy Flag Permissions
(RFU)
Value (n bytes)
Value
Parameter Description
0xXXXX….XXXX
Value to update parameter with.
Event(s) generated
The SNP Set GATT Parameter (0x8C) event will be returned from the SNP.
9.5.12 SNP Get GATT Parameter (0x8D)
The SNP Get GATT Parameter command is sent to the SNP to read the characteristic value attribute of
a characteristic that is managed by the GATT server on the SNP. This includes characteristics in the
Device Information Service [4] and the Generic Access Service [5]. More information about these
characteristics can be found in the relevant service specification. Note that this command can only be
used to read the characteristic value attribute. The SNP Get GATT Parameter (0x8D) command should
be used for reading other attribute types in these two services.
Command Parameters
Service ID (1 byte)
Value
Parameter Description
0x01
Generic Access Service
0x02
Device Info Service
Parameter ID (2 bytes)
Value
Device Info Service Parameter
Generic Access Service Parameter
0x0000
System ID
Device Name
0x0001
Model Number String
Appearance
0x0002
Serial Number String
Peripheral Privacy Flag (RFU)
0x0003
Firmware Revision String
Reconnection Address (RFU)
0x0004
Hardware Revision String
Peripheral Preferred Connection
Parameters
0x0005
Software Revision String
Peripheral Privacy Flag Properties
(RFU)
0x0006
Manufacturer Name String
Device Name Permissions (RFU)
0x0007
IEEE 11073-20601 Regulatory
Certification Data List
Appearance Permissions (RFU)
0x0008
PnP ID
Peripheral Privacy Flag Permissions
(RFU)
Value (0-512 bytes)
Value
Parameter Description
![](asset-29.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 41 of 46
0xXXXX….XXXX
Parameter value.
Event(s) generated
The SNP Get GAP Parameter (0x49) event will be returned from the SNP.
9.6 GATT Subgroup Events
9.6.1 SNP Add Service Response (0x81)
The SNP will return the SNP Add Service Response event to the AP after it has performed the SNP
Add Service (0x81) command. The status of this event should be checked to verify that the service was
added correctly.
Event Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
9.6.2 SNP Add Characteristic Value Declaration Response (0x82)
The SNP will return the SNP Add Characteristic Value Declaration Response event to the AP after it
has performed the SNP Add Characteristic Value Declaration (0x82) command. The status of this event
should be checked to verify that the characteristic was added successfully and, if needed, to store the
handle the characteristic value was added at for future use.
Event Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
Attribute Handle (2 bytes)
Value
Parameter Description
0xXXXX
Attribute handle of the characteristic value.
9.6.3 SNP Add Characteristic Descriptor Declaration Response (0x83)
The SNP will return the SNP Add Characteristic Descriptor Declaration Response event to the AP after
it has performed the SNP Add Characteristic Descriptor Declaration (0x83) command. The status of this
event should be checked to verify that the attribute was added successfully and, if needed, to store the
handle the attribute was added at for future use.
The first parameter of the event is a header indicating which attributes were requested to be added.
This is the same structure as the SNP Add Characteristic Descriptor Declaration command where
multiple bits can be set and each bit corresponds to an attribute.
The status parameter should be checked to verify that the attributes were successfully added. There is
only one status parameter per event. There are, however, as many attribute handle parameters as
there were attributes added and the attribute handles will be returned in ascending order of the
parameter bit values.
For example, if both the CCCD and user description attributes were to be added, the header will have
the value 0x84. The one byte status will come next followed by two bytes for the attribute handle of the
CCCD and then two bytes for the attribute handle of the user description.
Event Parameters
![](asset-2a.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 42 of 46
Header (1 byte): which attributes will be added to the service
Value
Parameter Description
0x01
Generic-Short UUID
0x02
Generic-Long UUID
0x04
CCCD
0x08
Presentation Format
0x80
User Description String
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
Handles (2-12 bytes): handles of attributes added. There will be 1-6 of these: one for each
attribute added.
Value
Parameter Description
0xXXXX
Handle of first attribute added.
…..
……
0xXXXX
Handle of last attribute added.
9.6.4 SNP Register Service Response (0x84)
The SNP will return the SNP Register Service Response event to the AP after it has performed the
SNP Register Service (0x84) command. The status of this event should be checked to verify that the
service was registered successfully and, if needed, to store the handles that service was registered at.
Event Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
Service Start Handle (2 bytes)
Value
Parameter Description
0xXXXX
First attribute handle of the registered service.
Service End Handle (2 bytes)
Value
Parameter Description
0xXXXX
Last attribute handle of the registered service.
9.6.5 SNP Get Attribute Value Response (0x85)
The SNP will return the SNP Get Attribute Value Response event to the AP after it has performed the
SNP Get Attribute Value (0x85) command. The status of this event should be checked to verify that the
attribute value was successfully read.
Event Parameters
Status (1 byte): status of the request
Value
Parameter Description
![](asset-2b.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 43 of 46
0x00
Success
0xXX
See SNP Error Codes
Attribute Handle (2 bytes)
Value
Parameter Description
0xXXXX
Attribute handle of the characteristic value.
Data (n bytes)
Value
Parameter Description
0xXXXX….XXXX
Data stored in the characteristic value.
9.6.6 SNP Set Attribute Value Response (0x86)
The SNP will return the SNP Set Attribute Value Response event to the AP after it has performed the
SNP Set Attribute Value (0x86) command. The status of this event should be checked to verify that the
attribute value was successfully set.
Event Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
Attribute Handle (2 bytes)
Value
Parameter Description
0xXXXX
Attribute handle of the characteristic value.
9.6.7 SNP Characteristic Read Indication (0x87)
The SNP Characteristic Read Indication event is sent from the SNP when the remote GATT client
requests a read of a characteristic value that is managed by the AP. Upon receiving this event, the AP
must send an SNP Characteristic Read Confirmation (0x87) within 30 seconds.
Event Parameters
Connection Handle (2bytes)
Value
Parameter Description
0xXXXX
Handle of the connection requesting the read.
Attribute Handle (2 bytes)
Value
Parameter Description
0xXXXX
Attribute handle of the characteristic value being read.
Offset (2 bytes)
Value
Parameter Description
0xXXXX
Offset into characteristic value to start reading from
Max Size (2bytes)
Value
Parameter Description
0xXXXX
Maximum amount of bytes that can be read at once.
Additional Notes
![](asset-2c.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 44 of 46
A characteristic value can be up to 512 Bytes long. However, not more than ATT_MTU_SIZE bytes can
be read at once by an ATT operation. If the characteristic size is bigger than ATT_MTU_SIZE, the
remote GATT client will send several ATT_MTU_SIZE reads until it reads the entire characteristic.
Therefore, each read request send by the GATT client is translated into a SNP Characteristic Read
Indication with two parameters: an offset and the maximum data size. The offset represents the start of
the data to read in the characteristic value and the maximum data size represents the maximum
amount of data (in bytes) that can be sent in one SNP Characteristic Read Confirmation. The AP needs
to reply with the SNP Characteristic Read Confirmation (0x87) and, in this command, indicate the offset
the data was read from and the size of the data.
9.6.8 SNP Characteristic Write Indication (0x88)
The SNP Characteristic Write Indication event is sent from the SNP when the remote GATT
client requests a write of a characteristic value that is managed by the AP. Upon receiving
this event and if the Response Needed parameter is set to 0x01, the AP must send an SNP
Characteristic Write Confirmation (0x88) within 30 seconds. If the Response Needed
parameter is set to 0x00, no Characteristic Write Confirmation is needed. This will occur in
the case of an ATT Write Command instead of an ATT Write Request.
Event Parameters
Connection Handle (2bytes)
Value
Parameter Description
0xXXXX
Handle of the connection requesting the write.
Attribute Handle (2 bytes)
Value
Parameter Description
0xXXXX
Attribute handle of the characteristic value being written to.
Response Needed (1 byte)
Value
Parameter Description
0x00
No SNP Characteristic Write Confirmation response needed.
0x01
A SNP Characteristic Write Confirmation response is needed.
Offset (2 bytes)
Value
Parameter Description
0xXXXX
Offset into characteristic value to start writing at.
Data (0-bytes)
Value
Parameter Description
0xXXXX….XXXX
Data to write to the characteristic value.
Additional Notes
A characteristic value can be up to 512 Bytes long. However, not more than ATT_MTU_SIZE bytes can
be written at once by an ATT operation. If the characteristic size is bigger than ATT_MTU_SIZE, the
remote GATT client will send several ATT_MTU_SIZE writes until it has written the entire characteristic.
The Offset parameter represents the start of the characteristic value data to write. The data size can be
deduced from the NPI frame length of the SNP Characteristic Write Indication.
Once a remote GATT client starts to write a characteristic value with offset 0, this means it will write the
entire value (see the BT Spec [1] 4.9.4, Part G, Vol3). If the remote GATT Client starts to write with an
offset different than 0, this means it is a partial write.
![](asset-2d.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 45 of 46
9.6.9 SNP Send Notification Indication Response (0x89)
The SNP Send Notification Indication Response event is sent from the SNP after the SNP
Send Notification Indication (0x89) command has been performed. If an indication was sent,
this event means that the GATT client received the indication and has responded with a
confirmation. If a notification was sent, this event means that the notification was successfully
queued up for transmission in the BLE stack. In either case, the status parameter should be
checked to see that the indication / notification has completed successfully.
Event Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
Connection Handle (2 bytes)
Value
Parameter Description
0xXXXX
Connection handle of the characteristic value.
9.6.10 SNP CCCD Updated Indication (0x8B)
The SNP CCCD Updated Indication event is sent from the SNP when the remote GATT Client
has requested to update the CCCD value of an attribute managed by the AP. Upon receiving
this event, and if the Response Needed parameter is set to 0x01, the AP must send an SNP
CCCD Updated Confirmation (0x8B) within 30 seconds. If the Response Needed parameter
is set to 0x00, no CCCD Updated Confirmation is needed. This last case can occur if an
ATT_WRITE_CMD operation has been used by the remote GATT client.
This indication / confirmation scheme allows the AP to add a layer of authorization to
modifying CCCD’s and allowing indications / notifications. That is, the AP is free to allow /
deny CCCD updates based on the desired implementation.
Event Parameters
Connection Handle (2bytes)
Value
Parameter Description
0xXXXX
Handle of the connection requesting the CCCD update.
CCCD Handle (2 bytes)
Value
Parameter Description
0xXXXX
Handle of the characteristic value attribute to notify / indicate.
Response Needed (1 byte)
Value
Parameter Description
0x00
No SNP CCCD Updated Confirmation needed.
0x01
A SNP CCCD Updated Confirmation is needed.
Value (2 bytes)
Value
Parameter Description
0xXXXX
Value to write to the CCCD.
![](asset-2e.png)
TI CC2640 Bluetooth® low energy Simple Network Processor API Guide October 2016
Copyright © 2010-2016 Texas Instruments, Inc.
Page 46 of 46
9.6.11 SNP Set GATT Parameter Response (0x8C)
The SNP will return the SNP Set GATT Parameter Response event to the AP after it has performed the
SNP Set GATT Parameter (0x8C) command. The status of this event should be checked to verify that
the parameter was successfully set.
Event Parameters
Status (1 byte): status of the request
Value
Parameter Description
0x00
Success
0xXX
See SNP Error Codes
9.6.12 SNP Get GATT Parameter Response (0x8D)
The SNP will return the SNP Get GATT Parameter Response event to the AP after it has performed the
SNP Get GATT Parameter (0x8D) command. The status of this event should be checked to verify that
the parameter was successfully read and to see what the value is.
Event Parameters
Service ID (1 byte)
Value
Parameter Description
0x01
Generic Access Service
0x02
Device Info Service
Parameter ID (2 bytes)
Value
Device Info Service Parameter
Generic Access Service Parameter
0x0000
System ID
Device Name
0x0001
Model Number String
Appearance
0x0002
Serial Number String
Peripheral Privacy Flag (RFU)
0x0003
Firmware Revision String
Reconnection Address (RFU)
0x0004
Hardware Revision String
Peripheral Preferred Connection
Parameters
0x0005
Software Revision String
Peripheral Privacy Flag Properties
(RFU)
0x0006
Manufacturer Name String
Device Name Permissions (RFU)
0x0007
IEEE 11073-20601 Regulatory
Certification Data List
Appearance Permissions (RFU)
0x0008
PnP ID
Peripheral Privacy Flag Permissions
(RFU)
Value (n bytes)
Value
Parameter Description
0xXXXX….XXXX
Value to update parameter with.