forked from arduino-libraries/ArduinoBLE
-
Notifications
You must be signed in to change notification settings - Fork 17
/
patch0.patch
296 lines (267 loc) · 11.8 KB
/
patch0.patch
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
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
diff --git a/src/utility/STM32Cube_FW/README.md b/src/utility/STM32Cube_FW/README.md
index 0d39a3e..97c4ceb 100644
--- a/src/utility/STM32Cube_FW/README.md
+++ b/src/utility/STM32Cube_FW/README.md
@@ -1,6 +1,6 @@
## Source
-[STMicroelectronics/STM32CubeWB Release v1.17.0](https://github.com/STMicroelectronics/STM32CubeWB/releases/tag/v1.17.0)
-- Application: [BLE_TransparentMode](https://github.com/STMicroelectronics/STM32CubeWB/tree/v1.17.0/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode)
+[STMicroelectronics/STM32CubeWB Release v1.18.0](https://github.com/STMicroelectronics/STM32CubeWB/releases/tag/v1.18.0)
+- Application: [BLE_TransparentMode](https://github.com/STMicroelectronics/STM32CubeWB/tree/v1.18.0/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_TransparentMode)
diff --git a/src/utility/STM32Cube_FW/app_conf_default.h b/src/utility/STM32Cube_FW/app_conf_default.h
index 51bd33a..846be3c 100644
--- a/src/utility/STM32Cube_FW/app_conf_default.h
+++ b/src/utility/STM32Cube_FW/app_conf_default.h
@@ -61,14 +61,14 @@
#define CFG_GAP_DEVICE_NAME_LENGTH (8)
/**
-* Identity root key used to derive LTK and CSRK
+* Identity root key used to derive IRK and DHK(Legacy)
*/
-#define CFG_BLE_IRK {0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0}
+#define CFG_BLE_IR {0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0}
/**
-* Encryption root key used to derive LTK and CSRK
+* Encryption root key used to derive LTK(Legacy) and CSRK
*/
-#define CFG_BLE_ERK {0xFE, 0xDC, 0xBA, 0x09, 0x87, 0x65, 0x43, 0x21, 0xFE, 0xDC, 0xBA, 0x09, 0x87, 0x65, 0x43, 0x21}
+#define CFG_BLE_ER {0xFE, 0xDC, 0xBA, 0x09, 0x87, 0x65, 0x43, 0x21, 0xFE, 0xDC, 0xBA, 0x09, 0x87, 0x65, 0x43, 0x21}
/**
* SMPS supply
@@ -166,12 +166,12 @@
#define CFG_BLE_DATA_LENGTH_EXTENSION 1
/**
- * Sleep clock accuracy in Slave mode (ppm value)
+ * Sleep clock accuracy in Peripheral mode (ppm value)
*/
-#define CFG_BLE_SLAVE_SCA 500
+#define CFG_BLE_PERIPHERAL_SCA 500
/**
- * Sleep clock accuracy in Master mode
+ * Sleep clock accuracy in Central mode
* 0 : 251 ppm to 500 ppm
* 1 : 151 ppm to 250 ppm
* 2 : 101 ppm to 150 ppm
@@ -181,7 +181,7 @@
* 6 : 21 ppm to 30 ppm
* 7 : 0 ppm to 20 ppm
*/
-#define CFG_BLE_MASTER_SCA 0
+#define CFG_BLE_CENTRAL_SCA 0
/**
* LsSource
@@ -202,7 +202,7 @@
#define CFG_BLE_HSE_STARTUP_TIME 0x148
/**
- * Maximum duration of the connection event when the device is in Slave mode in units of 625/256 us (~2.44 us)
+ * Maximum duration of the connection event when the device is in Peripheral mode in units of 625/256 us (~2.44 us)
*/
#define CFG_BLE_MAX_CONN_EVENT_LENGTH (0xFFFFFFFF)
@@ -318,10 +318,11 @@
/* BLE core version (16-bit signed integer).
* - SHCI_C2_BLE_INIT_BLE_CORE_5_2
* - SHCI_C2_BLE_INIT_BLE_CORE_5_3
- * which are used to set: 11(5.2), 12(5.3).
+ * - SHCI_C2_BLE_INIT_BLE_CORE_5_4
+ * which are used to set: 11(5.2), 12(5.3), 13(5.4).
*/
-#define CFG_BLE_CORE_VERSION (SHCI_C2_BLE_INIT_BLE_CORE_5_3)
+#define CFG_BLE_CORE_VERSION (SHCI_C2_BLE_INIT_BLE_CORE_5_4)
/******************************************************************************
* Transport Layer
@@ -486,13 +487,13 @@ typedef enum
* Debug
******************************************************************************/
/**
- * When set, this resets some hw resources to set the device in the same state than the power up
- * The FW resets only register that may prevent the FW to run properly
+ * When set, this resets some hw resources to put the device in the same state as at power up.
+ * It resets only register that may prevent the FW to run properly.
*
* This shall be set to 0 in a final product
*
*/
-#define CFG_HW_RESET_BY_FW 1
+#define CFG_HW_RESET_BY_FW 0
/**
* keep debugger enabled while in any low power mode when set to 1
diff --git a/src/utility/STM32Cube_FW/shci.c b/src/utility/STM32Cube_FW/shci.c
index eaa35d7..5c32555 100644
--- a/src/utility/STM32Cube_FW/shci.c
+++ b/src/utility/STM32Cube_FW/shci.c
@@ -644,6 +644,26 @@ SHCI_CmdStatus_t SHCI_C2_802_15_4_DeInit( void )
return (SHCI_CmdStatus_t)(((TL_CcEvt_t*)(p_rsp->evtserial.evt.payload))->payload[0]);
}
+SHCI_CmdStatus_t SHCI_C2_SetSystemClock( SHCI_C2_SET_SYSTEM_CLOCK_Cmd_Param_t clockSel )
+{
+ /**
+ * Buffer is large enough to hold command complete without payload
+ */
+ uint8_t local_buffer[TL_BLEEVT_CC_BUFFER_SIZE];
+ TL_EvtPacket_t * p_rsp;
+
+ p_rsp = (TL_EvtPacket_t *)local_buffer;
+
+ local_buffer[0] = (uint8_t)clockSel;
+
+ shci_send( SHCI_OPCODE_C2_SET_SYSTEM_CLOCK,
+ 1,
+ local_buffer,
+ p_rsp );
+
+ return (SHCI_CmdStatus_t)(((TL_CcEvt_t*)(p_rsp->evtserial.evt.payload))->payload[0]);
+}
+
/**
* Local System COMMAND
* These commands are NOT sent to the CPU2
diff --git a/src/utility/STM32Cube_FW/shci.h b/src/utility/STM32Cube_FW/shci.h
index 750fa97..30ae10c 100644
--- a/src/utility/STM32Cube_FW/shci.h
+++ b/src/utility/STM32Cube_FW/shci.h
@@ -227,6 +227,7 @@ extern "C" {
SHCI_OCF_C2_CONCURRENT_GET_NEXT_BLE_EVT_TIME,
SHCI_OCF_C2_CONCURRENT_ENABLE_NEXT_802154_EVT_NOTIFICATION,
SHCI_OCF_C2_802_15_4_DEINIT,
+ SHCI_OCF_C2_SET_SYSTEM_CLOCK,
} SHCI_OCF_t;
#define SHCI_OPCODE_C2_FUS_GET_STATE (( SHCI_OGF << 10) + SHCI_OCF_C2_FUS_GET_STATE)
@@ -436,7 +437,7 @@ extern "C" {
* PrWriteListSize
* NOTE: This parameter is ignored by the CPU2 when the parameter "Options" is set to "LL_only" ( see Options description in that structure )
*
- * Maximum number of supported �prepare write request�
+ * Maximum number of supported "prepare write request"
* - Min value: given by the macro DEFAULT_PREP_WRITE_LIST_SIZE
* - Max value: a value higher than the minimum required can be specified, but it is not recommended
*/
@@ -464,20 +465,20 @@ extern "C" {
uint16_t AttMtu;
/**
- * SlaveSca
- * The sleep clock accuracy (ppm value) that used in BLE connected slave mode to calculate the window widening
+ * PeripheralSca
+ * The sleep clock accuracy (ppm value) that used in BLE connected Peripheral mode to calculate the window widening
* (in combination with the sleep clock accuracy sent by master in CONNECT_REQ PDU),
* refer to BLE 5.0 specifications - Vol 6 - Part B - chap 4.5.7 and 4.2.2
* - Min value: 0
* - Max value: 500 (worst possible admitted by specification)
*/
- uint16_t SlaveSca;
+ uint16_t PeripheralSca;
/**
- * MasterSca
- * The sleep clock accuracy handled in master mode. It is used to determine the connection and advertising events timing.
+ * CentralSca
+ * The sleep clock accuracy handled in Central mode. It is used to determine the connection and advertising events timing.
* It is transmitted to the slave in CONNEC_REQ PDU used by the slave to calculate the window widening,
- * see SlaveSca and Bluetooth Core Specification v5.0 Vol 6 - Part B - chap 4.5.7 and 4.2.2
+ * see PeripheralSca and Bluetooth Core Specification v5.0 Vol 6 - Part B - chap 4.5.7 and 4.2.2
* Possible values:
* - 251 ppm to 500 ppm: 0
* - 151 ppm to 250 ppm: 1
@@ -488,7 +489,7 @@ extern "C" {
* - 21 ppm to 30 ppm: 6
* - 0 ppm to 20 ppm: 7
*/
- uint8_t MasterSca;
+ uint8_t CentralSca;
/**
* LsSource
@@ -503,7 +504,7 @@ extern "C" {
* MaxConnEventLength
* This parameter determines the maximum duration of a slave connection event. When this duration is reached the slave closes
* the current connections event (whatever is the CE_length parameter specified by the master in HCI_CREATE_CONNECTION HCI command),
- * expressed in units of 625/256 �s (~2.44 �s)
+ * expressed in units of 625/256 us (~2.44 us)
* - Min value: 0 (if 0 is specified, the master and slave perform only a single TX-RX exchange per connection event)
* - Max value: 1638400 (4000 ms). A higher value can be specified (max 0xFFFFFFFF) but results in a maximum connection time
* of 4000 ms as specified. In this case the parameter is not applied, and the predicted CE length calculated on slave is not shortened
@@ -512,7 +513,7 @@ extern "C" {
/**
* HsStartupTime
- * Startup time of the high speed (16 or 32 MHz) crystal oscillator in units of 625/256 �s (~2.44 �s).
+ * Startup time of the high speed (16 or 32 MHz) crystal oscillator in units of 625/256 us (~2.44 us).
* - Min value: 0
* - Max value: 820 (~2 ms). A higher value can be specified, but the value that implemented in stack is forced to ~2 ms
*/
@@ -598,7 +599,7 @@ extern "C" {
int16_t rx_path_compens;
/* BLE core specification version (8-bit unsigned integer).
- * values as: 11(5.2), 12(5.3)
+ * values as: 11(5.2), 12(5.3), 13(5.4)
*/
uint8_t ble_core_version;
@@ -829,6 +830,7 @@ extern "C" {
/** No response parameters*/
#define SHCI_OPCODE_C2_CONFIG (( SHCI_OGF << 10) + SHCI_OCF_C2_CONFIG)
+
/** Command parameters */
typedef PACKED_STRUCT{
uint8_t PayloadCmdSize;
@@ -843,6 +845,15 @@ extern "C" {
#define SHCI_OPCODE_C2_802_15_4_DEINIT (( SHCI_OGF << 10) + SHCI_OCF_C2_802_15_4_DEINIT)
+#define SHCI_OPCODE_C2_SET_SYSTEM_CLOCK (( SHCI_OGF << 10) + SHCI_OCF_C2_SET_SYSTEM_CLOCK)
+ /** Command parameters */
+ typedef enum
+ {
+ SET_SYSTEM_CLOCK_HSE_TO_PLL,
+ SET_SYSTEM_CLOCK_PLL_ON_TO_HSE,
+ SET_SYSTEM_CLOCK_PLL_OFF_TO_HSE,
+ }SHCI_C2_SET_SYSTEM_CLOCK_Cmd_Param_t;
+
/**
* PayloadCmdSize
* Value that shall be used
@@ -859,8 +870,8 @@ extern "C" {
/**
* Device ID
*/
-#define SHCI_C2_CONFIG_STM32WB55xx (0x495)
-#define SHCI_C2_CONFIG_STM32WB15xx (0x494)
+#define SHCI_C2_CONFIG_STM32WB55xx (0x495)
+#define SHCI_C2_CONFIG_STM32WB15xx (0x494)
/**
* Config1
@@ -878,7 +889,7 @@ extern "C" {
*/
#define SHCI_C2_CONFIG_EVTMASK1_BIT0_ERROR_NOTIF_ENABLE (1<<0)
#define SHCI_C2_CONFIG_EVTMASK1_BIT1_BLE_NVM_RAM_UPDATE_ENABLE (1<<1)
-#define SHCI_C2_CONFIG_EVTMASK1_BIT2_THREAD_NVM_RAM_UPDATE_ENABLE (1<<2)
+#define SHCI_C2_CONFIG_EVTMASK1_BIT2_THREAD_NVM_RAM_UPDATE_ENABLE (1<<2)
#define SHCI_C2_CONFIG_EVTMASK1_BIT3_NVM_START_WRITE_ENABLE (1<<3)
#define SHCI_C2_CONFIG_EVTMASK1_BIT4_NVM_END_WRITE_ENABLE (1<<4)
#define SHCI_C2_CONFIG_EVTMASK1_BIT5_NVM_START_ERASE_ENABLE (1<<5)
@@ -965,7 +976,8 @@ extern "C" {
#define INFO_STACK_TYPE_ZIGBEE_RFD 0x31
#define INFO_STACK_TYPE_MAC 0x40
#define INFO_STACK_TYPE_BLE_THREAD_FTD_STATIC 0x50
-#define INFO_STACK_TYPE_BLE_THREAD_FTD_DYAMIC 0x51
+#define INFO_STACK_TYPE_BLE_THREAD_FTD_DYNAMIC 0x51
+#define INFO_STACK_TYPE_BLE_THREAD_LIGHT_DYNAMIC 0x52
#define INFO_STACK_TYPE_802154_LLD_TESTS 0x60
#define INFO_STACK_TYPE_802154_PHY_VALID 0x61
#define INFO_STACK_TYPE_BLE_PHY_VALID 0x62
@@ -1364,9 +1376,24 @@ typedef struct {
*/
SHCI_CmdStatus_t SHCI_C2_802_15_4_DeInit( void );
- #ifdef __cplusplus
+ /**
+ * SHCI_C2_SetSystemClock
+ * @brief Request CPU2 to change system clock
+ *
+ * @param clockSel: It can be one of the following list
+ * - SET_SYSTEM_CLOCK_HSE_TO_PLL : CPU2 set system clock to PLL, PLL must be configured and started before.
+ * - SET_SYSTEM_CLOCK_PLL_ON_TO_HSE : CPU2 set System clock to HSE, PLL is still ON after command execution.
+ * - SET_SYSTEM_CLOCK_PLL_OFF_TO_HSE : CPU2 set System clock to HSE, PLL is turned OFF after command execution.
+ *
+ * @retval Status
+ */
+ SHCI_CmdStatus_t SHCI_C2_SetSystemClock( SHCI_C2_SET_SYSTEM_CLOCK_Cmd_Param_t clockSel );
+
+
+#ifdef __cplusplus
}
#endif
#endif /*__SHCI_H */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/