void vEPO_Get_Final_Pkt(unsigned char *szData) { u32 loopi = 0; char checksum = 0; unsigned char buf[6+2+72*3+1+2] = {0}; unsigned char framehead[6]={0x04,0x24,0xE3,0x00,0xD3,0x02}; unsigned char frametail[2]={0x0D,0x0A}; int pos=0; Ql_memcpy(buf,framehead,sizeof(framehead)); pos=6; buf[pos++]=0xFF; buf[pos++]=0xFF; pos = MTKBIN_3EPO_PKT_LNG - 2; Ql_memcpy(&buf[pos],frametail,sizeof(frametail)); for(loopi=2;loopi<MTKBIN_3EPO_PKT_LNG-3;loopi++) { checksum = checksum^buf[loopi]; } buf[MTKBIN_3EPO_PKT_LNG - 3] = checksum; for(loopi=0;loopi<MTKBIN_3EPO_PKT_LNG;loopi++) { *(szData+loopi) = *(buf+loopi); } }
s32 Ar_PultBufferRx_appendMsgFrame(PultMessageRx *frame) { OUT_DEBUG_2("Ar_PultBufferRx_appendMsgFrame()\r\n"); /* if previous message was failed => remove it before building new message */ if (pTail && pTail->d.frameNo != pTail->d.frameTotal && frame->frameNo <= pTail->d.frameNo) pultRxBuffer.removeAt(pultRxBuffer.size() - 1); const bool bFirstFrame = 0 == frame->frameNo; /* append a frame or a new message */ if (bFirstFrame) { /* NOTE: can gprs and dtmf and other types have different size of pkt ??? */ const u8 maxbodylen = getMessageBuilder(0)->codec->maxMsgBodyLen(); const u16 entire_msg_len = (frame->frameTotal + 1) * maxbodylen; const u8 *temp_data = frame->complex_msg_part; frame->complex_msg_part = Ql_MEM_Alloc(entire_msg_len); if (!frame->complex_msg_part) { OUT_DEBUG_1("Failed to get %d bytes from HEAP\r\n", entire_msg_len); return ERR_GET_NEW_MEMORY_FAILED; } Ql_memcpy(frame->complex_msg_part, temp_data, frame->part_len); s32 ret = pultRxBuffer.enqueue(frame); if (ret < RETURN_NO_ERRORS) { pultRxBuffer_msg_cleanup_callback(frame); OUT_DEBUG_1("pultRxBuffer::enqueue() = %d error\r\n", ret); return ret; } } else if (frame->bComplex && pTail) // append to the rx buffer tail { pTail->d.frameNo = frame->frameNo; // update last received frame number Ql_memcpy(&pTail->d.complex_msg_part[pTail->d.part_len], frame->complex_msg_part, frame->part_len); pTail->d.part_len += frame->part_len; } // ++++++++++++++++++++++++++++++++++++++++++++++++++++++ if(pTail){ OUT_DEBUG_7("rx len: %d\r\n", pTail->d.part_len); Ar_Helper_debugOutDataPacket(pTail->d.complex_msg_part, pTail->d.part_len); } // ++++++++++++++++++++++++++++++++++++++++++++++++++++++ /* start processing of the rx pult buffer */ if ((pHead && frame->frameNo == frame->frameTotal) || pultRxBuffer.size() > 1) { if (QueueStatus_ReadyToProcessing == pultRxBuffer.status()) { pultRxBuffer.setStatus(QueueStatus_InProcessing); fa_StartPultRxBufferProcessing(); } } return RETURN_NO_ERRORS; }
bool SendMtkBinCmd(u8 *strCmd) { int len = 0,ret = 0; unsigned char outBuffer[256]; // At initial, the protocol setting of the communication UART is supposed to be PMTK protocol. // Since EPO data are transferred using MTK Binary Packet, you have to change the protocol setting to MTK Binary Protocol // before starting EPO Transfer Protocol. You can use PMTK command 253 to change the UART protocol setting. // Please refer to 7.1 for the details of PMTK command 253. Ql_memset(outBuffer,0,sizeof(outBuffer)); Ql_memcpy((void *)outBuffer, strCmd, Ql_strlen(strCmd)); len = Ql_strlen(outBuffer); outBuffer[len++] = 0x0D; outBuffer[len++] = 0x0A; outBuffer[len] = '\0'; /*send the data of outBuffer to the GPS module example L70 ect. */ ret = Ql_UART_Write(m_gnssUartPort,outBuffer,len); if (ret < len) { APP_DEBUG("SendMtkBinCmd Only part of bytes are written, %d/%d \r\n", ret, len); return FALSE; } return TRUE; }
bool fgEPO_Get_One_Pkt(int u2EpoSeq, int pEpoFile,unsigned char *szData) { u32 loopi = 0; u32 act_len = 0; u32 result; char checksum = 0; unsigned char buf[6+2+72*3+1+2]={0}; unsigned char framehead[6]={0x04,0x24,0xE3,0x00,0xD3,0x02}; unsigned char frametail[2]={0x0D,0x0A}; int pos=0; u16 wSeq = u2EpoSeq; Ql_memcpy(buf,framehead,sizeof(framehead)); pos=6; buf[pos++]=(u8)wSeq ; buf[pos++] = (u8)((wSeq >> 8 ) & 0xff); Ql_FS_Seek(pEpoFile,u2EpoSeq * 3 *MTK_EPO_SAT_LNG,QL_FS_FILE_CURRENT); result = Ql_FS_Read(pEpoFile,&buf[pos],MTK_EPO_SAT_LNG*3,&act_len); pos = MTKBIN_3EPO_PKT_LNG - 2; Ql_memcpy(&buf[pos],frametail,sizeof(frametail)); for(loopi=2;loopi<MTKBIN_3EPO_PKT_LNG-3;loopi++) { checksum = checksum^buf[loopi]; } buf[MTKBIN_3EPO_PKT_LNG - 3] = checksum; for(loopi=0;loopi<MTKBIN_3EPO_PKT_LNG;loopi++) { *(szData+loopi) = *(buf+loopi); } return TRUE; }
bool get_http_data(QlClient *client,HttpHeader *header) { char* fota = Ql_strstr((char*)client->recvBuffer, "QUECTEL_FOTA_UPGRADE"); if (fota) { unsigned char* end = &client->recvBuffer[client->pRecvCurrentPos - (Ql_strlen(header->boundary) + 8)]; if (Ql_strstr((char*)end, header->boundary)) { int lens = (char*)end - fota; Ql_memcpy(header->data, fota, lens); } return TRUE; } else return FALSE; }
void SetDefaultSettins(void){ __settings.IP[0]=172; __settings.IP[1]=23; __settings.IP[2]=0; __settings.IP[3]=9; __settings.TCP=10245; __settings.Num=1; __settings.Deboung=500; __settings.TSend=(DEVICE_CONTROL_EMPTY/1000); Ql_memcpy(__settings.Log,"FALSE",5); Ql_memcpy(__settings.Debug,"FALSE",5); Ql_memcpy(__settings.Pass,"gsd9drekj5",10); Ql_memcpy(__settings.Pwd,"NONE",8); Ql_memcpy(__settings.APN,"vpn2.mts.by",11); Ql_memcpy(__settings.User,"vpn",3); Ql_memcpy(__settings.WUser,"admin",5); Ql_memcpy(__settings.WPass,"admin",5); }
void Callback_GetIpByName(u8 contexId, u8 requestId, s32 errCode, u32 ipAddrCnt, u32* ipAddr) { u8 i=0; u8* ipSegment = (u8*)ipAddr; APP_DEBUG("<-- %s:contexid=%d, requestId=%d,error=%d,num_entry=%d -->\r\n", __func__, contexId, requestId,errCode,ipAddrCnt); if (errCode == SOC_SUCCESS) { APP_DEBUG("<--CallBack: get ip by name successfully.-->\r\n"); for(i=0;i<ipAddrCnt;i++) { ipSegment = (u8*)(ipAddr + i); APP_DEBUG("<--Entry=%d, ip=%d.%d.%d.%d-->\r\n",i,ipSegment[0],ipSegment[1],ipSegment[2],ipSegment[3]); } // Fetch the first ip address as the valid IP Ql_memcpy(m_ipaddress, ipAddr, 4); m_tcp_state = STATE_SOC_REGISTER; } }
static void CallBack_UART_Hdlr(Enum_SerialPort port, Enum_UARTEventType msg, bool level, void* customizedPara) { u32 rdLen=0; s32 ret; char *p=NULL; char *p1=NULL; char *p2=NULL; u8 write_buffer[4]={'a','b','c','D'}; u8 read_buffer[6]={0x00,0x00,0x00,0x00,0x00,0x00}; u8 registerAdrr[2]={0x01,0x45}; switch (msg) { case EVENT_UART_READY_TO_READ: { Ql_memset(m_Read_Buffer, 0x0, sizeof(m_Read_Buffer)); rdLen = Ql_UART_Read(port, m_Read_Buffer, sizeof(m_Read_Buffer)); //command-->Init the IIC , type 0 Лђеп 1. p = Ql_strstr(m_Read_Buffer,"Ql_IIC_Init="); if(p) { char* p1 = NULL; char* p2 = NULL; u8 NumberBuf[10]; s8 IIC_type=0; p1 = Ql_strstr(m_Read_Buffer, "="); p2 = Ql_strstr(m_Read_Buffer, "\r\n"); Ql_memset(NumberBuf, 0x0, sizeof(NumberBuf)); Ql_memcpy(NumberBuf, p1 + 1, p2 - p1 -1); IIC_type = Ql_atoi(NumberBuf); if(0 == IIC_type)// simultion iic test, and we choose PINNAME_GPIO4, PINNAME_GPIO5 for IIC SCL and SDA pins { ret = Ql_IIC_Init(0,PINNAME_CTS,PINNAME_RTS,0); if(ret < 0) { APP_DEBUG("\r\n<--Failed!! Ql_IIC_Init channel 0 fail ret=%d-->\r\n",ret); break; } APP_DEBUG("\r\n<--pins(%d & %d) Ql_IIC_Init channel 0 ret=%d-->\r\n",PINNAME_CTS,PINNAME_RTS,ret); break; } else if(1 == IIC_type)// IIC controller { ret = Ql_IIC_Init(1,PINNAME_RI,PINNAME_DCD,1); if(ret < 0) { APP_DEBUG("\r\n<--Failed!! IIC controller Ql_IIC_Init channel 1 fail ret=%d-->\r\n",ret); break; } APP_DEBUG("\r\n<--pins(SCL=%d,SDA=%d) IIC controller Ql_IIC_Init channel 1 ret=%d-->\r\n",PINNAME_RI,PINNAME_DCD,ret); break; } else { APP_DEBUG("\r\n<--IIC type error!!!!-->\r\n"); break; } } //command-->IIC config, IIC controller interface Ql_memset(m_buffer, 0x0, sizeof(m_buffer)); Ql_sprintf(m_buffer, "Ql_IIC_Config=0\r\n");// simultion IIC (channel 0) ret = Ql_strncmp(m_Read_Buffer, m_buffer, Ql_strlen(m_buffer)); if(0 == ret) { ret = Ql_IIC_Config(0,TRUE, 0x07, 0);// simultion IIC interface ,do not care the IicSpeed. if(ret < 0) { APP_DEBUG("\r\n<--Failed !!Ql_IIC_Config channel 0 fail ret=%d-->\r\n",ret); break; } APP_DEBUG("\r\n<--Ql_IIC_Config channel 0 ret=%d-->\r\n",ret); break; } //command-->IIC config, IIC controller interface Ql_memset(m_buffer, 0x0, sizeof(m_buffer)); Ql_sprintf(m_buffer, "Ql_IIC_Config=1\r\n");// IIC controller (channel 1) ret = Ql_strncmp(m_Read_Buffer, m_buffer, Ql_strlen(m_buffer)); if(0 == ret) { ret = Ql_IIC_Config(1,TRUE, 0x07, 300);// just for the IIC controller if(ret < 0) { APP_DEBUG("\r\n<--Failed !! IIC controller Ql_IIC_Config channel 1 fail ret=%d-->\r\n",ret); break; } APP_DEBUG("\r\n<--IIC controller Ql_IIC_Config channel 1 ret=%d-->\r\n",ret); break; } //command-->IIC write Ql_memset(m_buffer, 0x0, sizeof(m_buffer)); Ql_sprintf(m_buffer, "Ql_IIC_Write=0\r\n");// channel 0 ret = Ql_strncmp(m_Read_Buffer, m_buffer, Ql_strlen(m_buffer)); if(0 == ret) { ret = Ql_IIC_Write(0, 0x07, write_buffer, 4); if(ret < 0) { APP_DEBUG("\r\n<--Failed !! Ql_IIC_Write channel 0 fail ret=%d-->\r\n",ret); break; } APP_DEBUG("\r\n<--channel 0 Ql_IIC_Write ret=%d-->\r\n",ret); break; } Ql_memset(m_buffer, 0x0, sizeof(m_buffer)); Ql_sprintf(m_buffer, "Ql_IIC_Write=1\r\n");// channel 1 ret = Ql_strncmp(m_Read_Buffer, m_buffer, Ql_strlen(m_buffer)); if(0 == ret) { ret = Ql_IIC_Write(1, 0x07, write_buffer,4); if(ret < 0) { APP_DEBUG("\r\n<--Failed !! IIC controller Ql_IIC_Write channel 1 fail ret=%d-->\r\n",ret); break; } APP_DEBUG("\r\n<--IIC controller Ql_IIC_Write ret=%d-->\r\n",ret); break; } //command-->IIC read Ql_memset(m_buffer, 0x0, sizeof(m_buffer)); Ql_sprintf(m_buffer, "Ql_IIC_Read=0\r\n");// channel 0 ret = Ql_strncmp(m_Read_Buffer, m_buffer, Ql_strlen(m_buffer)); if(0 == ret) { ret = Ql_IIC_Read(0, 0x07, read_buffer, 6); if(ret < 0) { APP_DEBUG("\r\n<--Failed !! Ql_IIC_Read channel 0 fail ret=%d-->\r\n",ret); break; } APP_DEBUG("\r\n<--channel 0 Ql_IIC_Read ret=%d-->\r\n",ret); break; } Ql_memset(m_buffer, 0x0, sizeof(m_buffer)); Ql_sprintf(m_buffer, "Ql_IIC_Read=1\r\n");// channel 1 ret = Ql_strncmp(m_Read_Buffer, m_buffer, Ql_strlen(m_buffer)); if(0 == ret) { ret = Ql_IIC_Read(1, 0x07, write_buffer, 6); if(ret < 0) { APP_DEBUG("\r\n<--Failed !! IIC controller Ql_IIC_Read channel 1 fail ret=%d-->\r\n",ret); break; } APP_DEBUG("\r\n<--IIC controller Ql_IIC_Read ret=%d-->\r\n",ret); break; } //command-->IIC write then read Ql_memset(m_buffer, 0x0, sizeof(m_buffer)); Ql_sprintf(m_buffer, "Ql_IIC_Write_Read=0\r\n");// channel 0 ret = Ql_strncmp(m_Read_Buffer, m_buffer, Ql_strlen(m_buffer)); if(0 == ret) { ret = Ql_IIC_Write_Read(0, 0x07, registerAdrr, 2,read_buffer, 6); if(ret < 0) { APP_DEBUG("\r\n<--Failed !! Ql_IIC_Write_Read channel 0 fail ret=%d-->\r\n",ret); break; } APP_DEBUG("\r\n<--channel 0 Ql_IIC_Write_Read ret=%d-->\r\n",ret); break; } Ql_memset(m_buffer, 0x0, sizeof(m_buffer)); Ql_sprintf(m_buffer, "Ql_IIC_Write_Read=1\r\n");// channel 1 ret = Ql_strncmp(m_Read_Buffer, m_buffer, Ql_strlen(m_buffer)); if(0 == ret) { ret = Ql_IIC_Write_Read(1, 0x07, registerAdrr, 2,read_buffer, 6); if(ret < 0) { APP_DEBUG("\r\n<--Failed !! IIC controller Ql_IIC_Write_Read channel 1 fail ret=%d-->\r\n",ret); break; } APP_DEBUG("\r\n<--IIC controller Ql_IIC_Write_Read ret=%d-->\r\n",ret); break; } //command-->IIC write then read Ql_memset(m_buffer, 0x0, sizeof(m_buffer)); Ql_sprintf(m_buffer, "Ql_IIC_Uninit=0\r\n");// channel 0 ret = Ql_strncmp(m_Read_Buffer, m_buffer, Ql_strlen(m_buffer)); if(0 == ret) { ret = Ql_IIC_Uninit(0); if(ret < 0) { APP_DEBUG("\r\n<--Failed !! Ql_IIC_Uninit channel 0 fail ret=%d-->\r\n",ret); break; } APP_DEBUG("\r\n<--channel 0 Ql_IIC_Uninit ret=%d-->\r\n",ret); break; } Ql_memset(m_buffer, 0x0, sizeof(m_buffer)); Ql_sprintf(m_buffer, "Ql_IIC_Uninit=1\r\n");// channel 1 ret = Ql_strncmp(m_Read_Buffer, m_buffer, Ql_strlen(m_buffer)); if(0 == ret) { ret = Ql_IIC_Uninit(1); if(ret < 0) { APP_DEBUG("\r\n<--Failed !! IIC controller Ql_IIC_Uninit channel 1 fail ret=%d-->\r\n",ret); break; } APP_DEBUG("\r\n<--IIC controller (chnnlNo 1) Ql_IIC_Uninit ret=%d-->\r\n",ret); break; } APP_DEBUG("\r\n<--Not found this command, please check you command-->\r\n"); } default: break; } }
bool parse_header(void *clients,HttpHeader *http_header){ char *param; char *value; char *last; char *ph; char* bon_val = NULL; char header[1024 * 2]; char*lens=NULL; QlClient *client=(QlClient*)clients; char* head = Ql_strstr((char*)client->recvBuffer, "\r\n\r\n"); if (head) { http_header->set_cookie=FALSE; http_header->authorization=FALSE; Ql_memset(http_header->action,0,100); Ql_memset(http_header->boundary,0,200); Ql_memset(http_header->cookie,0,200); Ql_memset(http_header->data,0,10 * 1024); http_header->length=0; Ql_strcpy(http_header->cookie, "NONE"); int head_len = (char*)head - ((char*)client->recvBuffer); int body_len = (int)(client->pRecvCurrentPos) - head_len - 4; Ql_memcpy(header, client->recvBuffer, head_len); ph = strtok_r(header, "\r\n", &last); char* lst; if (Ql_strstr(ph, "GET")!=NULL) { char* act = strtok_r(ph+4, " ", &lst); if (Ql_strlen(act)>1) Ql_strcpy(http_header->action, act+1); else Ql_strcpy(http_header->action, act); http_header->method = GET; OUTD("action:%s",http_header->action); } if (Ql_strstr(ph, "POST")!=NULL) { http_header->method = POST; char* act = strtok_r(ph+5, " ", &lst); if (Ql_strlen(act)>1) Ql_strcpy(http_header->action, act+1); else Ql_strcpy(http_header->action, act); } while (1) { ph = strtok_r(NULL, "\r", &last); if (ph == NULL) { return TRUE; } param = strtok_r(ph + 1, ":", &value); if (Ql_strstr(param, "Content-Type")) { char* bon = Ql_strstr(value, "boundary"); bon_val = bon + 9; Ql_strcpy(http_header->boundary, bon_val); } else if ((lens = Ql_strstr(param, "Cookie"))!=NULL) { char* cookie; if ((cookie=Ql_strstr(value,"__ztp"))!=NULL) { Ql_strcpy(http_header->cookie, cookie+6); http_header->authorization=TRUE; http_header->set_cookie=FALSE; } } else if ((lens = Ql_strstr(param, "Content-Length"))!=NULL) { char* slen = lens + 16; int len_head = Ql_atoi(slen); http_header->length = len_head; if (len_head == body_len){ OUTD("data full",NULL); } else { OUTD("not full data.wait:%d have:%d", len_head, body_len); return FALSE; } } else if ((lens = Ql_strstr(param, "Authorization"))!=NULL) { /*char* slen = lens + 21; unsigned char dbuf[50]; Ql_memset(dbuf,0,50); decode_b64((unsigned char*)slen,dbuf); OUTD("decode buf:%s",dbuf); param = strtok_r((char*)dbuf, ":", &value); if (Ql_strstr(param,"admin") && Ql_strstr(value,"admin")) { OUTD("Autorization user:%s pswd:%s",param,value); http_header->authorization=TRUE; http_header->set_cookie=TRUE; }*/ } } } else { return FALSE; } }
void page_response(HttpHeader *header){ bool reset=FALSE; bool prepare=TRUE; char* action=header->action; OUTD("action=%s",action); Ql_memset(__data_buf,0,4096); Ql_memset(__s_buf,0,10240); if (Ql_strstr(header->action, "/")) { get_main_page( __est_connection ? "System state is start":"System state stop"); OUTD("main page",NULL); } else if (Ql_strstr(action,"reboot")) { get_rebot_page(); reset=TRUE; } else if (Ql_strstr(action,"settings?")) { char* pch=NULL; char* last=NULL; //OUTD("parse setting action:%s",pch); pch=strtok_r(action+9,"&",&last); //OUTD("parse command:%s",pch); while (pch!=NULL) { setCommand(pch); pch=strtok_r(NULL,"&",&last); //OUTD("parse command:%s",pch); } WriteSettings(); ReadSettings(); get_main_page("Save settings controller is OK"); } else if (Ql_strstr(action,"date?")) { bool sdt=SetLocDate(action+5); get_main_page(sdt ? "Set date and time is OK":"Error set date and time"); } else if (Ql_strstr(action,"stop")) { StopEstConnection(); get_main_page("Recive command Stop"); } else if (Ql_strstr(action,"run")) { nSTATE=STATE_EST_SOCKET_CREATE; get_main_page("Recive command Start"); } else if (Ql_strstr(action,"log")) { u16 size=0; ReadLogFile(&size); Ql_sprintf(__s_buf,__download_page,size); //Ql_strcpy(&__s_buf[Ql_strlen(__s_buf)],__buf_log); Ql_memcpy(&__s_buf[Ql_strlen(__s_buf)],__buf_log,size); OUTD("__download_page:%d file size:%d buffer-len:%d",Ql_strlen(__download_page),size,Ql_strlen(__s_buf)); prepare=FALSE; } else if (Ql_strstr(action, "autorize")) { Ql_sprintf(__s_buf,__autorize,0); prepare=FALSE; OUTD("set autorize",NULL); } else { get_error_page(); Ql_sprintf(__s_buf,__error_page,0); prepare=FALSE; } if (prepare) { //if (header->set_cookie) { // Ql_sprintf(__s_buf, __ok_page, Ql_strlen(__data_buf),"\r\nSet-Cookie: __ztp=987654321\r\n"); //} Ql_sprintf(__s_buf, __ok_page, Ql_strlen(__data_buf)); Ql_strcpy(&__s_buf[Ql_strlen(__s_buf)],__data_buf); OUTD("sbuf:%d dbuf:%d",Ql_strlen(__s_buf),Ql_strlen(__data_buf)); } if (reset) { Ql_Sleep(10000); Ql_Reset(0); } }