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

github.com/Flipper-Zero/STM32CubeWB.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Zigbee/BLE_Zigbee_Static/Core/Src/app_entry.c')
-rw-r--r--Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Zigbee/BLE_Zigbee_Static/Core/Src/app_entry.c503
1 files changed, 0 insertions, 503 deletions
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Zigbee/BLE_Zigbee_Static/Core/Src/app_entry.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Zigbee/BLE_Zigbee_Static/Core/Src/app_entry.c
deleted file mode 100644
index 7f5b48992..000000000
--- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE_Zigbee/BLE_Zigbee_Static/Core/Src/app_entry.c
+++ /dev/null
@@ -1,503 +0,0 @@
-/**
- ******************************************************************************
- * @file app_entry.c
- * @author MCD Application Team
- * @brief Entry point of the Application
- ******************************************************************************
- * @attention
- *
- * <h2><center>&copy; Copyright (c) 2019 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
- *
- ******************************************************************************
- */
-
-
-/* Includes ------------------------------------------------------------------*/
-#include "app_common.h"
-#include "main.h"
-#include "app_entry.h"
-#include "app_zigbee.h"
-#include "app_conf.h"
-#include "hw_conf.h"
-#include "stm32_seq.h"
-#include "stm_logging.h"
-#include "dbg_trace.h"
-#include "shci_tl.h"
-#include "stm32_lpm.h"
-#include "app_ble.h"
-#include "shci.h"
-
-
-/* External definition */
-extern RTC_HandleTypeDef hrtc; /**< RTC handler declaration */
-
-/* Private defines -----------------------------------------------------------*/
-/* POOL_SIZE */
-#define POOL_SIZE (CFG_TLBLE_EVT_QUEUE_LENGTH*4*DIVC(( sizeof(TL_PacketHeader_t) + TL_BLE_EVENT_FRAME_SIZE ), 4))
-/* Switch timeout */
-#define SWITCH_TMO 3*1000*1000/CFG_TS_TICK_VAL
-
-PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t EvtPool[POOL_SIZE];
-PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static TL_CmdPacket_t SystemCmdBuffer;
-PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t SystemSpareEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255];
-PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t BleSpareEvtBuffer[sizeof(TL_PacketHeader_t) + TL_EVT_HDR_SIZE + 255];
-
-static SHCI_C2_CONCURRENT_Mode_Param_t ConcurrentMode = BLE_ENABLE;
-static uint8_t TS_ID1;
-static int NbTotalSwitch = 0;
-static int FlagSwitchingOnGoing = 0;
-
-/* Global functions prototypes -----------------------------------------------*/
-size_t DbgTraceWrite(int handle, const unsigned char * buf, size_t bufSize);
-SHCI_C2_CONCURRENT_Mode_Param_t APP_GetCurrentProtocolMode(void);
-
-/* Private function prototypes -----------------------------------------------*/
-static void SystemPower_Config( void );
-static void Init_Debug( void );
-static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status );
-static void APPE_SysUserEvtRx( void * pPayload );
-
-static void appe_Tl_Init( void );
-static void Led_Init( void );
-static void Button_Init( void );
-
-static void Process_InitiateSwitchProtocol(void);
-static void Process_ActivateNewProtocol(void);
-static void ScheduleProcessSwitchProtocol(void);
-
-/* Functions Definition ------------------------------------------------------*/
-void APPE_Init( void )
-{
- SystemPower_Config(); /**< Configure the system Power Mode */
-
- HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */
-
- Init_Debug();
-
- APP_DBG("ConcurrentMode = %d", ConcurrentMode);
-
- /* Task common to Zigbee and BLE */
- UTIL_SEQ_RegTask( 1U <<CFG_TASK_INIT_SWITCH_PROTOCOL, UTIL_SEQ_RFU,Process_InitiateSwitchProtocol);
- UTIL_SEQ_RegTask( 1U <<CFG_TASK_ACTIVATE_PROTOCOL, UTIL_SEQ_RFU,Process_ActivateNewProtocol);
- /**
- * The Standby mode should not be entered before the initialization is over
- * The default state of the Low Power Manager is to allow the Standby Mode so an request is needed here
- */
- UTIL_LPM_SetOffMode(1 << CFG_LPM_APP, UTIL_LPM_DISABLE);
-
- Led_Init();
-
- Button_Init();
-
- appe_Tl_Init(); /**< Initialize all transport layers */
-
- /**
- * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )
- * received on the system channel before starting the BLE or Zigbee Stack
- * This system event is received with APPE_UserEvtRx()
- */
-
- return;
-}
-
-/**
- * @brief Return the current protocol in use
- * @param None
- * @retval None
- */
-SHCI_C2_CONCURRENT_Mode_Param_t APP_GetCurrentProtocolMode()
-{
- return ConcurrentMode;
-}
-
-/**
- * @brief Process used to initiate the protocol switch
- * @param None
- * @retval None
- */
-static void Process_InitiateSwitchProtocol(void)
-{
- APP_DBG("Process_InitiateSwitchProtocol (nb = %d)",NbTotalSwitch ++);
-
- /* Send Switch event to M0 */
- /* SWITCH BLE <-> ZIGBEE */
- if (FlagSwitchingOnGoing == 1)
- return;
- FlagSwitchingOnGoing = 1;
-
- if(ConcurrentMode == ZIGBEE_ENABLE)
- {
- APP_DBG("STOP ZIGBEE");
- APP_ZIGBEE_Stop();
-
- /* start a timer */
- HW_TS_Create(CFG_TIM_WAIT_BEFORE_SWITCH, &TS_ID1, hw_ts_SingleShot, ScheduleProcessSwitchProtocol);
-
- HW_TS_Start(TS_ID1, SWITCH_TMO);
- APP_DBG("SWITCH PROTOCOL TO BLE");
- }
- else
- {
- APP_DBG("STOP BLE");
- APP_BLE_Stop();
- APP_DBG("SWITCH PROTOCOL TO Zigbee");
- ScheduleProcessSwitchProtocol();
- }
-}
-
-/**
- * @brief Schedule the process used to switch protocol
- * @param None
- * @retval None
- */
-static void ScheduleProcessSwitchProtocol(void)
-{
- UTIL_SEQ_SetTask(1 << CFG_TASK_ACTIVATE_PROTOCOL,CFG_SCH_PRIO_0);
-}
-
-/**
- * @brief Process the activation of the new protocol
- * @param None
- * @retval None
- */
-static void Process_ActivateNewProtocol(void)
-{
- APP_DBG("Process_ActivateNewProtocol");
-
- /* Toggle Mode flag */
- if(ConcurrentMode == ZIGBEE_ENABLE){
- ConcurrentMode = BLE_ENABLE;
- }else{
- ConcurrentMode = ZIGBEE_ENABLE;
- }
-
- /* Once Switch has been acknowledged from M0, starts appropriate Protocol Init */
- if(ConcurrentMode == ZIGBEE_ENABLE)
- {
- APP_DBG("INIT ZIGBEE");
- APP_ZIGBEE_Init();
- }
- else
- {
- APP_DBG("INIT BLE");
- APP_BLE_Init( );
- }
- FlagSwitchingOnGoing = 0;
-}
-
-
-/*************************************************************
- *
- * LOCAL FUNCTIONS
- *
- *************************************************************/
-static void Init_Debug( void )
-{
-#if (CFG_DEBUGGER_SUPPORTED == 1)
- /**
- * Keep debugger enabled while in any low power mode
- */
- HAL_DBGMCU_EnableDBGSleepMode();
-
- /***************** ENABLE DEBUGGER *************************************/
- LL_EXTI_EnableIT_32_63(LL_EXTI_LINE_48);
- LL_C2_EXTI_EnableIT_32_63(LL_EXTI_LINE_48);
-
-#else
-
- GPIO_InitTypeDef gpio_config = {0};
-
- gpio_config.Pull = GPIO_NOPULL;
- gpio_config.Mode = GPIO_MODE_ANALOG;
-
- gpio_config.Pin = GPIO_PIN_15 | GPIO_PIN_14 | GPIO_PIN_13;
- __HAL_RCC_GPIOA_CLK_ENABLE();
- HAL_GPIO_Init(GPIOA, &gpio_config);
- __HAL_RCC_GPIOA_CLK_DISABLE();
-
- gpio_config.Pin = GPIO_PIN_4 | GPIO_PIN_3;
- __HAL_RCC_GPIOB_CLK_ENABLE();
- HAL_GPIO_Init(GPIOB, &gpio_config);
- __HAL_RCC_GPIOB_CLK_DISABLE();
-
- HAL_DBGMCU_DisableDBGSleepMode();
- HAL_DBGMCU_DisableDBGStopMode();
- HAL_DBGMCU_DisableDBGStandbyMode();
-
-#endif /* (CFG_DEBUGGER_SUPPORTED == 1) */
-
-#if(CFG_DEBUG_TRACE != 0)
- DbgTraceInit();
-#endif
-
- return;
-}
-
-/**
- * @brief Configure the system for power optimization
- *
- * @note This API configures the system to be ready for low power mode
- *
- * @param None
- * @retval None
- */
-static void SystemPower_Config(void)
-{
-
- /**
- * Select HSI as system clock source after Wake Up from Stop mode
- */
- LL_RCC_SetClkAfterWakeFromStop(LL_RCC_STOP_WAKEUPCLOCK_HSI);
-
- /* Initialize low power manager */
- UTIL_LPM_Init();
- /* Initialize the CPU2 reset value before starting CPU2 with C2BOOT */
- LL_C2_PWR_SetPowerMode(LL_PWR_MODE_SHUTDOWN);
-
-#if (CFG_USB_INTERFACE_ENABLE != 0)
- /**
- * Enable USB power
- */
- HAL_PWREx_EnableVddUSB();
-#endif
-
- return;
-}
-
-static void appe_Tl_Init( void )
-{
- TL_MM_Config_t tl_mm_config;
- SHCI_TL_HciInitConf_t SHci_Tl_Init_Conf;
-
- /**< Reference table initialization */
- TL_Init();
-
- /**< System channel initialization */
- UTIL_SEQ_RegTask( 1<< CFG_TASK_SYSTEM_HCI_ASYNCH_EVT_ID, UTIL_SEQ_RFU, shci_user_evt_proc );
- SHci_Tl_Init_Conf.p_cmdbuffer = (uint8_t*)&SystemCmdBuffer;
- SHci_Tl_Init_Conf.StatusNotCallBack = APPE_SysStatusNot;
- shci_init(APPE_SysUserEvtRx, (void*) &SHci_Tl_Init_Conf);
-
- /**< Memory Manager channel initialization */
- tl_mm_config.p_BleSpareEvtBuffer = BleSpareEvtBuffer;
- tl_mm_config.p_SystemSpareEvtBuffer = SystemSpareEvtBuffer;
- tl_mm_config.p_AsynchEvtPool = EvtPool;
- tl_mm_config.AsynchEvtPoolSize = POOL_SIZE;
- TL_MM_Init( &tl_mm_config );
-
- TL_Enable();
-
- return;
-}
-
-static void APPE_SysStatusNot( SHCI_TL_CmdStatus_t status )
-{
- UNUSED(status);
- return;
-}
-
-/**
- * The type of the payload for a system user event is tSHCI_UserEvtRxParam
- * When the system event is both :
- * - a ready event (subevtcode = SHCI_SUB_EVT_CODE_READY)
- * - reported by the FUS (sysevt_ready_rsp == FUS_FW_RUNNING)
- * The buffer shall not be released
- * ( eg ((tSHCI_UserEvtRxParam*)pPayload)->status shall be set to SHCI_TL_UserEventFlow_Disable )
- * When the status is not filled, the buffer is released by default
- */
-static void APPE_SysUserEvtRx( void * pPayload )
-{
- UNUSED(pPayload);
- /* Traces channel initialization */
- TL_TRACES_Init( );
-
- if(ConcurrentMode == ZIGBEE_ENABLE){
- APP_ZIGBEE_Init();
- }else{
- APP_BLE_Init();
- }
-
- UTIL_LPM_SetOffMode(1U << CFG_LPM_APP, UTIL_LPM_ENABLE);
-
- return;
-}
-
-static void Led_Init( void )
-{
-#if (CFG_LED_SUPPORTED == 1U)
- /**
- * Leds Initialization
- */
-
- BSP_LED_Init(LED_BLUE);
- BSP_LED_Init(LED_GREEN);
- BSP_LED_Init(LED_RED);
-
-#endif
-
- return;
-}
-
-static void Button_Init( void )
-{
-
-#if (CFG_BUTTON_SUPPORTED == 1U)
- /**
- * Button Initialization
- */
-
- BSP_PB_Init(BUTTON_SW1, BUTTON_MODE_EXTI);
- BSP_PB_Init(BUTTON_SW2, BUTTON_MODE_EXTI);
- BSP_PB_Init(BUTTON_SW3, BUTTON_MODE_EXTI);
-#endif
-
- return;
-}
-
-/*************************************************************
- *
- * WRAP FUNCTIONS
- *
- *************************************************************/
-
-void UTIL_SEQ_Idle( void )
-{
-#if ( CFG_LPM_SUPPORTED == 1)
- UTIL_LPM_EnterLowPower( );
-#endif
-
- return;
-}
-
-/**
- * @brief This function is called by the scheduler each time an event
- * is pending.
- *
- * @param evt_waited_bm : Event pending.
- * @retval None
- */
-void UTIL_SEQ_EvtIdle( UTIL_SEQ_bm_t task_id_bm, UTIL_SEQ_bm_t evt_waited_bm )
-{
- switch (evt_waited_bm) {
- case EVENT_ACK_FROM_M0_EVT:
- /* Run only the task CFG_TASK_REQUEST_FROM_M0_TO_M4 to process
- * direct requests from the M0 (e.g. ZbMalloc), but no stack notifications
- * until we're done the request to the M0. */
- UTIL_SEQ_Run((1U << CFG_TASK_REQUEST_FROM_M0_TO_M4));
- break;
-
- case EVENT_SYNCHRO_BYPASS_IDLE:
- UTIL_SEQ_SetEvt(EVENT_SYNCHRO_BYPASS_IDLE);
- /* Process notifications and requests from the M0 */
- UTIL_SEQ_Run((1U << CFG_TASK_NOTIFY_FROM_M0_TO_M4) | (1U << CFG_TASK_REQUEST_FROM_M0_TO_M4));
- break;
-
- default:
- /* default case */
- UTIL_SEQ_Run( UTIL_SEQ_DEFAULT );
- break;
- }
-}
-
-void shci_notify_asynch_evt(void* pdata)
-{
- UNUSED(pdata);
- UTIL_SEQ_SetTask(1U << CFG_TASK_SYSTEM_HCI_ASYNCH_EVT_ID, CFG_SCH_PRIO_0);
- return;
-}
-
-void shci_cmd_resp_release(uint32_t flag)
-{
- UNUSED(flag);
- UTIL_SEQ_SetEvt(1U << CFG_IDLEEVT_HCI_CMD_EVT_RSP_ID);
- return;
-}
-
-void shci_cmd_resp_wait(uint32_t timeout)
-{
- UNUSED(timeout);
- UTIL_SEQ_WaitEvt(1U << CFG_IDLEEVT_HCI_CMD_EVT_RSP_ID);
- return;
-}
-
-/* Received trace buffer from M0 */
-void TL_TRACES_EvtReceived( TL_EvtPacket_t * hcievt )
-{
-#if(CFG_DEBUG_TRACE != 0)
- /* Call write/print function using DMA from dbg_trace */
- /* - Cast to TL_AsynchEvt_t* to get "real" payload (without Sub Evt code 2bytes),
- - (-2) to size to remove Sub Evt Code */
- DbgTraceWrite(1U, (const unsigned char *) ((TL_AsynchEvt_t *)(hcievt->evtserial.evt.payload))->payload, hcievt->evtserial.evt.plen - 2U);
-#endif /* CFG_DEBUG_TRACE */
- /* Release buffer */
- TL_MM_EvtDone( hcievt );
-}
-/**
- * @brief Initialization of the trace mechanism
- * @param None
- * @retval None
- */
-#if(CFG_DEBUG_TRACE != 0)
-void DbgOutputInit( void )
-{
- HW_UART_Init(CFG_DEBUG_TRACE_UART);
- return;
-}
-
-/**
- * @brief Management of the traces
- * @param p_data : data
- * @param size : size
- * @param call-back :
- * @retval None
- */
-void DbgOutputTraces( uint8_t *p_data, uint16_t size, void (*cb)(void) )
-{
- HW_UART_Transmit_DMA(CFG_DEBUG_TRACE_UART, p_data, size, cb);
-
- return;
-}
-#endif
-
-/**
- * @brief This function manage the Push button action
- * @param GPIO_Pin : GPIO pin which has been activated
- * @retval None
- */
-void HAL_GPIO_EXTI_Callback( uint16_t GPIO_Pin )
-{
- switch (GPIO_Pin)
- {
- case BUTTON_SW1_PIN:
- if(ConcurrentMode == ZIGBEE_ENABLE){
- APP_DBG("BUTTON 1 PUSHED ! : ZIGBEE MESSAGE SENDING");
- UTIL_SEQ_SetTask(1U << CFG_TASK_BUTTON_SW1,CFG_SCH_PRIO_1);
- } else{
- APP_BLE_Key_Button1_Action();
- }
- break;
-
- case BUTTON_SW2_PIN:
- APP_DBG("BUTTON 2 PUSHED ! : SWITCHING PROTOCOL");
- UTIL_SEQ_PauseTask(1U << CFG_TASK_ZIGBEE_NETWORK_FORM);
- UTIL_SEQ_SetTask(1U << CFG_TASK_INIT_SWITCH_PROTOCOL,CFG_SCH_PRIO_0);
- break;
-
- case BUTTON_SW3_PIN:
- APP_DBG("BUTTON 3 PUSHED ! : NO ACTION MAPPED ON SW3");
- APP_BLE_Key_Button3_Action();
- break;
-
- default:
- break;
- }
- return;
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/