#if defined ( HOLD_AUTO_START )
// HOLD_AUTO_START is a compile option that will surpress ZDApp // from starting the device and wait for the application to // start the device. ZDOInitDevice(0); #endif
// Fill out the endpoint description.
SampleApp_epDesc.endPoint = SAMPLEAPP_ENDPOINT; SampleApp_epDesc.task_id = &SampleApp_TaskID; SampleApp_epDesc.simpleDesc
= (SimpleDescriptionFormat_t *)&SampleApp_SimpleDesc; SampleApp_epDesc.latencyReq = noLatencyReqs;
// Register the endpoint description with the AF afRegister( &SampleApp_epDesc );
// Register for all key events - This app will handle all key events RegisterForKeys( SampleApp_TaskID );
#ifdef WXL_COORD
MT_UartRegisterTaskID(SampleApp_TaskID); #endif }
/********************************************************************* * @fn SampleApp_ProcessEvent *
* @brief Generic Application Task event processor. This function * is called to process all events for the task. Events
* include timers, messages and any other user defined events. *
* @param task_id - The OSAL assigned task ID.
* @param events - events to process. This is a bit map and can * contain more than one event. *
* @return none */
uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events ) { afIncomingMSGPacket_t *MSGpkt;
uint16 temp1;
#if (defined(WXL_ROUTER) || defined(WXL_RFD))//ROUTER OR RFD uint16 SrcSaddr; #endif (void)task_id; // Intentionally unreferenced parameter if ( events & SYS_EVENT_MSG ) { MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID ); while ( MSGpkt ) { switch ( MSGpkt->hdr.event ) { // Received when a key is pressed case KEY_CHANGE: SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys ); break; // Received when a messages is received (OTA) for this endpoint case AF_INCOMING_MSG_CMD: SampleApp_MessageMSGCB( MSGpkt ); break; // Received whenever the device changes state in the network case ZDO_STATE_CHANGE: SampleApp_NwkState = (devStates_t)(MSGpkt->hdr.status); if ( (SampleApp_NwkState == DEV_ZB_COORD) || (SampleApp_NwkState == DEV_ROUTER) || (SampleApp_NwkState == DEV_END_DEVICE) ) { HalLedSet( HAL_LED_1,HAL_LED_MODE_ON ); #ifdef WXL_COORD ugOled9616int();
LcdPutString16_8(0, 0, (void*)\ //osal_start_timerEx( SampleApp_TaskID, //SAMPLEAPP_RUN__EVT, //SAMPLEAPP_RUN_TIMEOUT );//启动超时定时器 #endif
#ifdef WXL_RFD memset(RfTx.TxBuf,'x',32); RfTx.TXDATA.Head = '&'; RfTx.TXDATA.HeadCom[0] = 'J'; RfTx.TXDATA.HeadCom[1] = 'O'; RfTx.TXDATA.HeadCom[2] = 'N'; ieeeAddr = NLME_GetExtAddr(); memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8); SrcSaddr = NLME_GetShortAddr(); RfTx.TXDATA.Saddr[0] = SrcSaddr; RfTx.TXDATA.Saddr[1] = SrcSaddr>>8; RfTx.TXDATA.DataBuf[0] = 'R'; RfTx.TXDATA.DataBuf[1] = 'F'; RfTx.TXDATA.DataBuf[2] = 'D'; NLME_GetCoordExtAddr(&RfTx.TXDATA.DataBuf[3]); temp1 = NLME_GetCoordShortAddr();
RfTx.TXDATA.DataBuf[11] = (unsigned char)(temp1>>8);
RfTx.TXDATA.DataBuf[12] = (unsigned char)(temp1); RfTx.TXDATA.DataBuf[13] = SensorNum; RfTx.TXDATA.LastByte = '*'; SendData(0x0000, RfTx.TxBuf, 32);//发送自己的节点信息到主机
if((SensorNum == 1) || (SensorNum == 2))//点阵屏或数码管屏 { init_T3();//打开定时器3开始扫描 } else if(SensorNum == 9)//振动传感器 { IEN1 |= 0x20; //Port 0 interrupt enable } osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_1000MS_TIMEOUT );//每秒检测一次红外传感器 #endif
#ifdef WXL_ROUTER memset(RfTx.TxBuf,'x',32); RfTx.TXDATA.Head = '&'; RfTx.TXDATA.HeadCom[0] = 'J'; RfTx.TXDATA.HeadCom[1] = 'O'; RfTx.TXDATA.HeadCom[2] = 'N'; RfTx.TXDATA.Saddr[1] SrcSaddr>>8; temp1 NLME_GetCoordShortAddr();
RfTx.TXDATA.DataBuf[11] (unsigned char)(temp1>>8);
RfTx.TXDATA.DataBuf[12] (unsigned char)(temp1);
RfTx.TXDATA.DataBuf[13] SensorNum;
RfTx.TXDATA.LastByte = '*'; 息到主机
if((SensorNum == 2))//点阵屏或数码管屏 ieeeAddr = NLME_GetExtAddr(); memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8); SrcSaddr = NLME_GetShortAddr(); RfTx.TXDATA.Saddr[0] = SrcSaddr; = RfTx.TXDATA.DataBuf[0] = 'R'; RfTx.TXDATA.DataBuf[1] = 'O'; RfTx.TXDATA.DataBuf[2] = 'U'; NLME_GetCoordExtAddr(&RfTx.TXDATA.DataBuf[3]); = = = = SendData(0x0000, RfTx.TxBuf, 32);//发送自己的节点信== 1) || (SensorNum { init_T3();//打开定时器3开始扫描 } else if(SensorNum == 9)//振动传感器 { IEN1 |= 0x20; //Port 0 interrupt enable }