/************************************************* * Function: MX_SendDataToMoudle * Description: * Author: cxy * Returns: * Parameter: * History: *************************************************/ u32 MX_SendDataToMoudle(u8 *pu8Data, u16 u16DataLen) { #ifdef ZC_MODULE_DEV AC_RecvMessage((ZC_MessageHead *)pu8Data); #else u8 u8MagicFlag[4] = {0x02,0x03,0x04,0x05}; MicoUartSend(UART_FOR_APP, u8MagicFlag, 4); MicoUartSend(UART_FOR_APP, pu8Data, u16DataLen); #endif return ZC_RET_OK; }
/********************************************************************************************************* ** Function name: UART1_ISR ** Descriptions: 处理wifi消息 ** input parameters: 无 ** Output parameters:: 无 ** Returned value: 无 ** Created by: ** Created Date: 2014.10.03 **-------------------------------------------------------------------------------------------------------- ** Modified by: ** Modified date: 2014.10.03 **-------------------------------------------------------------------------------------------------------- *********************************************************************************************************/ void ProcessWifiMsg() { PKT_FIFO *infor; PKT_DESC *rx_desc = &(UART1Port.Rx_desc); BUFFER_INFO *rx_ring = &(UART1Port.Rx_Buffer); PKT_TYPE rxpkt_type; u16 rxpkt_len; u16 i; while (rx_desc->pkt_num) { //simulate FIFO,1st in,1st out infor = &(rx_desc->infor[0]); rxpkt_type = infor->pkt_type; rxpkt_len = infor->pkt_len; memset(pCmdWifiBuf, 0, UART1RX_RING_LEN); //copy from uart rx ring for(i = 0;i < rxpkt_len;i++) //O(n) { Buf_Pop(rx_ring,pCmdWifiBuf[i]); //AC_Printf("Buf_Pop=%x \n",pCmdBuf[i]); } //reset value infor->pkt_type = PKT_UNKNOWN; infor->pkt_len = 0; //shift FIFO for (i=0; i<(rx_desc->pkt_num)-1; i++) //O(n) { rx_desc->infor[i]= rx_desc->infor[i+1]; } rx_desc->pkt_num--; //handle previous packet switch (rxpkt_type) { case PKT_PUREDATA: AC_RecvMessage((AC_MessageHead*)(pCmdWifiBuf + 4)); break; default: break; } } }