diff --git a/Drivers/CMSIS/Device/ST/STM32WBxx b/Drivers/CMSIS/Device/ST/STM32WBxx index 4c4cfc931..d6a7fa2e7 160000 --- a/Drivers/CMSIS/Device/ST/STM32WBxx +++ b/Drivers/CMSIS/Device/ST/STM32WBxx @@ -1 +1 @@ -Subproject commit 4c4cfc931e207285337e8810fb78f075b6bb4088 +Subproject commit d6a7fa2e7de084f5e5e47f2ab88b022fe9b50e5a diff --git a/Drivers/STM32WBxx_HAL_Driver b/Drivers/STM32WBxx_HAL_Driver index c7da3766e..81df6543f 160000 --- a/Drivers/STM32WBxx_HAL_Driver +++ b/Drivers/STM32WBxx_HAL_Driver @@ -1 +1 @@ -Subproject commit c7da3766e92e93b238edffd1bfee847c1e2a93ca +Subproject commit 81df6543fe2f3ff8307285c06967a3412f0d50d6 diff --git a/LICENSE.md b/LICENSE.md index 66a4a46af..6b47176ad 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -16,5 +16,5 @@ | STM32_Audio_PDM | STMicroelectronics | SLA0047 | | STM32_WPAN | STMicroelectronics | SLA0044 | | Azure RTOS ThreadX | Microsoft Corporation | Microsoft Software License for Azure RTOS | -| STM32 Projects | STMicroelectronics | SLA0044 (BSD-3-Clause for basic Examples) | +| STM32 Projects | STMicroelectronics | SLA0044 | | STM32 Utilities | STMicroelectronics | BSD-3-Clause | diff --git a/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src/usbd_customhid.c b/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src/usbd_customhid.c index 8207618a1..c64ba9913 100644 --- a/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src/usbd_customhid.c +++ b/Middlewares/ST/STM32_USB_Device_Library/Class/CustomHID/Src/usbd_customhid.c @@ -479,7 +479,15 @@ static uint8_t USBD_CUSTOM_HID_Setup(USBD_HandleTypeDef *pdev, } } - (void)USBD_CtlSendData(pdev, pbuf, len); + if (pbuf != NULL) + { + (void)USBD_CtlSendData(pdev, pbuf, len); + } + else + { + USBD_CtlError(pdev, req); + ret = USBD_FAIL; + } break; case USB_REQ_GET_INTERFACE: diff --git a/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.c b/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.c index 3a1b29ef4..67ba12c48 100644 --- a/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.c +++ b/Middlewares/ST/STM32_USB_Device_Library/Class/DFU/Src/usbd_dfu.c @@ -512,6 +512,7 @@ static uint8_t USBD_DFU_EP0_RxReady(USBD_HandleTypeDef *pdev) return (uint8_t)USBD_OK; } + /** * @brief USBD_DFU_EP0_TxReady * handle EP0 TRx Ready event @@ -525,7 +526,7 @@ static uint8_t USBD_DFU_EP0_TxReady(USBD_HandleTypeDef *pdev) uint32_t addr; USBD_DFU_HandleTypeDef *hdfu = (USBD_DFU_HandleTypeDef *)pdev->pClassDataCmsit[pdev->classId]; USBD_DFU_MediaTypeDef *DfuInterface = (USBD_DFU_MediaTypeDef *)pdev->pUserData[pdev->classId]; -#if (USBD_DFU_VENDOR_CMD_ENABLED == 1U) +#if (USBD_DFU_VENDOR_CMD_ENABLED == 1U) || (USBD_DFU_VENDOR_CHECK_ENABLED == 1U) uint32_t VendorStatus = 0U; #endif /* USBD_DFU_VENDOR_CMD_ENABLED */ @@ -619,7 +620,6 @@ static uint8_t USBD_DFU_EP0_TxReady(USBD_HandleTypeDef *pdev) hdfu->dev_status[4] = hdfu->dev_state; return (uint8_t)USBD_FAIL; } - } #if (USBD_DFU_VENDOR_CMD_ENABLED == 1U) else @@ -647,13 +647,57 @@ static uint8_t USBD_DFU_EP0_TxReady(USBD_HandleTypeDef *pdev) } else { +#if (USBD_DFU_VENDOR_CMD_ENABLED == 1U) + if (hdfu->wlength > 0U) + { +#if (USBD_DFU_VENDOR_CHECK_ENABLED == 1U) + if (DfuInterface->VendorCheck(hdfu->buffer.d8, IS_DFU_DOWNLOAD, &VendorStatus) != USBD_OK) + { + /* Update the state machine */ + hdfu->dev_state = DFU_STATE_ERROR; + hdfu->dev_status[0] = (uint8_t)VendorStatus; + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + return (uint8_t)USBD_FAIL; + } +#endif /* USBD_DFU_VENDOR_CHECK_ENABLED */ + + /* Vendor specific DFU CMD */ + if (DfuInterface->VendorDownloadCMD(hdfu->buffer.d8, hdfu->wblock_num, + hdfu->wlength, &VendorStatus) != USBD_OK) + { + /* Update the state machine */ + hdfu->dev_state = DFU_STATE_ERROR; + hdfu->dev_status[0] = (uint8_t)VendorStatus; + hdfu->dev_status[1] = 0U; + hdfu->dev_status[2] = 0U; + hdfu->dev_status[3] = 0U; + hdfu->dev_status[4] = hdfu->dev_state; + return (uint8_t)USBD_FAIL; + } + } + else + { + /* Reset the block number */ + hdfu->wblock_num = 0U; + + /* Call the error management function (command will be NAKed) */ + req.bmRequest = 0U; + req.wLength = 1U; + USBD_CtlError(pdev, &req); + } +#else /* Reset the global length and block number */ hdfu->wlength = 0U; hdfu->wblock_num = 0U; + /* Call the error management function (command will be NAKed) */ req.bmRequest = 0U; req.wLength = 1U; USBD_CtlError(pdev, &req); +#endif /* USBD_DFU_VENDOR_CMD_ENABLED */ } } /* Regular Download Command */ @@ -856,10 +900,10 @@ static void DFU_Download(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) { USBD_DFU_HandleTypeDef *hdfu = (USBD_DFU_HandleTypeDef *)pdev->pClassDataCmsit[pdev->classId]; -#if (USBD_DFU_VENDOR_CMD_ENABLED == 1U) +#if (USBD_DFU_VENDOR_CHECK_ENABLED == 1U) USBD_DFU_MediaTypeDef *DfuInterface = (USBD_DFU_MediaTypeDef *)pdev->pUserData[pdev->classId]; uint32_t VendorStatus = 0U; -#endif /* USBD_DFU_VENDOR_CMD_ENABLED */ +#endif /* USBD_DFU_VENDOR_CHECK_ENABLED */ if (hdfu == NULL) { diff --git a/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c b/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c index 186a309cc..0576c877c 100644 --- a/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c +++ b/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c @@ -83,11 +83,11 @@ /** * @brief USBD_Init - * Initializes the device stack and load the class driver + * Initialize the device stack and load the class driver * @param pdev: device instance * @param pdesc: Descriptor structure address * @param id: Low level core index - * @retval None + * @retval status: USBD Status */ USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id) @@ -142,9 +142,9 @@ USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, /** * @brief USBD_DeInit - * Re-Initialize the device library + * De-Initialize the device library * @param pdev: device instance - * @retval status: status + * @retval status: USBD Status */ USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev) { @@ -195,7 +195,7 @@ USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev) /** * @brief USBD_RegisterClass * Link class driver to Device Core. - * @param pDevice : Device Handle + * @param pdev: Device Handle * @param pclass: Class handle * @retval USBD Status */ @@ -228,7 +228,7 @@ USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDe #endif /* USE_USB_FS */ /* Increment the NumClasses */ - pdev->NumClasses ++; + pdev->NumClasses++; return USBD_OK; } @@ -243,10 +243,10 @@ USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDe * @param EpAddr: Endpoint Address handle * @retval USBD Status */ -USBD_StatusTypeDef USBD_RegisterClassComposite(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass, - USBD_CompositeClassTypeDef classtype, uint8_t *EpAddr) +USBD_StatusTypeDef USBD_RegisterClassComposite(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass, + USBD_CompositeClassTypeDef classtype, uint8_t *EpAddr) { - USBD_StatusTypeDef ret = USBD_OK; + USBD_StatusTypeDef ret = USBD_OK; uint16_t len = 0U; if ((pdev->classId < USBD_MAX_SUPPORTED_CLASS) && (pdev->NumClasses < USBD_MAX_SUPPORTED_CLASS)) @@ -291,7 +291,7 @@ USBD_StatusTypeDef USBD_RegisterClassComposite(USBD_HandleTypeDef *pdev, USBD_C /** * @brief USBD_UnRegisterClassComposite * UnLink all composite class drivers from Device Core. - * @param pDevice : Device Handle + * @param pdev: Device Handle * @retval USBD Status */ USBD_StatusTypeDef USBD_UnRegisterClassComposite(USBD_HandleTypeDef *pdev) @@ -374,6 +374,7 @@ USBD_StatusTypeDef USBD_RegisterDevStateCallback(USBD_HandleTypeDef *pdev, USBD_ return USBD_OK; } #endif /* USBD_USER_REGISTER_CALLBACK */ + /** * @brief USBD_Start * Start the USB Device Core. @@ -499,7 +500,7 @@ USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) * Clear current configuration * @param pdev: device instance * @param cfgidx: configuration index - * @retval status: USBD_StatusTypeDef + * @retval status */ USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) { @@ -539,6 +540,7 @@ USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx) * @brief USBD_LL_SetupStage * Handle the setup stage * @param pdev: device instance + * @param psetup: setup packet buffer pointer * @retval status */ USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup) @@ -673,6 +675,7 @@ USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, * Handle data in stage * @param pdev: device instance * @param epnum: endpoint index + * @param pdata: data pointer * @retval status */ USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, @@ -765,7 +768,6 @@ USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, * @param pdev: device instance * @retval status */ - USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev) { USBD_StatusTypeDef ret = USBD_OK; @@ -848,7 +850,6 @@ USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, * @param pdev: device instance * @retval status */ - USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev) { if (pdev->dev_state != USBD_STATE_SUSPENDED) @@ -867,7 +868,6 @@ USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev) * @param pdev: device instance * @retval status */ - USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev) { if (pdev->dev_state == USBD_STATE_SUSPENDED) @@ -884,7 +884,6 @@ USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev) * @param pdev: device instance * @retval status */ - USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev) { /* The SOF event can be distributed for all classes that support it */ @@ -925,6 +924,7 @@ USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev) * @brief USBD_LL_IsoINIncomplete * Handle iso in incomplete event * @param pdev: device instance + * @param epnum: Endpoint number * @retval status */ USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, @@ -950,6 +950,7 @@ USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, * @brief USBD_LL_IsoOUTIncomplete * Handle iso out incomplete event * @param pdev: device instance + * @param epnum: Endpoint number * @retval status */ USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, diff --git a/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c b/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c index af9a0154c..814b810c5 100644 --- a/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c +++ b/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ctlreq.c @@ -46,7 +46,9 @@ /** @defgroup USBD_REQ_Private_Defines * @{ */ - +#ifndef USBD_MAX_STR_DESC_SIZ +#define USBD_MAX_STR_DESC_SIZ 64U +#endif /* USBD_MAX_STR_DESC_SIZ */ /** * @} */ @@ -421,7 +423,7 @@ USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef * Handle Get Descriptor requests * @param pdev: device instance * @param req: usb request - * @retval status + * @retval None */ static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) { @@ -675,7 +677,7 @@ static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *r * Set device address * @param pdev: device instance * @param req: usb request - * @retval status + * @retval None */ static void USBD_SetAddress(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) { @@ -814,7 +816,7 @@ static USBD_StatusTypeDef USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReq * Handle Get device configuration request * @param pdev: device instance * @param req: usb request - * @retval status + * @retval None */ static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) { @@ -848,7 +850,7 @@ static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) * Handle Get Status request * @param pdev: device instance * @param req: usb request - * @retval status + * @retval None */ static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) { @@ -889,7 +891,7 @@ static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) * Handle Set device feature request * @param pdev: device instance * @param req: usb request - * @retval status + * @retval None */ static void USBD_SetFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) { @@ -915,7 +917,7 @@ static void USBD_SetFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) * Handle clear device feature request * @param pdev: device instance * @param req: usb request - * @retval status + * @retval None */ static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) { @@ -941,8 +943,8 @@ static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) /** * @brief USBD_ParseSetupRequest * Copy buffer into setup structure - * @param pdev: device instance * @param req: usb request + * @param pdata: setup data pointer * @retval None */ void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata) @@ -1002,7 +1004,7 @@ void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len) } pdesc = desc; - *len = ((uint16_t)USBD_GetLen(pdesc) * 2U) + 2U; + *len = MIN(USBD_MAX_STR_DESC_SIZ, ((uint16_t)USBD_GetLen(pdesc) * 2U) + 2U); unicode[idx] = *(uint8_t *)len; idx++; diff --git a/Middlewares/ST/STM32_USB_Device_Library/Release_Notes.html b/Middlewares/ST/STM32_USB_Device_Library/Release_Notes.html index 31e63f7b6..94390d06a 100644 --- a/Middlewares/ST/STM32_USB_Device_Library/Release_Notes.html +++ b/Middlewares/ST/STM32_USB_Device_Library/Release_Notes.html @@ -60,6 +60,35 @@
Headline | +
---|
USB Core: | +
Minor enhancement; add a check on device string descriptor length | +
USB DFU Class: | +
Improve DFU Vendor Commands support | +
BLE-Mesh:
BLE-Mesh:
Interface:
Interface:
General:
General:
BLE:
General:
First release
Y
Y
0xFC2F
+0xFC30
0xFC31
@@ -2878,6 +2880,42 @@RSSI (signed integer). Units: dBm.
This command encrypts or decrypts data following the Encrypted Advertising Data scheme.
When encryption mode is selected, In_Data shall only contain the Payload field to encrypt. The command adds the Randomizer and MIC fields in the result. The result data length (Out_Data_Length) is equal to the input length plus 9.
When decryption mode is selected, In_Data shall contain the full Encrypted Data (Randomizer + Payload + MIC). The result data length (Out_Data_Length) is equal to the input length minus 9.
If the decryption fails, the returned status is BLE_STATUS_FAILED, otherwise it is BLE_STATUS_SUCCESS.
Note: the In_Data_Length value must not exceed (BLE_CMD_MAX_PARAM_LEN - 27) i.e. 228 for BLE_CMD_MAX_PARAM_LEN default value.
Parameter | Size | Description | Possible values |
---|---|---|---|
Mode + | 1 + | EAD operation mode: encryption or decryption. + | |
Key + | 16 + | Session key used for EAD operation (in Little Endian format). + | |
IV + | 8 + | Initialization vector used for EAD operation (in Little Endian format). + | |
In_Data_Length + | 2 + | Length of input data + | |
In_Data + | In_Data_Length + | Input data + |
Parameter | Size | Description | Possible values |
---|---|---|---|
Status + | 1 + | Status error code. + | |
Out_Data_Length + | 2 + | Length of result data + | |
Out_Data + | Out_Data_Length + | Result data + |
This command Reads Register value from the RF module.
Parameter | Size | Description | Possible values |
---|---|---|---|
Register_Address @@ -8010,4 +8048,4 @@ | |||
0x1F | +6 dBm |
Other values are reserved.
December 2018 - Rev 1.0 - First release.
February 2019 - Rev 1.1 - Modified HCI_HARDWARE_ERROR_EVENT comment.
March 2019 - Rev 1.2 - Removed unused event documentation.
March 2019 - Rev 1.3 - Modified ACI_HAL_FW_ERROR_EVENT error code.
March 2019 - Rev 1.4 - Changed default mask of HCI_SET_EVENT_MASK.
May 2019 - Rev 1.5 - Added ACI_GATT_NOTIFICATION_EXT_EVENT.
June 2019 - Rev 1.6 - Changed comment on usage of Char Handles in multiple ACI_GATT commands; Added ACI_GATT_INDICATION_EXT_EVENT.
June 2019 - Rev 1.7 - Changed descriptions of ACI_ATT_READ_BY_TYPE_REQ and ACI_GATT_READ_USING_CHAR_UUID.
July 2019 - Rev 1.8 - Reworked error codes section; Added GAP_ prefix to the GAP procedure bitmap definitions.
September 2019 - Rev 1.9 - Added ACI_GATT_READ_EXT_EVENT; Modified ACI_GAP_CONFIGURE_WHITELIST comment.
October 2019 - Rev 1.10 - Changed descriptions of ACI_GATT_WRITE_WITHOUT_RESP and ACI_GATT_SIGNED_WRITE_WITHOUT_RESP; Removed obsolete configuration data elements.
November 2019 - Rev 1.11 - Completed description of ACI_GAP_INIT; Added specific pairing status definitions.
November 2019 - Rev 1.12 - Fixed status error codes.
January 2020 - Rev 1.13 - Removed DIV unused configuration data; Fixed naming of HCI_LE_READ_REMOTE_FEATURES command and complete event.
March 2020 - Rev 1.14 - Removed unused HCI_Data_Buffer_Overflow event; Fixed naming of FW_Error_Type possible values; Fixed pairing status possible values.
March 2020 - Rev 1.15 - Added GAP scan timeout value.
April 2020 - Rev 1.16 - Fixed various format issues; Added LO and PO columns for command and event tables.
May 2020 - Rev 1.17 - Updated PO stack features; Added comment in HCI_LE_ADVERTISING_REPORT_EVENT description.
June 2020 - Rev 1.18 - Added BO column for command and event tables; Fixed advertising commands description; Fixed various format issues.
June 2020 - Rev 1.19 - Completed interval possible values for ACI_GAP_SET_DIRECT_CONNECTABLE.
July 2020 - Rev 1.20 - Added HCI_LE_SET_PRIVACY_MODE.
July 2020 - Rev 1.21 - Updated BO stack features.
September 2020 - Rev 1.22 - Fixed various minor issues.
November 2020 - Rev 1.23 - Added connection-oriented channels feature; Added HCI_LE_READ_TRANSMIT_POWER; Updated PO variant.
December 2020 - Rev 1.24 - Added BF column for command and event tables.
January 2021 - Rev 1.25 - Added Link_Status possible values.
January 2021 - Rev 1.26 - Fixed some specification references.
February 2021 - Rev 1.27 - Added ACI_HAL_SET_SLAVE_LATENCY; Updated comments of ACI_HAL_WRITE_CONFIG_DATA and ACI_HAL_READ_CONFIG_DATA.
March 2021 - Rev 1.28 - Added additional beacon feature.
April 2021 - Rev 1.29 - Removed unused ACI_HAL_SET_SMP_ENG_CONFIG.
May 2021 - Rev 1.30 - Fixed event generated by HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL and HCI_HOST_BUFFER_SIZE.
May 2021 - Rev 1.31 - Added HCI_LE_SET_ADVERTISING_DATA in BF and PO variants.
June 2021 - Rev 1.32 - Added extended advertising feature; Added HCI_DISCONNECT in BF and PO variants; Removed host privacy; Added ACI_GAP_ADD_DEVICES_TO_LIST; Added HCI_LE_CHANNEL_SELECTION_ALGORITHM_EVENT.
July 2021 - Rev 1.33 - Removed ACI_GAP_START_NAME_DISCOVERY_PROC.
July 2021 - Rev 1.34 - Updated error status codes; Added HCI_LE_CONNECTION_UPDATE in BF variant.
October 2021 - Rev 1.35 - Fixed Scanning_PHYs values; Removed HCI_LE_Directed_Advertising_Report event in BO variant; Fixed names of some HCI commands; Added SMP mode in ACI_HAL_WRITE_CONFIG_DATA.
October 2021 - Rev 1.36 - Fixed NRPA use; Fixed names of some HCI commands.
December 2021 - Rev 1.37 - Added ACI_GAP_ADV_SET_RANDOM_ADDRESS; Added comment to ACI_HAL_SCAN_REQ_REPORT_EVENT; Updated scan range for extended advertising.
January 2022 - Rev 1.38 - Added PHY update feature in BF variant; Added additional beacon feature, HCI_LE_SET_PRIVACY_MODE and HCI_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT in BF and PO variants; Added ACI_HAL_SET_SLAVE_LATENCY in BF, PO and LO variants; Removed DTM feature from PO variant.
March 2022 - Rev 1.39 - Fixed Length_Of_Test_Data possible values.
March 2022 - Rev 1.40 - Fixed LE_Event_Mask default value; Added HCI_LE_READ_RF_PATH_COMPENSATION and HCI_LE_WRITE_RF_PATH_COMPENSATION.
March 2022 - Rev 1.41 - Aligned with Bluetooth spec. v.5.3.
April 2022 - Rev 1.42 - Added "LL Only Basic" variant; Added ACI_HAL_GET_LINK_STATUS in BF and PO variants; Added ACI_HAL_GET_ANCHOR_PERIOD in BF, PO and BO variants.
May 2022 - Rev 1.43 - Fixed default value of HCI_LE_ENHANCED_CONNECTION_COMPLETE_EVENT mask; Added HCI_LE_READ_PEER_RESOLVABLE_ADDRESS, HCI_LE_READ_LOCAL_RESOLVABLE_ADDRESS, HCI_LE_ENCRYPT and DTM commands in BF and PO variants; Removed HCI_LE_READ_RF_PATH_COMPENSATION and HCI_LE_WRITE_RF_PATH_COMPENSATION from LB and BO variants; Fixed Initiating_PHYs description; Indexed extended scan and initiating parameters.
June 2022 - Rev 1.44 - Added tone feature in BF, PO, LB and BO variants.
June 2022 - Rev 1.45 - Added note for ACI_GATT_UPDATE_CHAR_VALUE; Added LL scan channel map and "no blacklist" SMP mode in ACI_HAL_WRITE_CONFIG_DATA; Fixed possible values and added slot numbers for ACI_HAL_END_OF_RADIO_ACTIVITY_EVENT; Updated possible output values of ACI_HAL_GET_LINK_STATUS; Added ACI_GATT_STORE_DB; Fixed name of HCI_LE_Directed_Advertising_Report event; Added HCI_LE_LONG_TERM_KEY_REQUEST_EVENT in BF and PO variants; Removed ACI_HAL_GET_PM_DEBUG_INFO in LO variant.
July 2022 - Rev 1.46 - Fixed Event_Mask default value; Fixed extended scan interval range; Added ACI_HAL_READ_RSSI command; Removed ACI_HAL_READ_RAW_RSSI in LO variant.
August 2022 - Rev 1.47 - Fixed extended scan window range.
September 2022 - Rev 1.48 - Added possible values for HCI_HOST_BUFFER_SIZE; Removed ACI_HAL_READ_RADIO_REG, ACI_HAL_WRITE_RADIO_REG, ACI_HAL_RX_START and ACI_HAL_RX_STOP from LO variant.
October 2022 - Rev 1.49 - Added Enhanced ATT feature; Added new commands: ACI_GATT_SEND_MULT_NOTIFICATION and ACI_GATT_READ_MULTIPLE_VAR_CHAR_VALUE; Added new events: ACI_GATT_EATT_BEARER_EVENT and ACI_GATT_MULT_NOTIFICATION_EVENT; Changed ACI_GATT_ADD_CHAR, ACI_GATT_TX_POOL_AVAILABLE_EVENT and ACI_HAL_GET_LINK_STATUS descriptions; Removed ACI_GATT_PROC_COMPLETE_EVENT from PO variant; Added note for GAP peripheral commands that only support legacy advertising; Fixed formula of RF_Channel.
November 2022 - Rev 1.50 - Added LL background scan mode in ACI_HAL_WRITE_CONFIG_DATA; Created annex for TX Power Level; Added some missing error codes; Fixed the width of the counter in description of ACI_HAL_LE_TX_TEST_PACKET_NUMBER.
January 2023 - Rev 1.51 - Completed the description of Connection_Handle for some primitives; Added error code 4 for HCI_HARDWARE_ERROR_EVENT; Completed the description of ACI_GAP_ADDR_NOT_RESOLVED_EVENT.
February 2023 - Rev 1.52 - Added new ATT error codes; Completed the description of HCI_DISCONNECTION_COMPLETE_EVENT; Removed HCI_READ_RSSI and HCI_LE_READ_BUFFER_SIZE in BO variant; Updated HCI status error codes; Added CSA2 in PO variant.
March 2023 - Rev 1.53 - Added ACI_GATT_NOTIFICATION_COMPLETE_EVENT; Added GAP service additional record number in ACI_HAL_WRITE_CONFIG_DATA; Completed description of ACI_GATT_ADD_CHAR and ACI_GATT_ADD_CHAR_DESC; Added HCI_LE_GENERATE_DHKEY_V2; Fixed description of HCI_ENCRYPTION_KEY_REFRESH_COMPLETE_EVENT, ACI_GATT_SET_EVENT_MASK, ACI_GAP_SET_EVENT_MASK and ACI_HAL_SET_EVENT_MASK; Added SC key type in ACI_HAL_WRITE_CONFIG_DATA.
May 2023 - Rev 1.54 - Changed description of ACI_GAP_SET_OOB_DATA, ACI_GAP_GET_OOB_DATA and ACI_GAP_SET_DIRECT_CONNECTABLE; Updated description of scanning and initiator filter policy; Renamed ACI_GAP_CONFIGURE_WHITELIST, ACI_HAL_SET_SLAVE_LATENCY, ACI_GAP_SLAVE_SECURITY_REQ and ACI_GAP_SLAVE_SECURITY_INITIATED_EVENT, as well as some parameter names.
June 2023 - Rev 1.55 - Changed description of ACI_HAL_SET_TX_POWER_LEVEL; Fixed maximum value of MPS; Changed note for ACI_GATT_UPDATE_CHAR_VALUE; Changed description of PHY_options; Added HCI_LE_ENHANCED_CONNECTION_COMPLETE_EVENT as "Events generated"; Updated HCI_READ_LOCAL_VERSION_INFORMATION; Added some details about bonding table.
August 2023 - Rev 1.56 - Added ACI_GAP_EXT_START_SCAN and ACI_GAP_EXT_CREATE_CONNECTION; Added possible values for FW_Error_Type.
September 2023 - Rev 1.57 - Fixed possible values of Advertising_TX_Power; Fixed possible values of PHY.
November 2023 - Rev 1.58 - Updated description of ACI_GATT_UPDATE_CHAR_VALUE and ACI_GATT_TX_POOL_AVAILABLE_EVENT; Updated description and possible values of ACI_HAL_WRITE_CONFIG_DATA.
January 2024 - Rev 1.59 - Added restriction on data length for ACI_GATT_UPDATE_CHAR_VALUE, ACI_GATT_UPDATE_CHAR_VALUE_EXT, ACI_GATT_WRITE_CHAR_VALUE, ACI_GATT_WRITE_LONG_CHAR_VALUE, ACI_GATT_WRITE_CHAR_RELIABLE, ACI_GATT_WRITE_LONG_CHAR_DESC and ACI_GATT_WRITE_CHAR_DESC; Added PHY Update in PO variant.
February 2024 - Rev 1.60 - Added "no peer debug key" bit for SMP mode in ACI_HAL_WRITE_CONFIG_DATA.