int main(void) { uchar ucKey; ushort ret; uchar *data="\x12\x34\x56\x78"; int len=strlen(data); SystemInit(); while(1) { ScrCls(); kbflush(); ScrPrint(0,0,0x01|0x80,"CRC-16 "); do{ ucKey=getkey(); }while(ucKey!=KEY1 && ucKey!=KEYENTER && ucKey!=KEYCANCEL); if(ucKey==KEY1 || ucKey==KEYENTER) { ScrCls(); ret=get_crc16(data,len); Lcdprintf("0x%x\n",ret); getkey(); } if(ucKey==KEYCANCEL) return 1; } return 0; }
ushort get_crc16(const uchar *data_block,int data_len) { uchar i; int j; ushort crc16; ulong temp=0; if(NULL==data_block) { Lcdprintf("Param Error\n"); return 1; } for(j=0;j<data_len;j++) { for(i=0x80;i!=0x00;i=i>>1) { temp<<=1; if(temp & 0x10000) temp=temp ^ 0x11021; if(*data_block & i) { temp^=0x1021; } } data_block++; } crc16=temp; return crc16; }
//扫描周围的热点 int ScanWifiAps(void) { int i, iRet, iApCount; uchar ucKey, ucTempBuf[100]; ST_WIFI_AP stWifiAps[16]; ScrClrBelow(1); ScrPrint(0, 1, 0, _T("SCANNING AP...")); //scanning ap if(strlen(glSysCtrl.stAppWifiPara.Ssid) != 0) { WifiDisconAp(); } iApCount = 8; memset(&stWifiAps, 0, sizeof(stWifiAps)); iRet = WifiScanAps(&stWifiAps[0], iApCount); if(iRet == 0) { ScrClrBelow(1); ScrPrint(0, 2, 0, _T("NO AVAILABLE AP")); getkey(); return WIFI_ERR_NULL; } if(iRet < 0) { ScrClrBelow(1); ScrPrint(0, 2, 0, "ScanAps err=%d", iRet); getkey(); return WIFI_ERR_SCAN; } ScrCls(); PubDispString(_T("SEARCH NETWORK"), DISP_LINE_CENTER|0); //please select //显示搜索到的热点 for (i=0; i<iRet; i++) { ScrPrint(0, (uchar)(i + 1), 0, "%d - %s",i, stWifiAps[i].Ssid); } while (1) { kbflush(); ucKey = PubWaitKey(USER_OPER_TIMEOUT); if (ucKey == KEYCANCEL || ucKey == NOKEY) { return ucKey; //modify by wuc 2014.4.1 } i = ucKey - 0x30; if(i<0 || i>iRet) { continue; } break; } strcpy(glSysCtrl.stAppWifiPara.Ssid, stWifiAps[i].Ssid); //判断是否需要密码 if(stWifiAps[i].SecMode == 0) //无加密 { glSysCtrl.stAppWifiPara.SecMode = 0; } else if(stWifiAps[i].SecMode == 1) //WEP加密 { glSysCtrl.stAppWifiPara.SecMode = 1; memset(ucTempBuf, 0, sizeof(ucTempBuf)); iRet = GetWifiKey(stWifiAps[i].Ssid, stWifiAps[i].SecMode, ucTempBuf); if(iRet) { return iRet; } strcpy(glSysCtrl.stAppWifiPara.Wep, ucTempBuf); } else if(stWifiAps[i].SecMode == 2) //WPA/WPA2加密 TKIP { glSysCtrl.stAppWifiPara.SecMode = 2; memset(ucTempBuf, 0, sizeof(ucTempBuf)); iRet = GetWifiKey(stWifiAps[i].Ssid, stWifiAps[i].SecMode, ucTempBuf); if(iRet) { return iRet; } strcpy(glSysCtrl.stAppWifiPara.Wpa, ucTempBuf); } else if(stWifiAps[i].SecMode == 3) //WPA-PSK/WPA2-PSK加密 AES { glSysCtrl.stAppWifiPara.SecMode = 3; memset(ucTempBuf, 0, sizeof(ucTempBuf)); iRet = GetWifiKey(stWifiAps[i].Ssid, stWifiAps[i].SecMode, ucTempBuf); if(iRet) { return iRet; } strcpy(glSysCtrl.stAppWifiPara.Wpa, ucTempBuf); } else { ScrClrRect(0, 24, 319, 215); ScrGotoxyEx(0, 24); Lcdprintf("%s\n", stWifiAps[i].Ssid); Lcdprintf(_T("UNSUPPORTED MODE\n")); getkey(); return WIFI_ERR_CANCEL; } return 0; }
void forwardLoginDetails(){ char url[600] = ""; char domain[100] = ""; char rsp[10240] = ""; char err_msg[200] = ""; char socketBody[2048] = ""; //char formatted_num[15]=""; char sample_rsp[200]=""; unsigned char keyPressed; uchar serial_num[32] = ""; APP_PARA stPara; ACTIVE_NETWORK network; SERVER_IP ip; SERVER_RESPONSE sResp; int iFile=0,iRet=0; memset(&network, 0, sizeof(network)); memset(&stPara, 0, sizeof(stPara)); memset(&ip, 0, sizeof(ip)); memset(&sResp, 0, sizeof(sResp)); iFile = open("network", O_RDWR|O_CREATE); iRet = read(iFile, (uchar *)&network, sizeof(network)); if(iRet==0){ strcpy(err_msg,"Please select \nSIM and network"); keyPressed = show_msg(err_msg); return; } loadPreferredSettings(network.szSim,network.szNetworkFilename); iFile = open("sim_para", O_RDWR|O_CREATE); iRet = read(iFile, (uchar *)&stPara, sizeof(stPara)); if(iRet==0){ sprintf(err_msg,"%s %s","Please configure\nsettings for\n",network.szNetworkFilename); keyPressed = show_msg(err_msg); return; } iFile = open("ip_add", O_RDWR|O_CREATE); iRet = read(iFile, (uchar *)&ip, sizeof(ip)); if(iRet==0){ sprintf(err_msg,"%s","IP address has\nnot been set"); keyPressed = show_msg(err_msg); return; } //reads the device's serial number ReadSN(serial_num); //we build up the socket body sprintf(url,"/myauthserver/login?username=%s&password=%s&serialNumber=%s","user1","user2",serial_num); strcpy(socketBody,"GET "); strcat(socketBody,url); strcat(socketBody," HTTP/1.1\r\n"); strcat(socketBody,"Host: "); strcat(socketBody,ip.szIp); strcat(socketBody,"\r\n"); strcat(socketBody,"User-Agent: SMSGH_PAX_httplib\r\n"); strcat(socketBody,"Connection: keep-alive\r\n"); strcat(socketBody,"Cache-Control: no-cache\r\n"); strcat(socketBody,"Accept: */*\r\n"); strcat(socketBody,"\r\n"); ScrCls(); ScrGotoxy(0, 0); ScrAttrSet(0); Lcdprintf("Processing...\nplease wait..."); if(dwnld_string(ip.szIp,socketBody,rsp,err_msg,stPara)<0){ //todo: check for each int returned from method, whether -1,-2, etc kbflush(); keyPressed = show_msg(err_msg); } else{ sResp = parse_http_headers(rsp); processLoginResponse(sResp); } }