Author: gkruse Date: 2006-08-27 08:55:07 +0200 (Sun, 27 Aug 2006) New Revision: 172 Modified: branches/usb-drivers/KisMAC.xcodeproj/project.pbxproj branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.h branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.h branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.mm Log: RaLink Driver: this is most of the io functions we are going to need. It still doesn't do anything yet Modified: branches/usb-drivers/KisMAC.xcodeproj/project.pbxproj =================================================================== --- branches/usb-drivers/KisMAC.xcodeproj/project.pbxproj 2006-08-27 05:53:14 UTC (rev 171) +++ branches/usb-drivers/KisMAC.xcodeproj/project.pbxproj 2006-08-27 06:55:07 UTC (rev 172) @@ -465,6 +465,7 @@ 6C541AAB0A72002F00B58A95 /* growl-ap-revealed.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C541AA80A72002F00B58A95 /* growl-ap-revealed.png */; }; 6C541AAC0A72003000B58A95 /* growl-wpa-challenge.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C541AA90A72002F00B58A95 /* growl-wpa-challenge.png */; }; 6C541AAD0A72003000B58A95 /* growl-wpa-response.png in Resources */ = {isa = PBXBuildFile; fileRef = 6C541AAA0A72002F00B58A95 /* growl-wpa-response.png */; }; + 6C7171D20AA1739700CD6879 /* rt2570.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C7171D10AA1739700CD6879 /* rt2570.h */; }; 6CA3BCCB09B2A58F00DCB407 /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CA3BCCA09B2A58F00DCB407 /* Accelerate.framework */; }; 6CE20615C5B043AF00A26C3A /* IntersilJack.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CE2060FC5B043AF00A26C3A /* IntersilJack.h */; }; 6CE20616C5B043AF00A26C3A /* IntersilJack.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6CE20610C5B043AF00A26C3A /* IntersilJack.mm */; }; @@ -816,6 +817,7 @@ 6C541AA80A72002F00B58A95 /* growl-ap-revealed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "growl-ap-revealed.png"; sourceTree = "<group>"; }; 6C541AA90A72002F00B58A95 /* growl-wpa-challenge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "growl-wpa-challenge.png"; sourceTree = "<group>"; }; 6C541AAA0A72002F00B58A95 /* growl-wpa-response.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "growl-wpa-response.png"; sourceTree = "<group>"; }; + 6C7171D10AA1739700CD6879 /* rt2570.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = rt2570.h; sourceTree = "<group>"; }; 6CA3BCCA09B2A58F00DCB407 /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = /System/Library/Frameworks/Accelerate.framework; sourceTree = "<absolute>"; }; 6CE2060FC5B043AF00A26C3A /* IntersilJack.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = IntersilJack.h; path = USBJack/IntersilJack.h; sourceTree = "<group>"; }; 6CE20610C5B043AF00A26C3A /* IntersilJack.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = IntersilJack.mm; path = USBJack/IntersilJack.mm; sourceTree = "<group>"; }; @@ -1458,6 +1460,7 @@ 6CE20612C5B043AF00A26C3A /* structs.h */, 6CE20613C5B043AF00A26C3A /* USBJack.h */, 6CE20614C5B043AF00A26C3A /* USBJack.mm */, + 6C7171D10AA1739700CD6879 /* rt2570.h */, 6CE206E6C5B0502200A26C3A /* RalinkJack.h */, 6CE206E7C5B0502200A26C3A /* RalinkJack.mm */, ); @@ -1642,6 +1645,7 @@ 6CE20618C5B043AF00A26C3A /* structs.h in Headers */, 6CE20619C5B043AF00A26C3A /* USBJack.h in Headers */, 6CE206E8C5B0502200A26C3A /* RalinkJack.h in Headers */, + 6C7171D20AA1739700CD6879 /* rt2570.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; Modified: branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.h =================================================================== --- branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.h 2006-08-27 05:53:14 UTC (rev 171) +++ branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.h 2006-08-27 06:55:07 UTC (rev 172) @@ -9,6 +9,7 @@ #import <Cocoa/Cocoa.h> #include "USBJack.h" +#include "rt2570.h" class RalinkJack: public USBJack { @@ -20,10 +21,24 @@ UInt8 bRequest, UInt16 wValue, UInt16 wIndex, - UInt16 wLength, - void *pData, - UInt32 wLenDone ); + void *pData, + UInt16 wLength); + IOReturn RTUSBSingleRead(unsigned short Offset, + unsigned short * pValue); + + IOReturn RalinkJack::RTUSBSingleWrite(unsigned short Offset, + unsigned short Value); + + IOReturn RTUSBWriteMACRegister(unsigned short Offset, + unsigned short Value); + + IOReturn RTUSBReadMACRegister(unsigned short Offset, + unsigned short * pValue); + + IOReturn RTUSBReadBBPRegister(unsigned char Id, + unsigned char * pValue); + private: int temp; }; Modified: branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm =================================================================== --- branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm 2006-08-27 05:53:14 UTC (rev 171) +++ branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm 2006-08-27 06:55:07 UTC (rev 172) @@ -13,11 +13,10 @@ UInt8 bRequest, UInt16 wValue, UInt16 wIndex, - UInt16 wLength, - void *pData, - UInt32 wLenDone ) { + void *pData, + UInt16 wLength) { - int ret; + IOReturn ret; if (!_devicePresent) { @@ -31,17 +30,113 @@ theRequest->bRequest = bRequest; theRequest->wValue = wValue; theRequest->wIndex = wIndex; - theRequest->wLength = wLength; theRequest->pData = pData; - theRequest->wLenDone = wLenDone; + theRequest->wLength = wLength; ret = (*_interface)->ControlRequest(_interface, 0, theRequest); + if (theRequest->wLenDone < wLength) { + NSLog(@"WTF, we didn't seem to write the whole request?"); + } + } return ret; } +IOReturn RalinkJack::RTUSBSingleRead(unsigned short Offset, + unsigned short * pValue) +{ + IOReturn Status; + + Status = RTUSB_VendorRequest(kUSBIn, + 0x3, + 0, + Offset, + pValue, + 2); + return Status; +} +IOReturn RalinkJack::RTUSBSingleWrite(unsigned short Offset, + unsigned short Value) +{ + IOReturn Status; + + Status = RTUSB_VendorRequest( + kUSBOut, + 0x2, + Value, + Offset, + NULL, + 0); + return Status; +} + +IOReturn RalinkJack::RTUSBWriteMACRegister(unsigned short Offset, + unsigned short Value) +{ + IOReturn Status; + if (Offset == TXRX_CSR2) + NSLog(@" !!!!!set Rx control = %x\n", Value); + + Status = RTUSB_VendorRequest( + kUSBOut, + 0x2, + Value, + Offset + 0x400, + NULL, + 0); + return Status; +} + +IOReturn RalinkJack::RTUSBReadMACRegister(unsigned short Offset, + unsigned short * pValue) +{ + IOReturn Status; + + Status = RTUSB_VendorRequest(kUSBIn, + 0x3, + 0, + Offset + 0x400, + pValue, + 2); + return Status; +} + +IOReturn RalinkJack::RTUSBReadBBPRegister(unsigned char Id, + unsigned char * pValue) +{ + PHY_CSR7_STRUC PhyCsr7; + unsigned short temp; + unsigned int i = 0; + + PhyCsr7.value = 0; + PhyCsr7.field.WriteControl = 1; + PhyCsr7.field.RegID = Id; + RTUSBWriteMACRegister(PHY_CSR7, PhyCsr7.value); + + do + { + RTUSBReadMACRegister(PHY_CSR8, &temp); + if (!(temp & BUSY)) + break; + i++; + } + while (i < RETRY_LIMIT); + + if (i == RETRY_LIMIT) + { + NSLog(@"Retry count exhausted or device removed!!!\n"); + return kIOReturnNotResponding; + } + + RTUSBReadMACRegister(PHY_CSR7, (unsigned short *)&PhyCsr7); + *pValue = (unsigned char)PhyCsr7.field.Data; + + return kIOReturnSuccess; +} + + RalinkJack::RalinkJack() { _isEnabled = false; _deviceInit = false; Modified: branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.h =================================================================== --- branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.h 2006-08-27 05:53:14 UTC (rev 171) +++ branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.h 2006-08-27 06:55:07 UTC (rev 172) @@ -25,10 +25,10 @@ #import <Foundation/Foundation.h> #import "WaveDriver.h" -#import "../Driver/USBIntersilJack/USBIntersil.h" +#import "../Driver/USBJack/IntersilJack.h" @interface WaveDriverUSBIntersil : WaveDriver { - USBIntersilJack *_driver; + USBJack *_driver; //stuff for timed sending float _interval; Modified: branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.mm =================================================================== --- branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.mm 2006-08-27 05:53:14 UTC (rev 171) +++ branches/usb-drivers/Sources/WaveDrivers/WaveDriverUSBIntersil.mm 2006-08-27 06:55:07 UTC (rev 172) @@ -33,7 +33,7 @@ self=[super init]; if(!self) return Nil; - _driver = new USBIntersilJack; + _driver = new USBJack; _driver->startMatching(); _errors = 0; @@ -129,7 +129,7 @@ } - (bool) wakeDriver{ - _driver = new USBIntersilJack; + _driver = new USBJack; _driver->startMatching(); return YES; } @@ -139,14 +139,14 @@ - (WLFrame*) nextFrame { WLFrame *f; - f = _driver->receiveFrame(); + // f = _driver->receiveFrame(); if (f==NULL) { _errors++; if (_packets && _driver) { if (_errors < 3) { NSLog(@"USB receiveFrame failed - attempting to reload driver"); delete _driver; - _driver = new USBIntersilJack; + _driver = new USBJack; _driver->startMatching(); } else { NSLog(@"Excessive errors received - terminating driver");