wlan_bearer/wlanldd/wlan_symbian/wlanldd_symbian/inc/RWlanLogicalChannel.h
branchRCL_3
changeset 17 a828660c511c
parent 14 13838cf40350
child 18 d3d7683d16f5
--- a/wlan_bearer/wlanldd/wlan_symbian/wlanldd_symbian/inc/RWlanLogicalChannel.h	Thu Aug 19 11:40:48 2010 +0300
+++ b/wlan_bearer/wlanldd/wlan_symbian/wlanldd_symbian/inc/RWlanLogicalChannel.h	Tue Aug 31 17:02:06 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 /*
-* %version: 18.1.1 %
+* %version: 19 %
 */
 
 #ifndef RWLAN_LOGICAL_CHANNEL_H_
@@ -29,15 +29,6 @@
 #include <e32std.h> // for RChunk
 #endif
 
-// Enumeration values for control messages
-enum TWlanControl
-	{
-    EWlanSvControlInitBuffers,  // Allocate frame transfer memory for WLAN Mgmt
-                                // client
-    EWlanSvControlFreeBuffers   // Deallocate memory allocated by 
-                                // EWlanSvControlInitBuffers
-	};
-
 // Open parameters
 struct TOpenParam 
 	{
@@ -55,23 +46,42 @@
     TUint32 iFirmWareLength;    // length of firmware in bytes 	
 	};
 
-// Enumeration values for asynchronous requests. Do not exceed KMaxRequests!
-enum TWlanRequest
-    {
-	EWlanRequestNotify,        // request a notification
-	EWlanRequestFrame,         // frame Rx request
-	EWlanRequestSend,          // frame Tx request
-	EWlanCommand,		       // WLAN management command
-    EWlanInitSystem,           // internal init
-    EWlanFinitSystem,          // internal finit
-	EWlanMaxRequest
-    };
-
 class RWlanLogicalChannel : public RBusLogicalChannel
     {
-
 public:
 
+    // Enumeration values for control messages
+    enum TWlanControl
+        {
+        EWlanSvControlInitBuffers,  // Allocate frame transfer memory for WLAN Mgmt
+                                    // client
+        EWlanSvControlFreeBuffers   // Deallocate memory allocated by 
+                                    // EWlanSvControlInitBuffers
+        };
+
+    // Enumeration values for asynchronous requests. Do not exceed KMaxRequests!
+    enum TWlanRequest
+        {
+        EWlanRequestNotify,        // request a notification
+        EWlanRequestFrame,         // frame Rx request
+        EWlanRequestSend,          // frame Tx request
+        EWlanCommand,              // WLAN management command
+        EWlanInitSystem,           // internal init
+        EWlanFinitSystem,          // internal finit
+        EWlanMaxRequest
+        };
+
+    /** 
+    * Calls executed in the context of the client's thread, but in 
+    * supervisor mode
+    */
+    enum TControlFast
+        {
+        EWlanControlFastGetRxFrame = 0x0E000000
+        };
+    
+public:
+    
     /** 
       * Opens a channel to the WLAN device driver.
       *
@@ -153,7 +163,7 @@
     *
     * @since S60 3.1
     * @param aFrameXferBlock FrameXferBlock to be initialised by 
-    * the device driver.
+    *        the device driver.
     * @return KErrNone on success, any other on failure
     */
     inline TInt InitialiseBuffers( RFrameXferBlock*& aFrameXferBlock );
@@ -194,6 +204,20 @@
       */
     inline void CancelRxRequests();
 
+    /**
+     * Gets the next frame (contained in a buffer allocated from
+     * the shared memory) from the Rx queue.
+     * Optionally frees the memory associated to a previously received frame. 
+     * 
+     * @param aFrameToFree Previously received frame which can now be freed.
+     *        NULL if nothing to free.
+     * @return Pointer to the Rx frame to be handled next.
+     *         NULL, if there are no frames available. If NULL is returned
+     *         the client should re-issue the asynchronous frame Rx request
+     *         (i.e. RequestFrame())
+     */ 
+    inline TDataBuffer* GetRxFrame( TDataBuffer* aFrameToFree );    
+    
 private:
 
     inline TInt InitWlanSystem( TOpenParam& aOpenParam );