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/STM32WB5MM-DK/Applications/BLE/BLE_Sensor/STM32_WPAN/App/motenv_server_app.c')
-rw-r--r--Projects/STM32WB5MM-DK/Applications/BLE/BLE_Sensor/STM32_WPAN/App/motenv_server_app.c252
1 files changed, 252 insertions, 0 deletions
diff --git a/Projects/STM32WB5MM-DK/Applications/BLE/BLE_Sensor/STM32_WPAN/App/motenv_server_app.c b/Projects/STM32WB5MM-DK/Applications/BLE/BLE_Sensor/STM32_WPAN/App/motenv_server_app.c
new file mode 100644
index 000000000..b7e871957
--- /dev/null
+++ b/Projects/STM32WB5MM-DK/Applications/BLE/BLE_Sensor/STM32_WPAN/App/motenv_server_app.c
@@ -0,0 +1,252 @@
+/* USER CODE BEGIN Header */
+/**
+ ******************************************************************************
+ * File Name : motenv_server_app.c
+ * Description : MOTENV Server 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
+ *
+ ******************************************************************************
+ */
+/* USER CODE END Header */
+/* USER CODE BEGIN UserCode */
+/* Includes ------------------------------------------------------------------*/
+#include "app_common.h"
+#include "dbg_trace.h"
+#include "ble.h"
+#include "motenv_server_app.h"
+#include "stm32_seq.h"
+
+#include "wb5m_sensor_stm.h"
+#include "env_server_app.h"
+#include "motion_server_app.h"
+
+#include "stm32wb5mm_dk.h"
+#include "stm32wb5mm_dk_lcd.h"
+#include "stm32_lcd.h"
+
+/* Private defines -----------------------------------------------------------*/
+#define ENVIRONMENT_UPDATE_PERIOD (uint32_t)(0.5*1000*1000/CFG_TS_TICK_VAL) /*500ms*/
+#define ACC_GYRO_MAG_UPDATE_PERIOD (uint32_t)(0.05*1000*1000/CFG_TS_TICK_VAL) /*50ms (20Hz)*/
+
+/* Private typedef -----------------------------------------------------------*/
+
+/**
+ * @brief MOTENV Server Context structure definition
+ * Include just the Timer Ids for the Notifications
+ */
+typedef struct
+{
+ uint8_t AccGyroMag_Update_Timer_Id;
+ uint8_t Env_Update_Timer_Id;
+} MOTENV_Server_App_Context_t;
+
+/* Private macros ------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+
+/**
+ * START of Section BLE_APP_CONTEXT
+ */
+PLACE_IN_SECTION("BLE_APP_CONTEXT") static MOTENV_Server_App_Context_t MOTENV_Server_App_Context;
+
+/**
+ * END of Section BLE_APP_CONTEXT
+ */
+/* Global variables ----------------------------------------------------------*/
+extern int debug_trace_enabled;
+
+/* Private function prototypes -----------------------------------------------*/
+static void MOTENV_AccGyroMagUpdate_Timer_Callback(void);
+static void MOTENV_EnvUpdate_Timer_Callback(void);
+static void MOTENV_APP_context_Init(void);
+
+/* Functions Definition ------------------------------------------------------*/
+
+/* Public functions ----------------------------------------------------------*/
+
+/**
+ * @brief Handle the request from the GATT Client
+ * (e.g., on notification enabling/disabling request, start/stop the timer)
+ * @param pNotification: Request data coming from the GATT Client
+ * @retval None
+ */
+void MOTENV_STM_App_Notification(MOTENV_STM_App_Notification_evt_t *pNotification)
+{
+ switch(pNotification->Motenv_Evt_Opcode)
+ {
+ /*
+ * Env char notification enabled
+ */
+ case HW_ENV_NOTIFY_ENABLED_EVT:
+ ENV_Set_Notification_Status(1);
+ if(debug_trace_enabled == 1){
+ APP_DBG_MSG("-- TEMPLATE APPLICATION SERVER : ENV NOTIFICATION ENABLED\n");
+ APP_DBG_MSG(" \n\r");
+ }
+ /* Start the timer used to update the Env characteristic */
+ HW_TS_Start(MOTENV_Server_App_Context.Env_Update_Timer_Id, ENVIRONMENT_UPDATE_PERIOD);
+ break; /* HW_ENV_NOTIFY_ENABLED_EVT */
+
+ /*
+ * Motion char notification enabled
+ */
+ case HW_MOTION_NOTIFY_ENABLED_EVT:
+ UTIL_LCD_ClearStringLine(2);
+ UTIL_LCD_ClearStringLine(3);
+ UTIL_LCD_ClearStringLine(4);
+ BSP_LCD_Refresh(0);
+ MOTION_Set_Notification_Status(1);
+ if(debug_trace_enabled == 1){
+ APP_DBG_MSG("-- TEMPLATE APPLICATION SERVER : MOTION NOTIFICATION ENABLED\n");
+ APP_DBG_MSG(" \n\r");
+ }
+ /* Start the timer used to update the AccGyroMag characteristic */
+ HW_TS_Start(MOTENV_Server_App_Context.AccGyroMag_Update_Timer_Id, ACC_GYRO_MAG_UPDATE_PERIOD);
+ break; /* HW_MOTION_NOTIFY_ENABLED_EVT */
+
+ /*
+ * Env char notification disabled
+ */
+ case HW_ENV_NOTIFY_DISABLED_EVT:
+ UTIL_LCD_ClearStringLine(2);
+ UTIL_LCD_ClearStringLine(3);
+ UTIL_LCD_ClearStringLine(4);
+ BSP_LCD_Refresh(0);
+ ENV_Set_Notification_Status(0);
+ if(debug_trace_enabled == 1){
+ APP_DBG_MSG("-- TEMPLATE APPLICATION SERVER : ENV NOTIFICATION DISABLED\n");
+ APP_DBG_MSG(" \n\r");
+ }
+ /* Stop the timer used to update the Env characteristic */
+ HW_TS_Stop(MOTENV_Server_App_Context.Env_Update_Timer_Id);
+ break; /* HW_ENV_NOTIFY_DISABLED_EVT */
+
+ /*
+ * Motion char notification disabled
+ */
+ case HW_MOTION_NOTIFY_DISABLED_EVT:
+ UTIL_LCD_ClearStringLine(2);
+ UTIL_LCD_ClearStringLine(3);
+ UTIL_LCD_ClearStringLine(4);
+ BSP_LCD_Refresh(0);
+ MOTION_Set_Notification_Status(0);
+ if(debug_trace_enabled == 1){
+ APP_DBG_MSG("-- TEMPLATE APPLICATION SERVER : MOTION NOTIFICATION DISABLED\n");
+ APP_DBG_MSG(" \n\r");
+ }
+ /* Stop the timer used to update the Motion characteristic */
+ HW_TS_Stop(MOTENV_Server_App_Context.AccGyroMag_Update_Timer_Id);
+ break; /* HW_ENV_NOTIFY_DISABLED_EVT */
+
+ /*
+ * Env char read request
+ */
+ case HW_ENV_READ_EVT:
+ ENV_Update();
+ if(debug_trace_enabled == 1){
+ APP_DBG_MSG("-- TEMPLATE APPLICATION SERVER : ENV READ\n");
+ APP_DBG_MSG(" \n\r");
+ }
+ break; /* HW_ENV_READ_EVT */
+
+ default:
+ break; /* DEFAULT */
+ }
+
+ return;
+}
+
+/**
+ * @brief Handle disconnection (Stop all timers)
+ * @param None
+ * @retval None
+ */
+void MOTENV_APP_HandleDisconnection( void )
+{
+ ENV_Set_Notification_Status(0);
+ /* Stop the timer used to update the Env characteristic */
+ HW_TS_Stop(MOTENV_Server_App_Context.Env_Update_Timer_Id);
+
+ MOTION_Set_Notification_Status(0);
+ /* Stop the timer used to update the Motion characteristic */
+ HW_TS_Stop(MOTENV_Server_App_Context.AccGyroMag_Update_Timer_Id);
+}
+
+/**
+ * @brief Init the MOTENV APP (Register Tasks, Create Notification timers)
+ * @param None
+ * @retval None
+ */
+void MOTENV_APP_Init(void)
+{
+ UTIL_SEQ_RegTask( 1<<CFG_TASK_NOTIFY_ACC_GYRO_MAG_ID, UTIL_SEQ_RFU, MOTION_Send_Notification_Task);
+ /* Create timer to get the AccGyroMag params and update charecteristic */
+ HW_TS_Create(CFG_TIM_PROC_ID_ISR,
+ &(MOTENV_Server_App_Context.AccGyroMag_Update_Timer_Id),
+ hw_ts_Repeated,
+ MOTENV_AccGyroMagUpdate_Timer_Callback);
+
+ UTIL_SEQ_RegTask( 1<<CFG_TASK_NOTIFY_ENVIRONMENT_ID, UTIL_SEQ_RFU, ENV_Send_Notification_Task);
+ /* Create timer to change the Environment params and update charecteristic */
+ HW_TS_Create(CFG_TIM_PROC_ID_ISR,
+ &(MOTENV_Server_App_Context.Env_Update_Timer_Id),
+ hw_ts_Repeated,
+ MOTENV_EnvUpdate_Timer_Callback);
+
+ /**
+ * Initialize MOTENV application context
+ */
+ MOTENV_APP_context_Init();
+
+ return;
+}
+
+/* Private functions ---------------------------------------------------------*/
+
+/**
+ * @brief On timeout, trigger the task
+ * for Motion Char (Acc-Gyro-Mag) notification
+ * @param None
+ * @retval None
+ */
+static void MOTENV_AccGyroMagUpdate_Timer_Callback(void)
+{
+ UTIL_SEQ_SetTask(1<<CFG_TASK_NOTIFY_ACC_GYRO_MAG_ID, CFG_SCH_PRIO_0);
+}
+
+/**
+ * @brief On timeout, trigger the task
+ * for Environmental Char notification
+ * @param None
+ * @retval None
+ */
+static void MOTENV_EnvUpdate_Timer_Callback(void)
+{
+ UTIL_SEQ_SetTask(1<<CFG_TASK_NOTIFY_ENVIRONMENT_ID, CFG_SCH_PRIO_0);
+}
+
+/**
+ * @brief Init Context for each Service exposed by MOTENV Server App
+ * @param None
+ * @retval None
+ */
+static void MOTENV_APP_context_Init(void)
+{
+ /* Init ENV context */
+ ENV_Context_Init();
+
+ /* Init MOTION Context */
+ MOTION_Context_Init();
+
+}
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+/* USER CODE END UserCode */