Commit 5a10f27b authored by Erwan Gouriou's avatar Erwan Gouriou Committed by Kumar Gala
Browse files

lib/stm32wb: hci: Update lib to V1.9.0 Cube version



Tested with 1.8 and 1.9 binary

Signed-off-by: default avatarErwan Gouriou <erwan.gouriou@linaro.org>
parent c1dee852
Loading
Loading
Loading
Loading
+104 −0
Original line number Diff line number Diff line
/**
 ******************************************************************************
 * @file    dbg_trace.h
 * @author  MCD Application Team
 * @brief   Header for dbg_trace.c
 ******************************************************************************
  * @attention
  *
  * <h2><center>&copy; 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****/
+5 −9
Original line number Diff line number Diff line
@@ -45,12 +45,8 @@ extern "C" {
#include "stm32wbxx_usb_dongle.h"
#endif
#ifdef  USE_STM32WBXX_NUCLEO
  #ifdef STM32WB35xx
  #include "nucleo_wb35ce.h"
  #else
#include "stm32wbxx_nucleo.h"
#endif
#endif
#ifdef  USE_X_NUCLEO_EPD
#include "x_nucleo_epd.h"
#endif
+23 −0
Original line number Diff line number Diff line
@@ -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
+110 −28
Original line number Diff line number Diff line
@@ -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);
    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
     */
    fus_version =  p_RefTable->p_device_info_table->FusInfoTable.Version;
    fus_memorySize =  p_RefTable->p_device_info_table->FusInfoTable.MemorySize;
  }

  /**
   *  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);

  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);
  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);

  infoStack =  p_RefTable->p_device_info_table->WirelessFwInfoTable.InfoStack;
  pWirelessInfo->StackType          = ((infoStack & INFO_STACK_TYPE_MASK) >> INFO_STACK_TYPE_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
   */
  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);
  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);

  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);
  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);
}
+59 −23
Original line number Diff line number Diff line
@@ -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.
   *
Loading