--- 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 );