Main Page | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

conversion.c

Go to the documentation of this file.
00001 /* Linux Prism II Stumbler - Utility Scan for 802_11 networks under Linux
00002  * 
00003  * File : conversion.c
00004  * Project : WifiScanner (c) 2002 Hervé Schauer Consultants
00005  * Usage : This utility is written for use with IEEE 802.11 adapters based
00006  * on Intersil's PRISM II chipset (PCMCIA).
00007  * 
00008  * Base code was from prismstumbler Jan Fernquist <Jan.B.Fernquist@telia.com>
00009  * and wlanctl from www.linux-wlan.com
00010  *
00011  * This program is free software; you can redistribute it and/or
00012  * modify it under the terms of the GNU General Public License
00013  * as published by the Free Software Foundation; either version 2
00014  * of the License, or (at your option) any later version.
00015  * 
00016  * This program is distributed in the hope that it will be useful,
00017  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00018  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00019  * GNU General Public License for more details.
00020  * 
00021  * You should have received a copy of the GNU General Public License
00022  * along with this program; if not, write to the Free Software
00023  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00024  *
00025  * $Id: conversion.c,v 1.12 2004/08/25 13:37:33 poggij Exp $
00026  */
00027 
00028 #include <include.h>
00029 
00030 extern UINT8 TypeOfCard;
00031 
00032 /*
00033  * Function to convert a type to an another
00034  */
00035 
00036 const char *RateToString(int rate)
00037 {
00038   debug(3, "(Rate = 0x%02X, Rate & 0x7F = 0x%02X, Rate = %d)\n", rate,
00039         rate & 0x7F, rate);
00040   switch (rate & 0x7F) {        // Bit 8 is a flag for BASIC rate
00041   case 0:
00042     return "0Mb/s";
00043     break;
00044   case 2:
00045   case 10:
00046     return "1Mb/s";
00047     break;
00048   case 4:
00049   case 20:
00050     return "2Mb/s";
00051     break;
00052   case 11:
00053   case 55:
00054     return "5.5Mb/s";
00055     break;
00056   case 12:
00057     return "6Mb/s";
00058     break;
00059   case 18:
00060     return "9Mb/s";
00061     break;
00062   case 22:
00063   case 110:                    // Wlan-ng
00064     return "11Mb/s";
00065     break;
00066   case 24:
00067     return "12Mb/s";
00068     break;
00069   case 36:
00070     return "18Mb/s";
00071     break;
00072   case 44:
00073     return "22Mb/s";
00074     break;
00075   case 48:
00076     return "24Mb/s";
00077     break;
00078   case 66:
00079     return "33Mb/s";
00080     break;
00081   case 72:
00082     return "36Mb/s";
00083     break;
00084   case 88:                     // ? is it normalized ?
00085     return "44Mb/s";
00086     break;
00087   case 96:
00088     return "48Mb/s";
00089     break;
00090   case 108:
00091     return "54Mb/s";
00092     break;
00093   default:
00094     return "???";
00095     break;
00096   }
00097   return "???";
00098 }
00099 
00100 char *TypeOfClientToString(int TypeOfClient)
00101 {
00102   static const char *TypeOfClientList[16] = {
00103     TYPE_BIT_00, TYPE_BIT_01, TYPE_BIT_02, TYPE_BIT_03,
00104     TYPE_BIT_04, TYPE_BIT_05, TYPE_BIT_06, TYPE_BIT_07,
00105     TYPE_BIT_08, TYPE_BIT_09, TYPE_BIT_0A, TYPE_BIT_0B,
00106     TYPE_BIT_0C, TYPE_BIT_0D, TYPE_BIT_0E, TYPE_BIT_0F
00107   };
00108 
00109   return ((char *) TypeOfClientList[(TypeOfClient & 0x0F)]);
00110 }
00111 
00112 char *SubTypeOfClientToString(int TypeOfClient)
00113 {
00114   const char *SubTypeOfClientList[16] = {
00115     SUBTYPE_BIT_00, SUBTYPE_BIT_01, SUBTYPE_BIT_02,
00116     SUBTYPE_BIT_03,
00117     SUBTYPE_BIT_04, SUBTYPE_BIT_05, SUBTYPE_BIT_06,
00118     SUBTYPE_BIT_07,
00119     SUBTYPE_BIT_08, SUBTYPE_BIT_09, SUBTYPE_BIT_0A,
00120     SUBTYPE_BIT_0B,
00121     SUBTYPE_BIT_0C, SUBTYPE_BIT_0D, SUBTYPE_BIT_0E,
00122     SUBTYPE_BIT_0F
00123   };
00124 
00125   return ((char *)
00126           SubTypeOfClientList[((TypeOfClient & 0xF0) >> 4)]);
00127 }
00128 
00129 char *BoolToStr(int Boolean)
00130 {
00131   const char *YesNo[2] = { STR_NO, STR_YES };
00132 
00133   Boolean = !(!Boolean);
00134   return ((char *) YesNo[Boolean]);
00135 }
00136 
00137 char *BoolToWepNoWep(int Boolean)
00138 {
00139   const char *WepNoWep[2] = { STR_NOWEP, STR_WEP };
00140 
00141   Boolean = !(!Boolean);
00142   return ((char *) WepNoWep[Boolean]);
00143 }
00144 
00145 char *BoolToStaAp(int Boolean)
00146 {
00147   const char *StaAp[2] = { STR_STA, STR_AP };
00148 
00149   Boolean = !(!Boolean);
00150   return ((char *) StaAp[Boolean]);
00151 }
00152 
00153 const char *TypeOfPacketToString(UINT16 TypeOfPacket)
00154 {
00155   switch (WLAN_GET_FC_FTYPE(TypeOfPacket)) {
00156     /* Frame subtypes */
00157   case WLAN_FTYPE_MGMT:
00158     /* Management */
00159     switch (WLAN_GET_FC_FSTYPE(TypeOfPacket)) {
00160     case WLAN_FSTYPE_ASSOCREQ:
00161       return ("ASSREQ");
00162       break;
00163     case WLAN_FSTYPE_ASSOCRESP:
00164       return ("ASSRES");
00165       break;
00166     case WLAN_FSTYPE_REASSOCREQ:
00167       return ("REASSQ");
00168       break;
00169     case WLAN_FSTYPE_REASSOCRESP:
00170       return ("REASSS");
00171       break;
00172     case WLAN_FSTYPE_PROBEREQ:
00173       return ("PRBREQ");
00174       break;
00175     case WLAN_FSTYPE_PROBERESP:
00176       return ("PRBRES");
00177       break;
00178     case WLAN_FSTYPE_BEACON:
00179       return ("BEACON");
00180       break;
00181     case WLAN_FSTYPE_ATIM:
00182       return ("ATIM");
00183       break;
00184     case WLAN_FSTYPE_DISASSOC:
00185       return ("DESASS");
00186       break;
00187     case WLAN_FSTYPE_AUTHEN:
00188       return ("AUTHEN");
00189       break;
00190     case WLAN_FSTYPE_DEAUTHEN:
00191       return ("DEAUTH");
00192       break;
00193     default:
00194       return ("UNKNOW");
00195     }
00196     break;
00197   case WLAN_FTYPE_CTL:
00198     switch (WLAN_GET_FC_FSTYPE(TypeOfPacket)) {
00199       /* Control */
00200     case WLAN_FSTYPE_PSPOLL:
00201       return ("PSPOLL");
00202       break;
00203     case WLAN_FSTYPE_RTS:
00204       return ("RTS");
00205       break;
00206     case WLAN_FSTYPE_CTS:
00207       return ("CTS");
00208       break;
00209     case WLAN_FSTYPE_ACK:
00210       return ("ACK");
00211       break;
00212     case WLAN_FSTYPE_CFEND:
00213       return ("CFEND");
00214       break;
00215     case WLAN_FSTYPE_CFENDCFACK:
00216       return ("CFEACK");
00217       break;
00218     default:
00219       return ("UNKNOW");
00220     }
00221     break;
00222   case WLAN_FTYPE_DATA:
00223     switch (WLAN_GET_FC_FSTYPE(TypeOfPacket)) {
00224       /* Data */
00225     case WLAN_FSTYPE_DATAONLY:
00226       return ("DATA");
00227       break;
00228     case WLAN_FSTYPE_DATA_CFACK:
00229       return ("DATACK");
00230       break;
00231     case WLAN_FSTYPE_DATA_CFPOLL:
00232       return ("DATPOL");
00233       break;
00234     case WLAN_FSTYPE_DATA_CFACK_CFPOLL:
00235       return ("DTPLAK");
00236       break;
00237     case WLAN_FSTYPE_NULL:
00238       return ("NULL");
00239       break;
00240     case WLAN_FSTYPE_CFACK:
00241       return ("CFACK");
00242       break;
00243     case WLAN_FSTYPE_CFPOLL:
00244       return ("CFPOL");
00245       break;
00246     case WLAN_FSTYPE_CFACK_CFPOLL:
00247       return ("CFPLAK");
00248       break;
00249     default:
00250       return ("UNKNOW");
00251     }
00252     break;
00253   default:
00254     return ("UNKNOW");
00255   }
00256 }

Generated on Fri Feb 25 12:02:37 2005 for WifiScanner by  doxygen 1.4.1