diff options
Diffstat (limited to 'Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingLPN/STM32_WPAN/app/appli_light_client.c')
-rw-r--r-- | Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingLPN/STM32_WPAN/app/appli_light_client.c | 402 |
1 files changed, 385 insertions, 17 deletions
diff --git a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingLPN/STM32_WPAN/app/appli_light_client.c b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingLPN/STM32_WPAN/app/appli_light_client.c index d7982080a..8556233b3 100644 --- a/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingLPN/STM32_WPAN/app/appli_light_client.c +++ b/Projects/P-NUCLEO-WB55.Nucleo/Applications/BLE/BLE_MeshLightingLPN/STM32_WPAN/app/appli_light_client.c @@ -6,7 +6,8 @@ ****************************************************************************** * @attention * -* <h2><center>© COPYRIGHT(c) 20120 STMicroelectronics</center></h2> +* <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 @@ -21,6 +22,7 @@ #include "types.h" #include "appli_generic.h" #include "appli_light.h" +#include "appli_light_lc.h" #include "common.h" #include "mesh_cfg_usr.h" #include "appli_nvm.h" @@ -46,26 +48,392 @@ extern MOBLEUINT8 Tid_Client; /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ - /** -* @brief Appli_Light_Lightness_Set: This function is callback for Application -* when Lightness message is called -* @param void +* @brief Appli_LightClient_API: This function is a Wrapper to call Light Client API depending on opcode received in input +* @param elementIndex: Index of the element +* @param msg_opcode: opcode of the desired API +* @param msg_params: buffer containing the desired API parameters * @retval MOBLE_RESULT */ -MOBLE_RESULT Appli_LightClient_Lightness_Set(void) +MOBLE_RESULT Appli_LightClient_API(MOBLEUINT8 elementIndex, MOBLEUINT16 msg_opcode, MOBLEUINT8 *msg_params) { - MOBLE_ADDRESS elementAddr = 0; - MOBLEUINT8 pLightnessParam[3]; - - Appli_IntensityControlPublishing(pLightnessParam); - LightClient_Lightness_Set_Unack(elementAddr, - (_Light_LightnessParam*) pLightnessParam, - sizeof(pLightnessParam) ); - - return MOBLE_RESULT_SUCCESS; -} + MOBLE_RESULT result = MOBLE_RESULT_FAIL; + + switch(msg_opcode){ +/******************************************************************************/ +#ifdef ENABLE_LIGHT_MODEL_CLIENT_LIGHTNESS +/******************************************************************************/ + case LIGHT_LIGHTNESS_GET: + { + result = LightClient_Lightness_Get(elementIndex); + break; + } + case LIGHT_LIGHTNESS_SET: + { + result = LightClient_Lightness_Set_Ack(elementIndex, + msg_params, + (sizeof(Light_LightnessParam_t)-2)); //Remove the size of Linear Lightness params + break; + } + case LIGHT_LIGHTNESS_SET_UNACK: + { + result = LightClient_Lightness_Set_Unack(elementIndex, + msg_params, + (sizeof(Light_LightnessParam_t)-2)); //Remove the size of Linear Lightness params + break; + } + + case LIGHT_LIGHTNESS_LINEAR_GET: + { + result = LightClient_Lightness_Linear_Get(elementIndex); + break; + } + case LIGHT_LIGHTNESS_LINEAR_SET: + { + result = LightClient_Lightness_Linear_Set_Ack(elementIndex, + msg_params, + (sizeof(Light_LightnessParam_t)-2)); //Remove the size of Lightness params + break; + } + case LIGHT_LIGHTNESS_LINEAR_SET_UNACK: + { + result = LightClient_Lightness_Linear_Set_Unack(elementIndex, + msg_params, + (sizeof(Light_LightnessParam_t)-2)); //Remove the size of Lightness params + break; + } + + case LIGHT_LIGHTNESS_DEFAULT_GET: + { + result = LightClient_Lightness_Default_Get(elementIndex); + break; + } + case LIGHT_LIGHTNESS_DEFAULT_SET: + { + result = LightClient_Lightness_Default_Set_Ack(elementIndex, + msg_params, + sizeof(Light_LightnessDefaultParam_t)); + break; + } + case LIGHT_LIGHTNESS_DEFAULT_SET_UNACK: + { + result = LightClient_Lightness_Default_Set_Unack(elementIndex, + msg_params, + sizeof(Light_LightnessDefaultParam_t)); + break; + } + + + case LIGHT_LIGHTNESS_RANGE_GET: + { + result = LightClient_Lightness_Range_Get(elementIndex); + break; + } + case LIGHT_LIGHTNESS_RANGE_SET: + { + result = LightClient_Lightness_Range_Set_Ack(elementIndex, + msg_params, + sizeof(Light_LightnessRangeParam_t)-1); //Remove the size of StatusCode + break; + } + case LIGHT_LIGHTNESS_RANGE_SET_UNACK: + { + result = LightClient_Lightness_Range_Set_Unack(elementIndex, + msg_params, + sizeof(Light_LightnessRangeParam_t)-1); //Remove the size of StatusCode + break; + } + + +/******************************************************************************/ +#endif /* #ifdef ENABLE_LIGHT_MODEL_CLIENT_LIGHTNESS */ +/******************************************************************************/ + +/******************************************************************************/ +#ifdef ENABLE_LIGHT_MODEL_CLIENT_CTL +/******************************************************************************/ + case LIGHT_CTL_GET: + { + result = LightClient_Ctl_Get(elementIndex); + break; + } + case LIGHT_CTL_SET: + { + result = LightClient_Ctl_Set_Ack(elementIndex, + msg_params, + (sizeof(Light_CtlParam_t)-4) ); //Remove the size of Last_Lightness and Last_Temperature + break; + } + case LIGHT_CTL_SET_UNACK: + { + result = LightClient_Ctl_Set_Unack(elementIndex, + msg_params, + (sizeof(Light_CtlParam_t)-4) ); //Remove the size of Last_Lightness and Last_Temperature + break; + } + + case LIGHT_CTL_TEMPERATURE_GET: + { + result = LightClient_Ctl_Temperature_Get(elementIndex); + break; + } + case LIGHT_CTL_TEMPERATURE_SET: + { + result = LightClient_Ctl_Temperature_Set_Ack(elementIndex, + msg_params, + sizeof(Light_CtlTemperatureParam_t)); + break; + } + case LIGHT_CTL_TEMPERATURE_SET_UNACK: + { + result = LightClient_Ctl_Temperature_Set_Unack(elementIndex, + msg_params, + sizeof(Light_CtlTemperatureParam_t)); + break; + } + + case LIGHT_CTL_TEMPERATURE_RANGE_GET: + { + result = LightClient_Ctl_Temperature_Range_Get(elementIndex); + break; + } + case LIGHT_CTL_TEMPERATURE_RANGE_SET: + { + result = LightClient_Ctl_Temperature_Range_Set_Ack(elementIndex, + msg_params, + sizeof(Light_CtlTemperatureRangeParam_t)-1); //Remove the size of StatusCode + break; + } + case LIGHT_CTL_TEMPERATURE_RANGE_SET_UNACK: + { + result = LightClient_Ctl_Temperature_Range_Set_Unack(elementIndex, + msg_params, + sizeof(Light_CtlTemperatureRangeParam_t)-1); //Remove the size of StatusCode + break; + } + + case LIGHT_CTL_DEFAULT_GET: + { + result = LightClient_Ctl_Default_Get(elementIndex); + break; + } + case LIGHT_CTL_DEFAULT_SET: + { + result = LightClient_Ctl_Default_Set_Ack(elementIndex, + msg_params, + sizeof(Light_CtlDefaultParam_t)); + break; + } + case LIGHT_CTL_DEFAULT_SET_UNACK: + { + result = LightClient_Ctl_Default_Set_Unack(elementIndex, + msg_params, + sizeof(Light_CtlDefaultParam_t)); + break; + } +/******************************************************************************/ +#endif /* #ifdef ENABLE_LIGHT_MODEL_CLIENT_CTL */ +/******************************************************************************/ +/******************************************************************************/ +#ifdef ENABLE_LIGHT_MODEL_CLIENT_HSL +/******************************************************************************/ + case LIGHT_HSL_GET: + { + result = LightClient_Hsl_Get(elementIndex); + break; + } + case LIGHT_HSL_SET: + { + result = LightClient_Hsl_Set_Ack(elementIndex, + msg_params, + sizeof(Light_HslParam_t) ); + break; + } + case LIGHT_HSL_SET_UNACK: + { + result = LightClient_Hsl_Set_Unack(elementIndex, + msg_params, + sizeof(Light_HslParam_t) ); + break; + } + + case LIGHT_HSL_DEFAULT_GET: + { + result = LightClient_Hsl_Default_Get(elementIndex); + break; + } + case LIGHT_HSL_DEFAULT_SET: + { + result = LightClient_Hsl_Default_Set_Ack(elementIndex, + msg_params, + sizeof(Light_HslDefault_t) ); + break; + } + case LIGHT_HSL_DEFAULT_SET_UNACK: + { + result = LightClient_Hsl_Default_Set_Unack(elementIndex, + msg_params, + sizeof(Light_HslDefault_t) ); + break; + } + + case LIGHT_HSL_RANGE_GET: + { + result = LightClient_Hsl_Range_Get(elementIndex); + break; + } + case LIGHT_HSL_RANGE_SET: + { + result = LightClient_Hsl_Range_Set_Ack(elementIndex, + msg_params, + sizeof(Light_HslRangeParam_t)-1); //Remove the size of StatusCode + break; + } + case LIGHT_HSL_RANGE_SET_UNACK: + { + result = LightClient_Hsl_Range_Set_Unack(elementIndex, + msg_params, + sizeof(Light_HslRangeParam_t)-1); //Remove the size of StatusCode + break; + } + + case LIGHT_HSL_HUE_GET: + { + result = LightClient_Hsl_Hue_Get(elementIndex); + break; + } + case LIGHT_HSL_HUE_SET: + { + result = LightClient_Hsl_Hue_Set_Ack(elementIndex, + msg_params, + sizeof(Light_HslHueParam_t)); + break; + } + case LIGHT_HSL_HUE_SET_UNACK: + { + result = LightClient_Hsl_Hue_Set_Unack(elementIndex, + msg_params, + sizeof(Light_HslHueParam_t)); + break; + } + + case LIGHT_HSL_SATURATION_GET: + { + result = LightClient_Hsl_Saturation_Get(elementIndex); + break; + } + case LIGHT_HSL_SATURATION_SET: + { + result = LightClient_Hsl_Saturation_Set_Ack(elementIndex, + msg_params, + sizeof(Light_HslSaturationParam_t)); + break; + } + case LIGHT_HSL_SATURATION_SET_UNACK: + { + result = LightClient_Hsl_Saturation_Set_Unack(elementIndex, + msg_params, + sizeof(Light_HslSaturationParam_t)); + break; + } +/******************************************************************************/ +#endif /* #ifdef ENABLE_LIGHT_MODEL_CLIENT_HSL */ +/******************************************************************************/ + +/******************************************************************************/ +#ifdef ENABLE_LIGHT_MODEL_CLIENT_LC +/******************************************************************************/ + case LIGHT_LC_MODE_GET: + { + result = LightClient_LC_Mode_Get(elementIndex); + break; + } + case LIGHT_LC_MODE_SET: + { + result = LightClient_LC_Mode_Set_Ack(elementIndex, + msg_params, + sizeof(Light_LC_ModeParam_t)); + break; + } + case LIGHT_LC_MODE_SET_UNACK: + { + result = LightClient_LC_Mode_Set_Unack(elementIndex, + msg_params, + sizeof(Light_LC_ModeParam_t)); + break; + } + case LIGHT_LC_OM_GET: + { + result = LightClient_LC_OM_Get(elementIndex); + break; + } + case LIGHT_LC_OM_SET: + { + result = LightClient_LC_OM_Set_Ack(elementIndex, + msg_params, + sizeof(Light_LC_OccupancyModeParam_t)); + break; + } + case LIGHT_LC_OM_SET_UNACK: + { + result = LightClient_LC_OM_Set_Unack(elementIndex, + msg_params, + sizeof(Light_LC_OccupancyModeParam_t)); + break; + } + case LIGHT_LC_ON_OFF_GET: + { + result = LightClient_LC_OnOff_Get(elementIndex); + break; + } + case LIGHT_LC_ON_OFF_SET: + { + result = LightClient_LC_OnOff_Set_Ack(elementIndex, + msg_params, + sizeof(Light_LC_OnOffParam_t)); + break; + } + case LIGHT_LC_ON_OFF_SET_UNACK: + { + result = LightClient_LC_OnOff_Set_Unack(elementIndex, + msg_params, + sizeof(Light_LC_OnOffParam_t)); + break; + } + + case LIGHT_LC_PROPERTY_GET: + { + result = LightClient_LC_Property_Get(elementIndex, msg_params); + break; + } + case LIGHT_LC_PROPERTY_SET: + { + //TODO: Set dynamic data size depending on Property DATA LENTGH: length = 2 + PropertyDataLength + result = LightClient_LC_Property_Set_Ack(elementIndex, + msg_params, + 5); + break; + } + case LIGHT_LC_PROPERTY_SET_UNACK: + { + //TODO: Set dynamic data size depending on Property DATA LENTGH: length = 2 + PropertyDataLength + result = LightClient_LC_Property_Set_Unack(elementIndex, + msg_params, + 5); + break; + } +/******************************************************************************/ +#endif /* #ifdef ENABLE_LIGHT_MODEL_CLIENT_LC */ +/******************************************************************************/ + default: + { + TRACE_M(TF_LIGHT, "OpCode value invalid %d \r\n", msg_opcode); + result = MOBLE_RESULT_FAIL; + } + } + return result; +} /** * @} @@ -75,5 +443,5 @@ MOBLE_RESULT Appli_LightClient_Lightness_Set(void) * @} */ -/******************* (C) COPYRIGHT 2017 STMicroelectronics *****END OF FILE****/ +/******************* (C) COPYRIGHT 2020 STMicroelectronics *****END OF FILE****/ |