Пример #1
0
static void CallBack_UART_Hdlr(Enum_SerialPort port, Enum_UARTEventType msg, bool level, void* customizedPara)
{
    switch (msg)
    {
    case EVENT_UART_READY_TO_READ:
    {

        s32 totalBytes = ReadSerialPort(port, m_RxBuf_Uart, sizeof(m_RxBuf_Uart));
        if (totalBytes > 0)
        {
            proc_handle(m_RxBuf_Uart,sizeof(m_RxBuf_Uart));
        }
        break;
    }
    case EVENT_UART_DTR_IND:// DTR level changed, developer can wake up the module in here
    {
        if(0 == level)
        {
            APP_DEBUG("DTR set to low =%d  wake !!\r\n", level);
            Ql_SleepDisable();
        }
        else
        {
            APP_DEBUG("DTR set to high =%d  Sleep \r\n", level);
            Ql_SleepEnable();
        }

    }
    case EVENT_UART_READY_TO_WRITE:
        break;
    default:
        break;
    }
}
Пример #2
0
bool SerialMonitor::OpenPort(QString port, QString speed)
{
	if (serialPort.isOpen()) {
		return true;
    }
		
    portId = port;
    portSpeed = speed;

    //CRT("BAUD: " + ui.cbSpeed->currentText() + "\n\r");


    serialPort.setPortName(portId);
    //ui.cbSpeed->setCurrentText(speed);

	PrepareSerialPort(portId, portSpeed);
	
	/*if (PrepareSerialPort(portId, portSpeed) == false) {
        CRT(">> Failed to open serial port [" + portId + "] at " + portSpeed + "!\n\r");
		return false;
	}*/



    if (serialPort.open(QIODevice::ReadWrite)) {
        serialPort.setFlowControl(QSerialPort::NoFlowControl);
        serialPort.setBaudRate(portSpeed.toInt());
        serialPort.setParity(QSerialPort::NoParity);
        serialPort.setStopBits(QSerialPort::OneStop);
        serialPort.setDataBits(QSerialPort::Data8);
		//serialPort.setDataTerminalReady(true);
        //serialPort.setRequestToSend(true);
        CRT(">> Serial port [" + portId + "] open at " + ui.cbSpeed->currentText() + "!\n\r");

		connect (&serialPort, SIGNAL(readyRead()), this, SLOT(ReadSerialPort()));

		return true;
	} else {
        CRT(">> Failed to open serial port [" + portId + "] at " + ui.cbSpeed->currentText() + "!\n\r");
		return false;
	}
}
Пример #3
0
static void CallBack_UART_Hdlr(Enum_SerialPort port, Enum_UARTEventType msg, bool level, void* customizedPara)
{
    switch (msg)
    {
    case EVENT_UART_READY_TO_READ:
        {

           s32 totalBytes = ReadSerialPort(port, m_RxBuf_Uart, sizeof(m_RxBuf_Uart));
           if (totalBytes > 0)
           {
               proc_handle(m_RxBuf_Uart,sizeof(m_RxBuf_Uart));
           }
           break;
        }
    case EVENT_UART_READY_TO_WRITE:
        break;
    default:
        break;
    }
}
Пример #4
0
bool SerialMonitor::ClosePort(void)
{
	if (serialPort.isOpen() == false) {
		return true;
	} 

    disconnect (&serialPort, SIGNAL(readyRead()), this, SLOT(ReadSerialPort()));

	serialPort.clear();	

	QThread::msleep(100);

	serialPort.close();	
	if (serialPort.isOpen()) {
		CRT(">> Failed: Could not close the serial port [" + portId + "]\n\r");
		return false;
	} else {
		
		CRT(">> Serial port [" + portId + "] closed!\n\r");

		return true;
	}	
}
static void CallBack_UART_Hdlr(Enum_SerialPort port, Enum_UARTEventType msg, bool level, void* customizedPara)
{
    //APP_DEBUG("CallBack_UART_Hdlr: port=%d, event=%d, level=%d, p=%x\r\n", port, msg, level, customizedPara);
    u32 rdLen=0;
    s32 ret;
    char *pData= NULL;
    char *p=NULL;
    char *p1=NULL;
    char *p2=NULL;
    bool    bRet = FALSE;
    
    switch (msg)
    {
        case EVENT_UART_READY_TO_READ:
        {
            if(UART_PORT1 == port)
            {  
                do
                {                   
                    Ql_memset(m_RxBuf_mcuUart, 0x0, sizeof(m_RxBuf_mcuUart));
                    rdLen = Ql_UART_Read(port, m_RxBuf_mcuUart, sizeof(m_RxBuf_mcuUart));
                    pData = m_RxBuf_mcuUart;
                    /*set last tail data eq 0*/
                    pData[rdLen + 1] = '\0';                    
                   
                    /*cmd: DEPO*/
                    p = Ql_strstr(pData,"DEPO");                    
                    if (p)
                    {
                        APP_DEBUG(textBuf,"\r\nDEPO \r\n");
                        bRet = SendMtkBinCmd("$PMTK253,1,0*37");
                        if(!bRet)
                        {
                            APP_DEBUG(textBuf,"\r\n Send $PMTK Error \r\n");
                            break;
                        }
                        else
                        {
                            bRet = VerifyFileAndSendFirstEpoPacket(s_s8FilePath);
                             if(!bRet)
                            {
                                APP_DEBUG(textBuf,"\r\n VerifyFile Error \r\n");                                
                                break;
                            }
                             else
                             {
                                APP_DEBUG(textBuf,"Update EPO Progress Start £º\r\n");
                             }
                        }
                        break;
                    }

                    
                    /*cmd:  QueryAvailableStorage=UFS*/
                    p = Ql_strstr(pData,"QueryAvailableStorage");
                    if (p)
                    {
                        if(Ql_strstr(pData,"=UFS"))
                        {
                            s64 size;
                            size = Ql_FS_GetFreeSpace(1);        // UFS
                            APP_DEBUG(textBuf,"QueryAvailableStorage=%lld\r\n",size);   
                                    
                        }else if(Ql_strstr(pData,"=SD"))
                        {
                            s64 size;
                            size = Ql_FS_GetFreeSpace(2);  //SD
                            APP_DEBUG(textBuf,"QueryAvailableStorage=%lld\r\n",size); 
                        }else if(Ql_strstr(pData,"=RAM"))
                        {
                            s64 size;
                            size = Ql_FS_GetFreeSpace(3);  //RAM
                            APP_DEBUG(textBuf,"QueryAvailableStorage=%lld\r\n",size); 
                        }else
                        {
                            APP_DEBUG(textBuf,"QueryAvailableStorage param error!\r\n"); 
                        }
                        break;
                    }
                    
                    /*cmd: WriteFile=password.txt*/
                    p = Ql_strstr(pData,"WriteFile=");
                    if (p)
                    {
                        s32 s32Res = -1;
                        u32 uiFlag = 0;
                        u32 i=0;
                        char stmpdir[100],dir[100];
                        char *p1[100];
                        //u32 filesize = 10240;
                        u32 filesize = 276480;

                        p = Ql_strstr(pData, "=");
                        (*p) = '\0';
                        p++;

                        Ql_memset(s_s8FilePath, 0, sizeof(s_s8FilePath));  //File Name
                        Ql_strcpy((char *)s_s8FilePath, p);

                        uiFlag |= QL_FS_READ_WRITE;
                        uiFlag |= QL_FS_CREATE;

                        flag = 1;                     

                        if(Ql_strncmp((char*)s_s8FilePath,"RAM:",4))
                        {
                            ret = Ql_FS_Open((u8*)s_s8FilePath, uiFlag);
                            
                        }
                        else
                        {
                           ret = Ql_FS_OpenRAMFile((u8*)s_s8FilePath, uiFlag,filesize); 
                        }
                        if(ret >= QL_RET_OK)
                        {
                            filehandle = ret;
                        }

                        APP_DEBUG(textBuf,"filehandle=%d\r\n",filehandle);

                        break;
                    }


                    //Receiving data and StopWrite
                    if (flag)
                    {

                        u32 writeedlen;
                        p = Ql_strstr(pData,"StopWrite");
                        if (p)
                        {
                            Ql_FS_Close(filehandle);
                            filehandle = -1;
                            flag =0;
                            APP_DEBUG(textBuf,"Ql_WriteFinish()\r\n");

                            break;
                        }
                        ret = Ql_FS_Write(filehandle, (u8*)pData, rdLen, &writeedlen);
                        if(ret== QL_RET_OK)
                        {
                            //APP_DEBUG(textBuf,"Ql_File()=%d: writeedlen=%d,Download times=%d\r\n",ret, writeedlen,flag++);

                        }else if(ret == QL_RET_ERR_FILEDISKFULL)
                        {
                            Ql_FS_Close(filehandle);
                            filehandle = -1;
                            flag =0;
                            APP_DEBUG(textBuf,"Storage Full,close file! ret=%d\r\n",ret);
                            break;
                        }else
                        {
                            Ql_FS_Close(filehandle);
                            filehandle = -1;
                            flag =0;
                            APP_DEBUG(textBuf,"write error,close file!ret=%d \r\n",ret);
                            break;
                        }
                    }                                
                   

                    /*cmd: AT Command*/

                    if (Ql_strstr(pData,"AT")||Ql_strstr(pData,"at") || Ql_strstr(pData,"At") || Ql_strstr(pData,"aT"))
                    {
                        //APP_DEBUG(textBuf,"%s", pData);
                        Ql_UART_Write(VIRTUAL_PORT1,(u8*)pData,rdLen);
                        
                        break;
                    }
                    
                }while(rdLen > 0);

            }
            else if(UART_PORT3 == port)
            {
                s32 totalBytes = ReadSerialPort(port, m_RxBuf_gnssUART, sizeof(m_RxBuf_gnssUART));                
                if (totalBytes <= 0)
                {
                    APP_DEBUG("<-- No data in gnssUART buffer! -->\r\n");
                    return;
                }
                
                 ReadAckAndSendEpoPacket(m_RxBuf_gnssUART,totalBytes);

            }   
           else if((VIRTUAL_PORT1 == port) || (VIRTUAL_PORT2 == port))
            {
                s32 ret,totalBytes;

                totalBytes = ReadSerialPort(port, m_RxBuf_VirtualPort, sizeof(m_RxBuf_VirtualPort));
                if (totalBytes <= 0)
                {
                    APP_DEBUG("<-- No data in virtural UART buffer! -->\r\n");
                    return;
                }
                Ql_UART_Write(UART_PORT1,(u8*)m_RxBuf_VirtualPort,totalBytes);

            }
            
            break;
        }
        default:
            break;
    }
}
Пример #6
0
static void CallBack_UART_Hdlr(Enum_SerialPort port, Enum_UARTEventType msg, bool level, void* customizedPara)
{
    s32 ret;
    APP_DEBUG("CallBack_UART_Hdlr: port=%d, event=%d, level=%d, p=%x\r\n", port, msg, level, customizedPara);
    switch (msg)
    {
    case EVENT_UART_READY_TO_READ:
        {
            if (m_myUartPort == port)
            {
                // Write the data from UART port to virtual serial port
                s32 totalBytes = ReadSerialPort(port, m_RxBuf_UartPort, sizeof(m_RxBuf_UartPort));
                APP_DEBUG("m_RxBuf_UartPort:%s\r\n",m_RxBuf_UartPort );
                if (totalBytes > 0)
                {
                    if (m_bCsdConnected && Ql_StrPrefixMatch(m_RxBuf_UartPort, "+++"))
                    {
                        // -------- Disconnect CSD  -------
                        CSD_Disconnect();
                        m_bCsdConnected = FALSE;
                    }else{
                        // No CSD connection, then transparently transmit the data from UART port to virtual serial port
                        // And make sure all data is sent out
                        s32 realSentByte = 0;
                        do 
                        {
                            ret = Ql_UART_Write(m_myVirtualPort, m_RxBuf_UartPort + realSentByte, totalBytes - realSentByte);
                            if (ret > 0 && ret < (totalBytes - realSentByte))
                            {
                                Ql_Sleep(100);
                            }
                            realSentByte += ret;
                                APP_DEBUG("CallBack_UART_Hdlr ret:%d realSentByte:%d \r\n",ret,realSentByte );
                                
                        } while (realSentByte != totalBytes);
                    }
                }
            }
            else if (m_myVirtualPort == port)
            {
                // Write the data from virtual serial port to UART port
                s32 totalBytes = ReadSerialPort(port, m_RxBuf_VirtualPort, sizeof(m_RxBuf_VirtualPort));
                APP_DEBUG(" m_RxBuf_VirtualPort:%s\r\n",m_RxBuf_VirtualPort );
                if (totalBytes > 0)
                {
                    if (Ql_strstr(m_RxBuf_VirtualPort, "\r\nRING\r\n"))
                    {
                        // -------- Received RING, answer CSD call -------
                        CSD_Answer();
                    } 
                    else if (Ql_strstr(m_RxBuf_VirtualPort, "CONNECT"))
                    {
                        // -------- Received CONNECT 9600, CSD connected -------
                        m_bCsdConnected = TRUE;
                    }
                    Ql_UART_Write(m_myUartPort, m_RxBuf_VirtualPort, totalBytes);
                }
            }
            break;
        }
    default:
        break;
    }
}