--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/rwlmserver.h Tue Feb 02 02:03:13 2010 +0200
@@ -0,0 +1,576 @@
+/*
+* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Client side interface to WLAN Services
+*
+*/
+
+/*
+* %version: 24 %
+*/
+
+#ifndef RWLMSERVER_H
+#define RWLMSERVER_H
+
+#include <e32base.h>
+#include <wlancontrolinterface.h>
+#include <wlantrafficstreamparameters.h>
+#include "genscanlist.h"
+#include "wlmnotify.h"
+#include "wlancontrolinterface.h"
+
+class CWlmScanRequest;
+
+/**
+* Application interface.
+* This class hides inter-thread communication between client
+* and server. Hides also asynchronous notification services.
+* @since Series 60 3.0
+* @lib wlmserver.lib
+*/
+NONSHARABLE_CLASS( RWLMServer ) : public RSessionBase, public MWLMNotify
+ {
+ friend class CWlmScanRequest;
+
+ public: // Methods.
+
+ /**
+ * Structure for storing buffers for a traffic stream create request.
+ */
+ struct TWlmTsCreateRequest
+ {
+ TWlmTsCreateRequest(
+ const TWlanTrafficStreamParameters& aStreamParameters,
+ TUint& aStreamId,
+ TWlanTrafficStreamStatus& aStreamStatus ) :
+ iTsParameterPckg( aStreamParameters ),
+ iTsIdPckg( aStreamId ),
+ iTsStatusPckg( aStreamStatus ) {};
+
+ /** Buffer for storing TSPEC parameters. */
+ TPckgBuf<TWlanTrafficStreamParameters> iTsParameterPckg;
+
+ /** Buffer for storing traffic stream ID. */
+ TPckg<TUint> iTsIdPckg;
+
+ /** Buffer for storing traffic stream status. */
+ TPckg<TWlanTrafficStreamStatus> iTsStatusPckg;
+ };
+
+ // New methods
+
+ /**
+ * Cancel pending notification message from server.
+ * CWLMNotify class uses this method to cancel pending message at server
+ * side.
+ */
+ void CancelRequest();
+
+ /**
+ * Close the connection; release the handle to the server.
+ */
+ IMPORT_C void Close();
+
+ /**
+ * Set a message to pend notification.
+ * @param aReturnValue Status of the calling active object.
+ * @param aReturnData (OUT) Data returned by the notification.
+ * @param aNotificationMask Bitmask of active notifications.
+ */
+ void WaitForNotification(
+ TRequestStatus& aReturnValue,
+ TDes8& aReturnData,
+ TUint32 aNotificationMask );
+
+ /**
+ * Client activates the notification service.
+ * With this service client can receive asynchronous notifications from
+ * the server.
+ * @param aCallback Client's callback interface for notifications.
+ * @param aNotificationMask Bitmask of notifications to activate.
+ * @see TWLMResponses
+ */
+ IMPORT_C void ActivateNotifiesL(
+ MWLMNotify& aCallback,
+ TUint32 aNotificationMask );
+
+ /**
+ * Client deactivates the notification service.
+ * This is the client's interface to stop receiveing notifications from the
+ * server.
+ */
+ IMPORT_C void CancelNotifies();
+
+ /**
+ * Client makes the connection to the server.
+ * @return General Symbian error code.
+ */
+ IMPORT_C TInt Connect();
+
+ /**
+ * Version information.
+ * @return Version information.
+ */
+ TVersion Version() const;
+
+ /**
+ * Get connection state of WLAN.
+ * @return Current state of WLAN connection.
+ */
+ IMPORT_C TWlanConnectionState GetConnectionState();
+
+ /**
+ * Get current connections RCPI.
+ * @param aRCPI (OUT) Current signal strength of the connection, 0 if no WLAN connection.
+ * @return General Symbian error code.
+ */
+ IMPORT_C TInt GetConnectionRCPI(
+ TInt32& aRCPI );
+
+ /**
+ * Get scan results.
+ * @param aResults (OUT) Results of the last scan.
+ * @param aSsid SSID to be scanned.
+ * @param aCacheLifetime how old cached results (in seconds) the client is willing to accept.
+ * @param aMaxDelay maximum time (in seconds) the client is willing to wait for the scan results.
+ * @return General Symbian error code.
+ */
+ IMPORT_C TInt GetScanResults(
+ ScanList& aResults,
+ const TDesC8& aSsid,
+ TInt& aCacheLifetime,
+ TUint& aMaxDelay );
+
+ /**
+ * Get scan results.
+ * @param aResults (OUT) Results of the last scan.
+ * @param aSsid SSID to be scanned.
+ * @param aCacheLifetime how old cached results (in seconds) the client is willing to accept.
+ * @param aMaxDelay maximum time (in seconds) the client is willing to wait for the scan results.
+ * @param aStatus Status of the calling active object.
+ */
+ IMPORT_C void GetScanResults(
+ ScanList& aResults,
+ const TDesC8& aSsid,
+ TInt& aCacheLifetime,
+ TUint& aMaxDelay,
+ TRequestStatus& aStatus );
+
+ /**
+ * Cancel an outstanding scan request.
+ */
+ IMPORT_C void CancelGetScanResults();
+
+ /**
+ * Join to a network using the settings from "IAP specific WLAN table".
+ *
+ * @param aStatus Status of the calling active object.
+ * @param aId Index to the "IAP specific WLAN table".
+ * @param aOverrides Override parameters to joining the network.
+ */
+ IMPORT_C void Join(
+ TRequestStatus& aStatus,
+ const TUint32 aId,
+ TWLMOverrideSettings* aOverrides = NULL );
+
+ /**
+ * Cancel an outstanding join request.
+ */
+ IMPORT_C void CancelJoin();
+
+ /**
+ * Reset the network connection.
+ * @return General Symbian error code.
+ */
+ IMPORT_C TInt Release();
+
+ /**
+ * Get the BSSID of the current connection.
+ * @param aBssid The BSSID of the current connection.
+ * If no connection a zero address is returned.
+ * @return General Symbian error code.
+ */
+ IMPORT_C TInt GetBSSID(
+ TMacAddress& aBssid );
+
+ /**
+ * Get the name of the current network.
+ * @param aNwName (OUT) The name of the current network.
+ * @return General Symbian error code.
+ */
+ IMPORT_C TInt GetNetworkName(
+ TDes& aNwName );
+
+ /**
+ * Get current security mode.
+ * @param aMode (OUT) The current security mode.
+ * @return General Symbian error code.
+ */
+ IMPORT_C TInt GetSecurityMode(
+ TWlanSecurity& aMode );
+
+ /**
+ * Get current system mode.
+ * @param aMode (OUT) The current system mode.
+ * @return General Symbian error code.
+ */
+ IMPORT_C TInt GetSystemMode(
+ TWlanSystemMode& aMode );
+
+ /**
+ * Get available WLAN IAPs.
+ * @param aAvailableIaps Array of IAP IDs available.
+ * @param aCacheLifetime how old cached results (in seconds) the client is willing to accept.
+ * @param aMaxDelay maximum time (in seconds) the client is willing to wait for the scan results.
+ * @return General Symbian error code.
+ */
+ IMPORT_C TInt GetAvailableIaps(
+ TWlmAvailableIaps& aAvailableIaps,
+ TInt& aCacheLifetime,
+ TUint& aMaxDelay );
+
+ /**
+ * Get available WLAN IAPs.
+ * @param aAvailableIaps Array of IAP IDs available.
+ * @param aCacheLifetime how old cached results (in seconds) the client is willing to accept.
+ * @param aMaxDelay maximum time (in seconds) the client is willing to wait for the scan results.
+ * @param aStatus Status of the calling active object.
+ *
+ * In order to call this method, an instance of TWlmAvailableIaps must
+ * packaged into a TPckg<TWlmAvailableIaps> package buffer. This buffer
+ * can be passed to the called method as a descriptor.
+ *
+ * Example:
+ * TPckg<TWlmAvailableIaps> availableIapsBuf( availableIaps );
+ * GetAvailableIaps( availableIapsBuf, cacheLifetime, maxDelay, status );
+ */
+ IMPORT_C void GetAvailableIaps(
+ TDes8& aAvailableIaps,
+ TDes8& aCacheLifetime,
+ TDes8& aMaxDelay,
+ TRequestStatus& aStatus );
+
+ /**
+ * Cancel an outstanding IAP availability request.
+ */
+ IMPORT_C void CancelGetAvailableIaps();
+
+ /**
+ * Notify the server about changed WLAN settings.
+ */
+ IMPORT_C void NotifyChangedSettings();
+
+ /**
+ * Adds a BSSID to rogue list
+ * @param aBssid a BSSID of an accesspoint.
+ * @return Error code.
+ */
+ IMPORT_C TInt AddBssidToRoguelist(
+ const TMacAddress& aBssid );
+
+ /**
+ * Updates the RCP notification class boundaries.
+ * @param aRcpLevelBoundary specifies the RCP level when notification
+ * should be given. This boundary is used when signal level is
+ * getting worse (see next parameter).
+ * @param aHysteresis specifies the difference between RCP notification
+ * trigger levels of declining and improving signal quality.
+ * I.e. since aRcpLevelBoundary specifies the level boundary for
+ * declining signal, the same boundary for imrpoving signal is
+ * ( aRcpLevelBoundary - aHysteresis ).
+ * @return Error value
+ */
+ IMPORT_C TInt UpdateRcpNotificationBoundary(
+ const TInt32 aRcpLevelBoundary,
+ const TInt32 aHysteresis );
+
+ /**
+ * ConfigureMulticast
+ * @param aCommand specifies either KSoIp6JoinGroup or
+ * KSoIp6LeaveGroup
+ * @param aMulticastAddress contains the MAC address
+ * @return Error code.
+ */
+ IMPORT_C TInt ConfigureMulticast(
+ TUint aCommand,
+ const TMacAddress& aMulticastAddress );
+
+ /**
+ * Get packet statistics of the current connection.
+ *
+ * @since S60 v3.2
+ * @param aStatistics Packet statistics of the current connection.
+ * @return KErrNone if statistics were read successfully, an error otherwise.
+ */
+ IMPORT_C TInt GetPacketStatistics(
+ TWlanPacketStatistics& aStatistics );
+
+ /**
+ * Clear packet statistics of the current connection.
+ *
+ * @since S60 v3.2
+ */
+ IMPORT_C void ClearPacketStatistics();
+
+ /**
+ * Get the current U-APSD settings.
+ *
+ * @since S60 v3.2
+ * @param aSettings Current U-APSD settings.
+ * @return KErrNone if settings were read successfully, an error otherwise.
+ */
+ IMPORT_C TInt GetUapsdSettings(
+ TWlanUapsdSettings& aSettings );
+
+ /**
+ * Set the U-APSD settings.
+ *
+ * @since S60 v3.2
+ * @param aSettings Current U-APSD settings to be set.
+ * @return KErrNone if settings were set successfully, an error otherwise.
+ */
+ IMPORT_C TInt SetUapsdSettings(
+ const TWlanUapsdSettings& aSettings );
+
+ /**
+ * Get the current power save settings.
+ *
+ * @since S60 v3.2
+ * @param aSettings power save settings.
+ * @return KErrNone if settings were read successfully, an error otherwise.
+ */
+ IMPORT_C TInt GetPowerSaveSettings(
+ TWlanPowerSaveSettings& aSettings );
+
+ /**
+ * Set the power save settings.
+ *
+ * @since S60 v3.2
+ * @param aSettings Current power save settings to be set.
+ * @return KErrNone if settings were set successfully, an error otherwise.
+ */
+ IMPORT_C TInt SetPowerSaveSettings(
+ const TWlanPowerSaveSettings& aSettings );
+
+ /**
+ * Run Protected Setup.
+ * @param aStatus Status of the calling active object.
+ * @param aId IAP ID of network which user has selected to be configured.
+ * @param Results of a successful Protected Setup operation.
+ */
+ IMPORT_C void RunProtectedSetup(
+ TRequestStatus& aStatus,
+ TUint32 aId,
+ TDes8& aCredentials );
+
+ /**
+ * Cancel an outstanding Protected Setup request.
+ */
+ IMPORT_C void CancelProtectedSetup();
+
+ /**
+ * Create a virtual traffic stream.
+ *
+ * @param aStatus Status of the calling active object. On successful
+ * completion contains KErrNone, otherwise one of the
+ * system-wide error codes.
+ * @param aStreamParameters Traffic stream parameters to use.
+ * @param aIsAutomaticStream Whether the stream was created automatically
+ * by WLAN NIF.
+ * @param aStreamId Contains the ID assigned to this traffic stream
+ * on successful completion.
+ * @param aStreamStatus Contains the status of the traffic stream
+ * on successful completion.
+ */
+ IMPORT_C void CreateTrafficStream(
+ TRequestStatus& aStatus,
+ const TWlanTrafficStreamParameters& aStreamParameters,
+ TBool aIsAutomaticStream,
+ TUint& aStreamId,
+ TWlanTrafficStreamStatus& aStreamStatus );
+
+ /**
+ * Cancel an outstanding traffic stream creation request.
+ *
+ * @since S60 v3.2
+ */
+ IMPORT_C void CancelCreateTrafficStream();
+
+ /**
+ * Delete a virtual traffic stream.
+ *
+ * @param aStatus Status of the calling active object. On successful
+ * completion contains KErrNone, otherwise one of the
+ * system-wide error codes.
+ * @param aStreamId ID of the traffic stream to delete.
+ */
+ IMPORT_C void DeleteTrafficStream(
+ TRequestStatus& aStatus,
+ TUint aStreamId );
+ /**
+ * Cancel an outstanding traffic stream deletion request.
+ *
+ * @since S60 v3.2
+ */
+ IMPORT_C void CancelDeleteTrafficStream();
+
+ /**
+ * Get information about the current AP.
+ *
+ * @since S60 v3.2
+ * @param aInfo Information about the current AP.
+ * @return KErrNone if information is available, an error otherwise.
+ */
+ IMPORT_C TInt GetAccessPointInfo(
+ TWlanAccessPointInfo& aInfo );
+
+ /**
+ * Get roam metrics of the current connection.
+ *
+ * @since S60 v3.2
+ * @param aRoamMetrics Roam metrics of the current connection.
+ * @return KErrNone if settings were read successfully, an error otherwise.
+ */
+ IMPORT_C TInt GetRoamMetrics(
+ TWlanRoamMetrics& aRoamMetrics );
+
+ /**
+ * Return a list of BSSIDs on the rogue list.
+ *
+ * @since S60 v3.2
+ * @param aRogueList List of BSSIDs on the rogue list.
+ * @return KErrNone if list were read successfully, an error otherwise.
+ */
+ IMPORT_C TInt GetRogueList(
+ CArrayFixSeg<TWlanBssid>& aRogueList );
+
+ /**
+ * Get the current regulatory domain.
+ *
+ * @since S60 v3.2
+ * @param aRegion current region.
+ * @return KErrNone if value was read successfully, an error otherwise.
+ */
+ IMPORT_C TInt GetRegulatoryDomain(
+ TWlanRegion& aRegion );
+
+ /**
+ * Get the current power save mode.
+ *
+ * @since S60 v3.2
+ * @param aPowerSaveMode current power save mode.
+ * @return KErrNone if value was read successfully, an error otherwise.
+ */
+ IMPORT_C TInt GetPowerSaveMode(
+ TWlanPowerSave& aPowerSaveMode );
+
+ /**
+ * Add a list of SSIDs to the given IAP ID.
+ *
+ * The list of SSIDs is matched against the scan results during IAP availability
+ * check and the corresponding IAP marked as available if a match is found.
+ *
+ * @since S60 v5.0.1
+ * @param aIapId IAP ID the list is attached to.
+ * @param aSsidList List of SSIDs. Any previous list attached will be overwritten.
+ * @return KErrNone if the list was successfully added, an error code otherwise.
+ */
+ IMPORT_C TInt AddIapSsidList(
+ TUint aIapId,
+ const CArrayFixFlat<TWlanSsid>& aSsidList );
+
+ /**
+ * Remove any list of SSIDs attached to the given IAP ID.
+ *
+ * @since S60 v5.0.1
+ * @param aIapId IAP ID the list is attached to.
+ * @return KErrNone if the list was successfully removed, an error code otherwise.
+ */
+ IMPORT_C TInt RemoveIapSsidList(
+ TUint aIapId );
+
+ /**
+ * Set the power save mode.
+ *
+ * @since S60 v5.0.1
+ * @param aMode Power save mode to be set.
+ * @return KErrNone if the mode was set successfully, an error otherwise.
+ */
+ IMPORT_C TInt SetPowerSaveMode(
+ TWlanPowerSaveMode aMode );
+
+ /**
+ * Notify the server about PSM server mode change.
+ *
+ * @since S60 v5.2
+ * @param aMode new PSM server mode.
+ * @return KErrNone if the mode was set successfully, an error otherwise.
+ */
+ IMPORT_C TInt NotifyChangedPsmSrvMode(
+ TInt aMode );
+
+ /**
+ * Get the current traffic status for access classes.
+ *
+ * @since S60 v5.0.1
+ * @param aArray Traffic status for access classes.
+ * @return KErrNone if information is available, an error otherwise.
+ */
+ IMPORT_C TInt GetAcTrafficStatus(
+ TWlmAcTrafficStatusArray& aArray );
+
+ /**
+ * Initiate a roam to the given BSSID.
+ *
+ * @param aStatus Status of the calling active object. On successful
+ * completion contains KErrNone, otherwise one of the
+ * system-wide error codes.
+ * @param aBssid BSSID to roam to. If set to FF:FF:FF:FF:FF:FF address,
+ * search for a better BSS is initiated.
+ */
+ IMPORT_C void DirectedRoam(
+ TRequestStatus& aStatus,
+ const TMacAddress& aBssid );
+
+ /**
+ * Cancel an outstanding directed roam request.
+ */
+ IMPORT_C void CancelDirectedRoam();
+
+ protected: // Methods
+
+ /**
+ * Start the server during Connect() if the server is not loaded.
+ * @return error code
+ */
+ TInt StartServer();
+
+ private: // Members
+
+ /** Notification service. Exists only if its activated. */
+ CWLMNotify* iNotify;
+
+ /** Class for handling scan requests. */
+ CWlmScanRequest* iScanRequest;
+
+ /** Parameters for traffic stream create request. */
+ TWlmTsCreateRequest* iTsCreateRequest;
+
+ /** Buffer for storing override settings. */
+ TPckgBuf<TWLMOverrideSettings> iOverridePckg;
+
+ /** Buffer for storing BSSID to roam to. */
+ TPckgBuf<TMacAddress> iRoamBssidPckg;
+ };
+
+#endif // RWLMSERVER_H