3333#include <string.h>
3434#include <ogc/machine/processor.h>
3535
36- #define WD_HEAP_SIZE 0x1000
36+ //#define WD_HEAP_SIZE 0x1000
37+
38+ #define DEFAULT_CHANNEL_BITMAP 0xfffe
39+
40+ enum WDIOCTLV
41+ {
42+ IOCTLV_WD_INVALID = 0x1000 ,
43+ IOCTLV_WD_GET_MODE = 0x1001 , // WD_GetMode
44+ IOCTLV_WD_SET_LINKSTATE = 0x1002 , // WD_SetLinkState
45+ IOCTLV_WD_GET_LINKSTATE = 0x1003 , // WD_GetLinkState
46+ IOCTLV_WD_SET_CONFIG = 0x1004 , // WD_SetConfig
47+ IOCTLV_WD_GET_CONFIG = 0x1005 , // WD_GetConfig
48+ IOCTLV_WD_CHANGE_BEACON = 0x1006 , // WD_ChangeBeacon
49+ IOCTLV_WD_DISASSOC = 0x1007 , // WD_DisAssoc
50+ IOCTLV_WD_MP_SEND_FRAME = 0x1008 , // WD_MpSendFrame
51+ IOCTLV_WD_SEND_FRAME = 0x1009 , // WD_SendFrame
52+ IOCTLV_WD_SCAN = 0x100a , // WD_Scan
53+ IOCTLV_WD_CALL_WL = 0x100c , // WD_CallWL
54+ IOCTLV_WD_MEASURE_CHANNEL = 0x100b , // WD_MeasureChannel
55+ IOCTLV_WD_GET_LASTERROR = 0x100d , // WD_GetLastError
56+ IOCTLV_WD_GET_INFO = 0x100e , // WD_GetInfo
57+ IOCTLV_WD_CHANGE_GAMEINFO = 0x100f , // WD_ChangeGameInfo
58+ IOCTLV_WD_CHANGE_VTSF = 0x1010 , // WD_ChangeVTSF
59+ IOCTLV_WD_RECV_FRAME = 0x8000 , // WD_ReceiveFrame
60+ IOCTLV_WD_RECV_NOTIFICATION = 0x8001 // WD_ReceiveNotification
61+ };
3762
3863extern void usleep (u32 t );
3964
@@ -45,7 +70,7 @@ s32* WD_GetWork() {
4570}
4671
4772u8 NCDcommonbuff [0x20 ] __attribute__((aligned (32 )));
48- s32 NCDheap ;
73+ // s32 NCDheap;
4974
5075s32 NCD_LockWirelessDriver () {
5176 s32 NCD = IOS_Open ("/dev/net/ncd/manage" , 0 );
@@ -90,8 +115,8 @@ u32 NCD_UnlockWirelessDriver(s32 lockid) {
90115 NCD = -1 ;
91116 return ret ;
92117}
93-
94- s32 WD_CreateHeap () {
118+ /*
119+ s32 WD_CreateHeap() { // Currently unused.
95120 s32 heap;
96121 u32 level;
97122
@@ -101,10 +126,11 @@ s32 WD_CreateHeap() {
101126
102127 return heap;
103128}
129+ */
104130
105131void WD_SetDefaultScanParameters (ScanParameters * set ) {
106- set -> ChannelBitmap = 0xfffe ;
107- set -> MaxChannelTime = 100 ; // 100 ms
132+ set -> ChannelBitmap = DEFAULT_CHANNEL_BITMAP ;
133+ set -> MaxChannelTime = 100 ;
108134
109135 memset (set -> BSSID , 0xff , BSSID_LENGTH );
110136
@@ -140,15 +166,15 @@ u8 WD_GetRadioLevel(BSSDescriptor* Bss) {
140166 if (Bss -> RSSI < 0xc4 ) {
141167 if (Bss -> RSSI < 0xb5 ) {
142168 if (Bss -> RSSI < 0xab ) {
143- ret = 0 ;
169+ ret = 0 ; // Very Weak
144170 } else {
145- ret = 1 ;
171+ ret = 1 ; // Weak
146172 }
147173 } else {
148- ret = 2 ;
174+ ret = 2 ; // Medium
149175 }
150176 } else {
151- ret = 3 ;
177+ ret = 3 ; // Strong
152178 }
153179 return ret ;
154180}
@@ -164,7 +190,7 @@ int WD_GetInfo(WDInfo* info) {
164190 vector .data = inf ;
165191 vector .len = sizeof (WDInfo );
166192
167- IOS_Ioctlv (wd_fd , 0x100e , 0 , 1 , & vector );
193+ IOS_Ioctlv (wd_fd , IOCTLV_WD_GET_INFO , 0 , 1 , & vector );
168194 memcpy (info , inf , sizeof (WDInfo ));
169195
170196 WD_Deinit ();
@@ -189,7 +215,7 @@ int WD_Scan(ScanParameters *settings, u8* buff, u16 buffsize) {
189215 vectors [1 ].data = buf ;
190216 vectors [1 ].len = buffsize ;
191217
192- IOS_Ioctlv (wd_fd , 0x100a , 1 , 1 , vectors );
218+ IOS_Ioctlv (wd_fd , IOCTLV_WD_SCAN , 1 , 1 , vectors );
193219 usleep (100000 );
194220 memcpy (buff , buf , buffsize );
195221
@@ -200,7 +226,6 @@ int WD_ScanOnce(ScanParameters *settings, u8* buff, u16 buffsize) {
200226 s32 lockid = NCD_LockWirelessDriver ();
201227
202228 if (WD_Init (AOSSAPScan ) < 0 ) return -1 ;
203- usleep (100000 );
204229
205230 WD_Scan (settings , buff , buffsize );
206231
0 commit comments