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/vendor.c')
-rw-r--r--Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/vendor.c194
1 files changed, 135 insertions, 59 deletions
diff --git a/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/vendor.c b/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/vendor.c
index e02c06fdb..ae6f98e01 100644
--- a/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/vendor.c
+++ b/Middlewares/ST/STM32_WPAN/ble/mesh/MeshModel/Src/vendor.c
@@ -2,8 +2,8 @@
******************************************************************************
* @file vendor.c
* @author BLE Mesh Team
-* @version V1.10.000
-* @date 15-Jan-2019
+* @version V1.12.000
+* @date 06-12-2019
* @brief Vendor model middleware file
******************************************************************************
* @attention
@@ -48,11 +48,11 @@
#include "models_if.h"
#include <string.h>
-/** @addtogroup BLE_Mesh
+/** @addtogroup MODEL_VENDOR
* @{
*/
-/** @addtogroup models_BLE
+/** @addtogroup Vendor_Model_Callbacks
* @{
*/
@@ -66,10 +66,9 @@
MOBLEUINT8 AppliBuffer[DATA_BUFFER_LENGTH] = {0x01,0x00};
MOBLEUINT16 CommandStatus = 0;
extern MOBLEUINT8 NumberOfElements;
-extern MOBLEUINT8 ResponseBuffer[8];
-extern MOBLEUINT8 BuffLength;
+extern MOBLEUINT8 ResponseBuffer[VENDOR_DATA_BYTE];
+extern MOBLEUINT16 BuffLength;
extern MOBLEUINT8 Appli_LedState;
-
/*
-------------*******************-------------------------
Vendor Model Opcode Table
@@ -79,9 +78,16 @@ MOBLEUINT16 Vendor_Opcodes_Table[] = {
APPLI_DEVICE_INFO_CMD,
APPLI_LED_CONTROL_STATUS_CMD,
APPLI_ELEMENT_TYPE_CMD,
- APPLI_SENSOR_CNTRL_CMD
+ APPLI_SENSOR_CNTRL_CMD,
+ APPLI_DATA_CNTRL_CMD
};
+char *Board_Type[] =
+{
+ "BLUENRG1_BRD_TYPE",
+ "BLUENRG2_BRD_TYPE",
+ "BLUENRG_MS_BRD_TYPE"
+};
/* Private function prototypes -----------------------------------------------*/
#if ENABLE_APPLI_TEST
extern MOBLEUINT8 txDataArray[];
@@ -146,11 +152,17 @@ MOBLE_RESULT Vendor_WriteLocalDataCb(MOBLE_ADDRESS peer_addr,
B0 - Sub-Cmd LED
B1-B7 - Data Bytes
*/
- TRACE_M(TF_VENDOR,"st device id %4.x \r\n",VENDORMODEL_STMICRO_ID1);
VendorAppli_cb.LEDControlCommand_Cb(data,length,elementNumber,dst_peer);
break;
}
-
+ case APPLI_DATA_CNTRL_CMD:
+ {
+ /*This is callback when ever command is coming for test of response
+ time,command reached count, data byte sent
+ */
+ VendorAppli_cb.DataControlCommand_cb(data,length);
+ break;
+ }
/* Default case - Not valid command */
default:
{
@@ -206,6 +218,14 @@ MOBLE_RESULT Vendor_WriteLocalDataCb(MOBLE_ADDRESS peer_addr,
VendorAppli_cb.LEDControlCommand_Cb(data, length, elementNumber,dst_peer);
break;
}
+ case APPLI_DATA_CNTRL_CMD:
+ {
+ /*This is callback when ever command is coming for test of response
+ time,command reached count, data byte sent
+ */
+ VendorAppli_cb.DataControlCommand_cb(data,length);
+ break;
+ }
/* Default case - Not valid command */
default:
{
@@ -346,8 +366,7 @@ MOBLE_RESULT Vendor_ReadLocalDataCb(MOBLE_ADDRESS peer_addr,
*/
if(elementNumber == FIRST_ELEMENT)
{
- ResponseBuffer[0] = data[0];
- ResponseBuffer[1] = Appli_LedState;
+ ResponseBuffer[0] = Appli_LedState;
}
else if(elementNumber == SECOND_ELEMENT)
@@ -362,6 +381,14 @@ MOBLE_RESULT Vendor_ReadLocalDataCb(MOBLE_ADDRESS peer_addr,
break;
}
+ case APPLI_DATA_CNTRL_CMD:
+ {
+ /*This is callback when ever command is coming for test of response
+ time,command reached count, data byte sent
+ */
+
+ break;
+ }
default:
{
@@ -440,12 +467,14 @@ MOBLE_RESULT Vendor_OnResponseDataCb(MOBLE_ADDRESS peer_addr,
MOBLEUINT32 timeStampRcv;
MOBLEUINT8 subCmd = pRxData[0];
MOBLEUINT16 hitcmdcount = 0;
-
+ MOBLEUINT8 increment = 1;
/* Traces for the Data */
- TRACE_I(TF_SERIAL_CTRL,"Peer_addr=[%02x],\n\r", peer_addr);
- TRACE_I(TF_SERIAL_CTRL,"DATA_RECEIVED length = %ld\n\r", dataLength);
+ TRACE_I(TF_VENDOR,"Vendor_OnResponseDataCb: peer_addr=[%02x], dst_peer_addr=[%02x],\
+ command=[%02x], Response=[%02x] \n\r", peer_addr, dst_peer, command, response );
+ TRACE_I(TF_VENDOR,"DATA_RECEIVED length = %d\n\r", dataLength);
+ TRACE_M(TF_VENDOR_COMMAND,"#%02hx-%02hx! \n\r",command,pRxData[0]);
switch(command)
{
case APPLI_TEST_CMD:
@@ -458,34 +487,6 @@ MOBLE_RESULT Vendor_OnResponseDataCb(MOBLE_ADDRESS peer_addr,
receiver node.
*/
#if ENABLE_APPLI_TEST
- MOBLEUINT8 idx;
- if(dataLength !=0)
- {
- MOBLEUINT8 valueCounter = 0;
-
- for (idx=0; idx<dataLength; idx++)
- {
- if(pRxData[idx] == txDataArray[idx])
- {
- valueCounter++;
- }
- else
- {
- break;
- }
- }
- if(valueCounter == dataLength)
- {
- successCounter++;
- TRACE_I(TF_SERIAL_CTRL,"Response data matched %d out of %d\n\r",successCounter, sendCounter);
- TRACE_I(TF_SERIAL_CTRL,"\n\r");
- }
- else
- {
- TRACE_I(TF_SERIAL_CTRL,"Response data unmatched %d out of %d\n\r",successCounter, sendCounter);
- TRACE_I(TF_SERIAL_CTRL,"\n\r");
- }
- }
#endif
break;
}
@@ -515,7 +516,7 @@ MOBLE_RESULT Vendor_OnResponseDataCb(MOBLE_ADDRESS peer_addr,
hitcmdcount |=(MOBLEUINT32)( pRxData[3] << 16);
hitcmdcount |=(MOBLEUINT32)( pRxData[2] << 8);
hitcmdcount |=(MOBLEUINT32)( pRxData[1]);
- TRACE_I(TF_SERIAL_CTRL,"NUMBER OF COMMANDS RECEIVED %d \r\n",hitcmdcount);
+ TRACE_I(TF_VENDOR,"NUMBER OF COMMANDS RECEIVED %d \r\n",hitcmdcount);
/*Insert Test related Commands here*/
break;
}
@@ -529,7 +530,66 @@ MOBLE_RESULT Vendor_OnResponseDataCb(MOBLE_ADDRESS peer_addr,
break;
}
}
+ break;
}
+ case APPLI_LED_CONTROL_STATUS_CMD:
+ {
+ TRACE_I(TF_VENDOR,"Led State %d \r\n",pRxData[0]);
+ break;
+ }
+ case APPLI_DEVICE_INFO_CMD:
+ {
+ switch(subCmd)
+ {
+ case IC_TYPE:
+ {
+ TRACE_I(TF_VENDOR,"IC type is %s \r\n" ,Board_Type[pRxData[1]-1]);
+ break;
+ }
+ case LIB_VER:
+ {
+ while(increment!=8)
+ {
+ TRACE_I(TF_VENDOR,"Lib Version is %d \r\n",pRxData[increment]);
+ increment++;
+ }
+ increment=1;
+ break;
+ }
+ case LIB_SUB_VER:
+ {
+ while(increment!=7)
+ {
+ if(pRxData[increment] != R_ASCI_CODE)
+ {
+ TRACE_I(TF_VENDOR,"Lib Sub Version is %x \r\n",pRxData[increment]);
+ }
+ else
+ {
+ TRACE_I(TF_VENDOR,"Lib Sub Version is %c \r\n",pRxData[increment]);
+ }
+ increment++;
+ }
+ increment=1;
+ break;
+ }
+ }
+ break;
+ }
+ case APPLI_DATA_CNTRL_CMD:
+ {
+ for (MOBLEUINT8 idx=0; idx<dataLength; idx++)
+ {
+ TRACE_I(TF_VENDOR,"data[%d]= %d",idx,pRxData[idx]);
+ TRACE_I(TF_VENDOR,"\n\r");
+ }
+ break;
+ }
+ default:
+ {
+ break;
+ }
+
}
return MOBLE_RESULT_SUCCESS;
@@ -549,13 +609,12 @@ void Vendor_Process(void)
/**
* @brief Publish Command for Vendor Model
-* @param publishAddress: Publish Address of the message
-* @param elementIndex: index of the element
+* @param srcAddress: Source Address of Node
* @retval void
*/
-void Vendor_Publish(MOBLE_ADDRESS publishAddress, MOBLEUINT8 elementIndex)
+void Vendor_Publish(MOBLE_ADDRESS srcAddress)
{
-
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
/* changes the LED status on other nodes in the network */
if(CommandStatus == APPLI_CMD_ON)
{
@@ -566,10 +625,15 @@ void Vendor_Publish(MOBLE_ADDRESS publishAddress, MOBLEUINT8 elementIndex)
AppliBuffer[0] = APPLI_CMD_ON;
}
+ result = BLEMesh_SetRemotePublication(VENDORMODEL_STMICRO_ID1, srcAddress,
+ APPLI_LED_CONTROL_STATUS_CMD,
+ AppliBuffer, sizeof(AppliBuffer),
+ MOBLE_FALSE, MOBLE_TRUE);
- BLEMesh_SetRemoteData(publishAddress,elementIndex,
- APPLI_LED_CONTROL_STATUS_CMD ,
- AppliBuffer, sizeof(AppliBuffer), MOBLE_FALSE , MOBLE_TRUE);
+ if(result)
+ {
+ TRACE_I(TF_VENDOR,"Publication Error \r\n");
+ }
CommandStatus = AppliBuffer[0];
}
@@ -585,12 +649,18 @@ void Vendor_TestRemoteData(MOBLE_ADDRESS src ,MOBLE_ADDRESS dst ,MOBLEUINT8 elem
{
/* changes the LED status on other nodes in the network */
-
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
AppliBuffer[0] = APPLI_TEST_COUNTER;
+
+ result = BLEMesh_SetRemoteData(dst, 0,
+ APPLI_TEST_CMD, AppliBuffer,
+ sizeof(AppliBuffer), MOBLE_TRUE,
+ MOBLE_TRUE);
- BLEMesh_SetRemoteData(dst,elementIndex,
- APPLI_TEST_CMD ,
- AppliBuffer, sizeof(AppliBuffer), MOBLE_TRUE , MOBLE_TRUE);
+ if(result)
+ {
+ TRACE_I(TF_VENDOR,"Publication Error \r\n");
+ }
CommandStatus = AppliBuffer[0];
}
@@ -606,12 +676,18 @@ void Vendor_TestCounterInc(MOBLE_ADDRESS src ,MOBLE_ADDRESS dst ,MOBLEUINT8 elem
{
/* changes the LED status on other nodes in the network */
-
+ MOBLE_RESULT result = MOBLE_RESULT_SUCCESS;
AppliBuffer[0] = APPLI_TEST_INC_COUNTER;
- BLEMesh_SetRemoteData(dst,elementIndex,
- APPLI_TEST_CMD ,
- AppliBuffer, sizeof(AppliBuffer), MOBLE_FALSE , MOBLE_TRUE);
+ result = BLEMesh_SetRemoteData(dst, 0,
+ APPLI_TEST_CMD, AppliBuffer,
+ sizeof(AppliBuffer), MOBLE_FALSE,
+ MOBLE_TRUE);
+
+ if(result)
+ {
+ TRACE_I(TF_VENDOR,"Publication Error \r\n");
+ }
}