[kismac] [binaervarianz] r185 - branches/usb-drivers/Sources/Driver/USBJack

  • From: svn@xxxxxxxxxxxxxxxx
  • To: kismac@xxxxxxxxxxxxx
  • Date: Mon, 04 Sep 2006 08:30:36 +0200

Author: gkruse
Date: 2006-09-04 08:30:28 +0200 (Mon, 04 Sep 2006)
New Revision: 185

Modified:
   branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.h
   branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm
Log:
better unmalforming of the packets, and some cool led tricks

Modified: branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.h
===================================================================
--- branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.h    2006-09-03 
08:37:41 UTC (rev 184)
+++ branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.h    2006-09-04 
06:30:28 UTC (rev 185)
@@ -59,6 +59,7 @@
     bool setChannel(UInt16 channel);
     bool getAllowedChannels(UInt16* channels);
     bool startCapture(UInt16 channel);
+    bool stopCapture();
     
     bool _massagePacket(int len);
     

Modified: branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm
===================================================================
--- branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm   2006-09-03 
08:37:41 UTC (rev 184)
+++ branches/usb-drivers/Sources/Driver/USBJack/RalinkJack.mm   2006-09-04 
06:30:28 UTC (rev 185)
@@ -70,7 +70,7 @@
         }
         
         //lets mess with the leds to verify we have control
-        RTUSBWriteMACRegister(MAC_CSR20, 0x002);        //put led under 
software control
+        RTUSBWriteMACRegister(MAC_CSR20, 0x0000);        //put led under 
software control
                                    
         RTUSBWriteMACRegister(MAC_CSR1, 4);        //host is ready to work
         RTUSBReadMACRegister(MAC_CSR0, &temp);          //read the asic 
version number
@@ -855,6 +855,11 @@
     return true;   
 }
 
+bool RalinkJack::stopCapture(){
+    RTUSBWriteMACRegister(TXRX_CSR2, 0x00ff); //disable rx
+    return true;
+}
+
 bool RalinkJack::_massagePacket(int len){
     unsigned char* pData;
     UInt8 frame[sizeof(_recieveBuffer)];
@@ -864,6 +869,9 @@
     bzero(frame,sizeof(_recieveBuffer));
     tempFrame = (WLFrame *)frame;
     
+    //flash the led for fun
+    RTUSBWriteMACRegister(MAC_CSR20, 0x0004);        //put led under software 
control
+
     pData = (unsigned char*)&_recieveBuffer;
 
     pRxD = (PRXD_STRUC)(pData + len - sizeof(RXD_STRUC));
@@ -881,12 +889,21 @@
     }
     else {*/
        // NSLog(@"Good Frame : %d, %d, %d", pRxD->Crc, pRxD->CiErr, 
pRxD->PhyErr);
+    // this is probablty not the most efficient way to do this
         tempFrame->silence = pRxD->BBR1;
-        tempFrame->dataLen = NSSwapLittleShortToHost(len - 
sizeof(WLPrismHeader) - sizeof(RXD_STRUC));
+        tempFrame->dataLen = NSSwapLittleShortToHost(len - 28 - 
(sizeof(RXD_STRUC)));
         
-        memcpy(frame + sizeof(WLPrismHeader), pData, 24 
/*sizeof(_recieveBuffer)*/); //copy the 80211 header, nnot 24 not 32 bytes
-        memcpy(frame + sizeof(WLPrismHeader) + 32 + 14, pData + 
24,sizeof(_recieveBuffer)-(32+14+sizeof(WLPrismHeader)));
+        memcpy(frame + sizeof(WLPrismHeader), pData, 24); //copy the 80211 
header,  24 not 32 bytes
+        //if the packet is less than 46 bytes, we can't exactly copy any more
+        if (len > 46) {
+            memcpy(frame + sizeof(WLPrismHeader) + 32 + 14, pData + 
24,len-(32+sizeof(WLPrismHeader)));
+        }
+        else {
+            NSLog(@"RalinkJack::Really short packet!");
+        }
+
         memcpy(&_recieveBuffer, frame, sizeof(_recieveBuffer));
+        RTUSBWriteMACRegister(MAC_CSR20, 0x0002);        //put led under 
software control
         return true;         //override if needed
    // }
    // return false;


Other related posts: