⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sets.c

📁 atmel芯片的Linux驱动程序。很多802.11协议的无限网卡都使用该芯片
💻 C
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************************	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 + -