📄 sets.c
字号:
/*************************************************************************************** Copyright 2000-2001 ATMEL Corporation. This file is part of atmel wireless lan drivers. Atmel wireless lan drivers is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Atmel wireless lan drivers is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Atmel wireless lan drivers; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA**************************************************************************************/#define CALLER_SETS#include "strdefs.h"#include "vnet.h"#undef CALLER_SETS#define DECL_KEYSTR(i, p, m, y, x) \keystr.inputwin = i;\keystr.parentwin =p;\keystr.get_max =m;\keystr.inp_x =x;\keystr.inp_y =y;extern WINDOW *conf_win;WINDOW *wep_win;int wep_reverse ;int wep_epilogh = 0;int wep_config_choices = sizeof(wep_choices) / sizeof(char *);int Set_ESSID(PDEVICE_CONFIGURATION pAppInfo, char *cname, int fd){ WINDOW *SSID_win; struct iwreq wrq; key_strikes keystr; SSID_win = create_inputwin(6, 60,15, 4); CancelExit(SSID_win, 1, 10); mvwprintw(SSID_win, 2, 1, "Desired Essid :"); DECL_KEYSTR(SSID_win, conf_win, 31, 2, 17) if (KbdPrompt(&keystr) < 0) return 0; pAppInfo->SSIDlength = (strlen(keystr.str_val)); strcpy(pAppInfo->SSID, keystr.str_val); strcpy(wrq.ifr_name, cname); wrq.u.essid.pointer= pAppInfo->SSID; wrq.u.essid.length = pAppInfo->SSIDlength; //+1 ??? if (ioctl(fd, SIOCSIWESSID, &wrq) < 0) { ErrorWin("Setting ESSID failed"); return -EIO; } return 0;}int Set_Channel(PDEVICE_CONFIGURATION pAppInfo, char *cname, int fd){ WINDOW *Channel_win; struct iwreq wrq; key_strikes keystr; int value, hvalid, lvalid; if (pAppInfo->OperatingMode==1) { ErrorWin("Channel cannot change while in InfraStructure Mode!!!"); return -EINVAL; } Channel_win = create_inputwin(6, 60,15, 4); CancelExit(Channel_win, 1, 1); mvwprintw(Channel_win, 2, 1, "Setting Channel. Range 1 - 14. Choice : "); DECL_KEYSTR(Channel_win, conf_win, 2, 2, 41) if (KbdPrompt(&keystr) < 0) return 0; value = keystr.int_val; if(!(pAppInfo->InternationalRoaming)){ switch(pAppInfo->RegDomain) { case 0x10: hvalid = 12; lvalid = 1; break; case 0x20: hvalid = 12; lvalid = 11; break; case 0x30: hvalid = 14; lvalid = 1; break; case 0x31: hvalid = 12; lvalid = 10; break; case 0x32: hvalid = 14; lvalid = 10; break; case 0x40: hvalid = 15; lvalid = 14; break; case 0x41: hvalid = 14; lvalid = 1; break; case 0x50: hvalid = 10; lvalid = 3; break; default: hvalid = 15; lvalid = 1; break; } }else { lvalid = 1; hvalid = 14; } if ((value<lvalid)||(value>hvalid)) { ErrorWin("Invalid value for Channel!!!"); return -EINVAL; } pAppInfo->Channel=value; strcpy(wrq.ifr_name,cname); wrq.u.freq.m = frequency_list[value-1] *(long)1e5; if (ioctl(fd, SIOCSIWFREQ, &wrq) < 0) { ErrorWin("Setting Channel failed!!!"); return -EIO; } return 0;} int Set_InternationalRoaming(PDEVICE_CONFIGURATION pAppInfo, char *cname, int fd){ WINDOW *Roaming_win; struct iwreq wrq; key_strikes keystr; int value; Roaming_win = create_inputwin(6, 60,15, 4); CancelExit(Roaming_win, 1, 30); mvwprintw(Roaming_win, 1,1, "International Roaming State."); mvwprintw(Roaming_win, 2,1, "(0) Disable, (1) Enable."); mvwprintw(Roaming_win,3, 1, "Select State : "); DECL_KEYSTR(Roaming_win, conf_win, 1, 3, 16) if (KbdPrompt(&keystr) < 0) return 0; value = keystr.int_val; if ((value<0)||(value>1)) { ErrorWin("Invalid Value for International Roaming!!!"); return -EINVAL; } pAppInfo->InternationalRoaming=value; strcpy(wrq.ifr_name, cname); wrq.u.data.pointer = (caddr_t)pAppInfo; wrq.u.data.length = sizeof(DEVICE_CONFIGURATION); wrq.u.data.flags = SET_SUPPORT_INFO; if (ioctl(fd, SIOCDEVPRIVATE, &wrq) < 0) { ErrorWin("Setting International Roaming failed!!!"); return -EIO; } return 0;} int Set_Radio(PDEVICE_CONFIGURATION pAppInfo, char *cname, int fd){ WINDOW *Power_win; struct iwreq wrq; key_strikes keystr; int value; Power_win = create_inputwin(6, 60,15, 4); CancelExit(Power_win, 1, 30); mvwprintw(Power_win, 1,1, "Radio State."); mvwprintw(Power_win, 2,1, "(0) Off, (1) On."); mvwprintw(Power_win,3, 1, "Select State : "); DECL_KEYSTR(Power_win, conf_win, 1, 3, 16) if (KbdPrompt(&keystr) < 0) return 0; value = keystr.int_val; if ((value<0)||(value>1)){ ErrorWin("Invalid value for Radio (On/Off)!!!"); return -EINVAL; } pAppInfo->RadioIsOn=value; strcpy(wrq.ifr_name,cname); wrq.u.data.pointer = (caddr_t)pAppInfo; wrq.u.data.length = sizeof(DEVICE_CONFIGURATION); wrq.u.data.flags = SET_SUPPORT_INFO; if (ioctl(fd, SIOCDEVPRIVATE, &wrq) < 0) { ErrorWin("Setting Radio failed!!!"); return -EIO; } return 0;} int Set_PowerMgmtMode(PDEVICE_CONFIGURATION pAppInfo, char *cname, int fd){ WINDOW *Mgmt_win; struct iwreq wrq; key_strikes keystr; int value; Mgmt_win = create_inputwin(6, 60,15, 4); CancelExit(Mgmt_win, 1, 30); mvwprintw(Mgmt_win, 1,1, "PowerMgmt Mode State."); mvwprintw(Mgmt_win, 2,1, "(0) Active, (1) Power Save, (2) Smart P. Save."); mvwprintw(Mgmt_win,3, 1, "Select State : "); DECL_KEYSTR(Mgmt_win, conf_win, 1, 3, 16) if (KbdPrompt(&keystr) < 0) return 0; value = keystr.int_val; if ((value<0)||(value>2)){ ErrorWin("Invalid Value for Power Management Mode!!!"); return -EINVAL; } pAppInfo->PowerMgmtMode=value; strcpy(wrq.ifr_name,cname); wrq.u.data.pointer = (caddr_t)pAppInfo; wrq.u.data.length = sizeof(DEVICE_CONFIGURATION); wrq.u.data.flags = SET_SUPPORT_INFO; if (ioctl(fd, SIOCDEVPRIVATE, &wrq) < 0) { ErrorWin("Setting Power Mgmt failed!!!"); return -EIO; } return 0;} int Set_TxRate(PDEVICE_CONFIGURATION pAppInfo, char *cname, int fd){ WINDOW *Rate_win; struct iwreq wrq; key_strikes keystr; Rate_win = create_inputwin(6, 60,15, 4); CancelExit(Rate_win, 1, 38); mvwprintw(Rate_win, 1,1, "Setting Transmit Rate. 0 for 1Mbps,"); mvwprintw(Rate_win, 2,1, "1 for 2Mbps, 2 for 5.5Mbps, 3 for 11Mbps, 4 Automatic."); mvwprintw(Rate_win,3, 1, "Select Rate : "); DECL_KEYSTR(Rate_win, conf_win, 1, 3, 15) if (KbdPrompt(&keystr) < 0) return 0; pAppInfo->TxRate=keystr.int_val; strcpy(wrq.ifr_name,cname); switch(keystr.int_val) { case 0: wrq.u.bitrate.value = (long)1e6; break; case 1: wrq.u.bitrate.value = (long)2e6; break; case 2: wrq.u.bitrate.value = (long)55e5; break; case 3: wrq.u.bitrate.value = (long)11e6; break; default: ErrorWin("Invalid Value for TxRate!!!"); return -EINVAL; } // Where is automatic ??? if (ioctl(fd, SIOCSIWRATE, &wrq) < 0) { ErrorWin("Setting Transmit Rate failed!!!"); return -EIO; } return 0;}int Set_OpMode(PDEVICE_CONFIGURATION pAppInfo, char *cname, int fd){ WINDOW *Op_win; struct iwreq wrq; key_strikes keystr; int value; Op_win = create_inputwin(6, 60,15, 4); wattron(Op_win, A_BOLD); CancelExit(Op_win, 1, 30); mvwprintw(Op_win, 1,1, "Setting Operating Mode."); mvwprintw(Op_win, 2,1, "(0) for Ad-Hoc, (1) for InfraStructure."); /*, (3) for AP_MODE."); */ mvwprintw(Op_win,3, 1, "Select Mode : "); DECL_KEYSTR(Op_win, conf_win, 1, 3, 15) if (KbdPrompt(&keystr) < 0) return 0; value = keystr.int_val; if ((value<0)||(value>1)) { ErrorWin("Invalid Value for Operating Mode!!!"); return -EINVAL; } pAppInfo->OperatingMode=value; strcpy(wrq.ifr_name,cname); wrq.u.mode = (value==0 ? IW_MODE_ADHOC : IW_MODE_INFRA); if (ioctl(fd, SIOCSIWMODE, &wrq) < 0) { ErrorWin("Setting Operating Mode failed!!!"); return -EIO; } return 0;}int Set_Preamble(PDEVICE_CONFIGURATION pAppInfo, char *cname, int fd){ WINDOW *Preamble_win; struct iwreq wrq; key_strikes keystr; int value; Preamble_win = create_inputwin(6, 60,15, 4); wattron(Preamble_win, A_BOLD); CancelExit(Preamble_win, 1, 30); mvwprintw(Preamble_win, 1,1, "Setting Preamble Type."); mvwprintw(Preamble_win, 2,1, "(0) for Long, (1) Short."); mvwprintw(Preamble_win,3, 1, "Select Type : "); DECL_KEYSTR(Preamble_win, conf_win, 2, 3, 15) if (KbdPrompt(&keystr) < 0) return 0; value = keystr.int_val; if ((value<0)||(value>1)) { ErrorWin("Invalid Value!!!"); return -EINVAL; } pAppInfo->PreambleType=value; strcpy(wrq.ifr_name,cname); wrq.u.data.pointer = (caddr_t)pAppInfo; if (ioctl(fd, SIOCIWPRIVSPREAM, &wrq) < 0) { ErrorWin("Setting Preamble Type failed!!!"); return -EIO; } return 0;}int Set_FragT(PDEVICE_CONFIGURATION pAppInfo, char *cname, int fd){ WINDOW *Frag_win; struct iwreq wrq; key_strikes keystr; int value; Frag_win = create_inputwin(6, 60,15, 4); CancelExit(Frag_win, 1, 34); mvwprintw(Frag_win, 1,1, "Setting Fragmentation Threshold."); mvwprintw(Frag_win, 2,1, "Valid Values : (256 -2346)"); mvwprintw(Frag_win,3, 1, "Select Type : "); DECL_KEYSTR(Frag_win, conf_win, 4, 3, 15) if (KbdPrompt(&keystr) < 0) return 0; value = keystr.int_val; if ((value<256)||(value>2346)) { ErrorWin("Invalid Value for Fragmentation Threshold!!!"); return -EINVAL; } pAppInfo->FragmentationThreshold=value; strcpy(wrq.ifr_name,cname); wrq.u.frag.value = value; if (ioctl(fd, SIOCSIWFRAG, &wrq) < 0) { ErrorWin("Setting Fragmentation Threshold failed!!!"); return -EIO; } return 0;}int Set_RtsT(PDEVICE_CONFIGURATION pAppInfo, char *cname, int fd){ WINDOW *Rts_win; struct iwreq wrq; key_strikes keystr; int value; Rts_win = create_inputwin(6, 60,15, 4); CancelExit(Rts_win, 1, 30); mvwprintw(Rts_win, 1,1, "Setting Rts/Cts Threshold."); mvwprintw(Rts_win, 2,1, "Valid values : (1 - 2347)."); mvwprintw(Rts_win,3, 1, "Select value : "); DECL_KEYSTR(Rts_win, conf_win, 4, 3, 16) if (KbdPrompt(&keystr) < 0) return 0; value = keystr.int_val; if ((value<255)||(value>2347)) { ErrorWin("Invalid Value!!!"); return -EINVAL; } pAppInfo->RtsCtsThreshold=value; strcpy(wrq.ifr_name,cname); wrq.u.rts.value = value; if (ioctl(fd, SIOCSIWRTS, &wrq) < 0) { ErrorWin("Setting Rts/Cts Threshold failed!!!"); return -EIO; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -