Hi NXP Wireless Support Team,
The code below is copy from JN-SW-4270 Zigbee 3.0 SDK.
What does (uint8 *data)'s first 10 bytes mean?
PRIVATE void APP_ZCL_cbEndpointCallback(tsZCL_CallBackEvent *psEvent)
{
// bool_t bUpdateBulb = FALSE;
DBG_vPrintf(TRACE_ZCL, "\n APP_ZCL_cbEndpointCallback to psEvent->eEventType %02x", psEvent->eEventType);
switch (psEvent->eEventType)
{
case E_ZCL_CBET_WRITE_ATTRIBUTES: // parke 2017.01.07
{
uint8 *data = psEvent->uMessage.sIndividualAttributeResponse.pvAttributeData;
}
}
}
Thanks,
Kevin Zhu
Solved! Go to Solution.
Hi kevin zhu
pvAttributeData is a pointer to the attribute value. Based on the attribute data type, the value should be taken properly:
e.g:
if(psEvent->uMessage.sIndividualAttributeResponse.eAttributeDataType == E_ZCL_OSTRING)
{
tsZCL_OctetString data = *( ( tsZCL_OctetString* ) psEvent->uMessage.sIndividualAttributeResponse.pvAttributeData );
}
else if (psEvent->uMessage.sIndividualAttributeResponse.eAttributeDataType == E_ZCL_UINT8)
{
uint8_t data = *((uint8_t *) psEvent->uMessage.sIndividualAttributeResponse.pvAttributeData );
}
...
Please consider uAttribData (union defined in zcl_internal.h - sdk files) in order to do the right cast for the value.
Regards,
Ovidiu
Hi kevin zhu
pvAttributeData is a pointer to the attribute value. Based on the attribute data type, the value should be taken properly:
e.g:
if(psEvent->uMessage.sIndividualAttributeResponse.eAttributeDataType == E_ZCL_OSTRING)
{
tsZCL_OctetString data = *( ( tsZCL_OctetString* ) psEvent->uMessage.sIndividualAttributeResponse.pvAttributeData );
}
else if (psEvent->uMessage.sIndividualAttributeResponse.eAttributeDataType == E_ZCL_UINT8)
{
uint8_t data = *((uint8_t *) psEvent->uMessage.sIndividualAttributeResponse.pvAttributeData );
}
...
Please consider uAttribData (union defined in zcl_internal.h - sdk files) in order to do the right cast for the value.
Regards,
Ovidiu