diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanengine/wlan_symbian/wlanengine_symbian_3.1/inc/rwlmserver.h --- /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 +#include +#include +#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 iTsParameterPckg; + + /** Buffer for storing traffic stream ID. */ + TPckg iTsIdPckg; + + /** Buffer for storing traffic stream status. */ + TPckg 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 package buffer. This buffer + * can be passed to the called method as a descriptor. + * + * Example: + * TPckg 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& 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& 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 iOverridePckg; + + /** Buffer for storing BSSID to roam to. */ + TPckgBuf iRoamBssidPckg; + }; + +#endif // RWLMSERVER_H