lib/stm32wb: hci: Update lib to V1.9.0 Cube version
Tested with 1.8 and 1.9 binary Signed-off-by: Erwan Gouriou <erwan.gouriou@linaro.org>
This commit is contained in:
parent
c1dee8527e
commit
5a10f27be1
|
@ -0,0 +1,104 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file dbg_trace.h
|
||||
* @author MCD Application Team
|
||||
* @brief Header for dbg_trace.c
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© Copyright (c) 2019 STMicroelectronics.
|
||||
* All rights reserved.</center></h2>
|
||||
*
|
||||
* This software component is licensed by ST under BSD 3-Clause license,
|
||||
* the "License"; You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at:
|
||||
* opensource.org/licenses/BSD-3-Clause
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __DBG_TRACE_H
|
||||
#define __DBG_TRACE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
/* External variables --------------------------------------------------------*/
|
||||
/* Exported macros -----------------------------------------------------------*/
|
||||
#if ( ( CFG_DEBUG_TRACE_FULL != 0 ) || ( CFG_DEBUG_TRACE_LIGHT != 0 ) )
|
||||
#define PRINT_LOG_BUFF_DBG(...) DbgTraceBuffer(__VA_ARGS__)
|
||||
#if ( CFG_DEBUG_TRACE_FULL != 0 )
|
||||
#define PRINT_MESG_DBG(...) do{printf("\r\n [%s][%s][%d] ", DbgTraceGetFileName(__FILE__),__FUNCTION__,__LINE__);printf(__VA_ARGS__);}while(0);
|
||||
#else
|
||||
#define PRINT_MESG_DBG printf
|
||||
#endif
|
||||
#else
|
||||
#define PRINT_LOG_BUFF_DBG(...)
|
||||
#define PRINT_MESG_DBG(...)
|
||||
#endif
|
||||
|
||||
#define PRINT_NO_MESG(...)
|
||||
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
|
||||
/**
|
||||
* @brief Request the user to initialize the peripheral to output traces
|
||||
*
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
extern void DbgOutputInit( void );
|
||||
|
||||
/**
|
||||
* @brief Request the user to sent the traces on the output peripheral
|
||||
*
|
||||
* @param p_data: Address of the buffer to be sent
|
||||
* @param size: Size of the data to be sent
|
||||
* @param cb: Function to be called when the data has been sent
|
||||
* @retval None
|
||||
*/
|
||||
extern void DbgOutputTraces( uint8_t *p_data, uint16_t size, void (*cb)(void) );
|
||||
|
||||
/**
|
||||
* @brief DbgTraceInit Initialize Logging feature.
|
||||
*
|
||||
* @param: None
|
||||
* @retval: None
|
||||
*/
|
||||
void DbgTraceInit( void );
|
||||
|
||||
/**********************************************************************************************************************/
|
||||
/** This function outputs into the log the buffer (in hex) and the provided format string and arguments.
|
||||
***********************************************************************************************************************
|
||||
*
|
||||
* @param pBuffer Buffer to be output into the logs.
|
||||
* @param u32Length Length of the buffer, in bytes.
|
||||
* @param strFormat The format string in printf() style.
|
||||
* @param ... Arguments of the format string.
|
||||
*
|
||||
**********************************************************************************************************************/
|
||||
void DbgTraceBuffer( const void *pBuffer , uint32_t u32Length , const char *strFormat , ... );
|
||||
|
||||
const char *DbgTraceGetFileName( const char *fullpath );
|
||||
|
||||
/**
|
||||
* @brief Override the standard lib function to redirect printf to USART.
|
||||
* @param handle output handle (STDIO, STDERR...)
|
||||
* @param buf buffer to write
|
||||
* @param bufsize buffer size
|
||||
* @retval Number of elements written
|
||||
*/
|
||||
size_t DbgTraceWrite(int handle, const unsigned char * buf, size_t bufSize);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /*__DBG_TRACE_H */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -45,11 +45,7 @@ extern "C" {
|
|||
#include "stm32wbxx_usb_dongle.h"
|
||||
#endif
|
||||
#ifdef USE_STM32WBXX_NUCLEO
|
||||
#ifdef STM32WB35xx
|
||||
#include "nucleo_wb35ce.h"
|
||||
#else
|
||||
#include "stm32wbxx_nucleo.h"
|
||||
#endif
|
||||
#include "stm32wbxx_nucleo.h"
|
||||
#endif
|
||||
#ifdef USE_X_NUCLEO_EPD
|
||||
#include "x_nucleo_epd.h"
|
||||
|
|
|
@ -160,6 +160,29 @@ extern "C" {
|
|||
MB_LldBleTable_t *p_lld_ble_table;
|
||||
} MB_RefTable_t;
|
||||
|
||||
/**
|
||||
* This table shall be used only in the case the CPU2 runs the FUS.
|
||||
* It is used by the command SHCI_GetWirelessFwInfo()
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t DeviceInfoTableState;
|
||||
uint8_t Reserved1;
|
||||
uint8_t LastFusActiveState;
|
||||
uint8_t LastWirelessStackState;
|
||||
uint8_t CurrentWirelessStackType;
|
||||
uint32_t SafeBootVersion;
|
||||
uint32_t FusVersion;
|
||||
uint32_t FusMemorySize;
|
||||
uint32_t WirelessStackVersion;
|
||||
uint32_t WirelessStackMemorySize;
|
||||
uint32_t WirelessFirmwareBleInfo;
|
||||
uint32_t WirelessFirmwareThreadInfo;
|
||||
uint32_t Reserved2;
|
||||
uint64_t UID64;
|
||||
uint16_t DeviceId;
|
||||
} MB_FUS_DeviceInfoTable_t ;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -392,6 +392,44 @@ SHCI_CmdStatus_t SHCI_C2_CONCURRENT_SetMode( SHCI_C2_CONCURRENT_Mode_Param_t Mod
|
|||
return (SHCI_CmdStatus_t)(((TL_CcEvt_t*)(p_rsp->evtserial.evt.payload))->payload[0]);
|
||||
}
|
||||
|
||||
SHCI_CmdStatus_t SHCI_C2_CONCURRENT_GetNextBleEvtTime( SHCI_C2_CONCURRENT_GetNextBleEvtTime_Param_t *pParam )
|
||||
{
|
||||
/**
|
||||
* Buffer is large enough to hold command complete without payload
|
||||
*/
|
||||
uint8_t local_buffer[TL_BLEEVT_CS_BUFFER_SIZE+4];
|
||||
TL_EvtPacket_t * p_rsp;
|
||||
|
||||
p_rsp = (TL_EvtPacket_t *)local_buffer;
|
||||
|
||||
shci_send( SHCI_OPCODE_C2_CONCURRENT_GET_NEXT_BLE_EVT_TIME,
|
||||
0,
|
||||
0,
|
||||
p_rsp );
|
||||
|
||||
memcpy((void*)&(pParam->relative_time), (void*)&((TL_CcEvt_t*)(p_rsp->evtserial.evt.payload))->payload[1], sizeof(pParam->relative_time));
|
||||
|
||||
return (SHCI_CmdStatus_t)(((TL_CcEvt_t*)(p_rsp->evtserial.evt.payload))->payload[0]);
|
||||
}
|
||||
|
||||
SHCI_CmdStatus_t SHCI_C2_CONCURRENT_EnableNext_802154_EvtNotification( void )
|
||||
{
|
||||
/**
|
||||
* Buffer is large enough to hold command complete without payload
|
||||
*/
|
||||
uint8_t local_buffer[TL_BLEEVT_CS_BUFFER_SIZE];
|
||||
TL_EvtPacket_t * p_rsp;
|
||||
|
||||
p_rsp = (TL_EvtPacket_t *)local_buffer;
|
||||
|
||||
shci_send( SHCI_OPCODE_C2_CONCURRENT_ENABLE_NEXT_802154_EVT_NOTIFICATION,
|
||||
0,
|
||||
0,
|
||||
p_rsp );
|
||||
|
||||
return (SHCI_CmdStatus_t)(((TL_CcEvt_t*)(p_rsp->evtserial.evt.payload))->payload[0]);
|
||||
}
|
||||
|
||||
SHCI_CmdStatus_t SHCI_C2_FLASH_StoreData( SHCI_C2_FLASH_Ip_t Ip )
|
||||
{
|
||||
/**
|
||||
|
@ -562,46 +600,90 @@ SHCI_CmdStatus_t SHCI_GetWirelessFwInfo( WirelessFwInfo_t* pWirelessInfo )
|
|||
{
|
||||
uint32_t ipccdba = 0;
|
||||
MB_RefTable_t * p_RefTable = NULL;
|
||||
uint32_t version = 0;
|
||||
uint32_t memorySize = 0;
|
||||
uint32_t infoStack = 0;
|
||||
uint32_t wireless_firmware_version = 0;
|
||||
uint32_t wireless_firmware_memorySize = 0;
|
||||
uint32_t wireless_firmware_infoStack = 0;
|
||||
MB_FUS_DeviceInfoTable_t * p_fus_device_info_table = NULL;
|
||||
uint32_t fus_version = 0;
|
||||
uint32_t fus_memorySize = 0;
|
||||
|
||||
ipccdba = READ_BIT( FLASH->IPCCBR, FLASH_IPCCBR_IPCCDBA );
|
||||
|
||||
/**
|
||||
* The Device Info Table mapping depends on which firmware is running on CPU2.
|
||||
* If the FUS is running on CPU2, FUS_DEVICE_INFO_TABLE_VALIDITY_KEYWORD shall be written in the table.
|
||||
* Otherwise, it means the Wireless Firmware is running on the CPU2
|
||||
*/
|
||||
p_fus_device_info_table = (MB_FUS_DeviceInfoTable_t*)(*(uint32_t*)((ipccdba<<2) + SRAM2A_BASE));
|
||||
|
||||
if(p_fus_device_info_table->DeviceInfoTableState == FUS_DEVICE_INFO_TABLE_VALIDITY_KEYWORD)
|
||||
{
|
||||
/* The FUS is running on CPU2 */
|
||||
/**
|
||||
* Retrieve the WirelessFwInfoTable
|
||||
* This table is stored in RAM at startup during the TL (transport layer) initialization
|
||||
*/
|
||||
wireless_firmware_version = p_fus_device_info_table->WirelessStackVersion;
|
||||
wireless_firmware_memorySize = p_fus_device_info_table->WirelessStackMemorySize;
|
||||
wireless_firmware_infoStack = p_fus_device_info_table->WirelessFirmwareBleInfo;
|
||||
|
||||
/**
|
||||
* Retrieve the FusInfoTable
|
||||
* This table is stored in RAM at startup during the TL (transport layer) initialization
|
||||
*/
|
||||
fus_version = p_fus_device_info_table->FusVersion;
|
||||
fus_memorySize = p_fus_device_info_table->FusMemorySize;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* The Wireless Firmware is running on CPU2 */
|
||||
|
||||
p_RefTable = (MB_RefTable_t*)((ipccdba<<2) + SRAM2A_BASE);
|
||||
|
||||
/**
|
||||
* Retrieve the WirelessFwInfoTable
|
||||
* This table is stored in RAM at startup during the TL (transport layer) initialization
|
||||
*/
|
||||
version = p_RefTable->p_device_info_table->WirelessFwInfoTable.Version;
|
||||
pWirelessInfo->VersionMajor = ((version & INFO_VERSION_MAJOR_MASK) >> INFO_VERSION_MAJOR_OFFSET);
|
||||
pWirelessInfo->VersionMinor = ((version & INFO_VERSION_MINOR_MASK) >> INFO_VERSION_MINOR_OFFSET);
|
||||
pWirelessInfo->VersionSub = ((version & INFO_VERSION_SUB_MASK) >> INFO_VERSION_SUB_OFFSET);
|
||||
pWirelessInfo->VersionBranch = ((version & INFO_VERSION_BRANCH_MASK) >> INFO_VERSION_BRANCH_OFFSET);
|
||||
pWirelessInfo->VersionReleaseType = ((version & INFO_VERSION_TYPE_MASK) >> INFO_VERSION_TYPE_OFFSET);
|
||||
|
||||
memorySize = p_RefTable->p_device_info_table->WirelessFwInfoTable.MemorySize;
|
||||
pWirelessInfo->MemorySizeSram2B = ((memorySize & INFO_SIZE_SRAM2B_MASK) >> INFO_SIZE_SRAM2B_OFFSET);
|
||||
pWirelessInfo->MemorySizeSram2A = ((memorySize & INFO_SIZE_SRAM2A_MASK) >> INFO_SIZE_SRAM2A_OFFSET);
|
||||
pWirelessInfo->MemorySizeSram1 = ((memorySize & INFO_SIZE_SRAM1_MASK) >> INFO_SIZE_SRAM1_OFFSET);
|
||||
pWirelessInfo->MemorySizeFlash = ((memorySize & INFO_SIZE_FLASH_MASK) >> INFO_SIZE_FLASH_OFFSET);
|
||||
|
||||
infoStack = p_RefTable->p_device_info_table->WirelessFwInfoTable.InfoStack;
|
||||
pWirelessInfo->StackType = ((infoStack & INFO_STACK_TYPE_MASK) >> INFO_STACK_TYPE_OFFSET);
|
||||
wireless_firmware_version = p_RefTable->p_device_info_table->WirelessFwInfoTable.Version;
|
||||
wireless_firmware_memorySize = p_RefTable->p_device_info_table->WirelessFwInfoTable.MemorySize;
|
||||
wireless_firmware_infoStack = p_RefTable->p_device_info_table->WirelessFwInfoTable.InfoStack;
|
||||
|
||||
/**
|
||||
* Retrieve the FusInfoTable
|
||||
* This table is stored in RAM at startup during the TL (transport layer) initialization
|
||||
*/
|
||||
version = p_RefTable->p_device_info_table->FusInfoTable.Version;
|
||||
pWirelessInfo->FusVersionMajor = ((version & INFO_VERSION_MAJOR_MASK) >> INFO_VERSION_MAJOR_OFFSET);
|
||||
pWirelessInfo->FusVersionMinor = ((version & INFO_VERSION_MINOR_MASK) >> INFO_VERSION_MINOR_OFFSET);
|
||||
pWirelessInfo->FusVersionSub = ((version & INFO_VERSION_SUB_MASK) >> INFO_VERSION_SUB_OFFSET);
|
||||
fus_version = p_RefTable->p_device_info_table->FusInfoTable.Version;
|
||||
fus_memorySize = p_RefTable->p_device_info_table->FusInfoTable.MemorySize;
|
||||
}
|
||||
|
||||
memorySize = p_RefTable->p_device_info_table->FusInfoTable.MemorySize;
|
||||
pWirelessInfo->FusMemorySizeSram2B = ((memorySize & INFO_SIZE_SRAM2B_MASK) >> INFO_SIZE_SRAM2B_OFFSET);
|
||||
pWirelessInfo->FusMemorySizeSram2A = ((memorySize & INFO_SIZE_SRAM2A_MASK) >> INFO_SIZE_SRAM2A_OFFSET);
|
||||
pWirelessInfo->FusMemorySizeFlash = ((memorySize & INFO_SIZE_FLASH_MASK) >> INFO_SIZE_FLASH_OFFSET);
|
||||
/**
|
||||
* Retrieve the WirelessFwInfoTable
|
||||
* This table is stored in RAM at startup during the TL (transport layer) initialization
|
||||
*/
|
||||
pWirelessInfo->VersionMajor = ((wireless_firmware_version & INFO_VERSION_MAJOR_MASK) >> INFO_VERSION_MAJOR_OFFSET);
|
||||
pWirelessInfo->VersionMinor = ((wireless_firmware_version & INFO_VERSION_MINOR_MASK) >> INFO_VERSION_MINOR_OFFSET);
|
||||
pWirelessInfo->VersionSub = ((wireless_firmware_version & INFO_VERSION_SUB_MASK) >> INFO_VERSION_SUB_OFFSET);
|
||||
pWirelessInfo->VersionBranch = ((wireless_firmware_version & INFO_VERSION_BRANCH_MASK) >> INFO_VERSION_BRANCH_OFFSET);
|
||||
pWirelessInfo->VersionReleaseType = ((wireless_firmware_version & INFO_VERSION_TYPE_MASK) >> INFO_VERSION_TYPE_OFFSET);
|
||||
|
||||
pWirelessInfo->MemorySizeSram2B = ((wireless_firmware_memorySize & INFO_SIZE_SRAM2B_MASK) >> INFO_SIZE_SRAM2B_OFFSET);
|
||||
pWirelessInfo->MemorySizeSram2A = ((wireless_firmware_memorySize & INFO_SIZE_SRAM2A_MASK) >> INFO_SIZE_SRAM2A_OFFSET);
|
||||
pWirelessInfo->MemorySizeSram1 = ((wireless_firmware_memorySize & INFO_SIZE_SRAM1_MASK) >> INFO_SIZE_SRAM1_OFFSET);
|
||||
pWirelessInfo->MemorySizeFlash = ((wireless_firmware_memorySize & INFO_SIZE_FLASH_MASK) >> INFO_SIZE_FLASH_OFFSET);
|
||||
|
||||
pWirelessInfo->StackType = ((wireless_firmware_infoStack & INFO_STACK_TYPE_MASK) >> INFO_STACK_TYPE_OFFSET);
|
||||
|
||||
/**
|
||||
* Retrieve the FusInfoTable
|
||||
* This table is stored in RAM at startup during the TL (transport layer) initialization
|
||||
*/
|
||||
pWirelessInfo->FusVersionMajor = ((fus_version & INFO_VERSION_MAJOR_MASK) >> INFO_VERSION_MAJOR_OFFSET);
|
||||
pWirelessInfo->FusVersionMinor = ((fus_version & INFO_VERSION_MINOR_MASK) >> INFO_VERSION_MINOR_OFFSET);
|
||||
pWirelessInfo->FusVersionSub = ((fus_version & INFO_VERSION_SUB_MASK) >> INFO_VERSION_SUB_OFFSET);
|
||||
|
||||
pWirelessInfo->FusMemorySizeSram2B = ((fus_memorySize & INFO_SIZE_SRAM2B_MASK) >> INFO_SIZE_SRAM2B_OFFSET);
|
||||
pWirelessInfo->FusMemorySizeSram2A = ((fus_memorySize & INFO_SIZE_SRAM2A_MASK) >> INFO_SIZE_SRAM2A_OFFSET);
|
||||
pWirelessInfo->FusMemorySizeFlash = ((fus_memorySize & INFO_SIZE_FLASH_MASK) >> INFO_SIZE_FLASH_OFFSET);
|
||||
|
||||
return (SHCI_Success);
|
||||
}
|
||||
|
|
|
@ -35,22 +35,22 @@ extern "C" {
|
|||
typedef enum
|
||||
{
|
||||
WIRELESS_FW_RUNNING = 0x00,
|
||||
RSS_FW_RUNNING = 0x01,
|
||||
FUS_FW_RUNNING = 0x01,
|
||||
} SHCI_SysEvt_Ready_Rsp_t;
|
||||
|
||||
/* ERROR CODES
|
||||
*
|
||||
* These error codes are detected on M0 side and are send back to the M4 via a system
|
||||
* notification message. It is up to the application running on M4 to manage these errors
|
||||
* These error codes are detected on CPU2 side and are send back to the CPU1 via a system
|
||||
* notification message. It is up to the application running on CPU1 to manage these errors
|
||||
*
|
||||
* These errors can be generated by all layers (low level driver, stack, framework infrastructure, etc..)
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ERR_BLE_INIT = 0,
|
||||
ERR_BLE_INIT = 0, /* This event is currently not reported by the CPU2 */
|
||||
ERR_THREAD_LLD_FATAL_ERROR = 125, /* The LLD driver used on 802_15_4 detected a fatal error */
|
||||
ERR_THREAD_UNKNOWN_CMD = 126, /* The command send by the M4 to control the Thread stack is unknown */
|
||||
ERR_ZIGBEE_UNKNOWN_CMD = 200, /* The command send by the M4 to control the Zigbee stack is unknown */
|
||||
ERR_THREAD_UNKNOWN_CMD = 126, /* The command send by the CPU1 to control the Thread stack is unknown */
|
||||
ERR_ZIGBEE_UNKNOWN_CMD = 200, /* The command send by the CPU1 to control the Zigbee stack is unknown */
|
||||
} SCHI_SystemErrCode_t;
|
||||
|
||||
#define SHCI_EVTCODE ( 0xFF )
|
||||
|
@ -64,11 +64,12 @@ extern "C" {
|
|||
SHCI_SUB_EVT_CODE_READY = SHCI_SUB_EVT_CODE_BASE,
|
||||
SHCI_SUB_EVT_ERROR_NOTIF,
|
||||
SHCI_SUB_EVT_BLE_NVM_RAM_UPDATE,
|
||||
SHCI_SUB_EVT_OT_NVM_RAM_UPDATE,
|
||||
SHCI_SUB_EVT_THREAD_NVM_RAM_UPDATE,
|
||||
SHCI_SUB_EVT_NVM_START_WRITE,
|
||||
SHCI_SUB_EVT_NVM_END_WRITE,
|
||||
SHCI_SUB_EVT_NVM_START_ERASE,
|
||||
SHCI_SUB_EVT_NVM_END_ERASE,
|
||||
SHCI_SUB_EVT_CODE_CONCURRENT_802154_EVT,
|
||||
} SHCI_SUB_EVT_CODE_t;
|
||||
|
||||
/**
|
||||
|
@ -101,7 +102,7 @@ extern "C" {
|
|||
} SHCI_C2_BleNvmRamUpdate_Evt_t;
|
||||
|
||||
/**
|
||||
* SHCI_SUB_EVT_OT_NVM_RAM_UPDATE
|
||||
* SHCI_SUB_EVT_THREAD_NVM_RAM_UPDATE
|
||||
* This notifies the CPU1 which part of the OT NVM RAM has been updated so that only the modified
|
||||
* section could be written in Flash/NVM
|
||||
* StartAddress : Start address of the section that has been modified
|
||||
|
@ -110,7 +111,7 @@ extern "C" {
|
|||
typedef PACKED_STRUCT{
|
||||
uint32_t StartAddress;
|
||||
uint32_t Size;
|
||||
} SHCI_C2_OtNvmRamUpdate_Evt_t;
|
||||
} SHCI_C2_ThreadNvmRamUpdate_Evt_t;
|
||||
|
||||
/**
|
||||
* SHCI_SUB_EVT_NVM_START_WRITE
|
||||
|
@ -160,6 +161,7 @@ extern "C" {
|
|||
SHCI_UNKNOWN_CMD = 0x01,
|
||||
SHCI_ERR_UNSUPPORTED_FEATURE = 0x11,
|
||||
SHCI_ERR_INVALID_HCI_CMD_PARAMS = 0x12,
|
||||
SHCI_ERR_INVALID_PARAMS = 0x42,
|
||||
SHCI_FUS_CMD_NOT_SUPPORTED = 0xFF,
|
||||
} SHCI_CmdStatus_t;
|
||||
|
||||
|
@ -216,6 +218,8 @@ extern "C" {
|
|||
SHCI_OCF_C2_SET_FLASH_ACTIVITY_CONTROL,
|
||||
SHCI_OCF_C2_LLD_BLE_INIT,
|
||||
SHCI_OCF_C2_CONFIG,
|
||||
SHCI_OCF_C2_CONCURRENT_GET_NEXT_BLE_EVT_TIME,
|
||||
SHCI_OCF_C2_CONCURRENT_ENABLE_NEXT_802154_EVT_NOTIFICATION,
|
||||
} SHCI_OCF_t;
|
||||
|
||||
#define SHCI_OPCODE_C2_FUS_GET_STATE (( SHCI_OGF << 10) + SHCI_OCF_C2_FUS_GET_STATE)
|
||||
|
@ -423,6 +427,18 @@ extern "C" {
|
|||
} SHCI_C2_CONCURRENT_Mode_Param_t;
|
||||
/** No response parameters*/
|
||||
|
||||
#define SHCI_OPCODE_C2_CONCURRENT_GET_NEXT_BLE_EVT_TIME (( SHCI_OGF << 10) + SHCI_OCF_C2_CONCURRENT_GET_NEXT_BLE_EVT_TIME)
|
||||
/** command parameters */
|
||||
typedef PACKED_STRUCT
|
||||
{
|
||||
uint32_t relative_time;
|
||||
} SHCI_C2_CONCURRENT_GetNextBleEvtTime_Param_t;
|
||||
/** No response parameters*/
|
||||
|
||||
#define SHCI_OPCODE_C2_CONCURRENT_ENABLE_NEXT_802154_EVT_NOTIFICATION (( SHCI_OGF << 10) + SHCI_OCF_C2_CONCURRENT_ENABLE_NEXT_802154_EVT_NOTIFICATION)
|
||||
/** No command parameters */
|
||||
/** No response parameters*/
|
||||
|
||||
#define SHCI_OPCODE_C2_FLASH_STORE_DATA (( SHCI_OGF << 10) + SHCI_OCF_C2_FLASH_STORE_DATA)
|
||||
#define SHCI_OPCODE_C2_FLASH_ERASE_DATA (( SHCI_OGF << 10) + SHCI_OCF_C2_FLASH_ERASE_DATA)
|
||||
/** command parameters */
|
||||
|
@ -512,7 +528,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_OT_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)
|
||||
|
@ -536,18 +552,17 @@ extern "C" {
|
|||
/** No response parameters*/
|
||||
|
||||
/* Exported type --------------------------------------------------------*/
|
||||
|
||||
typedef MB_WirelessFwInfoTable_t SHCI_WirelessFwInfoTable_t;
|
||||
#define FUS_DEVICE_INFO_TABLE_VALIDITY_KEYWORD (0xA94656B9)
|
||||
|
||||
/*
|
||||
* At startup, the informations relative to the wireless binary are stored in RAM trough a structure defined by
|
||||
* SHCI_WirelessFwInfoTable_t.This structure contains 4 fields (Version,MemorySize, Stack_info and a reserved part)
|
||||
* MB_WirelessFwInfoTable_t.This structure contains 4 fields (Version,MemorySize, Stack_info and a reserved part)
|
||||
* each of those coded on 32 bits as shown on the table below:
|
||||
*
|
||||
*
|
||||
* |7 |6 |5 |4 |3 |2 |1 |0 |7 |6 |5 |4 |3 |2 |1 |0 |7 |6 |5 |4 |3 |2 |1 |0 |7 |6 |5 |4 |3 |2 |1 |0 |
|
||||
* -------------------------------------------------------------------------------------------------
|
||||
* Version | Major version | Minor version | Sub version | Branch |Releas Type|
|
||||
* Version | Major version | Minor version | Sub version | Branch |ReleaseType|
|
||||
* -------------------------------------------------------------------------------------------------
|
||||
* MemorySize | SRAM2B (kB) | SRAM2A (kB) | SRAM1 (kB) | FLASH (4kb) |
|
||||
* -------------------------------------------------------------------------------------------------
|
||||
|
@ -590,6 +605,7 @@ typedef MB_WirelessFwInfoTable_t SHCI_WirelessFwInfoTable_t;
|
|||
#define INFO_STACK_TYPE_BLE_STANDARD 0x01
|
||||
#define INFO_STACK_TYPE_BLE_HCI 0x02
|
||||
#define INFO_STACK_TYPE_BLE_LIGHT 0x03
|
||||
#define INFO_STACK_TYPE_BLE_BEACON 0x04
|
||||
#define INFO_STACK_TYPE_THREAD_FTD 0x10
|
||||
#define INFO_STACK_TYPE_THREAD_MTD 0x11
|
||||
#define INFO_STACK_TYPE_ZIGBEE_FFD 0x30
|
||||
|
@ -604,7 +620,9 @@ typedef MB_WirelessFwInfoTable_t SHCI_WirelessFwInfoTable_t;
|
|||
#define INFO_STACK_TYPE_BLE_RLV 0x64
|
||||
#define INFO_STACK_TYPE_802154_RLV 0x65
|
||||
#define INFO_STACK_TYPE_BLE_ZIGBEE_FFD_STATIC 0x70
|
||||
#define INFO_STACK_TYPE_BLE_ZIGBEE_RFD_STATIC 0x71
|
||||
#define INFO_STACK_TYPE_BLE_ZIGBEE_FFD_DYNAMIC 0x78
|
||||
#define INFO_STACK_TYPE_BLE_ZIGBEE_RFD_DYNAMIC 0x79
|
||||
#define INFO_STACK_TYPE_RLV 0x80
|
||||
|
||||
typedef struct {
|
||||
|
@ -801,6 +819,24 @@ typedef struct {
|
|||
*/
|
||||
SHCI_CmdStatus_t SHCI_C2_CONCURRENT_SetMode( SHCI_C2_CONCURRENT_Mode_Param_t Mode );
|
||||
|
||||
/**
|
||||
* SHCI_C2_CONCURRENT_GetNextBleEvtTime
|
||||
* @brief Get the next BLE event date (relative time)
|
||||
*
|
||||
* @param Command Packet
|
||||
* @retval None
|
||||
*/
|
||||
SHCI_CmdStatus_t SHCI_C2_CONCURRENT_GetNextBleEvtTime( SHCI_C2_CONCURRENT_GetNextBleEvtTime_Param_t *pParam );
|
||||
|
||||
/**
|
||||
* SHCI_C2_CONCURRENT_EnableNext_802154_EvtNotification
|
||||
* @brief Activate the next 802.15.4 event notification (one shot)
|
||||
*
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
SHCI_CmdStatus_t SHCI_C2_CONCURRENT_EnableNext_802154_EvtNotification( void );
|
||||
|
||||
/**
|
||||
* SHCI_C2_FLASH_StoreData
|
||||
* @brief Store Data in Flash
|
||||
|
@ -842,7 +878,7 @@ typedef struct {
|
|||
/**
|
||||
* SHCI_GetWirelessFwInfo
|
||||
* @brief This function read back the informations relative to the wireless binary loaded.
|
||||
* Refer yourself to SHCI_WirelessFwInfoTable_t structure to get the significance
|
||||
* Refer yourself to MB_WirelessFwInfoTable_t structure to get the significance
|
||||
* of the different parameters returned.
|
||||
* @param pWirelessInfo : Pointer to WirelessFwInfo_t.
|
||||
*
|
||||
|
|
|
@ -23,31 +23,7 @@
|
|||
|
||||
#include "stm_list.h"
|
||||
#include "shci_tl.h"
|
||||
|
||||
/**
|
||||
* These traces are not yet supported in an usual way in the delivery package
|
||||
* They can enabled by adding the definition of TL_SHCI_CMD_DBG_EN and/or TL_SHCI_EVT_DBG_EN in the preprocessor option in the IDE
|
||||
*/
|
||||
#if ( (TL_SHCI_CMD_DBG_EN != 0) || (TL_SHCI_EVT_DBG_EN != 0) )
|
||||
#include "app_conf.h"
|
||||
#include "dbg_trace.h"
|
||||
#endif
|
||||
|
||||
#if (TL_SHCI_CMD_DBG_EN != 0)
|
||||
#define TL_SHCI_CMD_DBG_MSG PRINT_MESG_DBG
|
||||
#define TL_SHCI_CMD_DBG_BUF PRINT_LOG_BUFF_DBG
|
||||
#else
|
||||
#define TL_SHCI_CMD_DBG_MSG(...)
|
||||
#define TL_SHCI_CMD_DBG_BUF(...)
|
||||
#endif
|
||||
|
||||
#if (TL_SHCI_EVT_DBG_EN != 0)
|
||||
#define TL_SHCI_EVT_DBG_MSG PRINT_MESG_DBG
|
||||
#define TL_SHCI_EVT_DBG_BUF PRINT_LOG_BUFF_DBG
|
||||
#else
|
||||
#define TL_SHCI_EVT_DBG_MSG(...)
|
||||
#define TL_SHCI_EVT_DBG_BUF(...)
|
||||
#endif
|
||||
#include "tl_dbg_conf.h"
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
typedef enum
|
||||
|
@ -356,5 +332,3 @@ __WEAK void shci_cmd_resp_release(uint32_t flag)
|
|||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,126 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* File Name : tl_dbg_conf.h
|
||||
* Description : Debug configuration file for stm32wpan transport layer interface.
|
||||
*
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© Copyright (c) 2020 STMicroelectronics.
|
||||
* All rights reserved.</center></h2>
|
||||
*
|
||||
* This software component is licensed by ST under Ultimate Liberty license
|
||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at:
|
||||
* www.st.com/SLA0044
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __TL_DBG_CONF_H
|
||||
#define __TL_DBG_CONF_H
|
||||
|
||||
/* USER CODE BEGIN Tl_Conf */
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "app_conf.h" /* required as some configuration used in dbg_trace.h are set there */
|
||||
#include "dbg_trace.h"
|
||||
#include "hw_if.h"
|
||||
|
||||
/**
|
||||
* Enable or Disable traces
|
||||
* The raw data output is the hci binary packet format as specified by the BT specification *
|
||||
*/
|
||||
#define TL_SHCI_CMD_DBG_EN 0 /* Reports System commands sent to CPU2 and the command response */
|
||||
#define TL_SHCI_CMD_DBG_RAW_EN 0 /* Reports raw data System commands sent to CPU2 and the command response */
|
||||
#define TL_SHCI_EVT_DBG_EN 0 /* Reports System Asynchronous Events received from CPU2 */
|
||||
#define TL_SHCI_EVT_DBG_RAW_EN 0 /* Reports raw data System Asynchronous Events received from CPU2 */
|
||||
|
||||
#define TL_HCI_CMD_DBG_EN 0 /* Reports BLE command sent to CPU2 and the command response */
|
||||
#define TL_HCI_CMD_DBG_RAW_EN 0 /* Reports raw data BLE command sent to CPU2 and the command response */
|
||||
#define TL_HCI_EVT_DBG_EN 0 /* Reports BLE Asynchronous Events received from CPU2 */
|
||||
#define TL_HCI_EVT_DBG_RAW_EN 0 /* Reports raw data BLE Asynchronous Events received from CPU2 */
|
||||
|
||||
#define TL_MM_DBG_EN 0 /* Reports the informations of the buffer released to CPU2 */
|
||||
|
||||
/**
|
||||
* Macro definition
|
||||
*/
|
||||
|
||||
/**
|
||||
* System Transport Layer
|
||||
*/
|
||||
#if (TL_SHCI_CMD_DBG_EN != 0)
|
||||
#define TL_SHCI_CMD_DBG_MSG PRINT_MESG_DBG
|
||||
#define TL_SHCI_CMD_DBG_BUF PRINT_LOG_BUFF_DBG
|
||||
#else
|
||||
#define TL_SHCI_CMD_DBG_MSG(...)
|
||||
#define TL_SHCI_CMD_DBG_BUF(...)
|
||||
#endif
|
||||
|
||||
#if (TL_SHCI_CMD_DBG_RAW_EN != 0)
|
||||
#define TL_SHCI_CMD_DBG_RAW(_PDATA_, _SIZE_) HW_UART_Transmit(hw_uart1, (uint8_t*)_PDATA_, _SIZE_, (~0))
|
||||
#else
|
||||
#define TL_SHCI_CMD_DBG_RAW(...)
|
||||
#endif
|
||||
|
||||
#if (TL_SHCI_EVT_DBG_EN != 0)
|
||||
#define TL_SHCI_EVT_DBG_MSG PRINT_MESG_DBG
|
||||
#define TL_SHCI_EVT_DBG_BUF PRINT_LOG_BUFF_DBG
|
||||
#else
|
||||
#define TL_SHCI_EVT_DBG_MSG(...)
|
||||
#define TL_SHCI_EVT_DBG_BUF(...)
|
||||
#endif
|
||||
|
||||
#if (TL_SHCI_EVT_DBG_RAW_EN != 0)
|
||||
#define TL_SHCI_EVT_DBG_RAW(_PDATA_, _SIZE_) HW_UART_Transmit(hw_uart1, (uint8_t*)_PDATA_, _SIZE_, (~0))
|
||||
#else
|
||||
#define TL_SHCI_EVT_DBG_RAW(...)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* BLE Transport Layer
|
||||
*/
|
||||
#if (TL_HCI_CMD_DBG_EN != 0)
|
||||
#define TL_HCI_CMD_DBG_MSG PRINT_MESG_DBG
|
||||
#define TL_HCI_CMD_DBG_BUF PRINT_LOG_BUFF_DBG
|
||||
#else
|
||||
#define TL_HCI_CMD_DBG_MSG(...)
|
||||
#define TL_HCI_CMD_DBG_BUF(...)
|
||||
#endif
|
||||
|
||||
#if (TL_HCI_CMD_DBG_RAW_EN != 0)
|
||||
#define TL_HCI_CMD_DBG_RAW(_PDATA_, _SIZE_) HW_UART_Transmit(hw_uart1, (uint8_t*)_PDATA_, _SIZE_, (~0))
|
||||
#else
|
||||
#define TL_HCI_CMD_DBG_RAW(...)
|
||||
#endif
|
||||
|
||||
#if (TL_HCI_EVT_DBG_EN != 0)
|
||||
#define TL_HCI_EVT_DBG_MSG PRINT_MESG_DBG
|
||||
#define TL_HCI_EVT_DBG_BUF PRINT_LOG_BUFF_DBG
|
||||
#else
|
||||
#define TL_HCI_EVT_DBG_MSG(...)
|
||||
#define TL_HCI_EVT_DBG_BUF(...)
|
||||
#endif
|
||||
|
||||
#if (TL_HCI_EVT_DBG_RAW_EN != 0)
|
||||
#define TL_HCI_EVT_DBG_RAW(_PDATA_, _SIZE_) HW_UART_Transmit(hw_uart1, (uint8_t*)_PDATA_, _SIZE_, (~0))
|
||||
#else
|
||||
#define TL_HCI_EVT_DBG_RAW(...)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Memory Manager - Released buffer tracing
|
||||
*/
|
||||
#if (TL_MM_DBG_EN != 0)
|
||||
#define TL_MM_DBG_MSG PRINT_MESG_DBG
|
||||
#else
|
||||
#define TL_MM_DBG_MSG(...)
|
||||
#endif
|
||||
|
||||
/* USER CODE END Tl_Conf */
|
||||
|
||||
#endif /*__TL_DBG_CONF_H */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -25,6 +25,7 @@
|
|||
#include "stm_list.h"
|
||||
#include "tl.h"
|
||||
#include "mbox_def.h"
|
||||
#include "tl_dbg_conf.h"
|
||||
|
||||
/**
|
||||
* These traces are not yet supported in an usual way in the delivery package
|
||||
|
@ -42,6 +43,17 @@
|
|||
#endif
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
typedef enum
|
||||
{
|
||||
TL_MB_MM_RELEASE_BUFFER,
|
||||
TL_MB_BLE_CMD,
|
||||
TL_MB_BLE_CMD_RSP,
|
||||
TL_MB_BLE_ASYNCH_EVT,
|
||||
TL_MB_SYS_CMD,
|
||||
TL_MB_SYS_CMD_RSP,
|
||||
TL_MB_SYS_ASYNCH_EVT,
|
||||
} TL_MB_PacketType_t;
|
||||
|
||||
/* Private defines -----------------------------------------------------------*/
|
||||
/* Private macros ------------------------------------------------------------*/
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
|
@ -77,7 +89,7 @@ static void (* SYS_EVT_IoBusCallBackFunction) (TL_EvtPacket_t *phcievt);
|
|||
/* Global variables ----------------------------------------------------------*/
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
static void SendFreeBuf( void );
|
||||
static void OutputMemReleaseTrace(TL_EvtPacket_t * phcievt);
|
||||
static void OutputDbgTrace(TL_MB_PacketType_t packet_type, uint8_t* buffer);
|
||||
|
||||
/* Public Functions Definition ------------------------------------------------------*/
|
||||
|
||||
|
@ -142,6 +154,8 @@ int32_t TL_BLE_SendCmd( uint8_t* buffer, uint16_t size )
|
|||
|
||||
((TL_CmdPacket_t*)(TL_RefTable.p_ble_table->pcmd_buffer))->cmdserial.type = TL_BLECMD_PKT_TYPE;
|
||||
|
||||
OutputDbgTrace(TL_MB_BLE_CMD, TL_RefTable.p_ble_table->pcmd_buffer);
|
||||
|
||||
HW_IPCC_BLE_SendCmd();
|
||||
|
||||
return 0;
|
||||
|
@ -155,6 +169,15 @@ void HW_IPCC_BLE_RxEvtNot(void)
|
|||
{
|
||||
LST_remove_head (&EvtQueue, (tListNode **)&phcievt);
|
||||
|
||||
if ( ((phcievt->evtserial.evt.evtcode) == TL_BLEEVT_CS_OPCODE) || ((phcievt->evtserial.evt.evtcode) == TL_BLEEVT_CC_OPCODE ) )
|
||||
{
|
||||
OutputDbgTrace(TL_MB_BLE_CMD_RSP, (uint8_t*)phcievt);
|
||||
}
|
||||
else
|
||||
{
|
||||
OutputDbgTrace(TL_MB_BLE_ASYNCH_EVT, (uint8_t*)phcievt);
|
||||
}
|
||||
|
||||
BLE_IoBusEvtCallBackFunction(phcievt);
|
||||
}
|
||||
|
||||
|
@ -209,6 +232,8 @@ int32_t TL_SYS_SendCmd( uint8_t* buffer, uint16_t size )
|
|||
|
||||
((TL_CmdPacket_t *)(TL_RefTable.p_sys_table->pcmd_buffer))->cmdserial.type = TL_SYSCMD_PKT_TYPE;
|
||||
|
||||
OutputDbgTrace(TL_MB_SYS_CMD, TL_RefTable.p_sys_table->pcmd_buffer);
|
||||
|
||||
HW_IPCC_SYS_SendCmd();
|
||||
|
||||
return 0;
|
||||
|
@ -216,6 +241,8 @@ int32_t TL_SYS_SendCmd( uint8_t* buffer, uint16_t size )
|
|||
|
||||
void HW_IPCC_SYS_CmdEvtNot(void)
|
||||
{
|
||||
OutputDbgTrace(TL_MB_SYS_CMD_RSP, (uint8_t*)(TL_RefTable.p_sys_table->pcmd_buffer) );
|
||||
|
||||
SYS_CMD_IoBusCallBackFunction( (TL_EvtPacket_t*)(TL_RefTable.p_sys_table->pcmd_buffer) );
|
||||
|
||||
return;
|
||||
|
@ -228,6 +255,9 @@ void HW_IPCC_SYS_EvtNot( void )
|
|||
while(LST_is_empty(&SystemEvtQueue) == FALSE)
|
||||
{
|
||||
LST_remove_head (&SystemEvtQueue, (tListNode **)&p_evt);
|
||||
|
||||
OutputDbgTrace(TL_MB_SYS_ASYNCH_EVT, (uint8_t*)p_evt );
|
||||
|
||||
SYS_EVT_IoBusCallBackFunction( p_evt );
|
||||
}
|
||||
|
||||
|
@ -598,7 +628,7 @@ void TL_MM_EvtDone(TL_EvtPacket_t * phcievt)
|
|||
{
|
||||
LST_insert_tail(&LocalFreeBufQueue, (tListNode *)phcievt);
|
||||
|
||||
OutputMemReleaseTrace(phcievt);
|
||||
OutputDbgTrace(TL_MB_MM_RELEASE_BUFFER, (uint8_t*)phcievt);
|
||||
|
||||
HW_IPCC_MM_SendFreeBuf( SendFreeBuf );
|
||||
|
||||
|
@ -618,39 +648,6 @@ static void SendFreeBuf( void )
|
|||
return;
|
||||
}
|
||||
|
||||
static void OutputMemReleaseTrace(TL_EvtPacket_t * phcievt)
|
||||
{
|
||||
switch(phcievt->evtserial.evt.evtcode)
|
||||
{
|
||||
case TL_BLEEVT_CS_OPCODE:
|
||||
TL_MM_DBG__MSG("mm evt released: 0x%02X", phcievt->evtserial.evt.evtcode);
|
||||
TL_MM_DBG__MSG(" cmd opcode: 0x%04X", ((TL_CsEvt_t*)(phcievt->evtserial.evt.payload))->cmdcode);
|
||||
TL_MM_DBG__MSG(" buffer addr: 0x%08X", phcievt);
|
||||
break;
|
||||
|
||||
case TL_BLEEVT_CC_OPCODE:
|
||||
TL_MM_DBG__MSG("mm evt released: 0x%02X", phcievt->evtserial.evt.evtcode);
|
||||
TL_MM_DBG__MSG(" cmd opcode: 0x%04X", ((TL_CcEvt_t*)(phcievt->evtserial.evt.payload))->cmdcode);
|
||||
TL_MM_DBG__MSG(" buffer addr: 0x%08X", phcievt);
|
||||
break;
|
||||
|
||||
case TL_BLEEVT_VS_OPCODE:
|
||||
TL_MM_DBG__MSG("mm evt released: 0x%02X", phcievt->evtserial.evt.evtcode);
|
||||
TL_MM_DBG__MSG(" subevtcode: 0x%04X", ((TL_AsynchEvt_t*)(phcievt->evtserial.evt.payload))->subevtcode);
|
||||
TL_MM_DBG__MSG(" buffer addr: 0x%08X", phcievt);
|
||||
break;
|
||||
|
||||
default:
|
||||
TL_MM_DBG__MSG("mm evt released: 0x%02X", phcievt->evtserial.evt.evtcode);
|
||||
TL_MM_DBG__MSG(" buffer addr: 0x%08X", phcievt);
|
||||
break;
|
||||
}
|
||||
|
||||
TL_MM_DBG__MSG("\r\n");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* TRACES
|
||||
******************************************************************************/
|
||||
|
@ -683,4 +680,187 @@ __WEAK void TL_TRACES_EvtReceived( TL_EvtPacket_t * hcievt )
|
|||
(void)(hcievt);
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* DEBUG INFORMATION
|
||||
******************************************************************************/
|
||||
static void OutputDbgTrace(TL_MB_PacketType_t packet_type, uint8_t* buffer)
|
||||
{
|
||||
TL_EvtPacket_t *p_evt_packet;
|
||||
TL_CmdPacket_t *p_cmd_packet;
|
||||
|
||||
switch(packet_type)
|
||||
{
|
||||
case TL_MB_MM_RELEASE_BUFFER:
|
||||
p_evt_packet = (TL_EvtPacket_t*)buffer;
|
||||
switch(p_evt_packet->evtserial.evt.evtcode)
|
||||
{
|
||||
case TL_BLEEVT_CS_OPCODE:
|
||||
TL_MM_DBG_MSG("mm evt released: 0x%02X", p_evt_packet->evtserial.evt.evtcode);
|
||||
TL_MM_DBG_MSG(" cmd opcode: 0x%04X", ((TL_CsEvt_t*)(p_evt_packet->evtserial.evt.payload))->cmdcode);
|
||||
TL_MM_DBG_MSG(" buffer addr: 0x%08X", p_evt_packet);
|
||||
break;
|
||||
|
||||
case TL_BLEEVT_CC_OPCODE:
|
||||
TL_MM_DBG_MSG("mm evt released: 0x%02X", p_evt_packet->evtserial.evt.evtcode);
|
||||
TL_MM_DBG_MSG(" cmd opcode: 0x%04X", ((TL_CcEvt_t*)(p_evt_packet->evtserial.evt.payload))->cmdcode);
|
||||
TL_MM_DBG_MSG(" buffer addr: 0x%08X", p_evt_packet);
|
||||
break;
|
||||
|
||||
case TL_BLEEVT_VS_OPCODE:
|
||||
TL_MM_DBG_MSG("mm evt released: 0x%02X", p_evt_packet->evtserial.evt.evtcode);
|
||||
TL_MM_DBG_MSG(" subevtcode: 0x%04X", ((TL_AsynchEvt_t*)(p_evt_packet->evtserial.evt.payload))->subevtcode);
|
||||
TL_MM_DBG_MSG(" buffer addr: 0x%08X", p_evt_packet);
|
||||
break;
|
||||
|
||||
default:
|
||||
TL_MM_DBG_MSG("mm evt released: 0x%02X", p_evt_packet->evtserial.evt.evtcode);
|
||||
TL_MM_DBG_MSG(" buffer addr: 0x%08X", p_evt_packet);
|
||||
break;
|
||||
}
|
||||
|
||||
TL_MM_DBG_MSG("\r\n");
|
||||
break;
|
||||
|
||||
case TL_MB_BLE_CMD:
|
||||
p_cmd_packet = (TL_CmdPacket_t*)buffer;
|
||||
TL_HCI_CMD_DBG_MSG("ble cmd: 0x%04X", p_cmd_packet->cmdserial.cmd.cmdcode);
|
||||
if(p_cmd_packet->cmdserial.cmd.plen != 0)
|
||||
{
|
||||
TL_HCI_CMD_DBG_MSG(" payload:");
|
||||
TL_HCI_CMD_DBG_BUF(p_cmd_packet->cmdserial.cmd.payload, p_cmd_packet->cmdserial.cmd.plen, "");
|
||||
}
|
||||
TL_HCI_CMD_DBG_MSG("\r\n");
|
||||
|
||||
TL_HCI_CMD_DBG_RAW(&p_cmd_packet->cmdserial, p_cmd_packet->cmdserial.cmd.plen+TL_CMD_HDR_SIZE);
|
||||
break;
|
||||
|
||||
case TL_MB_BLE_CMD_RSP:
|
||||
p_evt_packet = (TL_EvtPacket_t*)buffer;
|
||||
switch(p_evt_packet->evtserial.evt.evtcode)
|
||||
{
|
||||
case TL_BLEEVT_CS_OPCODE:
|
||||
TL_HCI_CMD_DBG_MSG("ble rsp: 0x%02X", p_evt_packet->evtserial.evt.evtcode);
|
||||
TL_HCI_CMD_DBG_MSG(" cmd opcode: 0x%04X", ((TL_CsEvt_t*)(p_evt_packet->evtserial.evt.payload))->cmdcode);
|
||||
TL_HCI_CMD_DBG_MSG(" numhci: 0x%02X", ((TL_CsEvt_t*)(p_evt_packet->evtserial.evt.payload))->numcmd);
|
||||
TL_HCI_CMD_DBG_MSG(" status: 0x%02X", ((TL_CsEvt_t*)(p_evt_packet->evtserial.evt.payload))->status);
|
||||
break;
|
||||
|
||||
case TL_BLEEVT_CC_OPCODE:
|
||||
TL_HCI_CMD_DBG_MSG("ble rsp: 0x%02X", p_evt_packet->evtserial.evt.evtcode);
|
||||
TL_HCI_CMD_DBG_MSG(" cmd opcode: 0x%04X", ((TL_CcEvt_t*)(p_evt_packet->evtserial.evt.payload))->cmdcode);
|
||||
TL_HCI_CMD_DBG_MSG(" numhci: 0x%02X", ((TL_CcEvt_t*)(p_evt_packet->evtserial.evt.payload))->numcmd);
|
||||
TL_HCI_CMD_DBG_MSG(" status: 0x%02X", ((TL_CcEvt_t*)(p_evt_packet->evtserial.evt.payload))->payload[0]);
|
||||
if((p_evt_packet->evtserial.evt.plen-4) != 0)
|
||||
{
|
||||
TL_HCI_CMD_DBG_MSG(" payload:");
|
||||
TL_HCI_CMD_DBG_BUF(&((TL_CcEvt_t*)(p_evt_packet->evtserial.evt.payload))->payload[1], p_evt_packet->evtserial.evt.plen-4, "");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
TL_HCI_CMD_DBG_MSG("unknown ble rsp received: %02X", p_evt_packet->evtserial.evt.evtcode);
|
||||
break;
|
||||
}
|
||||
|
||||
TL_HCI_CMD_DBG_MSG("\r\n");
|
||||
|
||||
TL_HCI_CMD_DBG_RAW(&p_evt_packet->evtserial, p_evt_packet->evtserial.evt.plen+TL_EVT_HDR_SIZE);
|
||||
break;
|
||||
|
||||
case TL_MB_BLE_ASYNCH_EVT:
|
||||
p_evt_packet = (TL_EvtPacket_t*)buffer;
|
||||
if(p_evt_packet->evtserial.evt.evtcode != TL_BLEEVT_VS_OPCODE)
|
||||
{
|
||||
TL_HCI_EVT_DBG_MSG("ble evt: 0x%02X", p_evt_packet->evtserial.evt.evtcode);
|
||||
if((p_evt_packet->evtserial.evt.plen) != 0)
|
||||
{
|
||||
TL_HCI_EVT_DBG_MSG(" payload:");
|
||||
TL_HCI_EVT_DBG_BUF(p_evt_packet->evtserial.evt.payload, p_evt_packet->evtserial.evt.plen, "");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TL_HCI_EVT_DBG_MSG("ble evt: 0x%02X", p_evt_packet->evtserial.evt.evtcode);
|
||||
TL_HCI_EVT_DBG_MSG(" subevtcode: 0x%04X", ((TL_AsynchEvt_t*)(p_evt_packet->evtserial.evt.payload))->subevtcode);
|
||||
if((p_evt_packet->evtserial.evt.plen-2) != 0)
|
||||
{
|
||||
TL_HCI_EVT_DBG_MSG(" payload:");
|
||||
TL_HCI_EVT_DBG_BUF(((TL_AsynchEvt_t*)(p_evt_packet->evtserial.evt.payload))->payload, p_evt_packet->evtserial.evt.plen-2, "");
|
||||
}
|
||||
}
|
||||
|
||||
TL_HCI_EVT_DBG_MSG("\r\n");
|
||||
|
||||
TL_HCI_EVT_DBG_RAW(&p_evt_packet->evtserial, p_evt_packet->evtserial.evt.plen+TL_EVT_HDR_SIZE);
|
||||
break;
|
||||
|
||||
case TL_MB_SYS_CMD:
|
||||
p_cmd_packet = (TL_CmdPacket_t*)buffer;
|
||||
|
||||
TL_SHCI_CMD_DBG_MSG("sys cmd: 0x%04X", p_cmd_packet->cmdserial.cmd.cmdcode);
|
||||
|
||||
if(p_cmd_packet->cmdserial.cmd.plen != 0)
|
||||
{
|
||||
TL_SHCI_CMD_DBG_MSG(" payload:");
|
||||
TL_SHCI_CMD_DBG_BUF(p_cmd_packet->cmdserial.cmd.payload, p_cmd_packet->cmdserial.cmd.plen, "");
|
||||
}
|
||||
TL_SHCI_CMD_DBG_MSG("\r\n");
|
||||
|
||||
TL_SHCI_CMD_DBG_RAW(&p_cmd_packet->cmdserial, p_cmd_packet->cmdserial.cmd.plen+TL_CMD_HDR_SIZE);
|
||||
break;
|
||||
|
||||
case TL_MB_SYS_CMD_RSP:
|
||||
p_evt_packet = (TL_EvtPacket_t*)buffer;
|
||||
switch(p_evt_packet->evtserial.evt.evtcode)
|
||||
{
|
||||
case TL_BLEEVT_CC_OPCODE:
|
||||
TL_SHCI_CMD_DBG_MSG("sys rsp: 0x%02X", p_evt_packet->evtserial.evt.evtcode);
|
||||
TL_SHCI_CMD_DBG_MSG(" cmd opcode: 0x%02X", ((TL_CcEvt_t*)(p_evt_packet->evtserial.evt.payload))->cmdcode);
|
||||
TL_SHCI_CMD_DBG_MSG(" status: 0x%02X", ((TL_CcEvt_t*)(p_evt_packet->evtserial.evt.payload))->payload[0]);
|
||||
if((p_evt_packet->evtserial.evt.plen-4) != 0)
|
||||
{
|
||||
TL_SHCI_CMD_DBG_MSG(" payload:");
|
||||
TL_SHCI_CMD_DBG_BUF(&((TL_CcEvt_t*)(p_evt_packet->evtserial.evt.payload))->payload[1], p_evt_packet->evtserial.evt.plen-4, "");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
TL_SHCI_CMD_DBG_MSG("unknown sys rsp received: %02X", p_evt_packet->evtserial.evt.evtcode);
|
||||
break;
|
||||
}
|
||||
|
||||
TL_SHCI_CMD_DBG_MSG("\r\n");
|
||||
|
||||
TL_SHCI_CMD_DBG_RAW(&p_evt_packet->evtserial, p_evt_packet->evtserial.evt.plen+TL_EVT_HDR_SIZE);
|
||||
break;
|
||||
|
||||
case TL_MB_SYS_ASYNCH_EVT:
|
||||
p_evt_packet = (TL_EvtPacket_t*)buffer;
|
||||
if(p_evt_packet->evtserial.evt.evtcode != TL_BLEEVT_VS_OPCODE)
|
||||
{
|
||||
TL_SHCI_EVT_DBG_MSG("unknown sys evt received: %02X", p_evt_packet->evtserial.evt.evtcode);
|
||||
}
|
||||
else
|
||||
{
|
||||
TL_SHCI_EVT_DBG_MSG("sys evt: 0x%02X", p_evt_packet->evtserial.evt.evtcode);
|
||||
TL_SHCI_EVT_DBG_MSG(" subevtcode: 0x%04X", ((TL_AsynchEvt_t*)(p_evt_packet->evtserial.evt.payload))->subevtcode);
|
||||
if((p_evt_packet->evtserial.evt.plen-2) != 0)
|
||||
{
|
||||
TL_SHCI_EVT_DBG_MSG(" payload:");
|
||||
TL_SHCI_EVT_DBG_BUF(((TL_AsynchEvt_t*)(p_evt_packet->evtserial.evt.payload))->payload, p_evt_packet->evtserial.evt.plen-2, "");
|
||||
}
|
||||
}
|
||||
|
||||
TL_SHCI_EVT_DBG_MSG("\r\n");
|
||||
|
||||
TL_SHCI_EVT_DBG_RAW(&p_evt_packet->evtserial, p_evt_packet->evtserial.evt.plen+TL_EVT_HDR_SIZE);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
|
Loading…
Reference in New Issue