Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ble_std.h « core « ble « STM32_WPAN « ST « Middlewares - github.com/Flipper-Zero/STM32CubeWB.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 68b32cec8f51d15d2db90c2995b7b309ac71f6c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
/******************************************************************************
 * @file    ble_std.h
 * @author  MDG
 * @brief   BLE standard definitions
 ******************************************************************************
 * @attention
 *
 * Copyright (c) 2018-2022 STMicroelectronics.
 * All rights reserved.
 *
 * This software is licensed under terms that can be found in the LICENSE file
 * in the root directory of this software component.
 * If no LICENSE file comes with this software, it is provided AS-IS.
 *
 *****************************************************************************
 */

#ifndef BLE_STD_H__
#define BLE_STD_H__


/* HCI packet type */
#define HCI_COMMAND_PKT_TYPE             0x01U
#define HCI_ACLDATA_PKT_TYPE             0x02U
#define HCI_EVENT_PKT_TYPE               0x04U

/* HCI packet header size */
#define HCI_COMMAND_HDR_SIZE             4
#define HCI_ACLDATA_HDR_SIZE             5
#define HCI_EVENT_HDR_SIZE               3

/* HCI parameters length */
#define HCI_COMMAND_MAX_PARAM_LEN        255
#define HCI_ACLDATA_MAX_DATA_LEN         251  /* HC_LE_Data_Packet_Length */
#define HCI_EVENT_MAX_PARAM_LEN          255

/* HCI packet maximum size */
#define HCI_COMMAND_PKT_MAX_SIZE \
            (HCI_COMMAND_HDR_SIZE + HCI_COMMAND_MAX_PARAM_LEN)
#define HCI_ACLDATA_PKT_MAX_SIZE \
            (HCI_ACLDATA_HDR_SIZE + HCI_ACLDATA_MAX_DATA_LEN)
#define HCI_EVENT_PKT_MAX_SIZE \
            (HCI_EVENT_HDR_SIZE   + HCI_EVENT_MAX_PARAM_LEN)

/* HCI event code */
#define HCI_DISCONNECTION_COMPLETE_EVT_CODE                    0x05U
#define HCI_ENCRYPTION_CHANGE_EVT_CODE                         0x08U
#define HCI_READ_REMOTE_VERSION_INFORMATION_COMPLETE_EVT_CODE  0x0CU
#define HCI_COMMAND_COMPLETE_EVT_CODE                          0x0EU
#define HCI_COMMAND_STATUS_EVT_CODE                            0x0FU
#define HCI_HARDWARE_ERROR_EVT_CODE                            0x10U
#define HCI_NUMBER_OF_COMPLETED_PACKETS_EVT_CODE               0x13U
#define HCI_DATA_BUFFER_OVERFLOW_EVT_CODE                      0x1AU
#define HCI_ENCRYPTION_KEY_REFRESH_COMPLETE_EVT_CODE           0x30U
#define HCI_LE_META_EVT_CODE                                   0x3EU
#define HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE                     0xFFU

/* HCI LE subevent code */
#define HCI_LE_CONNECTION_COMPLETE_SUBEVT_CODE                 0x01U
#define HCI_LE_ADVERTISING_REPORT_SUBEVT_CODE                  0x02U
#define HCI_LE_CONNECTION_UPDATE_COMPLETE_SUBEVT_CODE          0x03U
#define HCI_LE_READ_REMOTE_FEATURES_COMPLETE_SUBEVT_CODE       0x04U
#define HCI_LE_LONG_TERM_KEY_REQUEST_SUBEVT_CODE               0x05U
#define HCI_LE_DATA_LENGTH_CHANGE_SUBEVT_CODE                  0x07U
#define HCI_LE_READ_LOCAL_P256_PUBLIC_KEY_COMPLETE_SUBEVT_CODE 0x08U
#define HCI_LE_GENERATE_DHKEY_COMPLETE_SUBEVT_CODE             0x09U
#define HCI_LE_ENHANCED_CONNECTION_COMPLETE_SUBEVT_CODE        0x0AU
#define HCI_LE_DIRECT_ADVERTISING_REPORT_SUBEVT_CODE           0x0BU
#define HCI_LE_PHY_UPDATE_COMPLETE_SUBEVT_CODE                 0x0CU
#define HCI_LE_EXTENDED_ADVERTISING_REPORT_SUBEVT_CODE         0x0DU
#define HCI_LE_SCAN_TIMEOUT_SUBEVT_CODE                        0x11U
#define HCI_LE_ADVERTISING_SET_TERMINATED_SUBEVT_CODE          0x12U
#define HCI_LE_SCAN_REQUEST_RECEIVED_SUBEVT_CODE               0x13U

