Example #1
0
/*************************************************
* 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;
}
Example #2
0
/*********************************************************************************************************
** 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;
        }    
        
    }   
}