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 'Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/sensors_client.c')
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/sensors_client.c680
1 files changed, 680 insertions, 0 deletions
diff --git a/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/sensors_client.c b/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/sensors_client.c
new file mode 100644
index 000000000..670a259ca
--- /dev/null
+++ b/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/sensors_client.c
@@ -0,0 +1,680 @@
+/**
+******************************************************************************
+* @file sensors_client.c
+* @author BLE Mesh Team
+* @brief Sensors model client middleware file
+******************************************************************************
+* @attention
+*
+* <h2><center>&copy; 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
+* the License. You may obtain a copy of the License at:
+* www.st.com/SLA0044
+*
+******************************************************************************
+*/
+/* Includes ------------------------------------------------------------------*/
+#include "hal_common.h"
+#include "mesh_cfg.h"
+#include "sensors.h"
+#include "sensors_client.h"
+#include "common.h"
+#include "models_if.h"
+#include <string.h>
+#include "compiler.h"
+
+
+/** @addtogroup MODEL_CLIENT_SENSORS
+* @{
+*/
+
+/** @addtogroup Sensors_Model_Client_Callbacks
+* @{
+*/
+
+/* Private define ------------------------------------------------------------*/
+/* Private macro -------------------------------------------------------------*/
+
+/* Private variables ---------------------------------------------------------*/
+extern Model_Tid_t Model_Tid;;
+const MODEL_OpcodeTableParam_t Sensors_Client_Opcodes_Table[] = {
+ /* Sensors Client */
+/* model_id opcode, reliable, min_payload_size, max_payload_size, response_opcode, min_response_size, max_response_size
+ Here in this array, Handler is not defined; */
+#ifdef ENABLE_SENSOR_MODEL_CLIENT
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_DESCRIPTOR_GET, MOBLE_FALSE, 0, 2, SENSOR_DESCRIPTOR_STATUS, 2, 75},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_DESCRIPTOR_STATUS, MOBLE_FALSE, 2, 75, 0, 1, 1},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_CADENCE_GET, MOBLE_FALSE, 2, 2, SENSOR_CADENCE_STATUS, 2, 2},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_CADENCE_SET, MOBLE_FALSE, 8, 20, 0, 2, 2},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_CADENCE_SET_UNACK, MOBLE_FALSE, 8, 20, 0, 2, 2},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_CADENCE_STATUS, MOBLE_FALSE, 2, 2, 0, 1, 1},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_SETTINGS_GET, MOBLE_FALSE, 2, 2, SENSOR_SETTINGS_STATUS, 2, 2},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_SETTINGS_STATUS, MOBLE_FALSE, 2, 2, 0, 1, 1},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_SETTING_GET, MOBLE_FALSE, 4, 4, SENSOR_SETTING_STATUS, 2, 2},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_SETTING_SET, MOBLE_FALSE, 5, 8, 0, 2, 2},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_SETTING_SET_UNACK, MOBLE_FALSE, 5, 8, 0, 2, 2},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_SETTING_STATUS, MOBLE_FALSE, 2, 2, 0, 1, 1},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_GET, MOBLE_FALSE, 0, 2, SENSOR_STATUS, 0, 65},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_STATUS, MOBLE_FALSE, 0, 65, 0, 1, 1},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_COLUMN_GET, MOBLE_FALSE, 3, 6, SENSOR_COLUMN_STATUS, 2, 14},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_COLUMN_STATUS, MOBLE_FALSE, 2, 14, 0, 1, 1},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_SERIES_GET, MOBLE_TRUE, 2, 10, SENSOR_SERIES_STATUS, 2, 2},
+ {SENSOR_CLIENT_MODEL_ID, SENSOR_SERIES_STATUS, MOBLE_FALSE, 2, 2, 0, 1, 1},
+#endif
+ {0}
+};
+
+/* Private function prototypes -----------------------------------------------*/
+//WEAK_FUNCTION (MOBLE_RESULT Appli_Sensors_OnOff_Set(Sensors_OnOffStatus_t* pSensors_OnOffParam,
+// MOBLEUINT8 OptionalValid));
+//WEAK_FUNCTION (MOBLE_RESULT Appli_Sensors_Level_Set(Sensors_LevelStatus_t* plevelParam,
+// MOBLEUINT8 OptionalValid));
+//WEAK_FUNCTION (MOBLE_RESULT Appli_Sensors_LevelDelta_Set(Sensors_LevelStatus_t* pdeltalevelParam,
+// MOBLEUINT8 OptionalValid));
+//WEAK_FUNCTION (MOBLE_RESULT Appli_Sensors_LevelMove_Set(Sensors_LevelStatus_t* pdeltaMoveParam,
+// MOBLEUINT8 OptionalValid));
+//WEAK_FUNCTION (MOBLE_RESULT Appli_Sensors_PowerOnOff_Set(Sensors_PowerOnOffParam_t* pPowerOnOffParam,
+// MOBLEUINT8 OptionalValid));
+//WEAK_FUNCTION (MOBLE_RESULT Appli_Sensors_DefaultTransitionTime_Set(Sensors_DefaultTransitionParam_t* pDefaultTimeParam,
+// MOBLEUINT8 OptionalValid));
+//WEAK_FUNCTION (void Appli_Sensors_Restore_PowerOn_Value(MOBLEUINT8 restoreValue));
+
+/* Private functions ---------------------------------------------------------*/
+
+/**
+* @brief SensorsClient_Descriptor_Get: This function is called for Descriptor Get message
+* @param elementIndex : Index of the element
+* @param ppropertyId : pointer on property ID, if not present NULL
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT SensorsClient_Descriptor_Get(MOBLEUINT8 elementIndex,
+ MOBLEUINT8 * ppropertyId)
+{
+
+ /* 4.2.1 Sensor Descriptor Get
+ */
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT16 msg_opcode;
+ MOBLEUINT8 const *msg_buff = NULL;
+ MOBLEBOOL ack_flag = MOBLE_FALSE;
+ MOBLEUINT8 length = 0;
+
+ TRACE_M(TF_SENSOR_CLIENT_M, "SensorsClient_Descriptor_Get Client Message \r\n");
+
+ msg_opcode = SENSOR_DESCRIPTOR_GET;
+ if(ppropertyId != NULL)
+ {
+ msg_buff = ppropertyId;
+ length = 2;
+ }
+
+ /*
+ Manage the TID Here....
+ */
+
+ result = MeshClient_SetRemotePublication((MOBLEUINT32) SENSOR_CLIENT_MODEL_ID,
+ elementIndex ,
+ msg_opcode ,
+ msg_buff, length,
+ ack_flag,
+ MOBLE_FALSE);
+ Model_Tid.TidSend++;
+ if(Model_Tid.TidSend >= MAX_TID_VALUE)
+ {
+ Model_Tid.TidSend = 0;
+ }
+
+ if(result)
+ {
+ TRACE_M(TF_SENSOR_CLIENT_M, "Publication Error \r\n");
+ }
+
+ return result;
+}
+
+
+/**
+* @brief SensorsClient_Cadence_Get: This function is called for Descriptor Get message
+* @param elementIndex : Index of the element
+* @param ppropertyId : pointer on property ID
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT SensorsClient_Cadence_Get(MOBLEUINT8 elementIndex,
+ MOBLEUINT8 * ppropertyId)
+{
+
+ /* 4.2.3 Sensor Cadence Get
+ */
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT16 msg_opcode;
+ MOBLEUINT8 const *msg_buff = NULL;
+ MOBLEBOOL ack_flag = MOBLE_FALSE;
+ MOBLEUINT8 length = 0;
+
+ TRACE_M(TF_SENSOR_CLIENT_M, "SensorsClient_Cadence_Get Client Message \r\n");
+
+ msg_opcode = SENSOR_CADENCE_GET;
+ if(ppropertyId != NULL)
+ {
+ msg_buff = ppropertyId;
+ length = 2;
+ }
+
+ result = MeshClient_SetRemotePublication((MOBLEUINT32) SENSOR_CLIENT_MODEL_ID,
+ elementIndex ,
+ msg_opcode ,
+ msg_buff, length,
+ ack_flag,
+ MOBLE_FALSE);
+
+ if(result)
+ {
+ TRACE_M(TF_SENSOR_CLIENT_M, "Publication Error \r\n");
+ }
+
+ return result;
+}
+
+
+/**
+* @brief SensorsClient_Cadence_Set: This function is called for Cadence Set message
+* @param elementIndex : Index of the element
+* @param pCadence_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT SensorsClient_Cadence_Set(MOBLEUINT8 elementIndex,
+ MOBLEUINT8 *pCadence_param,
+ MOBLEUINT32 length)
+
+{
+
+ /* 4.2.4 Sensor Cadence Set
+ */
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT8 const *msg_buff;
+ MOBLEUINT16 msg_opcode;
+ MOBLEBOOL ack_flag;
+
+ TRACE_M(TF_SENSOR_CLIENT_M, "SensorsClient_Cadence_Set Client Message \r\n");
+
+ msg_buff = pCadence_param;
+ ack_flag = MOBLE_TRUE;
+ msg_opcode = SENSOR_CADENCE_SET;
+
+ result = MeshClient_SetRemotePublication((MOBLEUINT32) SENSOR_CLIENT_MODEL_ID,
+ elementIndex ,
+ msg_opcode ,
+ msg_buff, length,
+ ack_flag,
+ MOBLE_FALSE);
+ if(result)
+ {
+ TRACE_M(TF_SENSOR_CLIENT_M, "Publication Error \r\n");
+ }
+
+ return result;
+}
+
+
+/**
+* @brief SensorsClient_Cadence_Set: This function is called for Cadence Set message
+* @param elementIndex : Index of the element
+* @param pCadence_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT SensorsClient_Cadence_Set_Unack(MOBLEUINT8 elementIndex,
+ MOBLEUINT8 *pCadence_param,
+ MOBLEUINT32 length)
+
+{
+
+ /* 4.2.5 Sensor Cadence Set Unacknowledged
+ */
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT8 const *msg_buff;
+ MOBLEUINT16 msg_opcode;
+ MOBLEBOOL ack_flag;
+
+ TRACE_M(TF_SENSOR_CLIENT_M, "SensorsClient_Cadence_Set_Unack Client Message \r\n");
+
+ msg_buff = pCadence_param;
+ ack_flag = MOBLE_FALSE;
+ msg_opcode = SENSOR_CADENCE_SET_UNACK;
+
+ result = MeshClient_SetRemotePublication((MOBLEUINT32) SENSOR_CLIENT_MODEL_ID,
+ elementIndex ,
+ msg_opcode ,
+ msg_buff, length,
+ ack_flag,
+ MOBLE_FALSE);
+ if(result)
+ {
+ TRACE_M(TF_SENSOR_CLIENT_M, "Publication Error \r\n");
+ }
+
+ return result;
+}
+
+
+/**
+* @brief SensorsClient_Settings_Get: This function is called for Settings Get message
+* @param elementIndex : Index of the element
+* @param ppropertyId : pointer on property ID
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT SensorsClient_Settings_Get(MOBLEUINT8 elementIndex,
+ MOBLEUINT8 * ppropertyId)
+{
+
+ /* 4.2.7 Sensor Settings Get
+ */
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT16 msg_opcode;
+ MOBLEUINT8 const *msg_buff = NULL;
+ MOBLEBOOL ack_flag = MOBLE_FALSE;
+
+ TRACE_M(TF_SENSOR_CLIENT_M, "SensorsClient_Settings_Get Client Message \r\n");
+
+ msg_opcode = SENSOR_SETTINGS_GET;
+ msg_buff = ppropertyId;
+
+ result = MeshClient_SetRemotePublication((MOBLEUINT32) SENSOR_CLIENT_MODEL_ID,
+ elementIndex ,
+ msg_opcode ,
+ msg_buff, 2,
+ ack_flag,
+ MOBLE_FALSE);
+ if(result)
+ {
+ TRACE_M(TF_SENSOR_CLIENT_M, "Publication Error \r\n");
+ }
+
+ return result;
+}
+
+
+/**
+* @brief SensorsClient_Setting_Get: This function is called for Setting Get message
+* @param elementIndex : Index of the element
+* @param ppropertyId : pointer on property ID
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT SensorsClient_Setting_Get(MOBLEUINT8 elementIndex,
+ MOBLEUINT8 * pparam,
+ MOBLEUINT8 length)
+{
+
+ /* 4.2.9 Sensor Setting Get
+ */
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT16 msg_opcode;
+ MOBLEUINT8 const *msg_buff = NULL;
+ MOBLEBOOL ack_flag = MOBLE_FALSE;
+
+ TRACE_M(TF_SENSOR_CLIENT_M, "SensorsClient_Setting_Get Client Message \r\n");
+
+ msg_opcode = SENSOR_SETTING_GET;
+ msg_buff = pparam;
+
+ result = MeshClient_SetRemotePublication((MOBLEUINT32) SENSOR_CLIENT_MODEL_ID,
+ elementIndex ,
+ msg_opcode ,
+ msg_buff, length,
+ ack_flag,
+ MOBLE_FALSE);
+ if(result)
+ {
+ TRACE_M(TF_SENSOR_CLIENT_M, "Publication Error \r\n");
+ }
+
+ return result;
+}
+
+
+/**
+* @brief SensorsClient_Setting_Set: This function is called for Setting Set message
+* @param elementIndex : Index of the element
+* @param pSetting_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT SensorsClient_Setting_Set(MOBLEUINT8 elementIndex,
+ MOBLEUINT8 *pSetting_param,
+ MOBLEUINT32 length)
+
+{
+
+ /* 4.2.4 Sensor Cadence Set
+ */
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT8 const *msg_buff;
+ MOBLEUINT16 msg_opcode;
+ MOBLEBOOL ack_flag;
+
+ TRACE_M(TF_SENSOR_CLIENT_M, "SensorsClient_Setting_Set Client Message \r\n");
+
+ msg_buff = pSetting_param;
+ ack_flag = MOBLE_TRUE;
+ msg_opcode = SENSOR_SETTING_SET;
+
+
+ result = MeshClient_SetRemotePublication((MOBLEUINT32) SENSOR_CLIENT_MODEL_ID,
+ elementIndex ,
+ msg_opcode ,
+ msg_buff, length,
+ ack_flag,
+ MOBLE_FALSE);
+ if(result)
+ {
+ TRACE_M(TF_SENSOR_CLIENT_M, "Publication Error \r\n");
+ }
+
+ return result;
+}
+
+
+/**
+* @brief SensorsClient_Setting_Set_Unack: This function is called for Setting Set message
+* @param elementIndex : Index of the element
+* @param pSetting_param: Pointer to the parameters received for message
+* @param length: Length of the parameters received for message
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT SensorsClient_Setting_Set_Unack(MOBLEUINT8 elementIndex,
+ MOBLEUINT8 *pSetting_param,
+ MOBLEUINT32 length)
+
+{
+
+ /* 4.2.11 Sensor Setting Set Unacknowledged
+ */
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT8 const *msg_buff;
+ MOBLEUINT16 msg_opcode;
+ MOBLEBOOL ack_flag;
+
+ TRACE_M(TF_SENSOR_CLIENT_M, "SensorsClient_Setting_Set_Unack Client Message \r\n");
+
+ msg_buff = pSetting_param;
+ ack_flag = MOBLE_FALSE;
+ msg_opcode = SENSOR_SETTING_SET_UNACK;
+
+ result = MeshClient_SetRemotePublication((MOBLEUINT32) SENSOR_CLIENT_MODEL_ID,
+ elementIndex ,
+ msg_opcode ,
+ msg_buff, length,
+ ack_flag,
+ MOBLE_FALSE);
+ if(result)
+ {
+ TRACE_M(TF_SENSOR_CLIENT_M, "Publication Error \r\n");
+ }
+
+ return result;
+}
+
+
+/**
+* @brief SensorsClient_Get: This function is called for Get message
+* @param elementIndex : Index of the element
+* @param ppropertyId : pointer on property ID, if not present NULL
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT SensorsClient_Get(MOBLEUINT8 elementIndex,
+ MOBLEUINT8 * ppropertyId)
+{
+
+ /* 4.2.13 Sensor Get
+ */
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT16 msg_opcode;
+ MOBLEUINT8 const *msg_buff = NULL;
+ MOBLEBOOL ack_flag = MOBLE_FALSE;
+ MOBLEUINT8 length = 0;
+
+ TRACE_M(TF_SENSOR_CLIENT_M, "SensorsClient_Get Client Message \r\n");
+
+ msg_opcode = SENSOR_GET;
+ if(ppropertyId != NULL)
+ {
+ msg_buff = ppropertyId;
+ length = 2;
+ }
+
+ result = MeshClient_SetRemotePublication((MOBLEUINT32) SENSOR_CLIENT_MODEL_ID,
+ elementIndex ,
+ msg_opcode ,
+ msg_buff, length,
+ ack_flag,
+ MOBLE_FALSE);
+
+ if(result)
+ {
+ TRACE_M(TF_SENSOR_CLIENT_M, "Publication Error \r\n");
+ }
+
+ return result;
+}
+
+
+/**
+* @brief SensorsClient_Column_Get: This function is called for Column Get message
+* @param elementIndex : Index of the element
+* @param pparam : pointer on parameters, Property ID and Raw Value X
+* @param length : length of the parameters
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT SensorsClient_Column_Get(MOBLEUINT8 elementIndex,
+ MOBLEUINT8 * pparam,
+ MOBLEUINT8 length)
+{
+
+ /* 4.2.15 Sensor Column Get
+ */
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT16 msg_opcode;
+ MOBLEUINT8 const *msg_buff = NULL;
+ MOBLEBOOL ack_flag = MOBLE_FALSE;
+
+ TRACE_M(TF_SENSOR_CLIENT_M, "SensorsClient_Column_Get Client Message \r\n");
+
+ msg_opcode = SENSOR_COLUMN_GET;
+ msg_buff = pparam;
+
+ result = MeshClient_SetRemotePublication((MOBLEUINT32) SENSOR_CLIENT_MODEL_ID,
+ elementIndex ,
+ msg_opcode ,
+ msg_buff, length,
+ ack_flag,
+ MOBLE_FALSE);
+
+ if(result)
+ {
+ TRACE_M(TF_SENSOR_CLIENT_M, "Publication Error \r\n");
+ }
+
+ return result;
+}
+
+
+/**
+* @brief SensorsClient_Series_Get: This function is called for Series Get message
+* @param elementIndex : Index of the element
+* @param pparam : pointer on parameters, Property ID, Raw Values X1 and X2
+* @param length : length of the parameters
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT SensorsClient_Series_Get(MOBLEUINT8 elementIndex,
+ MOBLEUINT8 * pparam,
+ MOBLEUINT8 length)
+{
+
+ /* 4.2.15 Sensor Column Get
+ */
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+ MOBLEUINT16 msg_opcode;
+ MOBLEUINT8 const *msg_buff = NULL;
+ MOBLEBOOL ack_flag = MOBLE_FALSE;
+
+ TRACE_M(TF_SENSOR_CLIENT_M, "SensorsClient_Series_Get Client Message \r\n");
+
+ msg_opcode = SENSOR_SERIES_GET;
+ msg_buff = pparam;
+
+ result = MeshClient_SetRemotePublication((MOBLEUINT32) SENSOR_CLIENT_MODEL_ID,
+ elementIndex ,
+ msg_opcode ,
+ msg_buff, length,
+ ack_flag,
+ MOBLE_FALSE);
+
+ if(result)
+ {
+ TRACE_M(TF_SENSOR_CLIENT_M, "Publication Error \r\n");
+ }
+
+ return result;
+}
+
+
+/**
+* @brief SensorsModelServer_GetOpcodeTableCb: This function is call-back
+* from the library to send Model Opcode Table info to library
+* @param MODEL_OpcodeTableParam_t: Pointer to the Sensors Model opcode array
+* @param length: Pointer to the Length of Sensors Model opcode array
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT SensorsModelClient_GetOpcodeTableCb(const MODEL_OpcodeTableParam_t **data,
+ MOBLEUINT16 *length)
+{
+ *data = Sensors_Client_Opcodes_Table;
+ *length = sizeof(Sensors_Client_Opcodes_Table)/sizeof(Sensors_Client_Opcodes_Table[0]);
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+
+/**
+* @brief SensorsModelClient_GetStatusRequestCb : This function is call-back
+* from the library to send response to the message from peer
+* @param *pmsgParam Pointer to structure of message header for parameters:
+* elementIndex, src, dst addresses, TTL, RSSI, NetKey & AppKey Offset
+* @param opcode: Received opcode of the Status message callback
+* @param pResponsedata: Pointer to the buffer to be updated with status
+* @param plength: Pointer to the Length of the data, to be updated by application
+* @param pRxData: Pointer to the data received in packet.
+* @param dataLength: length of the data in packet.
+* @param response: Value to indicate wheather message is acknowledged meassage or not.
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT SensorsModelClient_GetStatusRequestCb(MODEL_MessageHeader_t *pmsgParam,
+ MOBLEUINT16 opcode,
+ MOBLEUINT8 *pResponsedata,
+ MOBLEUINT32 *plength,
+ MOBLEUINT8 const *pRxData,
+ MOBLEUINT32 dataLength,
+ MOBLEBOOL response)
+
+{
+ TRACE_M(TF_SENSOR_CLIENT_M, "response status enable \n\r");
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @brief SensorsModelClient_ProcessMessageCb: This is a callback function from
+* the library whenever a Sensors Model message is received
+* @param *pmsgParam Pointer to structure of message header for parameters:
+* elementIndex, src, dst addresses, TTL, RSSI, NetKey & AppKey Offset
+* @param opcode: Received opcode of the Status message callback
+* @param pData: Pointer to the buffer to be updated with status
+* @param length: Length of the parameters received
+* @param response: if TRUE, the message is an acknowledged message
+* @param pRxData: Pointer to the data received in packet.
+* @param dataLength: length of the data in packet.
+* @param response: Value to indicate wheather message is acknowledged meassage or not.
+* @retval MOBLE_RESULT
+*/
+MOBLE_RESULT SensorsModelClient_ProcessMessageCb(MODEL_MessageHeader_t *pmsgParam,
+ MOBLEUINT16 opcode,
+ MOBLEUINT8 const *pRxData,
+ MOBLEUINT32 dataLength,
+ MOBLEBOOL response)
+{
+
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
+
+ TRACE_M(TF_SENSOR_CLIENT_M,
+ "elementIndex = %.2x, dst_peer = %.2X, peer_add = %.2X, opcode= %.2X ,response= %.2X\r\n",
+ pmsgParam->elementIndex,
+ pmsgParam->dst_peer,
+ pmsgParam->peer_addr,
+ opcode,
+ response);
+
+ switch(opcode)
+ {
+ case SENSOR_DESCRIPTOR_STATUS:
+ {
+ SensorAppli_cb.Sensor_Descriptor_Status_cb(pRxData , dataLength, pmsgParam->dst_peer, pmsgParam->elementIndex);
+ break;
+ }
+ case SENSOR_CADENCE_STATUS:
+ {
+ SensorAppli_cb.Sensor_Cadence_Status_cb(pRxData , dataLength, pmsgParam->dst_peer, pmsgParam->elementIndex);
+ break;
+ }
+ case SENSOR_SETTINGS_STATUS:
+ {
+ SensorAppli_cb.Sensor_Settings_Status_cb(pRxData , dataLength, pmsgParam->dst_peer, pmsgParam->elementIndex);
+ break;
+ }
+ case SENSOR_SETTING_STATUS:
+ {
+ SensorAppli_cb.Sensor_Setting_Status_cb(pRxData , dataLength, pmsgParam->dst_peer, pmsgParam->elementIndex);
+ break;
+ }
+ case SENSOR_STATUS:
+ {
+ SensorAppli_cb.Sensor_Status_cb(pRxData , dataLength, pmsgParam->dst_peer, pmsgParam->elementIndex);
+ break;
+ }
+ case SENSOR_COLUMN_STATUS:
+ {
+ SensorAppli_cb.Sensor_Column_Status_cb(pRxData , dataLength, pmsgParam->dst_peer, pmsgParam->elementIndex);
+ break;
+ }
+ case SENSOR_SERIES_STATUS:
+ {
+ SensorAppli_cb.Sensor_Series_Status_cb(pRxData , dataLength, pmsgParam->dst_peer, pmsgParam->elementIndex);
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+
+ if((result == MOBLE_RESULT_SUCCESS) && (response == MOBLE_TRUE))
+ {
+ Model_SendResponse(pmsgParam, opcode, pRxData, dataLength);
+ }
+
+ return MOBLE_RESULT_SUCCESS;
+}
+
+/**
+* @}
+*/
+
+/**
+* @}
+*/
+
+/******************* (C) COPYRIGHT 2020 STMicroelectronics *****END OF FILE****/
+