/* HCI error code */
#define HCI_SUCCESS_ERR_CODE                                   0x00U
#define HCI_UNKNOWN_HCI_COMMAND_ERR_CODE                       0x01U
#define HCI_UNKNOWN_CONNECTION_IDENTIFIER_ERR_CODE             0x02U
#define HCI_AUTHENTICATION_FAILURE_ERR_CODE                    0x05U
#define HCI_PIN_OR_KEY_MISSING_ERR_CODE                        0x06U
#define HCI_MEMORY_CAPACITY_EXCEEDED_ERR_CODE                  0x07U
#define HCI_CONNECTION_TIMEOUT_ERR_CODE                        0x08U
#define HCI_CONNECTION_ALREADY_EXISTS_ERR_CODE                 0x0BU
#define HCI_COMMAND_DISALLOWED_ERR_CODE                        0x0CU
#define HCI_UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE_ERR_CODE    0x11U
#define HCI_INVALID_HCI_COMMAND_PARAMETERS_ERR_CODE            0x12U
#define HCI_REMOTE_USER_TERMINATED_CONNECTION_ERR_CODE         0x13U
#define HCI_CONNECTION_TERMINATED_BY_LOCAL_HOST_ERR_CODE       0x16U
#define HCI_LMP_FEATURE_ERR_CODE                               0x1AU
#define HCI_INVALID_LL_PARAMETERS_ERR_CODE                     0x1EU
#define HCI_UNSPECIFIED_ERROR_ERR_CODE                         0x1FU
#define HCI_UNSUPPORTED_LL_PARAMETER_VALUE_ERR_CODE            0x20U
#define HCI_LL_RESPONSE_TIMEOUT_ERR_CODE                       0x22U
#define HCI_LL_PROCEDURE_COLLISION_ERR_CODE                    0x23U
#define HCI_LMP_PDU_NOT_ALLOWED_ERR_CODE                       0x24U
#define HCI_INSTANT_PASSED_ERR_CODE                            0x28U
#define HCI_DIFFERENT_TRANSACTION_COLLISION_ERR_CODE           0x2AU
#define HCI_PARAMETER_OUT_OF_MANDATORY_RANGE_ERR_CODE          0x30U
#define HCI_HOST_BUSY_PAIRING_ERR_CODE                         0x38U
#define HCI_CONTROLLER_BUSY_ERR_CODE                           0x3AU
#define HCI_ADVERTISING_TIMEOUT_ERR_CODE                       0x3CU
#define HCI_CONNECTION_TERMINATED_DUE_TO_MIC_FAILURE_ERR_CODE  0x3DU
#define HCI_CONNECTION_FAILED_TO_BE_ESTABLISHED_ERR_CODE       0x3EU
#define HCI_UNKNOWN_ADVERTISING_IDENTIFIER_ERR_CODE            0x42U
#define HCI_ADVERTISING_LIMIT_REACHED_ERR_CODE                 0x43U
#define HCI_PACKET_TOO_LONG_ERR_CODE                           0x45U

/* HCI_LE_Set_Advertising_Parameters: Advertising_Type */
#define HCI_ADV_TYPE_ADV_IND                           0x00U
#define HCI_ADV_TYPE_ADV_DIRECT_IND_HDC                0x01U
#define HCI_ADV_TYPE_ADV_SCAN_IND                      0x02U
#define HCI_ADV_TYPE_ADV_NONCONN_IND                   0x03U
#define HCI_ADV_TYPE_ADV_DIRECT_IND_LDC                0x04U

/* HCI_LE_Set_[Advertising/Scan]_Parameters: Own_Address_Type */
#define HCI_OWN_ADDR_TYPE_PUBLIC                       0x00U
#define HCI_OWN_ADDR_TYPE_RANDOM                       0x01U
#define HCI_OWN_ADDR_TYPE_RP_OR_PUBLIC                 0x02U
#define HCI_OWN_ADDR_TYPE_RP_OR_RANDOM                 0x03U

/* HCI_LE_Set_Scan_Parameters: LE_Scan_Type */
#define HCI_SCAN_TYPE_PASSIVE                          0x00U
#define HCI_SCAN_TYPE_ACTIVE                           0x01U

