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_Mesh_Model_Sensor/STM32_WPAN/app/appli_light_client.c')
-rw-r--r--Projects/STM32WB5MM-DK/Applications/BLE/BLE_Mesh_Model_Sensor/STM32_WPAN/app/appli_light_client.c1204
1 files changed, 1204 insertions, 0 deletions
diff --git a/Projects/STM32WB5MM-DK/Applications/BLE/BLE_Mesh_Model_Sensor/STM32_WPAN/app/appli_light_client.c b/Projects/STM32WB5MM-DK/Applications/BLE/BLE_Mesh_Model_Sensor/STM32_WPAN/app/appli_light_client.c
new file mode 100644
index 000000000..8d7dda2f7
--- /dev/null
+++ b/Projects/STM32WB5MM-DK/Applications/BLE/BLE_Mesh_Model_Sensor/STM32_WPAN/app/appli_light_client.c
@@ -0,0 +1,1204 @@
+/**
+ ******************************************************************************
+* @file appli_light_client.c
+* @author BLE Mesh Team
+* @brief Application interface for Generic Mesh Models
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2020-2021 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "hal_common.h"
+#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"
+#include "appli_mesh.h"
+#include "generic_client.h"
+#include "appli_light_client.h"
+#include "light_lc.h"
+#include "light_client.h"
+
+
+/** @addtogroup ST_BLE_Mesh
+* @{
+*/
+
+/** @addtogroup Application_Mesh_Models
+* @{
+*/
+
+/* Private typedef -----------------------------------------------------------*/
+/* Private define ------------------------------------------------------------*/
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+
+extern MOBLEUINT8 Tid_Client;
+/* Private function prototypes -----------------------------------------------*/
+/* Private functions ---------------------------------------------------------*/
+
+/**
+* @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_API(MOBLEUINT8 elementIndex, MOBLEUINT16 msg_opcode, MOBLEUINT8 *msg_params)
+{
+ 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)-4)); //Remove the size of Linear Lightness params, Transition Time and Delay
+ break;
+ }
+ case LIGHT_LIGHTNESS_SET_UNACK:
+ {
+ result = LightClient_Lightness_Set_Unack(elementIndex,
+ msg_params,
+ (sizeof(Light_LightnessParam_t)-4)); //Remove the size of Linear Lightness params, Transition Time and Delay
+ 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)-4)); //Remove the size of Lightness params, Transition Time and Delay
+ break;
+ }
+ case LIGHT_LIGHTNESS_LINEAR_SET_UNACK:
+ {
+ result = LightClient_Lightness_Linear_Set_Unack(elementIndex,
+ msg_params,
+ (sizeof(Light_LightnessParam_t)-4)); //Remove the size of Lightness params, Transition Time and Delay
+ 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)-2); //Remove the size of Transition Time and Delay
+ break;
+ }
+ case LIGHT_CTL_TEMPERATURE_SET_UNACK:
+ {
+ result = LightClient_Ctl_Temperature_Set_Unack(elementIndex,
+ msg_params,
+ sizeof(Light_CtlTemperatureParam_t)-2); //Remove the size of Transition Time and Delay
+ 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_HslDefaultParam_t) );
+ break;
+ }
+ case LIGHT_HSL_DEFAULT_SET_UNACK:
+ {
+ result = LightClient_Hsl_Default_Set_Unack(elementIndex,
+ msg_params,
+ sizeof(Light_HslDefaultParam_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)-2); //Remove the size of Transition Time and Delay
+ break;
+ }
+ case LIGHT_HSL_HUE_SET_UNACK:
+ {
+ result = LightClient_Hsl_Hue_Set_Unack(elementIndex,
+ msg_params,
+ sizeof(Light_HslHueParam_t)-2); //Remove the size of Transition Time and Delay
+ 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)-2); //Remove the size of Transition Time and Delay
+ break;
+ }
+ case LIGHT_HSL_SATURATION_SET_UNACK:
+ {
+ result = LightClient_Hsl_Saturation_Set_Unack(elementIndex,
+ msg_params,
+ sizeof(Light_HslSaturationParam_t)-2); //Remove the size of Transition Time and Delay
+ 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:
+ {
+
+ result = LightClient_LC_Property_Set_Ack(elementIndex,
+ msg_params,
+ 5);
+ break;
+ }
+ case LIGHT_LC_PROPERTY_SET_UNACK:
+ {
+
+ 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;
+}
+
+/**
+* @brief Appli_Light_Lightness_Status: This function is callback for Application
+* when Light Lightness status message is received
+* @param pLightness_status: Pointer to the parameters received for message
+* @param pLength: length of data
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT Appli_Light_Lightness_Status(MOBLEUINT8 const *pLightness_status, MOBLEUINT32 pLength, MOBLEUINT16 dstPeer,
+ MOBLEUINT8 elementIndex)
+{
+#if ( CFG_DEBUG_TRACE != 0 )
+ MOBLEUINT32 i;
+ MOBLEUINT16 value = 0;
+#endif
+
+ TRACE_M(TF_LIGHT,"Light_Lightness_Status callback received for element %d \r\n", elementIndex);
+ TRACE_M(TF_SERIAL_CTRL,"#824E!\r\n");
+
+#if ( CFG_DEBUG_TRACE != 0 )
+ for(i = 0; i < pLength; i++)
+ {
+ if((i == 0) || (i == 2))
+ {
+ value = pLightness_status[i];
+ }
+ else if(i == 1)
+ {
+ TRACE_M(TF_LIGHT,"Present Lightness: 0x%x (%d)\r\n",
+ value | pLightness_status[i] << 8,
+ value | pLightness_status[i] << 8);
+ }
+ else if(i == 3)
+ {
+ TRACE_M(TF_LIGHT,"Target Lightness: 0x%x (%d)\r\n",
+ value | pLightness_status[i] << 8,
+ value | pLightness_status[i] << 8);
+ }
+ else if(i == 4)
+ {
+ TRACE_M(TF_LIGHT,"Remaining Time: 0x%x (%d)\r\n",
+ pLightness_status[i],
+ pLightness_status[i]);
+ }
+ }
+#endif
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief Appli_Light_Lightness_Linear_Status: This function is callback for Application
+* when Light Lightness Linear status message is received
+* @param pLightnessLinear_status: Pointer to the parameters received for message
+* @param dstPeer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param elementIndex: index of the element received from peer for this node which
+* is elementNumber-1
+* @param pLength: length of data
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT Appli_Light_Lightness_Linear_Status(MOBLEUINT8 const *pLightnessLinear_status, MOBLEUINT32 pLength, MOBLEUINT16 dstPeer,
+ MOBLEUINT8 elementIndex)
+{
+#if ( CFG_DEBUG_TRACE != 0 )
+ MOBLEUINT32 i;
+ MOBLEUINT16 value = 0;
+#endif
+
+ TRACE_M(TF_LIGHT,"Light_Lightness_Linear_Status callback received for element %d \r\n", elementIndex);
+ TRACE_M(TF_SERIAL_CTRL,"#8252!\r\n");
+
+#if ( CFG_DEBUG_TRACE != 0 )
+ for(i = 0; i < pLength; i++)
+ {
+ if((i == 0) || (i == 2))
+ {
+ value = pLightnessLinear_status[i];
+ }
+ else if(i == 1)
+ {
+ TRACE_M(TF_LIGHT,"Present Lightness: 0x%x (%d)\r\n",
+ value | pLightnessLinear_status[i] << 8,
+ value | pLightnessLinear_status[i] << 8);
+ }
+ else if(i == 3)
+ {
+ TRACE_M(TF_LIGHT,"Target Lightness: 0x%x (%d)\r\n",
+ value | pLightnessLinear_status[i] << 8,
+ value | pLightnessLinear_status[i] << 8);
+ }
+ else if(i == 4)
+ {
+ TRACE_M(TF_LIGHT,"Remaining Time: 0x%x (%d)\r\n",
+ pLightnessLinear_status[i],
+ pLightnessLinear_status[i]);
+ }
+ }
+#endif
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief Appli_Light_Lightness_Last_Status: This function is callback for Application
+* when Light Lightness Last status message is received
+* @param pLightnessDefault_status: Pointer to the parameters received for message
+* @param pLength: length of data
+* @param dstPeer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param elementIndex: index of the element received from peer for this node which
+* is elementNumber-1
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT Appli_Light_Lightness_Last_Status(MOBLEUINT8 const *pLightnessLast_status,
+ MOBLEUINT32 pLength,
+ MOBLEUINT16 dstPeer,
+ MOBLEUINT8 elementIndex)
+{
+#if ( CFG_DEBUG_TRACE != 0 )
+ MOBLEUINT32 i;
+ MOBLEUINT16 value;
+#endif
+
+ TRACE_M(TF_LIGHT,"Light_Lightness_Last_Status callback received for element %d \r\n", elementIndex);
+ TRACE_M(TF_SERIAL_CTRL,"#8256!\r\n");
+
+#if ( CFG_DEBUG_TRACE != 0 )
+ for(i = 0; i < pLength; i++)
+ {
+ if(i == 0)
+ {
+ value = pLightnessLast_status[i];
+ }
+ else if(i == 1)
+ {
+ TRACE_M(TF_LIGHT,"Lightness Last: 0x%x (%d)\r\n",
+ value | pLightnessLast_status[i] << 8,
+ value | pLightnessLast_status[i] << 8);
+ }
+ }
+#endif
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief Appli_Light_Lightness_Default_Status: This function is callback for Application
+* when Light Lightness Default status message is received
+* @param pLightnessDefault_status: Pointer to the parameters received for message
+* @param pLength: length of data
+* @param dstPeer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param elementIndex: index of the element received from peer for this node which
+* is elementNumber-1
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT Appli_Light_Lightness_Default_Status(MOBLEUINT8 const *pLightnessDefault_status, MOBLEUINT32 pLength
+ , MOBLEUINT16 dstPeer,
+ MOBLEUINT8 elementIndex)
+{
+#if ( CFG_DEBUG_TRACE != 0 )
+ MOBLEUINT32 i;
+ MOBLEUINT16 value;
+#endif
+
+ TRACE_M(TF_LIGHT,"Light_Lightness_Default_Status callback received for element %d \r\n", elementIndex);
+ TRACE_M(TF_SERIAL_CTRL,"#8256!\r\n");
+
+#if ( CFG_DEBUG_TRACE != 0 )
+ for(i = 0; i < pLength; i++)
+ {
+ if(i == 0)
+ {
+ value = pLightnessDefault_status[i];
+ }
+ else if(i == 1)
+ {
+ TRACE_M(TF_LIGHT,"Lightness Default: 0x%x (%d)\r\n",
+ value | pLightnessDefault_status[i] << 8,
+ value | pLightnessDefault_status[i] << 8);
+ }
+ }
+#endif
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief Appli_Light_Lightness_Range_Status: This function is callback for Application
+* when Light Lightness range ststus message is received
+* @param pLightnessRange_status: Pointer to the parameters received for message
+* @param pLength: length of data
+* @param dstPeer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param elementIndex: index of the element received from peer for this node which
+* is elementNumber-1
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT Appli_Light_Lightness_Range_Status(MOBLEUINT8 const *pLightnessRange_status, MOBLEUINT32 pLength
+ , MOBLEUINT16 dstPeer,
+ MOBLEUINT8 elementIndex)
+{
+#if ( CFG_DEBUG_TRACE != 0 )
+ MOBLEUINT32 i;
+ MOBLEUINT16 value;
+#endif
+
+ TRACE_M(TF_LIGHT,"Light_Lightness_Range_Status callback received for element %d \r\n", elementIndex);
+ TRACE_M(TF_SERIAL_CTRL,"#8258!\r\n");
+
+#if ( CFG_DEBUG_TRACE != 0 )
+ for(i = 0; i < pLength; i++)
+ {
+ if(i == 0)
+ {
+ TRACE_M(TF_LIGHT,"Status Code: 0x%x (%d)\r\n",
+ pLightnessRange_status[i],
+ pLightnessRange_status[i]);
+ }
+ else if((i == 1) || (i == 3))
+ {
+ value = pLightnessRange_status[i];
+ }
+ else if(i == 2)
+ {
+ TRACE_M(TF_LIGHT,"Range Min: 0x%x (%d)\r\n",
+ value | pLightnessRange_status[i] << 8,
+ value | pLightnessRange_status[i] << 8);
+ }
+ else if(i == 4)
+ {
+ TRACE_M(TF_LIGHT,"Range Max: 0x%x (%d)\r\n",
+ value | pLightnessRange_status[i] << 8,
+ value | pLightnessRange_status[i] << 8);
+ }
+ }
+#endif
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief Appli_Light_Ctl_Status: This function is callback for Application
+* when Light CTL status message is received
+* @param pLightCtl_status: Pointer to the parameters received for message
+* @param pLength: length of data
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT Appli_Light_Ctl_Status(MOBLEUINT8 const *pLightCtl_status, MOBLEUINT32 pLength, MOBLEUINT16 dstPeer,
+ MOBLEUINT8 elementIndex)
+{
+#if ( CFG_DEBUG_TRACE != 0 )
+ MOBLEUINT32 i;
+ MOBLEUINT16 value = 0;
+#endif
+
+ TRACE_M(TF_LIGHT,"Light_Ctl_Status callback received for element %d \r\n", elementIndex);
+ TRACE_M(TF_SERIAL_CTRL,"#8260!\r\n");
+
+#if ( CFG_DEBUG_TRACE != 0 )
+ for(i = 0; i < pLength; i++)
+ {
+ if((i == 0) || (i == 2) || (i == 4) || (i == 6))
+ {
+ value = pLightCtl_status[i];
+ }
+ else if(i == 1)
+ {
+ TRACE_M(TF_LIGHT,"Present CTL Lightness: 0x%x (%d)\r\n",
+ value | pLightCtl_status[i] << 8,
+ value | pLightCtl_status[i] << 8);
+ }
+ else if(i == 3)
+ {
+ TRACE_M(TF_LIGHT,"Present CTL Temperature: 0x%x (%d)\r\n",
+ value | pLightCtl_status[i] << 8,
+ value | pLightCtl_status[i] << 8);
+ }
+ else if(i == 5)
+ {
+ TRACE_M(TF_LIGHT,"Target CTL Lightness: 0x%x (%d)\r\n",
+ value | pLightCtl_status[i] << 8,
+ value | pLightCtl_status[i] << 8);
+ }
+ else if(i == 7)
+ {
+ TRACE_M(TF_LIGHT,"Target CTL Temperature: 0x%x (%d)\r\n",
+ value | pLightCtl_status[i] << 8,
+ value | pLightCtl_status[i] << 8);
+ }
+ else if(i == 8)
+ {
+ TRACE_M(TF_LIGHT,"Remaining Time:0x%x (%d)\r\n",
+ pLightCtl_status[i],
+ pLightCtl_status[i]);
+ }
+ }
+#endif
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief Appli_Light_CtlTemperature_Status: This function is callback for Application
+* when Light CTL temperature status message is received
+* @param pLightCtlTemp_status: Pointer to the parameters received for message
+* @param pLength: length of data
+* @param dstPeer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param elementIndex: index of the element received from peer for this node which
+* is elementNumber-1
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT Appli_Light_CtlTemperature_Status(MOBLEUINT8 const *pLightCtlTemp_status, MOBLEUINT32 pLength
+ , MOBLEUINT16 dstPeer,
+ MOBLEUINT8 elementIndex)
+{
+#if ( CFG_DEBUG_TRACE != 0 )
+ MOBLEUINT32 i;
+ MOBLEUINT16 value = 0;
+#endif
+
+ TRACE_M(TF_LIGHT,"Light_CtlTemperature_Status callback received for element %d \r\n", elementIndex);
+ TRACE_M(TF_SERIAL_CTRL,"#8266!\r\n");
+
+#if ( CFG_DEBUG_TRACE != 0 )
+ for(i = 0; i < pLength; i++)
+ {
+ if((i == 0) || (i == 2) || (i == 4) || (i == 6))
+ {
+ value = pLightCtlTemp_status[i];
+ }
+ else if(i == 1)
+ {
+ TRACE_M(TF_LIGHT,"Present CTL Temperature: 0x%x (%d)\r\n",
+ value | pLightCtlTemp_status[i] << 8,
+ value | pLightCtlTemp_status[i] << 8);
+ }
+ else if(i == 3)
+ {
+ TRACE_M(TF_LIGHT,"Present CTL Delta UV: 0x%x (%d)\r\n",
+ value | pLightCtlTemp_status[i] << 8,
+ value | pLightCtlTemp_status[i] << 8);
+ }
+ else if(i == 5)
+ {
+ TRACE_M(TF_LIGHT,"Target CTL Temperature: 0x%x (%d)\r\n",
+ value | pLightCtlTemp_status[i] << 8,
+ value | pLightCtlTemp_status[i] << 8);
+ }
+ else if(i == 7)
+ {
+ TRACE_M(TF_LIGHT,"Target CTL Delta UV: 0x%x (%d)\r\n",
+ value | pLightCtlTemp_status[i] << 8,
+ value | pLightCtlTemp_status[i] << 8);
+ }
+ else if(i == 8)
+ {
+ TRACE_M(TF_LIGHT,"Remaining Time: 0x%x (%d)\r\n",
+ pLightCtlTemp_status[i],
+ pLightCtlTemp_status[i]);
+ }
+ }
+#endif
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+
+/**
+* @brief Appli_Light_CtlTemperature_Range_Set: This function is callback for Application
+* when Light CTL temperature range status message is received
+* @param pCtlTempRange_status: Pointer to the parameters received for message
+* @param pLength: length of data
+* @param dstPeer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param elementIndex: index of the element received from peer for this node which
+* is elementNumber-1
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT Appli_Light_CtlTemperature_Range_Status(MOBLEUINT8 const *pCtlTempRange_status,
+ MOBLEUINT32 pLength,
+ MOBLEUINT16 dstPeer,
+ MOBLEUINT8 elementIndex)
+{
+#if ( CFG_DEBUG_TRACE != 0 )
+ MOBLEUINT32 i;
+ MOBLEUINT16 value;
+#endif
+
+ TRACE_M(TF_LIGHT,"Light_CtlTemperature_Range_Status callback received for element %d \r\n", elementIndex);
+ TRACE_M(TF_SERIAL_CTRL,"#8263!\r\n");
+
+#if ( CFG_DEBUG_TRACE != 0 )
+ for(i = 0; i < pLength; i++)
+ {
+ if(i == 0)
+ {
+ TRACE_M(TF_LIGHT,"Status Code: 0x%x (%d)\r\n",
+ pCtlTempRange_status[i],
+ pCtlTempRange_status[i]);
+ }
+ else if((i == 1) || (i == 3))
+ {
+ value = pCtlTempRange_status[i];
+ }
+ else if(i == 2)
+ {
+ TRACE_M(TF_LIGHT,"Range Min: 0x%x (%d)\r\n",
+ value | pCtlTempRange_status[i] << 8,
+ value | pCtlTempRange_status[i] << 8 );
+ }
+ else if(i == 4)
+ {
+ TRACE_M(TF_LIGHT,"Range Max: 0x%x (%d)\r\n",
+ value | pCtlTempRange_status[i] << 8,
+ value | pCtlTempRange_status[i] << 8 );
+ }
+ }
+#endif
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief Appli_Light_CtlDefault_Status: This function is callback for Application
+* when Light CTL Default status message is received
+* @param pCtlDefault_status: Pointer to the parameters received for message
+* @param pLength: length of data
+* @param dstPeer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param elementIndex: index of the element received from peer for this node which
+* is elementNumber-1
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT Appli_Light_CtlDefault_Status(MOBLEUINT8 const *pCtlDefault_status, MOBLEUINT32 pLength, MOBLEUINT16 dstPeer,
+ MOBLEUINT8 elementIndex)
+{
+#if ( CFG_DEBUG_TRACE != 0 )
+ MOBLEUINT32 i;
+ MOBLEUINT16 value = 0;
+#endif
+
+ TRACE_M(TF_LIGHT,"Light_Ctl_DefaultStatus callback received for element %d \r\n", elementIndex);
+ TRACE_M(TF_SERIAL_CTRL,"#8268!\r\n");
+
+#if ( CFG_DEBUG_TRACE != 0 )
+ for(i = 0; i < pLength; i++)
+ {
+ if((i == 0) || (i == 2) || (i == 4))
+ {
+ value = pCtlDefault_status[i];
+ }
+ else if(i == 1)
+ {
+ TRACE_M(TF_LIGHT,"Lightness: 0x%x (%d)\n\r",
+ value | pCtlDefault_status[i] << 8,
+ value | pCtlDefault_status[i] << 8);
+ }
+ else if(i == 3)
+ {
+ TRACE_M(TF_LIGHT,"Temperature: 0x%x (%d)\n\r",
+ value | pCtlDefault_status[i] << 8,
+ value | pCtlDefault_status[i] << 8);
+ }
+ else if(i == 5)
+ {
+ TRACE_M(TF_LIGHT,"Delta UV: 0x%x (%d)\n\r",
+ value | pCtlDefault_status[i] << 8,
+ value | pCtlDefault_status[i] << 8);
+ }
+ }
+#endif
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief Appli_Light_Hsl_Status: This function is callback for Application
+* when Light HSL status message is received
+* @param pHsl_status: Pointer to the parameters received for message
+* @param pLength: length of data
+* @param dstPeer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param elementIndex: index of the element received from peer for this node which
+* is elementNumber-1
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT Appli_Light_Hsl_Status(MOBLEUINT8 const *pHsl_status, MOBLEUINT32 pLength, MOBLEUINT16 dstPeer,
+ MOBLEUINT8 elementIndex)
+{
+#if ( CFG_DEBUG_TRACE != 0 )
+ MOBLEUINT32 i;
+ MOBLEUINT16 value = 0;
+#endif
+
+ TRACE_M(TF_LIGHT,"Light_Hsl_Status callback received for element %d \r\n", elementIndex);
+ TRACE_M(TF_SERIAL_CTRL,"#8278!\r\n");
+
+#if ( CFG_DEBUG_TRACE != 0 )
+ for(i = 0; i < pLength; i++)
+ {
+ if((i == 0) || (i == 2) || (i == 4))
+ {
+ value = pHsl_status[i];
+ }
+ else if(i == 1)
+ {
+ TRACE_M(TF_LIGHT,"HSL Lightness: 0x%x (%d)\n\r",
+ value | pHsl_status[i] << 8,
+ value | pHsl_status[i] << 8);
+ }
+ else if(i == 3)
+ {
+ TRACE_M(TF_LIGHT,"HSL Hue: 0x%x (%d)\n\r",
+ value | pHsl_status[i] << 8,
+ value | pHsl_status[i] << 8);
+ }
+ else if(i == 5)
+ {
+ TRACE_M(TF_LIGHT,"HSL Saturation: 0x%x (%d)\n\r",
+ value | pHsl_status[i] << 8,
+ value | pHsl_status[i] << 8);
+ }
+ else if(i == 6)
+ {
+ TRACE_M(TF_LIGHT,"Remaining Time: 0x%x (%d)\n\r",
+ pHsl_status[i],
+ pHsl_status[i]);
+ }
+ }
+#endif
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief Appli_Light_HslHue_Status: This function is callback for Application
+* when Light HSL HUE status message is received
+* @param pHslHue_status: Pointer to the parameters received for message
+* @param pLength: length of data
+* @param dstPeer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param elementIndex: index of the element received from peer for this node which
+* is elementNumber-1
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT Appli_Light_HslHue_Status(MOBLEUINT8 const *pHslHue_status, MOBLEUINT32 pLength, MOBLEUINT16 dstPeer,
+ MOBLEUINT8 elementIndex)
+{
+#if ( CFG_DEBUG_TRACE != 0 )
+ MOBLEUINT32 i;
+ MOBLEUINT16 value = 0;
+#endif
+
+ TRACE_M(TF_LIGHT,"Light_HslHue_Status callback received for element %d \r\n", elementIndex);
+ TRACE_M(TF_SERIAL_CTRL,"#8271!\r\n");
+
+#if ( CFG_DEBUG_TRACE != 0 )
+ for(i = 0; i < pLength; i++)
+ {
+ if((i == 0) || (i == 2))
+ {
+ value = pHslHue_status[i];
+ }
+ else if(i == 1)
+ {
+ TRACE_M(TF_LIGHT,"Present Hue: 0x%x (%d)\n\r",
+ value | pHslHue_status[i] << 8,
+ value | pHslHue_status[i] << 8);
+ }
+ else if(i == 3)
+ {
+ TRACE_M(TF_LIGHT,"Target Hue: 0x%x (%d)\n\r",
+ value | pHslHue_status[i] << 8,
+ value | pHslHue_status[i] << 8);
+ }
+ else if(i == 4)
+ {
+ TRACE_M(TF_LIGHT,"Remaining Time: 0x%x (%d)\n\r",
+ pHslHue_status[i],
+ pHslHue_status[i]);
+ }
+ }
+#endif
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief Appli_Light_HslSaturation_Status: This function is callback for Application
+* when Light HSL Saturation status message is received
+* @param pHslSaturation_status: Pointer to the parameters received for message
+* @param pLength: length of data
+* @param dstPeer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param elementIndex: index of the element received from peer for this node which
+* is elementNumber-1
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT Appli_Light_HslSaturation_Status(MOBLEUINT8 const *pHslSaturation_status, MOBLEUINT32 pLength, MOBLEUINT16 dstPeer,
+ MOBLEUINT8 elementIndex)
+{
+#if ( CFG_DEBUG_TRACE != 0 )
+ MOBLEUINT32 i;
+ MOBLEUINT16 value = 0;
+#endif
+
+ TRACE_M(TF_LIGHT,"Light_HslSaturation_Status callback received for element %d \r\n", elementIndex);
+ TRACE_M(TF_SERIAL_CTRL,"#8275!\r\n");
+
+#if ( CFG_DEBUG_TRACE != 0 )
+ for(i = 0; i < pLength; i++)
+ {
+ if((i == 0) || (i == 2))
+ {
+ value = pHslSaturation_status[i];
+ }
+ else if(i == 1)
+ {
+ TRACE_M(TF_LIGHT,"Present Saturation: 0x%x (%d)\n\r",
+ value | pHslSaturation_status[i] << 8,
+ value | pHslSaturation_status[i] << 8);
+ }
+ else if(i == 3)
+ {
+ TRACE_M(TF_LIGHT,"Target Saturation: 0x%x (%d)\n\r",
+ value | pHslSaturation_status[i] << 8,
+ value | pHslSaturation_status[i] << 8);
+ }
+ else if(i == 4)
+ {
+ TRACE_M(TF_LIGHT,"Remaining Time: 0x%x (%d)\n\r",
+ pHslSaturation_status[i],
+ pHslSaturation_status[i]);
+ }
+ }
+#endif
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief Appli_Light_HslDefault_Status: This function is callback for Application
+* when Light HSL Default status message is received
+* @param pHslDefault_status: Pointer to the parameters received for message
+* @param pLength: length of data
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT Appli_Light_HslDefault_Status(MOBLEUINT8 const *pHslDefault_status, MOBLEUINT32 pLength, MOBLEUINT16 dstPeer,
+ MOBLEUINT8 elementIndex)
+{
+#if ( CFG_DEBUG_TRACE != 0 )
+ MOBLEUINT32 i;
+ MOBLEUINT16 value = 0;
+#endif
+
+ TRACE_M(TF_LIGHT,"Light_HslDefault_Status callback received for element %d \r\n", elementIndex);
+ TRACE_M(TF_SERIAL_CTRL,"#827C!\r\n");
+
+#if ( CFG_DEBUG_TRACE != 0 )
+ for(i = 0; i < pLength; i++)
+ {
+ if((i == 0) || (i == 2) || (i == 4))
+ {
+ value = pHslDefault_status[i];
+ }
+ else if(i == 1)
+ {
+ TRACE_M(TF_LIGHT,"Lightness: 0x%x (%d)\n\r",
+ value | pHslDefault_status[i] << 8,
+ value | pHslDefault_status[i] << 8);
+ }
+ else if(i == 3)
+ {
+ TRACE_M(TF_LIGHT,"Hue: 0x%x (%d)\n\r",
+ value | pHslDefault_status[i] << 8,
+ value | pHslDefault_status[i] << 8);
+ }
+ else if(i == 5)
+ {
+ TRACE_M(TF_LIGHT,"Saturation: 0x%x (%d)\n\r",
+ value | pHslDefault_status[i] << 8,
+ value | pHslDefault_status[i] << 8);
+ }
+ }
+#endif
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief Appli_Light_HslRange_Status: This function is callback for Application
+* when Light HSL range status message is received
+* @param pHslRange_status: Pointer to the parameters received for message
+* @param pLength: length of data
+* @param dstPeer: destination send by peer for this node. It can be a
+* unicast or group address
+* @param elementIndex: index of the element received from peer for this node which
+* is elementNumber-1
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT Appli_Light_HslRange_Status(MOBLEUINT8 const *pHslRange_status, MOBLEUINT32 pLength, MOBLEUINT16 dstPeer,
+ MOBLEUINT8 elementIndex)
+{
+#if ( CFG_DEBUG_TRACE != 0 )
+ MOBLEUINT32 i;
+ MOBLEUINT16 value = 0;
+#endif
+
+ TRACE_M(TF_LIGHT,"Light_HslRange_Status callback received for element %d \r\n", elementIndex);
+ TRACE_M(TF_SERIAL_CTRL,"#827E!\r\n");
+
+
+#if ( CFG_DEBUG_TRACE != 0 )
+ for(i = 0; i < pLength; i++)
+ {
+ if(i == 0)
+ {
+ TRACE_M(TF_LIGHT,"Status Code: 0x%x (%d)\n\r",
+ pHslRange_status[i],
+ pHslRange_status[i]);
+ }
+ else if((i == 1) || (i == 3) || (i == 5) || (i == 7))
+ {
+ value = pHslRange_status[i];
+ }
+ else if(i == 2)
+ {
+ TRACE_M(TF_LIGHT,"Hue Range Min: 0x%x (%d)\n\r",
+ value | pHslRange_status[i] << 8,
+ value | pHslRange_status[i] << 8);
+ }
+ else if(i == 4)
+ {
+ TRACE_M(TF_LIGHT,"Hue Range Max: 0x%x (%d)\n\r",
+ value | pHslRange_status[i] << 8,
+ value | pHslRange_status[i] << 8);
+ }
+ else if(i == 6)
+ {
+ TRACE_M(TF_LIGHT,"Saturation Range Min: 0x%x (%d)\n\r",
+ value | pHslRange_status[i] << 8,
+ value | pHslRange_status[i] << 8);
+ }
+ else if(i == 8)
+ {
+ TRACE_M(TF_LIGHT,"Saturation Range Max: 0x%x (%d)\n\r",
+ value | pHslRange_status[i] << 8,
+ value | pHslRange_status[i] << 8);
+ }
+ }
+#endif
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+
+/**
+* @}
+*/
+
+/**
+* @}
+*/
+
+