#define TEMPERATURE_SENSING_EVENT 0XFF00 //function for setting event when data is received at ZED void zb_ReceiveDataIndication( uint16 source, uint16 command, uint16 len, uint8 *pData ) { osal_set_event ( sapi_TaskID, TEMPERATURE_SENSING_EVENT); //setting event for sensing temperature } //function for event handling for ZED void zb_HandleOsalEvent( uint16 event ) { uint8 *pData,sensor_data; if ( event & MY_START_EVT ) { zb_StartRequest(); } if ( event & MY_FIND_COLLECTOR_EVT ) { // Find and bind to a collector device zb_BindDevice( TRUE, SENSOR_REPORT_CMD_ID2, (uint8 *)NULL ); } if( event & TEMPERATURE_SENSING_EVENT) { sensor_data = 0x01; pData = "@TEM####" ; zb_SendDataRequest( 0xFFFE, SENSOR_REPORT_CMD_ID2, 8, pData, 0, AF_ACK_REQUEST, 0 );//(for now using broadcast but will change at later stage event |= (event ^ TEMPERATURE_SENSING_EVENT); //resetting temperature sensing event } } I had tried above handling event like this also but then also result is same if( event & TEMPERATURE_SENSING_EVENT) { pData = "@TEM####" ; zb_SendDataRequest( 0xFFFE, SENSOR_REPORT_CMD_ID, 8, pData, 0, AF_ACK_REQUEST, 0 ); event &= ~TEMPERATURE_SENSING_EVENT; //resetting temperature sensing event }