/* HCI_LE_Set_Scan_Parameters: Scanning_Filter_Policy */
#define HCI_SCAN_FILTER_NO                             0x00U
#define HCI_SCAN_FILTER_WHITELIST                      0x01U
#define HCI_SCAN_FILTER_NO_EVEN_RPA                    0x02U
#define HCI_SCAN_FILTER_WHITELIST_BUT_RPA              0x03U

/* HCI_LE_Create_Connection: Initiator_Filter_Policy */
#define HCI_INIT_FILTER_NO                             0x00U
#define HCI_INIT_FILTER_WHITELIST                      0x01U

/* HCI_LE_Read_PHY: TX_PHY */
#define HCI_TX_PHY_LE_1M                               0x01U
#define HCI_TX_PHY_LE_2M                               0x02U
#define HCI_TX_PHY_LE_CODED                            0x03U

/* HCI_LE_Read_PHY: RX_PHY */
#define HCI_RX_PHY_LE_1M                               0x01U
#define HCI_RX_PHY_LE_2M                               0x02U
#define HCI_RX_PHY_LE_CODED                            0x03U

/* HCI_LE_Set_PHY: ALL_PHYS */
#define HCI_ALL_PHYS_TX_NO_PREF                        0x01U
#define HCI_ALL_PHYS_RX_NO_PREF                        0x02U

/* HCI_LE_Set_PHY: TX_PHYS */
#define HCI_TX_PHYS_LE_1M_PREF                         0x01U
#define HCI_TX_PHYS_LE_2M_PREF                         0x02U
#define HCI_TX_PHYS_LE_CODED_PREF                      0x04U

/* HCI_LE_Set_PHY: RX_PHYS */
#define HCI_RX_PHYS_LE_1M_PREF                         0x01U
#define HCI_RX_PHYS_LE_2M_PREF                         0x02U
#define HCI_RX_PHYS_LE_CODED_PREF                      0x04U

/* HCI_LE_Set_Extended_Advertising_Parameters: Advertising_Event_Properties */
#define HCI_ADV_EVENT_PROP_CONNECTABLE                 0x0001U
#define HCI_ADV_EVENT_PROP_SCANNABLE                   0x0002U
#define HCI_ADV_EVENT_PROP_DIRECTED                    0x0004U
#define HCI_ADV_EVENT_PROP_HDC_DIRECTED                0x0008U
#define HCI_ADV_EVENT_PROP_LEGACY                      0x0010U
#define HCI_ADV_EVENT_PROP_ANONYMOUS                   0x0020U
#define HCI_ADV_EVENT_PROP_TXPOWER_INC                 0x0040U

/* HCI_LE_Set_Extended_Advertising_Parameters: Primary_Advertising_PHY */
#define HCI_PRIMARY_ADV_PHY_LE_1M                      0x01U
#define HCI_PRIMARY_ADV_PHY_LE_CODED                   0x03U

/* HCI_LE_Set_Extended_Advertising_Data: Operation */
#define HCI_SET_ADV_DATA_OPERATION_INTERMEDIATE        0x00U
#define HCI_SET_ADV_DATA_OPERATION_FIRST               0x01U
#define HCI_SET_ADV_DATA_OPERATION_LAST                0x02U
#define HCI_SET_ADV_DATA_OPERATION_COMPLETE            0x03U
#define HCI_SET_ADV_DATA_OPERATION_UNCHANGED           0x04U

/* HCI_LE_Advertising_Report: Event_Type */
#define HCI_ADV_EVT_TYPE_ADV_IND                       0x00U
#define HCI_ADV_EVT_TYPE_ADV_DIRECT_IND                0x01U
#define HCI_ADV_EVT_TYPE_ADV_SCAN_IND                  0x02U
#define HCI_ADV_EVT_TYPE_ADV_NONCONN_IND               0x03U
#define HCI_ADV_EVT_TYPE_SCAN_RSP                      0x04U

/* HCI_LE_Set_Extended_Scan_Parameters: Scanning_PHYs */
#define HCI_SCANNING_PHYS_LE_1M                        0x01U
#define HCI_SCANNING_PHYS_LE_CODED                     0x04U

/* HCI_LE_Receiver_Test/HCI_LE_Transmitter_Test [v2]: PHY */
#define HCI_TEST_PHY_LE_1M                             0x01U
#define HCI_TEST_PHY_LE_2M                             0x02U

/* HCI_LE_Connection_Complete/HCI_LE_Enhanced_Connection_Complete: Role */
#define HCI_ROLE_CENTRAL                               0x00U
#define HCI_ROLE_PERIPHERAL                            0x01U


#endif /* BLE_STD_H__ */