BOOL CMFile::WriteString(LPCTSTR str) { int len = strlen(str)+1; if (len >300) len = 300; short l = len; FWrite(&l,sizeof(short)); FWrite((LPSTR)str,l); return TRUE; }
int setPLC_para(const char *abuf, int addr) { unsigned char ebuf[32]; int len, ret; if (abuf == NULL) return 0; memset(ebuf, 0, sizeof(ebuf)); if (addr == OFFSET_PLC_MAC) { len = ETHER_ADDR_LEN; if (!isValidPara(abuf, len)) return 0; ret = ether_atoe(abuf, ebuf); } else if (addr == OFFSET_PLC_NMK) { len = PLC_KEY_LEN; if (!isValidPara(abuf, len)) return 0; ret = key_atoe(abuf, ebuf); } else return 0; if (ret) { FWrite(ebuf, addr, len); getPLC_para(addr); return 1; } else return 0; }
static nserror gui_download_window_data(struct gui_download_window *dw, const char *data, unsigned int size) { APTR va[3]; if(!dw) return NSERROR_SAVE_FAILED; FWrite(dw->fh,data,1,size); dw->downloaded = dw->downloaded + size; va[0] = (APTR)dw->downloaded; va[1] = (APTR)dw->size; va[2] = 0; if(dw->size) { RefreshSetGadgetAttrs((struct Gadget *)dw->objects[GID_STATUS], dw->win, NULL, FUELGAUGE_Level, dw->downloaded, GA_Text, messages_get("amiDownload"), FUELGAUGE_VarArgs, va, TAG_DONE); } else { RefreshSetGadgetAttrs((struct Gadget *)dw->objects[GID_STATUS], dw->win, NULL, FUELGAUGE_Level, dw->downloaded, GA_Text, messages_get("amiDownloadU"), FUELGAUGE_VarArgs, va, TAG_DONE); } return NSERROR_OK; }
void FASTCALL FWriteBanks(int type, FILE *f) { BANK *bank=banks; while(bank) { if(bank->type==type) { FWrite(bank->buffer,bank->maxsize,f); } bank = bank->next; } }
nserror gui_window_save_link(struct gui_window *g, nsurl *url, const char *title) { char fname[1024]; STRPTR openurlstring,linkname; struct DiskObject *dobj = NULL; linkname = ASPrintf("Link_to_%s",FilePart(nsurl_access(url))); if(AslRequestTags(savereq, ASLFR_Window, g->shared->win, ASLFR_SleepWindow, TRUE, ASLFR_TitleText,messages_get("NetSurf"), ASLFR_Screen,scrn, ASLFR_InitialFile,linkname, TAG_DONE)) { strlcpy(fname, savereq->fr_Drawer, 1024); AddPart(fname,savereq->fr_File,1024); ami_set_pointer(g->shared, GUI_POINTER_WAIT, false); if(ami_download_check_overwrite(fname, g->shared->win, 0)) { BPTR fh; if((fh = FOpen(fname,MODE_NEWFILE,0))) { /* \todo Should be URLOpen on OS4.1 */ openurlstring = ASPrintf("openurl \"%s\"\n",nsurl_access(url)); FWrite(fh,openurlstring,1,strlen(openurlstring)); FClose(fh); FreeVec(openurlstring); SetComment(fname, nsurl_access(url)); dobj = GetIconTags(NULL,ICONGETA_GetDefaultName,"url", ICONGETA_GetDefaultType,WBPROJECT, TAG_DONE); dobj->do_DefaultTool = "IconX"; PutIconTags(fname,dobj, ICONPUTA_NotifyWorkbench,TRUE, TAG_DONE); FreeDiskObject(dobj); } FreeVec(linkname); } ami_reset_pointer(g->shared); } return NSERROR_OK; }
BOOL FWriteOutbuf(char *name, char *ext, OUTBUF *outbuf) { FILE *f; U32 len = GET_BUF_OFFSET((U32)outbuf->buffer,(U32)outbuf->ptr); if(len) { sprintf(szTemp,"%s\\%05d.%s",name,scriptNumber,ext); if((f = OpenFile(DIR_GAME,szTemp,"wb"))==NULL) { fatal(FTL_SAVINGRESOURCE,szTemp); } FWrite(outbuf->buffer,len,f); CloseFile(f); } return TRUE; }
void WriteLog(PCHAR buf, WORD len) { WORD F; if (LogPath != NULL) { F = FOpen((PCHARFAR)&LogPath); if (F == 0xffff) { F = FCreate((PCHARFAR)&LogPath); } FSize(F); FWrite(F, (PCHARFAR)buf, len); FClose(F); } }
int set_meter_file(char *meter_buf) { if(meter_buf == NULL) return 0; #ifdef CONFIG_BCMWL5 FILE *fp; if (fp=fopen(ISP_METER_FILE, "w")) { fprintf(fp, "%s", meter_buf); fclose(fp); } #else FWrite(meter_buf, RA_OFFSET_ISP_METER, sizeof(meter_buf)); #endif return 1; }
bool CMyFile::FWriteString(TCHAR *Buffer, UINT nLength) { if((nLength == 0) || (Buffer == NULL)) return false; if(this->_bOpen == false) return false; if(this->_bWrite == false) return false; if(this->_nMode == -1) return false; for(unsigned int i = 0; i < nLength; i++) { if(FWrite(Buffer[i]) == false) return false; } return true; }
bool TFile::Serialize(const uint64_t* buffer, size_t count) { return FWrite(buffer, sizeof(*buffer), count) == count; }
void ami_file_save(int type, char *fname, struct Window *win, struct hlcache_handle *object, struct hlcache_handle *favicon, struct browser_window *bw) { BPTR lock, fh; const char *source_data; ULONG source_size; struct bitmap *bm; ami_update_pointer(win, GUI_POINTER_WAIT); if(ami_download_check_overwrite(fname, win, 0)) { switch(type) { case AMINS_SAVE_SOURCE: if((source_data = content_get_source_data(object, &source_size))) { BPTR fh; if(fh = FOpen(fname, MODE_NEWFILE,0)) { FWrite(fh, source_data, 1, source_size); FClose(fh); } } break; case AMINS_SAVE_TEXT: save_as_text(object, fname); break; case AMINS_SAVE_COMPLETE: if(lock = CreateDir(fname)) { UnLock(lock); save_complete(object, fname, ami_file_set_type); amiga_icon_superimpose_favicon(fname, favicon, NULL); } break; case AMINS_SAVE_PDF: #ifdef WITH_PDF_EXPORT if(save_as_pdf(object, fname)) amiga_icon_superimpose_favicon(fname, favicon, "pdf"); #endif break; case AMINS_SAVE_IFF: if((bm = content_get_bitmap(object))) { bm->url = (char *)nsurl_access(hlcache_handle_get_url(object)); bm->title = (char *)content_get_title(object); bitmap_save(bm, fname, 0); } #ifdef WITH_NS_SVG else if(ami_mime_compare(object, "svg") == true) { ami_save_svg(object, fname); } #endif break; case AMINS_SAVE_SELECTION: if(source_data = browser_window_get_selection(bw)) { if(fh = FOpen(fname, MODE_NEWFILE,0)) { FWrite(fh, source_data, 1, strlen(source_data)); FClose(fh); } free((void *)source_data); } break; } if(object) SetComment(fname, nsurl_access(hlcache_handle_get_url(object))); } ami_update_pointer(win, GUI_POINTER_DEFAULT); }
/* The program expects at most four arguments: host in IP format, port * number to connect to, proxy in IP format and proxy port number. * If last two are specified, host can be in any format proxy will * understand (since this is an example for SSL programming, host name * resolving code is left out). * * Default values are "127.0.0.1", 443. If any proxy parameter is * omitted, the program will connect directly to the host. */ int main(int argc, char *argv[]) { char buffer[4096]; /* This should be dynamically allocated */ const char *request = "GET / HTTP/1.0\r\n\r\n"; BOOL is_ok = FALSE; X509 *server_cert; SSL_CTX *ctx; BIO *bio_err; SSL *ssl; if (Init()) { /* Basic intialization. Next few steps (up to SSL_new()) need * to be done only once per AmiSSL opener. */ SSLeay_add_ssl_algorithms(); SSL_load_error_strings(); /* Note: BIO writing routines are prepared for NULL BIO handle */ if((bio_err = BIO_new(BIO_s_file())) != NULL) BIO_set_fp_amiga(bio_err, GetStdErr(), BIO_NOCLOSE | BIO_FP_TEXT); /* Get a new SSL context */ if((ctx = SSL_CTX_new(SSLv23_client_method())) != NULL) { /* Basic certificate handling. OpenSSL documentation has more * information on this. */ SSL_CTX_set_default_verify_paths(ctx); SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, NULL); /* The following needs to be done once per socket */ if((ssl = SSL_new(ctx)) != NULL) { int sock; /* Connect to the HTTPS server, directly or through a proxy */ if (argc > 4) sock = ConnectToServer(argv[1], atol(argv[2]), argv[3], atol(argv[4])); else sock = ConnectToServer(argv[1] ? argv[1] : (char *)"127.0.0.1", argc > 2 ? atol(argv[2]) : 443, NULL, 0); /* Check if connection was established */ if (sock >= 0) { int ssl_err = 0; /* Associate the socket with the ssl structure */ SSL_set_fd(ssl, sock); /* Perform SSL handshake */ if((ssl_err = SSL_connect(ssl)) >= 0) { Printf("SSL connection using %s\n", SSL_get_cipher(ssl)); /* Certificate checking. This example is *very* basic */ if((server_cert = SSL_get_peer_certificate(ssl))) { char *str; Printf("Server certificate:\n"); if((str = X509_NAME_oneline(X509_get_subject_name(server_cert), 0, 0))) { Printf("\tSubject: %s\n", str); OPENSSL_free(str); } else FPrintf(GetStdErr(), "Warning: couldn't read subject name in certificate!\n"); if((str = X509_NAME_oneline(X509_get_issuer_name(server_cert), 0, 0)) != NULL) { Printf("\tIssuer: %s\n", str); OPENSSL_free(str); } else FPrintf(GetStdErr(), "Warning: couldn't read issuer name in certificate!\n"); X509_free(server_cert); /* Send a HTTP request. Again, this is just * a very basic example. */ if ((ssl_err = SSL_write(ssl, request, strlen(request))) > 0) { /* Dump everything to output */ while ((ssl_err = SSL_read(ssl, buffer, sizeof(buffer) - 1)) > 0) FWrite(Output(), buffer, ssl_err, 1); FFlush(Output()); /* This is not entirely true, check * the SSL_read documentation */ is_ok = ssl_err == 0; } else FPrintf(GetStdErr(), "Couldn't write request!\n"); } else FPrintf(GetStdErr(), "Couldn't get server certificate!\n"); } else FPrintf(GetStdErr(), "Couldn't establish SSL connection!\n"); /* If there were errors, print them */ if (ssl_err < 0) ERR_print_errors(bio_err); /* Send SSL close notification and close the socket */ SSL_shutdown(ssl); CloseSocket(sock); } else FPrintf(GetStdErr(), "Couldn't connect to host!\n"); FPrintf(GetStdErr(), "before SSL_free()\n"); SSL_free(ssl); } else FPrintf(GetStdErr(), "Couldn't create new SSL handle!\n"); FPrintf(GetStdErr(), "before SSL_CTX_free()\n"); SSL_CTX_free(ctx); } else FPrintf(GetStdErr(), "Couldn't create new context!\n"); FPrintf(GetStdErr(), "before Cleanup()\n"); Cleanup(); } FPrintf(GetStdErr(), "before end of main()\n"); return(is_ok ? RETURN_OK : RETURN_ERROR); }
void init_syspara(void) { unsigned char buffer[16]; unsigned int *src; char *dst; unsigned int bytes; int i; char macaddr[]="00:11:22:33:44:55"; char macaddr2[]="00:11:22:33:44:58"; char country_code[3]; char pin[9]; char productid[13]; char fwver[8]; char blver[20]; unsigned char txbf_para[33]; char ea[ETHER_ADDR_LEN]; nvram_set("buildno", rt_serialno); nvram_set("extendno", rt_extendno); nvram_set("buildinfo", rt_buildinfo); /* /dev/mtd/2, RF parameters, starts from 0x40000 */ dst = buffer; bytes = 6; memset(buffer, 0, sizeof(buffer)); memset(country_code, 0, sizeof(country_code)); memset(pin, 0, sizeof(pin)); memset(productid, 0, sizeof(productid)); memset(fwver, 0, sizeof(fwver)); memset(txbf_para, 0, sizeof(txbf_para)); if (FRead(dst, OFFSET_MAC_ADDR, bytes)<0) { _dprintf("READ MAC address: Out of scope\n"); } else { if (buffer[0]!=0xff) ether_etoa(buffer, macaddr); } if (FRead(dst, OFFSET_MAC_ADDR_2G, bytes)<0) { _dprintf("READ MAC address 2G: Out of scope\n"); } else { if (buffer[0]!=0xff) ether_etoa(buffer, macaddr2); } if (!ralink_mssid_mac_validate(macaddr) || !ralink_mssid_mac_validate(macaddr2)) nvram_set("wl_mssid", "0"); else nvram_set("wl_mssid", "1"); //TODO: separate for different chipset solution nvram_set("et0macaddr", macaddr); nvram_set("et1macaddr", macaddr2); if (FRead(dst, OFFSET_MAC_GMAC0, bytes)<0) dbg("READ MAC address GMAC0: Out of scope\n"); else { if (buffer[0]==0xff) { if (ether_atoe(macaddr, ea)) FWrite(ea, OFFSET_MAC_GMAC0, 6); } } if (FRead(dst, OFFSET_MAC_GMAC2, bytes)<0) dbg("READ MAC address GMAC2: Out of scope\n"); else { if (buffer[0]==0xff) { if (ether_atoe(macaddr2, ea)) FWrite(ea, OFFSET_MAC_GMAC2, 6); } } /* reserved for Ralink. used as ASUS country code. */ dst = country_code; bytes = 2; if (FRead(dst, OFFSET_COUNTRY_CODE, bytes)<0) { _dprintf("READ ASUS country code: Out of scope\n"); nvram_set("wl_country_code", ""); } else { if ((unsigned char)country_code[0]!=0xff) { //for specific power if (country_code[0] ==0x5a && country_code[1] == 0x31) { country_code[0]='U'; country_code[1]='S'; } else if (country_code[0] ==0x5a && country_code[1] == 0x32) { country_code[0]='G'; country_code[1]='B'; } else if (country_code[0] ==0x5a && country_code[1] == 0x33) { country_code[0]='T'; country_code[1]='W'; } else if (country_code[0] ==0x5a && country_code[1] == 0x34) { country_code[0]='C'; country_code[1]='N'; } nvram_set("wl_country_code", country_code); nvram_set("wl0_country_code", country_code); nvram_set("wl1_country_code", country_code); } else { nvram_set("wl_country_code", "DB"); nvram_set("wl0_country_code", "DB"); nvram_set("wl1_country_code", "DB"); } if (!strcasecmp(nvram_safe_get("wl_country_code"), "BR")) { nvram_set("wl_country_code", "UZ"); nvram_set("wl0_country_code", "UZ"); nvram_set("wl1_country_code", "UZ"); } if (nvram_match("wl_country_code", "HK") && nvram_match("preferred_lang", "")) nvram_set("preferred_lang", "TW"); } /* reserved for Ralink. used as ASUS pin code. */ dst = (char*)pin; bytes = 8; if (FRead(dst, OFFSET_PIN_CODE, bytes)<0) { _dprintf("READ ASUS pin code: Out of scope\n"); nvram_set("wl_pin_code", ""); } else { if ((unsigned char)pin[0]!=0xff) nvram_set("secret_code", pin); else nvram_set("secret_code", "12345670"); } src = (unsigned int*) 0x50020; /* /dev/mtd/3, firmware, starts from 0x50000 */ dst = buffer; bytes = 16; if (FRead(dst, (int)src, bytes)<0) { fprintf(stderr, "READ firmware header: Out of scope\n"); nvram_set("productid", "unknown"); nvram_set("firmver", "unknown"); } else { strncpy(productid, buffer + 4, 12); productid[12] = 0; sprintf(fwver, "%d.%d.%d.%d", buffer[0], buffer[1], buffer[2], buffer[3]); nvram_set("productid", trim_r(productid)); nvram_set("firmver", trim_r(fwver)); } memset(buffer, 0, sizeof(buffer)); FRead(buffer, OFFSET_BOOT_VER, 4); // sprintf(blver, "%c.%c.%c.%c", buffer[0], buffer[1], buffer[2], buffer[3]); sprintf(blver, "%s-0%c-0%c-0%c-0%c", trim_r(productid), buffer[0], buffer[1], buffer[2], buffer[3]); nvram_set("blver", trim_r(blver)); _dprintf("bootloader version: %s\n", nvram_safe_get("blver")); _dprintf("firmware version: %s\n", nvram_safe_get("firmver")); dst = txbf_para; int count_0xff = 0; if (FRead(dst, OFFSET_TXBF_PARA, 33) < 0) { fprintf(stderr, "READ TXBF PARA address: Out of scope\n"); } else { for (i = 0; i < 33; i++) { if (txbf_para[i] == 0xff) count_0xff++; /* if ((i % 16) == 0) fprintf(stderr, "\n"); fprintf(stderr, "%02x ", (unsigned char) txbf_para[i]); */ } /* fprintf(stderr, "\n"); fprintf(stderr, "TxBF parameter 0xFF count: %d\n", count_0xff); */ } if (count_0xff == 33) nvram_set("wl1_txbf_en", "0"); else nvram_set("wl1_txbf_en", "1"); #if defined (RTCONFIG_WLMODULE_RT3352_INIC_MII) #define EEPROM_INIC_SIZE (512) #define EEPROM_INIT_ADDR 0x48000 #define EEPROM_INIT_FILE "/etc/Wireless/iNIC/iNIC_e2p.bin" { char eeprom[EEPROM_INIC_SIZE]; if(FRead(eeprom, EEPROM_INIT_ADDR, sizeof(eeprom)) < 0) { fprintf(stderr, "FRead(eeprom, 0x%08x, 0x%x) failed\n", EEPROM_INIT_ADDR, sizeof(eeprom)); } else { FILE *fp; char *filepath = EEPROM_INIT_FILE; system("mkdir -p /etc/Wireless/iNIC/"); if((fp = fopen(filepath, "w")) == NULL) { fprintf(stderr, "fopen(%s) failed!!\n", filepath); } else { if(fwrite(eeprom, sizeof(eeprom), 1, fp) < 1) { perror("fwrite(eeprom)"); } fclose(fp); } } } #endif { #ifdef RTCONFIG_ODMPID char modelname[16]; FRead(modelname, OFFSET_ODMPID, sizeof(modelname)); modelname[sizeof(modelname)-1] = '\0'; if(modelname[0] != 0 && (unsigned char)(modelname[0]) != 0xff && is_valid_hostname(modelname)) { nvram_set("odmpid", modelname); } else #endif nvram_unset("odmpid"); } nvram_set("firmver", rt_version); nvram_set("productid", rt_buildname); }
void init_syspara(void) { unsigned char buffer[16]; unsigned char *dst; unsigned int bytes; int i; char macaddr[]="00:11:22:33:44:55"; char macaddr2[]="00:11:22:33:44:58"; char country_code[3]; char pin[9]; char productid[13]; char fwver[8]; char blver[20]; unsigned char txbf_para[33]; char ea[ETHER_ADDR_LEN]; nvram_set("buildno", rt_serialno); nvram_set("extendno", rt_extendno); nvram_set("buildinfo", rt_buildinfo); nvram_set("swpjverno", rt_swpjverno); /* /dev/mtd/2, RF parameters, starts from 0x40000 */ dst = buffer; bytes = 6; memset(buffer, 0, sizeof(buffer)); memset(country_code, 0, sizeof(country_code)); memset(pin, 0, sizeof(pin)); memset(productid, 0, sizeof(productid)); memset(fwver, 0, sizeof(fwver)); memset(txbf_para, 0, sizeof(txbf_para)); if (FRead(dst, OFFSET_MAC_ADDR, bytes)<0) { _dprintf("READ MAC address: Out of scope\n"); } else { if (buffer[0]!=0xff) ether_etoa(buffer, macaddr); } #if !defined(RTN14U) // single band if (FRead(dst, OFFSET_MAC_ADDR_2G, bytes)<0) { _dprintf("READ MAC address 2G: Out of scope\n"); } else { if (buffer[0]!=0xff) ether_etoa(buffer, macaddr2); } #endif #if defined(RTN14U) // single band if (!mssid_mac_validate(macaddr)) #else if (!mssid_mac_validate(macaddr) || !mssid_mac_validate(macaddr2)) #endif nvram_set("wl_mssid", "0"); else nvram_set("wl_mssid", "1"); #if defined(RTN14U) // single band nvram_set("et0macaddr", macaddr); nvram_set("et1macaddr", macaddr); #else //TODO: separate for different chipset solution nvram_set("et0macaddr", macaddr); nvram_set("et1macaddr", macaddr2); #endif if (FRead(dst, OFFSET_MAC_GMAC0, bytes)<0) dbg("READ MAC address GMAC0: Out of scope\n"); else { if (buffer[0]==0xff) { if (ether_atoe(macaddr, ea)) FWrite(ea, OFFSET_MAC_GMAC0, 6); } } if (FRead(dst, OFFSET_MAC_GMAC2, bytes)<0) dbg("READ MAC address GMAC2: Out of scope\n"); else { if (buffer[0]==0xff) { if (ether_atoe(macaddr2, ea)) FWrite(ea, OFFSET_MAC_GMAC2, 6); } } /* reserved for Ralink. used as ASUS country code. */ #if ! defined(RTCONFIG_NEW_REGULATION_DOMAIN) dst = (unsigned char*) country_code; bytes = 2; if (FRead(dst, OFFSET_COUNTRY_CODE, bytes)<0) { _dprintf("READ ASUS country code: Out of scope\n"); nvram_set("wl_country_code", ""); } else { chk_valid_country_code(country_code); nvram_set("wl_country_code", country_code); nvram_set("wl0_country_code", country_code); nvram_set("wl1_country_code", country_code); } #else /* ! RTCONFIG_NEW_REGULATION_DOMAIN */ dst = buffer; bytes = MAX_REGSPEC_LEN; memset(dst, 0, MAX_REGSPEC_LEN+1); if(FRead(dst, REGSPEC_ADDR, bytes) < 0) nvram_set("reg_spec", "FCC"); // DEFAULT else { for (i=(MAX_REGSPEC_LEN-1);i>=0;i--) { if ((dst[i]==0xff) || (dst[i]=='\0')) dst[i]='\0'; } if (dst[0]!=0x00) nvram_set("reg_spec", dst); else nvram_set("reg_spec", "FCC"); // DEFAULT } if (FRead(dst, REG2G_EEPROM_ADDR, MAX_REGDOMAIN_LEN)<0 || memcmp(dst,"2G_CH", 5) != 0) { _dprintf("READ ASUS country code: Out of scope\n"); nvram_set("wl_country_code", ""); nvram_set("wl0_country_code", "DB"); nvram_set("wl_reg_2g", "2G_CH14"); } else { for(i = 0; i < MAX_REGDOMAIN_LEN; i++) if(dst[i] == 0xff || dst[i] == 0) break; dst[i] = 0; nvram_set("wl_reg_2g", dst); if (strcmp(dst, "2G_CH11") == 0) nvram_set("wl0_country_code", "US"); else if (strcmp(dst, "2G_CH13") == 0) nvram_set("wl0_country_code", "GB"); else if (strcmp(dst, "2G_CH14") == 0) nvram_set("wl0_country_code", "DB"); else nvram_set("wl0_country_code", "DB"); } if (FRead(dst, REG5G_EEPROM_ADDR, MAX_REGDOMAIN_LEN)<0 || memcmp(dst,"5G_", 3) != 0) { _dprintf("READ ASUS country code: Out of scope\n"); nvram_set("wl_country_code", ""); nvram_set("wl1_country_code", "DB"); nvram_set("wl_reg_5g", "5G_ALL"); } else { for(i = 0; i < MAX_REGDOMAIN_LEN; i++) if(dst[i] == 0xff || dst[i] == 0) break; dst[i] = 0; nvram_set("wl_reg_5g", dst); if (strcmp(dst, "5G_BAND1") == 0) nvram_set("wl1_country_code", "GB"); else if (strcmp(dst, "5G_BAND123") == 0) nvram_set("wl1_country_code", "GB"); else if (strcmp(dst, "5G_BAND14") == 0) nvram_set("wl1_country_code", "US"); else if (strcmp(dst, "5G_BAND24") == 0) nvram_set("wl1_country_code", "TW"); else if (strcmp(dst, "5G_BAND4") == 0) nvram_set("wl1_country_code", "CN"); else nvram_set("wl1_country_code", "DB"); } #endif /* ! RTCONFIG_NEW_REGULATION_DOMAIN */ #if defined(RTN56U) || defined(RTCONFIG_DSL) if (nvram_match("wl_country_code", "BR")) { nvram_set("wl_country_code", "UZ"); nvram_set("wl0_country_code", "UZ"); nvram_set("wl1_country_code", "UZ"); } #endif if (nvram_match("wl_country_code", "HK") && nvram_match("preferred_lang", "")) nvram_set("preferred_lang", "TW"); /* reserved for Ralink. used as ASUS pin code. */ dst = (char*)pin; bytes = 8; if (FRead(dst, OFFSET_PIN_CODE, bytes)<0) { _dprintf("READ ASUS pin code: Out of scope\n"); nvram_set("wl_pin_code", ""); } else { if ((unsigned char)pin[0]!=0xff) nvram_set("secret_code", pin); else nvram_set("secret_code", "12345670"); } dst = buffer; bytes = 16; if (linuxRead(dst, 0x20, bytes)<0) /* The "linux" MTD partition, offset 0x20. */ { fprintf(stderr, "READ firmware header: Out of scope\n"); nvram_set("productid", "unknown"); nvram_set("firmver", "unknown"); } else { strncpy(productid, buffer + 4, 12); productid[12] = 0; sprintf(fwver, "%d.%d.%d.%d", buffer[0], buffer[1], buffer[2], buffer[3]); nvram_set("productid", trim_r(productid)); nvram_set("firmver", trim_r(fwver)); } memset(buffer, 0, sizeof(buffer)); FRead(buffer, OFFSET_BOOT_VER, 4); // sprintf(blver, "%c.%c.%c.%c", buffer[0], buffer[1], buffer[2], buffer[3]); sprintf(blver, "%s-0%c-0%c-0%c-0%c", trim_r(productid), buffer[0], buffer[1], buffer[2], buffer[3]); nvram_set("blver", trim_r(blver)); _dprintf("bootloader version: %s\n", nvram_safe_get("blver")); _dprintf("firmware version: %s\n", nvram_safe_get("firmver")); dst = txbf_para; int count_0xff = 0; if (FRead(dst, OFFSET_TXBF_PARA, 33) < 0) { fprintf(stderr, "READ TXBF PARA address: Out of scope\n"); } else { for (i = 0; i < 33; i++) { if (txbf_para[i] == 0xff) count_0xff++; /* if ((i % 16) == 0) fprintf(stderr, "\n"); fprintf(stderr, "%02x ", (unsigned char) txbf_para[i]); */ } /* fprintf(stderr, "\n"); fprintf(stderr, "TxBF parameter 0xFF count: %d\n", count_0xff); */ } if (count_0xff == 33) nvram_set("wl1_txbf_en", "0"); else nvram_set("wl1_txbf_en", "1"); #if defined (RTCONFIG_WLMODULE_RT3352_INIC_MII) #define EEPROM_INIC_SIZE (512) #define EEPROM_INIT_ADDR 0x48000 #define EEPROM_INIT_FILE "/etc/Wireless/iNIC/iNIC_e2p.bin" { char eeprom[EEPROM_INIC_SIZE]; if(FRead(eeprom, EEPROM_INIT_ADDR, sizeof(eeprom)) < 0) { fprintf(stderr, "FRead(eeprom, 0x%08x, 0x%x) failed\n", EEPROM_INIT_ADDR, sizeof(eeprom)); } else { FILE *fp; char *filepath = EEPROM_INIT_FILE; system("mkdir -p /etc/Wireless/iNIC/"); if((fp = fopen(filepath, "w")) == NULL) { fprintf(stderr, "fopen(%s) failed!!\n", filepath); } else { if(fwrite(eeprom, sizeof(eeprom), 1, fp) < 1) { perror("fwrite(eeprom)"); } fclose(fp); } } } #endif #ifdef RA_SINGLE_SKU #if defined(RTAC52U) { char *reg_spec; reg_spec = nvram_safe_get("reg_spec"); create_SingleSKU("/etc/Wireless/RT2860", "", reg_spec); create_SingleSKU("/etc/Wireless/iNIC", "_5G", reg_spec); } #endif /* RTAC52U */ #endif /* RA_SINGLE_SKU */ { #ifdef RTCONFIG_ODMPID char modelname[16]; FRead(modelname, OFFSET_ODMPID, sizeof(modelname)); modelname[sizeof(modelname)-1] = '\0'; if(modelname[0] != 0 && (unsigned char)(modelname[0]) != 0xff && is_valid_hostname(modelname) && strcmp(modelname, "ASUS")) { nvram_set("odmpid", modelname); } else #endif nvram_unset("odmpid"); } nvram_set("firmver", rt_version); nvram_set("productid", rt_buildname); }
int asus_ate_command(const char *command, const char *value, const char *value2) { _dprintf("===[ATE %s %s]===\n", command, value); #ifdef RTCONFIG_QTN if(!nvram_match("qtn_ready", "1")){ _dprintf("ATE Error: wireless 5G not ready\n"); return 0; } #endif /*** ATE Set function ***/ if(!strcmp(command, "Set_StartATEMode")) { nvram_set("asus_mfg", "1"); if(nvram_match("asus_mfg", "1")) { puts("1"); #ifdef RTCONFIG_FANCTRL stop_phy_tempsense(); #endif stop_wpsaide(); stop_wps(); #ifdef RTCONFIG_BCMWL6 stop_igmp_proxy(); #ifdef RTCONFIG_HSPOT stop_hspotap(); #endif stop_acsd(); #ifdef BCM_BSD stop_bsd(); #endif #ifdef BCM_SSD stop_ssd(); #endif #endif stop_upnp(); stop_lltd(); stop_rstats(); stop_wanduck(); stop_logger(); stop_wanduck(); stop_dnsmasq(0); stop_ots(); stop_networkmap(); #ifdef RTCONFIG_USB stop_usbled(); #ifdef RTCONFIG_USB_PRINTER stop_lpd(); stop_u2ec(); #endif #endif platform_start_ate_mode(); } else puts("ATE_ERROR"); return 0; } else if (!strcmp(command, "Set_AllLedOn")) { return setAllLedOn(); } else if (!strcmp(command, "Set_AllLedOn2")) { return setAllLedOn2(); } else if (!strcmp(command, "Set_AllLedOff")) { return setAllLedOff(); } else if (!strcmp(command, "Set_AllLedOn_Half")) { puts("ATE_ERROR"); //Need to implement for EA-N66U return EINVAL; } #ifdef RTCONFIG_BCMARM else if (!strcmp(command, "Set_AteModeLedOn")) { return setATEModeLedOn(); } #endif else if (!strcmp(command, "Set_MacAddr_2G")) { if( !setMAC_2G(value) ) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } #if defined(RTCONFIG_HAS_5G) else if (!strcmp(command, "Set_MacAddr_5G")) { #ifdef RTCONFIG_QTN if( !setMAC_5G_qtn(value)) #else if( !setMAC_5G(value)) #endif { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } #ifdef RTAC3200 else if (!strcmp(command, "Set_MacAddr_5G_2")) { if( !setMAC_5G_2(value)) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } #endif #endif /* RTCONFIG_HAS_5G */ #if defined(RTN14U) else if (!strcmp(command, "eeprom")) { if ( !eeprom_upgrade(value, 1)) return EINVAL; return 0; } else if (!strcmp(command, "eeover")) { if ( !eeprom_upgrade(value, 0)) return EINVAL; return 0; } #endif #if defined(RTCONFIG_NEW_REGULATION_DOMAIN) else if (!strcmp(command, "Set_RegSpec")) { if (setRegSpec(value) < 0) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } getRegSpec(); return 0; } else if (!strcmp(command, "Set_RegulationDomain_2G")) { if (setRegDomain_2G(value) == -1) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } getRegDomain_2G(); return 0; } #if defined(RTCONFIG_HAS_5G) else if (!strcmp(command, "Set_RegulationDomain_5G")) { if (setRegDomain_5G(value) == -1) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } getRegDomain_5G(); return 0; } #endif /* RTCONFIG_HAS_5G */ #else /* ! RTCONFIG_NEW_REGULATION_DOMAIN */ else if (!strcmp(command, "Set_RegulationDomain_2G")) { if ( !setCountryCode_2G(value)) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } #ifdef RTCONFIG_QCA if ((value2==NULL) || strcmp(value2,"noctl")) setCTL(value); #endif return 0; } #endif /* RTCONFIG_NEW_REGULATION_DOMAIN */ #ifdef CONFIG_BCMWL5 else if (!strcmp(command, "Set_RegulationDomain_5G")) { #ifdef RTCONFIG_QTN if ( !setCountryCode_5G_qtn(value)) #else if ( !setCountryCode_5G(value)) #endif { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } else if (!strcmp(command, "Set_Regrev_2G")) { if( !setRegrev_2G(value) ) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } else if (!strcmp(command, "Set_Regrev_5G")) { #ifdef RTCONFIG_QTN if( !setRegrev_5G_qtn(value)) #else if( !setRegrev_5G(value)) #endif { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } else if (!strcmp(command, "Set_Commit")) { setCommit(); return 0; } #endif #if defined(RTN14U) else if (!strcmp(command, "pkt_flood")) { if (nvram_invmatch("asus_mfg", "0")) { #if 0 // TBD struct sockaddr_ll dev,dev2; int fd,fd2,do_flag=3; unsigned char buffer[1514]; fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); dev.sll_family = AF_PACKET; dev.sll_protocol = htons(ETH_P_ALL); dev.sll_ifindex = 4; // LAN bind( fd, (struct sockaddr *) &dev, sizeof(dev)); fd2 = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); dev2.sll_family = AF_PACKET; dev2.sll_protocol = htons(ETH_P_ALL); dev2.sll_ifindex = 5; // WAN bind( fd2, (struct sockaddr *) &dev2, sizeof(dev2)); if (value) { if(strcmp(value,"WAN")==0) do_flag = 2; else if(strcmp(value,"LAN")==0) do_flag = 1; } memset(buffer,0xff,6); FRead(buffer+6, OFFSET_MAC_ADDR_2G, 6); memset(buffer+12,0x55,1502); while(1) { if (do_flag & 1) send( fd, buffer, 1514, 0); if (do_flag & 2) send( fd2, buffer, 1514, 0); } #endif } return 0; } #endif else if (!strcmp(command, "Set_SerialNumber")) { if(!setSN(value)) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } #ifdef RTCONFIG_ODMPID else if (!strcmp(command, "Set_ModelName")) { if(!setMN(value)) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } #endif else if (!strcmp(command, "Set_PINCode")) { if (!setPIN(value)) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } else if (!strcmp(command, "Set_40M_Channel_2G")) { if(!set40M_Channel_2G((char*)value)) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } #if defined(RTCONFIG_HAS_5G) else if (!strcmp(command, "Set_40M_Channel_5G")) { if(!set40M_Channel_5G((char*)value)) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } #endif /* RTCONFIG_HAS_5G */ else if (!strcmp(command, "Set_RestoreDefault")) { nvram_set("restore_defaults", "1"); ResetDefault(); nvram_set(ASUS_STOP_COMMIT, "1"); return 0; } else if (!strcmp(command, "Set_Eject")) { if( !Ej_device(value)) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } #ifdef RTCONFIG_FANCTRL else if (!strcmp(command, "Set_FanOn")) { setFanOn(); return 0; } else if (!strcmp(command, "Set_FanOff")) { setFanOff(); return 0; } #endif #ifdef CONFIG_BCMWL5 else if (!strcmp(command, "Set_WaitTime")) { if( !setWaitTime(value) ) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } else if (!strcmp(command, "Set_WiFi_2G")) { if( !setWiFi2G(value) ) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } #if defined(RTCONFIG_HAS_5G) else if (!strcmp(command, "Set_WiFi_5G")) { if( !setWiFi5G(value) ) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } #endif /* RTCONFIG_HAS_5G */ #endif #ifdef RTCONFIG_RALINK else if (!strcmp(command, "Set_DevFlags")) { if( Set_Device_Flags(value) < 0 ) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } return 0; } else if (!strcmp(command, "Set_WanToLan")) { set_wantolan(); modprobe_r("hw_nat"); modprobe("hw_nat"); system("killall -9 wanduck"); system("killall -9 udhcpc"); return 0; } #if defined(RTAC1200HP) || defined(RTN56UB1) else if (!strcmp(command, "Set_FixChannel")) { FWrite("1", OFFSET_FIX_CHANNEL, 1); puts("1"); return 0; } else if (!strcmp(command, "Set_FreeChannel")) { FWrite("0", OFFSET_FIX_CHANNEL, 1); nvram_set("wl0_channel","0"); nvram_set("wl1_channel","0"); nvram_set("lan_stp","1"); nvram_commit(); puts("1"); return 0; } #endif #endif else if (!strcmp(command, "Set_XSetting")) { if(value == NULL || strcmp(value, "1")) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } else { nvram_set("x_Setting", "1"); puts(nvram_get("x_Setting")); } return 0; } /*** ATE Get functions ***/ else if (!strcmp(command, "Get_FWVersion")) { char fwver[12]; sprintf(fwver, "%s.%s", nvram_safe_get("firmver"), nvram_safe_get("buildno")); puts(fwver); return 0; } else if (!strcmp(command, "Get_BootLoaderVersion")) { getBootVer(); return 0; } else if (!strcmp(command, "Get_ResetButtonStatus")) { puts(nvram_safe_get("btn_rst")); return 0; } else if (!strcmp(command, "Get_WpsButtonStatus")) { puts(nvram_safe_get("btn_ez")); return 0; } #ifdef RT4GAC55U else if (!strcmp(command, "Get_LteButtonStatus")) { puts(nvram_safe_get("btn_lte")); return 0; } #endif #ifdef RTCONFIG_WIFI_TOG_BTN else if (!strcmp(command, "Get_WirelessButtonStatus")) { puts(nvram_safe_get("btn_wifi_toggle")); return 0; } #endif else if (!strcmp(command, "Get_SWMode")) { puts(nvram_safe_get("sw_mode")); return 0; } else if (!strcmp(command, "Get_MacAddr_2G")) { getMAC_2G(); return 0; } #if defined(RTCONFIG_HAS_5G) else if (!strcmp(command, "Get_MacAddr_5G")) { #ifdef RTCONFIG_QTN getMAC_5G_qtn(); #else getMAC_5G(); #endif return 0; } #ifdef RTAC3200 else if (!strcmp(command, "Get_MacAddr_5G_2")) { getMAC_5G_2(); return 0; } #endif #endif /* RTCONFIG_HAS_5G */ else if (!strcmp(command, "Get_Usb2p0_Port1_Infor")) { Get_USB_Port_Info("1"); return 0; } else if (!strcmp(command, "Get_Usb2p0_Port1_Folder")) { Get_USB_Port_Folder("1"); return 0; } else if (!strcmp(command, "Get_Usb2p0_Port2_Infor")) { Get_USB_Port_Info("2"); return 0; } else if (!strcmp(command, "Get_Usb2p0_Port2_Folder")) { Get_USB_Port_Folder("2"); return 0; } else if (!strcmp(command, "Get_SD_Infor")) { Get_SD_Card_Info(); return 0; } else if (!strcmp(command, "Get_SD_Folder")) { Get_SD_Card_Folder(); return 0; } #if defined(RTCONFIG_NEW_REGULATION_DOMAIN) else if (!strcmp(command, "Get_RegSpec")) { getRegSpec(); return 0; } else if (!strcmp(command, "Get_RegulationDomain_2G")) { getRegDomain_2G(); return 0; } #if defined(RTCONFIG_HAS_5G) else if (!strcmp(command, "Get_RegulationDomain_5G")) { getRegDomain_5G(); return 0; } #endif /* RTCONFIG_HAS_5G */ #else /* ! RTCONFIG_NEW_REGULATION_DOMAIN */ else if (!strcmp(command, "Get_RegulationDomain_2G")) { getCountryCode_2G(); return 0; } #endif /* ! RTCONFIG_NEW_REGULATION_DOMAIN */ #ifdef CONFIG_BCMWL5 else if (!strcmp(command, "Get_RegulationDomain_5G")) { #ifdef RTCONFIG_QTN getCountryCode_5G_qtn(); #else getCountryCode_5G(); #endif return 0; } else if (!strcmp(command, "Get_Regrev_2G")) { getRegrev_2G(); return 0; } #if defined(RTCONFIG_HAS_5G) else if (!strcmp(command, "Get_Regrev_5G")) { #ifdef RTCONFIG_QTN getRegrev_5G_qtn(); #else getRegrev_5G(); #endif return 0; } #endif /* RTCONFIG_HAS_5G */ #endif else if (!strcmp(command, "Get_SerialNumber")) { getSN(); return 0; } #ifdef RTCONFIG_ODMPID else if (!strcmp(command, "Get_ModelName")) { getMN(); return 0; } #endif else if (!strcmp(command, "Get_PINCode")) { getPIN(); return 0; } else if (!strcmp(command, "Get_WanLanStatus")) { if( !GetPhyStatus()) puts("ATE_ERROR"); return 0; } else if (!strcmp(command, "Get_FwReadyStatus")) { puts(nvram_safe_get("success_start_service")); return 0; } else if (!strcmp(command, "Get_Build_Info")) { puts(nvram_safe_get("buildinfo")); return 0; } #ifdef RTCONFIG_RALINK else if (!strcmp(command, "Get_RSSI_2G")) { getrssi(0); return 0; } #if defined(RTCONFIG_HAS_5G) else if (!strcmp(command, "Get_RSSI_5G")) { getrssi(1); return 0; } #endif /* RTCONFIG_HAS_5G */ #endif else if (!strcmp(command, "Get_ChannelList_2G")) { if(!Get_ChannelList_2G()) puts("ATE_ERROR"); return 0; } #if defined(RTCONFIG_HAS_5G) else if (!strcmp(command, "Get_ChannelList_5G")) { #ifdef RTCONFIG_QTN if (!Get_ChannelList_5G_qtn()) #else if (!Get_ChannelList_5G()) #endif puts("ATE_ERROR"); return 0; } #ifdef RTAC3200 else if (!strcmp(command, "Get_ChannelList_5G_2")) { if (!Get_ChannelList_5G_2()) puts("ATE_ERROR"); return 0; } #endif #endif /* RTCONFIG_HAS_5G */ #if defined(RTCONFIG_USB_XHCI) else if (!strcmp(command, "Get_Usb3p0_Port1_Infor")) { if (!Get_USB3_Port_Info("1")) puts("ATE_ERROR"); return 0; } else if (!strcmp(command, "Get_Usb3p0_Port2_Infor")) { if (!Get_USB3_Port_Info("2")) puts("ATE_ERROR"); return 0; } else if (!strcmp(command, "Get_Usb3p0_Port3_Infor")) { puts("ATE_ERROR"); //Need to implement return 0; } else if (!strcmp(command, "Get_Usb3p0_Port1_Folder")) { if (!Get_USB3_Port_Folder("1")) puts("ATE_ERROR"); return 0; } else if (!strcmp(command, "Get_Usb3p0_Port2_Folder")) { if (!Get_USB3_Port_Folder("2")) puts("ATE_ERROR"); return 0; } else if (!strcmp(command, "Get_Usb3p0_Port3_Folder")) { puts("ATE_ERROR"); //Need to implement return EINVAL; } else if (!strcmp(command, "Get_Usb3p0_Port1_DataRate")) { if (!Get_USB3_Port_DataRate("1")) puts("ATE_ERROR"); return 0; } else if (!strcmp(command, "Get_Usb3p0_Port2_DataRate")) { if (!Get_USB3_Port_DataRate("2")) puts("ATE_ERROR"); return 0; } else if (!strcmp(command, "Get_Usb3p0_Port3_DataRate")) { puts("ATE_ERROR"); //Need to implement return EINVAL; } #endif /* RTCONFIG_USB_XHCI */ else if (!strcmp(command, "Get_fail_ret")) { Get_fail_ret(); return 0; } else if (!strcmp(command, "Get_fail_reboot_log")) { Get_fail_reboot_log(); return 0; } else if (!strcmp(command, "Get_fail_dev_log")) { Get_fail_dev_log(); return 0; } #ifdef RTCONFIG_RALINK #if !defined(RTN14U) && !defined(RTAC52U) && !defined(RTAC51U) && !defined(RTN11P) && !defined(RTN54U) && !defined(RTAC1200HP) && !defined(RTN56UB1) && !defined(RTAC54U) else if (!strcmp(command, "Ra_FWRITE")) { return FWRITE(value, value2); } else if (!strcmp(command, "Ra_Asuscfe_2G")) { return asuscfe(value, WIF_2G); } #if defined(RTCONFIG_HAS_5G) else if (!strcmp(command, "Ra_Asuscfe_5G")) { return asuscfe(value, WIF_5G); } #endif /* RTCONFIG_HAS_5G */ else if (!strcmp(command, "Set_SwitchPort_LEDs")) { if(Set_SwitchPort_LEDs(value, value2) < 0) { puts("ATE_ERROR"); return EINVAL; } return 0; } #endif #endif #ifdef RTCONFIG_WIRELESS_SWITCH else if (!strcmp(command, "Get_WifiSwStatus")) { puts(nvram_safe_get("btn_wifi_sw")); return 0; } #endif #ifdef RTCONFIG_WIFI_TOG_BTN else if (!strcmp(command, "Get_WifiButtonStatus")) { puts(nvram_safe_get("btn_wifi_toggle")); return 0; } #endif #ifdef RTCONFIG_TURBO else if (!strcmp(command, "Get_Turbo")) { puts(nvram_safe_get("btn_turbo")); return 0; } #endif #ifdef RTCONFIG_LED_BTN else if (!strcmp(command, "Get_LedButtonStatus")) { puts(nvram_safe_get("btn_led")); return 0; } #endif #ifdef RTCONFIG_QTN else if (!strcmp(command, "Enable_Qtn_TelnetSrv")) { enable_qtn_telnetsrv(1); puts("1"); return 0; } else if (!strcmp(command, "Disable_Qtn_TelnetSrv")) { enable_qtn_telnetsrv(0); puts("1"); return 0; } else if (!strcmp(command, "Get_Qtn_TelnetSrv_Status")) { getstatus_qtn_telnetsrv(); return 0; } else if (!strcmp(command, "Del_Qtn_Cal_Files")) { del_qtn_cal_files(); puts("1"); return 0; } #endif #ifdef CONFIG_BCMWL5 else if (!strcmp(command, "Get_WiFiStatus_2G")) { if(!getWiFiStatus("2G")) puts("ATE_ERROR_INCORRECT_PARAMETER"); return 0; } else if (!strcmp(command, "Get_WiFiStatus_5G")) { if(!getWiFiStatus("5G")) puts("ATE_ERROR_INCORRECT_PARAMETER"); return 0; } #else else if (!strcmp(command, "Get_WiFiStatus_2G")) { if(get_radio(0, 0)) puts("1"); else puts("0"); return 0; } #if defined(RTCONFIG_HAS_5G) else if (!strcmp(command, "Get_WiFiStatus_5G")) { if(get_radio(1, 0)) puts("1"); else puts("0"); return 0; } #endif /* RTCONFIG_HAS_5G */ #endif else if (!strcmp(command, "Set_WiFiStatus_2G")) { int act = !strcmp(value, "on"); if(!strcmp(value, "on") && !strcmp(value, "off")) puts("ATE_UNSUPPORT"); set_radio(act, 0, 0); if(get_radio(0, 0)){ if(act) puts("success=on"); else puts("ATE_ERROR_INCORRECT_PARAMETER"); } else{ if(!act) puts("success=off"); else puts("ATE_ERROR_INCORRECT_PARAMETER"); } return 0; } #if defined(RTCONFIG_HAS_5G) else if (!strcmp(command, "Set_WiFiStatus_5G")) { int act = !strcmp(value, "on"); if(!strcmp(value, "on") && !strcmp(value, "off")) puts("ATE_UNSUPPORT"); set_radio(act, 1, 0); if(get_radio(1, 0)){ if(act) puts("success=on"); else puts("ATE_ERROR_INCORRECT_PARAMETER"); } else{ if(!act) puts("success=off"); else puts("ATE_ERROR_INCORRECT_PARAMETER"); } return 0; } #endif /* RTCONFIG_HAS_5G */ else if (!strcmp(command, "Get_ATEVersion")) { puts(nvram_safe_get("Ate_version")); return 0; } else if (!strcmp(command, "Get_XSetting")) { puts(nvram_safe_get("x_Setting")); return 0; } else if (!strcmp(command, "Get_WaitTime")) { puts(nvram_safe_get("wait_time")); return 0; } else if (!strcmp(command, "Get_ExtendNo")) { puts(nvram_safe_get("extendno")); return 0; } #ifdef RTCONFIG_RALINK else if (!strcmp(command, "Get_DevFlags")) { if( Get_Device_Flags() < 0) { puts("ATE_ERROR"); return EINVAL; } return 0; } #endif #ifdef RTCONFIG_QCA /* else if (!strcmp(command, "Set_ART2")) { // temp solution system("killall rstats"); system("killall udhcpc"); system("killall wanduck"); system("killall networkmap"); system("killall -9 hostapd"); system("ifconfig ath0 down"); system("ifconfig ath1 down"); system("killall -9 hostapd"); system("brctl delif br0 ath0"); system("brctl delif br0 ath1"); system("wlanconfig ath0 destroy"); system("wlanconfig ath1 destroy"); system("ifconfig wifi0 down"); system("ifconfig wifi1 down"); modprobe_r("umac"); modprobe_r("ath_dfs"); modprobe_r("ath_dev"); modprobe_r("ath_rate_atheros"); modprobe_r("ath_spectral"); modprobe_r("ath_hal"); modprobe_r("adf"); modprobe_r("asf"); modprobe("art"); system("nart.out -port 2390 -console &"); system("nart.out -port 2391 -console &"); return 0; } */ else if (!strncmp(command, "Get_EEPROM_", 11)) { unsigned char buffer[2560]; unsigned short len; int lret; char *pt; len=sizeof(buffer); pt = (char*) command + 11; if (!strcmp(pt, "2G")) lret=getEEPROM(&buffer[0], &len, pt); else if (!strcmp(pt, "5G")) lret=getEEPROM(&buffer[0], &len, pt); else if (!strcmp(pt, "CAL_2G")) lret=getEEPROM(&buffer[0], &len, pt); else if (!strcmp(pt, "CAL_5G")) lret=getEEPROM(&buffer[0], &len, pt); else { puts("ATE_UNSUPPORT"); return EINVAL; } if ( !lret ) hexdump(&buffer[0], len); return 0; } else if (!strcmp(command, "Get_CalCompare")) { unsigned char buffer[2560], buffer2[2560]; unsigned short len, len2; int lret=0, cret=0; len=sizeof(buffer); len2=sizeof(buffer2); lret+=getEEPROM(&buffer[0], &len, "2G"); lret+=getEEPROM(&buffer2[0], &len2, "CAL_2G"); if (lret) return EINVAL; if ((len!=len2) || (memcmp(&buffer[0],&buffer2[0],len)!=0)) { puts("2G EEPROM different!"); cret++; } len=sizeof(buffer); len2=sizeof(buffer2); lret+=getEEPROM(&buffer[0], &len, "5G"); lret+=getEEPROM(&buffer2[0], &len2, "CAL_5G"); if (lret) return EINVAL; if ((len!=len2) || (memcmp(&buffer[0],&buffer2[0],len)!=0)) { puts("5G EEPROM different!"); cret++; } if (!cret) puts("1"); else puts("0"); return 0; } #ifdef RTCONFIG_ATEUSB3_FORCE else if (!strcmp(command, "Set_ForceUSB3")) { if (setForceU3(value) < 0) { puts("ATE_ERROR_INCORRECT_PARAMETER"); return EINVAL; } getForceU3(); return 0; } else if (!strcmp(command, "Get_ForceUSB3")) { getForceU3(); return 0; } #endif #endif /* RTCONFIG_QCA */ #ifdef RT4GAC55U else if(!strcmp(command, "Get_GobiSimCard")) { char line[128]; if (!Gobi_SimCardReady(Gobi_SimCard(line, sizeof(line)))) { puts("FAIL"); return EINVAL; } puts("PASS"); } else if(!strcmp(command, "Get_GobiIMEI")) { char line[128]; const char *IMEI = Gobi_IMEI(line, sizeof(line)); if (IMEI == NULL) { puts("FAIL"); return EINVAL; } puts(IMEI); } else if(!strcmp(command, "Get_GobiConnectISP")) { char line[128]; const char *ISP = Gobi_ConnectISP(line, sizeof(line)); if (ISP == NULL) { puts("FAIL"); return EINVAL; } puts(ISP); } else if(!strcmp(command, "Get_GobiConnectStatus")) { const char *status = Gobi_ConnectStatus_Str(Gobi_ConnectStatus_Int()); if (status == NULL) { puts("FAIL"); return EINVAL; } puts(status); } else if(!strcmp(command, "Get_GobiSignal_Percent")) { int percent = Gobi_SignalQuality_Percent(Gobi_SignalQuality_Int()); if (percent < 0) { puts("FAIL"); return EINVAL; } printf("%d\n", percent); } else if(!strcmp(command, "Get_GobiSignal_dbm")) { int dbm = Gobi_SignalLevel_Int(); if (dbm >= 0) { puts("FAIL"); return EINVAL; } printf("%d dBm\n", dbm); } else if(!strcmp(command, "Get_GobiVersion")) { char line[128]; if (Gobi_Version(line, sizeof(line)) == NULL) { puts("FAIL"); return EINVAL; } printf("%s\n", line); } #endif /* RT4GAC55U */ else { puts("ATE_UNSUPPORT"); return EINVAL; } return 0; }
/** * Writes the grid to a BT (Binary Terrain) file. * The current BT format version (1.3) is written. * * \param szFileName The file name to write to. * \param progress_callback If supplied, this function will be called back * with a value of 0 to 100 as the operation progresses. * \param bGZip If true, the data will be compressed with gzip. * If true, you should Use a filename ending with ".gz". */ bool vtElevationGrid::SaveToBT(const char *szFileName, bool progress_callback(int), bool bGZip) { int w = m_iColumns; int h = m_iRows; short zone = (short) m_proj.GetUTMZone(); short datum = (short) m_proj.GetDatum(); short isfloat = (short) IsFloatMode(); short external = 1; // always true: we always write an external .prj file LinearUnits units = m_proj.GetUnits(); int hunits = (int) units; // Latest header, version 1.2 short datasize = m_bFloatMode ? 4 : 2; DataType datatype = m_bFloatMode ? DT_FLOAT : DT_SHORT; if (bGZip == false) { // Use conventional IO FILE *fp = vtFileOpen(szFileName, "wb"); if (!fp) return false; fwrite("binterr1.3", 10, 1, fp); FWrite(&w, DT_INT, 1, fp, BO_LITTLE_ENDIAN); FWrite(&h, DT_INT, 1, fp, BO_LITTLE_ENDIAN); FWrite(&datasize, DT_SHORT, 1, fp, BO_LITTLE_ENDIAN); FWrite(&isfloat, DT_SHORT, 1, fp, BO_LITTLE_ENDIAN); FWrite(&hunits, DT_SHORT, 1, fp, BO_LITTLE_ENDIAN); // Horizontal Units (0, 1, 2, 3) FWrite(&zone, DT_SHORT, 1, fp, BO_LITTLE_ENDIAN); // UTM zone FWrite(&datum, DT_SHORT, 1, fp, BO_LITTLE_ENDIAN); // Datum // coordinate extents FWrite(&m_EarthExtents.left, DT_DOUBLE, 1, fp, BO_LITTLE_ENDIAN); FWrite(&m_EarthExtents.right, DT_DOUBLE, 1, fp, BO_LITTLE_ENDIAN); FWrite(&m_EarthExtents.bottom, DT_DOUBLE, 1, fp, BO_LITTLE_ENDIAN); FWrite(&m_EarthExtents.top, DT_DOUBLE, 1, fp, BO_LITTLE_ENDIAN); FWrite(&external, DT_SHORT, 1, fp, BO_LITTLE_ENDIAN); // External projection specification FWrite(&m_fVMeters, DT_FLOAT, 1, fp, BO_LITTLE_ENDIAN); // Vertical scale factor (meters/units) // now write the data: always starts at offset 256 fseek(fp, 256, SEEK_SET); #if 0 // slow way, one heixel at a time for (int i = 0; i < w; i++) { if (progress_callback != NULL) progress_callback(i * 100 / w); for (j = 0; j < h; j++) { if (m_bFloatMode) { fvalue = GetFValue(i, j); FWrite(&fvalue, datatype, 1, fp, BO_LITTLE_ENDIAN); } else { svalue = GetValue(i, j); FWrite(&svalue, datatype, 1, fp, BO_LITTLE_ENDIAN); } } } #else // fast way, with the assumption that the data is stored column-first in memory if (m_bFloatMode) { for (int i = 0; i < w; i++) { if (progress_callback != NULL) { if (progress_callback(i * 100 / w)) { fclose(fp); return false; } } FWrite(m_pFData + (i * m_iRows), DT_FLOAT, m_iRows, fp, BO_LITTLE_ENDIAN); } } else { for (int i = 0; i < w; i++) { if (progress_callback != NULL) { if (progress_callback(i * 100 / w)) { fclose(fp); return false; } } FWrite(m_pData + (i * m_iRows), DT_SHORT, m_iRows, fp, BO_LITTLE_ENDIAN); } } #endif fclose(fp); } else { // Use GZip IO gzFile fp = vtGZOpen(szFileName, "wb"); if (!fp) return false; gzwrite(fp, (void *)"binterr1.3", 10); GZFWrite(&w, DT_INT, 1, fp, BO_LITTLE_ENDIAN); GZFWrite(&h, DT_INT, 1, fp, BO_LITTLE_ENDIAN); GZFWrite(&datasize, DT_SHORT, 1, fp, BO_LITTLE_ENDIAN); GZFWrite(&isfloat, DT_SHORT, 1, fp, BO_LITTLE_ENDIAN); GZFWrite(&hunits, DT_SHORT, 1, fp, BO_LITTLE_ENDIAN); // Horizontal Units (0, 1, 2, 3) GZFWrite(&zone, DT_SHORT, 1, fp, BO_LITTLE_ENDIAN); // UTM zone GZFWrite(&datum, DT_SHORT, 1, fp, BO_LITTLE_ENDIAN); // Datum // coordinate extents GZFWrite(&m_EarthExtents.left, DT_DOUBLE, 1, fp, BO_LITTLE_ENDIAN); GZFWrite(&m_EarthExtents.right, DT_DOUBLE, 1, fp, BO_LITTLE_ENDIAN); GZFWrite(&m_EarthExtents.bottom, DT_DOUBLE, 1, fp, BO_LITTLE_ENDIAN); GZFWrite(&m_EarthExtents.top, DT_DOUBLE, 1, fp, BO_LITTLE_ENDIAN); GZFWrite(&external, DT_SHORT, 1, fp, BO_LITTLE_ENDIAN); // External projection specification GZFWrite(&m_fVMeters, DT_FLOAT, 1, fp, BO_LITTLE_ENDIAN); // Vertical scale factor (meters/units) // now write the data: always starts at offset 256 gzseek(fp, 256, SEEK_SET); // fast way, with the assumption that the data is stored column-first in memory if (m_bFloatMode) { for (int i = 0; i < w; i++) { if (progress_callback != NULL) { if (progress_callback(i * 100 / w)) { gzclose(fp); return false; } } GZFWrite(m_pFData + (i * m_iRows), DT_FLOAT, m_iRows, fp, BO_LITTLE_ENDIAN); } } else { for (int i = 0; i < w; i++) { if (progress_callback != NULL) { if (progress_callback(i * 100 / w)) { gzclose(fp); return false; } } GZFWrite(m_pData + (i * m_iRows), DT_SHORT, m_iRows, fp, BO_LITTLE_ENDIAN); } } gzclose(fp); } if (external) { // Write external projection file (.prj) char prj_name[256]; strcpy(prj_name, szFileName); int len = strlen(prj_name); if (bGZip) strcpy(prj_name + len - 6, ".prj"); // overwrite the .bt.gz else strcpy(prj_name + len - 3, ".prj"); // overwrite the .bt m_proj.WriteProjFile(prj_name); } return true; }
void getsyspara(void) { unsigned char buffer[32]; int i; char macaddr[]="00:11:22:33:44:55"; char macaddr2[]="00:11:22:33:44:56"; char macaddr3[]="001122334457"; char macaddr4[]="001122334458"; char ea[ETHER_ADDR_LEN]; char country_code[3]; char pin[9]; char productid[13]; char fwver[8], fwver_sub[16]; char blver[20]; unsigned char txbf_para[33]; /* /dev/mtd/2, RF parameters, starts from 0x40000 */ memset(buffer, 0, sizeof(buffer)); memset(country_code, 0, sizeof(country_code)); memset(pin, 0, sizeof(pin)); memset(productid, 0, sizeof(productid)); memset(fwver, 0, sizeof(fwver)); memset(fwver_sub, 0, sizeof(fwver_sub)); memset(txbf_para, 0, sizeof(txbf_para)); if (FRead(buffer, OFFSET_MAC_ADDR, 6)<0) { dbg("READ MAC address: Out of scope\n"); } else { if (buffer[0]!=0xff) { ether_etoa(buffer, macaddr); ether_etoa2(buffer, macaddr3); } } if (FRead(buffer, OFFSET_MAC_ADDR_2G, 6)<0) { dbg("READ MAC address 2G: Out of scope\n"); } else { if (buffer[0]!=0xff) { ether_etoa(buffer, macaddr2); ether_etoa2(buffer, macaddr4); } } nvram_set("il0macaddr", macaddr); nvram_set("il1macaddr", macaddr2); nvram_set("et0macaddr", macaddr); nvram_set("br0hexaddr", macaddr3); nvram_set("wanhexaddr", macaddr4); if (FRead(buffer, OFFSET_MAC_GMAC0, 6)<0) { dbg("READ MAC address GMAC0: Out of scope\n"); } else { if (buffer[0]==0xff) { if (ether_atoe(macaddr, ea)) FWrite(ea, OFFSET_MAC_GMAC0, 6); } } if (FRead(buffer, OFFSET_MAC_GMAC2, 6)<0) { dbg("READ MAC address GMAC2: Out of scope\n"); } else { if (buffer[0]==0xff) { if (ether_atoe(macaddr2, ea)) FWrite(ea, OFFSET_MAC_GMAC2, 6); } } /* reserved for Ralink. used as ASUS country code. */ if (FRead(country_code, OFFSET_COUNTRY_CODE, 2)<0) { dbg("READ ASUS country code: Out of scope\n"); strcpy(country_code, "GB"); } else { country_code[2] = 0; if ((unsigned char)country_code[0]==0xff) strcpy(country_code, "GB"); } if (strlen(nvram_safe_get("rt_country_code")) == 0) { nvram_set("rt_country_code", country_code); } if (strlen(nvram_safe_get("wl_country_code")) == 0) { nvram_set("wl_country_code", country_code); } if (!strcasecmp(nvram_safe_get("wl_country_code"), "BR")) nvram_set("wl_country_code", "UZ"); /* reserved for Ralink. used as ASUS pin code. */ if (FRead(pin, OFFSET_PIN_CODE, 8)<0) { dbg("READ ASUS pin code: Out of scope\n"); nvram_set("wl_pin_code", ""); } else { if ((unsigned char)pin[0]!=0xff) nvram_set("secret_code", pin); else nvram_set("secret_code", "12345670"); } #if defined(USE_RT3352_MII) #define EEPROM_INIC_SIZE (512) #define EEPROM_INIT_ADDR 0x48000 { char eeprom[EEPROM_INIC_SIZE]; if(FRead(eeprom, EEPROM_INIT_ADDR, sizeof(eeprom)) < 0) { dbg("READ iNIC EEPROM: Out of scope!\n"); } else { FILE *fp; if((fp = fopen("/etc/Wireless/iNIC/iNIC_e2p.bin", "w"))) { fwrite(eeprom, sizeof(eeprom), 1, fp); fclose(fp); } } } #endif /* /dev/mtd/3, firmware, starts from 0x50000 */ if (FRead(buffer, 0x50020, sizeof(buffer))<0) { dbg("READ firmware header: Out of scope\n"); nvram_set("productid", "unknown"); nvram_set("firmver", "unknown"); } else { strncpy(productid, buffer + 4, 12); productid[12] = 0; if(valid_subver(buffer[27])) sprintf(fwver_sub, "%d.%d.%d.%d%c", buffer[0], buffer[1], buffer[2], buffer[3], buffer[27]); else sprintf(fwver_sub, "%d.%d.%d.%d", buffer[0], buffer[1], buffer[2], buffer[3]); #if defined(FWBLDSTR) sprintf(fwver_sub, "%s-%s", fwver_sub, FWBLDSTR); #endif sprintf(fwver, "%d.%d.%d.%d", buffer[0], buffer[1], buffer[2], buffer[3]); nvram_set("productid", trim_r(productid)); nvram_set("firmver", trim_r(fwver)); nvram_set("firmver_sub", trim_r(fwver_sub)); } memset(buffer, 0, sizeof(buffer)); FRead(buffer, OFFSET_BOOT_VER, 4); sprintf(blver, "%s-0%c-0%c-0%c-0%c", trim_r(productid), buffer[0], buffer[1], buffer[2], buffer[3]); nvram_set("blver", trim_r(blver)); int count_0xff = 0; if (FRead(txbf_para, OFFSET_TXBF_PARA, 33) < 0) { dbg("READ TXBF PARA address: Out of scope\n"); } else { for (i = 0; i < 33; i++) { if (txbf_para[i] == 0xff) count_0xff++; } } if (count_0xff == 33) nvram_set("wl_txbf_en", "0"); else nvram_set("wl_txbf_en", "1"); }