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; } }
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; } }
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; } }
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; } }
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; } }