diff -r 000000000000 -r c40eb8fe8501 wlan_plat/wlan_dbif_api/inc/wdbifwlansettings.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlan_plat/wlan_dbif_api/inc/wdbifwlansettings.h Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,399 @@ +/* +* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "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: Handles the custom WLANServiceTable in CommsDat +* +*/ + +/* +* %version: 13 % +*/ + +#ifndef WLANSETTINGS_H +#define WLANSETTINGS_H + +#include +#include + +#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#endif + + +using namespace CommsDat; + +// Should be same as KMaxWepKeyLength, but defined here to +// avoid dependency to 802dot11.h +const TUint32 KWLMMaxWEPKeyLength = 29; + +// The maximum WPA Pre-Shared Key length. +const TUint KWLMMaxWpaPskLength = 64; + +// Maximum length of a SSID in BYTES +const TUint8 KMaxSSIDLen = 32; + +// Size of Expanded EAP Type +const TUint8 KExpandedEapTypeSize = 8; //8 + +/** +* Data structure for storing a WEP key. +*/ +struct TWep + { + /** Specifies which key to add or remove. Range: 0-3 */ + TUint32 KeyIndex; + /** The length of KeyMaterial in bytes. Range: 0-29 */ + TUint32 KeyLength; + /** Array that stores the WEP key. */ + TUint8 KeyMaterial[KWLMMaxWEPKeyLength]; + }; + +/** +* Data structure for storing a WPA Pre-Shared Key. +*/ +struct TWpaPsk + { + /** The length of KeyMaterial in bytes. Range: 8-64 */ + TUint KeyLength; + /** Array of that stores the WPA Pre-Shared Key. */ + TUint8 KeyMaterial[KWLMMaxWpaPskLength]; + }; + +const TInt KWlanWpaPskLength = 64; + +enum EWepAuthenticationMode + { + EWepAuthModeOpen = 0, + EWepAuthModeShared = 1 + }; + +enum EConnectionMode + { + Adhoc =0, + Infrastructure=1 + }; + +enum EWlanSecurityMode + { + AllowUnsecure = 1, + Wep = 2, + Wlan8021x = 4, + Wpa = 8, + Wpa2Only = 16, + Wapi = 32 + }; + +/** + * Format of the preshared key (hex/ASCII) + */ +enum TWlanPresharedKeyFormat + { + EWlanPresharedKeyFormatAscii, + EWlanPresharedKeyFormatHex + }; + +/** +* struct for wlan settings data +*/ +struct SWLANSettings + { + TUint32 Id; + TBuf Name; + + TUint32 ServiceID; + TUint32 ConnectionMode; // Infrastructure / adhoc + TBuf SSID; // network name + + TBuf UsedSSID; + TBool ScanSSID; + TUint32 ChannelID; + + TUint32 SecurityMode; // SecurityMode (Allow insecure, wep, 802.1xs, wpa, wpa2only) enum EWlanSecurityMode + + TWep WepKey1; + TWep WepKey2; + TWep WepKey3; + TWep WepKey4; + TUint32 WepIndex; + TUint32 AuthenticationMode; // open / Shared + + TBuf8 WPAPreSharedKey; + TUint32 WPAKeyLength; + TBool EnableWpaPsk; + TUint32 PresharedKeyFormat; // format of the preshared key + + // there is also WLAN_EAPS, but it is a long text field, handled separately + + }; + +struct SWlanIAPId + { + TUint iWLANRecordId; + TUint iIAPId; + }; + +/** +* Struct for containing eap identifiers +*/ +typedef struct _TEap + { + TBool Enabled; + TBuf8<3> UID; // Unique ID + } TEap; + +typedef RPointerArray TEapArray; +/** +* Struct for containing expanded eap identifiers +*/ +struct SEapExpandedType + { + TBuf8 EapExpandedType; // Unique ID + }; + +typedef RPointerArray RExpandedEapTypeArray; + +/** +* Structure for storing information about a secondary SSID. +*/ +struct TWlanSecondarySsid + { + TUint32 id; + TBuf ssid; + TBuf usedSsid; + }; + +// CLASS DECLARATION + +/** +* Class for handling wlan table in commsdat +* +* @lib wlandbif.lib +*/ +NONSHARABLE_CLASS( CWLanSettings ) : public CBase + { +public: // Constructors and destructor + + /** + * Constructor + */ + IMPORT_C CWLanSettings(); + + /** + * Destructor + * Handles disconnection if needed + */ + IMPORT_C virtual ~CWLanSettings(); + +public: // New functions + + /** + * Makes a connection to CommsDat + * @param + * @return KErrNone or other symbian error code + * @remarks + * @see + */ + IMPORT_C TInt Connect(); + + /** + * Disconnect function that disconnects the connection to commsdat + * @param + * @return + * @remarks + * @see + */ + IMPORT_C void Disconnect(); + + /** + * Gets WLAN settings with specified ID + * @param aId is the id of wlan settings record that is fetched, aSettings contains the wlan settings + * @return KErrNone or other symbian error code + * @remarks + * @see + */ + IMPORT_C TInt GetWlanSettings(TUint32 aId,SWLANSettings &aSettings); + + /** + * Gets all the wlan settings for specified LAN service + * @param aId is the id of lan settings that uses wanted wlan settings. aSettings contains the wlan settings + * @return KErrNone or other symbian error code + * @remarks + * @see + */ + IMPORT_C TInt GetWlanSettingsForService(TUint32 aId,SWLANSettings &aSettings); + + /** + * Gets WLAN settings with specified IAP ID + * @param aId is the IAP id that is fetched, aSettings contains the wlan settings + * @return KErrNone or other symbian error code + * @remarks + * @see + */ + IMPORT_C TInt GetWlanSettingsForIap(TUint32 aId,SWLANSettings &aSettings); + + /** + * + * Not supported + * + */ + IMPORT_C TInt GetFirstSettings(SWLANSettings &aSettings); + + /** + * + * Not supported + * + */ + IMPORT_C TInt GetNextSettings(SWLANSettings &aSettings); + + /** + * writes all the wlan settings to CommsDat, if settings.id is 0, new record is created + * returns KErrNone on success, other error code if failed + */ + IMPORT_C TInt WriteWlanSettings(SWLANSettings &aSettings); + + /** + * Deletes wlan settings record with specified ID + * returns KErrNone on success, other error code if failed + */ + IMPORT_C TInt DeleteWlanSettings(TUint32 aId); + + /** + * Deletes wlan settings record for specified LAN service + * returns KErrNone on success, other error code if failed + */ + IMPORT_C TInt DeleteWlanSettingsForService(TUint32 aId); + + /** + * + * Not supported + * + */ + IMPORT_C void AddWlanTableL(); + + /** + * Sets the EAP information to current wlan settings (first do a GetWlanSettings{ForService}) + * returns + */ + IMPORT_C void SetEapDataL(const TEapArray &aEaps); + + /** + * Gets the current wlan settings EAP information (first do a GetWlanSettings{ForService}) + * returns + */ + IMPORT_C void GetEapDataL(TEapArray &aEaps); + + /** + * Sets aEasyWlan to ETrue if the aServiceID service is an easy wlan + * returns + */ + IMPORT_C TInt IsEasyWlan(TUint aServiceId, TBool &aEasyWlan); + + /** + * Gets WLAN Service Id's which correspond to IAP's using WLAN + * returns found WLANServiceTable and IAP record ID's in aServices + */ + IMPORT_C void GetIAPWlanServicesL( RArray& aServices); + + /** + * Get all secondary SSIDs for the specified LAN service. + * @since Series 60 3.0 + * @param aÍd ID of the LAN service. + * @param aSsids Secondary SSIDs for the service. + * @return KErrNone if successful, a Symbian error code otherwise. + */ + IMPORT_C TInt GetSecondarySsidsForService( + TUint32 aId, + RArray& aSsids ); + + /** + * Gets the current wlan settings EAP information (first do a GetWlanSettings{ForService}) + * returns + */ + IMPORT_C void GetEapDataL( RExpandedEapTypeArray &aEapsEnabled, RExpandedEapTypeArray &aEapsDisabled ); + + /** + * Sets the EAP information to current wlan settings (first do a GetWlanSettings{ForService}) + * returns + */ + IMPORT_C void SetEapDataL( RExpandedEapTypeArray &aEapsEnabled, RExpandedEapTypeArray &aEapsDisabled ); + +private: + + enum TWlanRecIdType + { + EWlanRecordId, + EWlanServiceId, + EWlanIapId, + }; + + // prepare iWLANServiceRecord (leaves if oom) + void CreateWLANServiceRecordL( TUint32 aId, TWlanRecIdType aType); + + /** + * Gets current settings + */ + void GetDataL(SWLANSettings& aSettings); + + /** + * Writes aSettings to current record + */ + void WriteDataL(SWLANSettings& aSettings); + + /** + * Reads current Wep Keys + */ + void ReadWepKeysL(SWLANSettings &aSettings); + + /** + * If secmode is other than WEP, clear wep keys + */ + void ClearWepKeys( SWLANSettings &aSettings); + + /** + * Returns the hex value of aValue, which originally is the ascii value of a hex digit + */ + void AsciiToHexValue( TUint8& aValue); + + /** + * Writes Wep Keys to current settings + */ + void WriteWepKeysL(SWLANSettings &aSettings); + + /** + * Unpacks wep keys from CommsDat format to TWep struct + */ + void UnPackWepKey( TDesC8& aPackedKey,TWep& aInputKey, TInt aKeyIndex); + + /** + * Packs wep keys from TWep to CommsDat format + */ + void PackWepKeyL(const TWep& aInputKey, CMDBField* aPackedKey); + + void DoSetEapDataL( TDesC& aData); + + void DoSetEapDataL( TDesC8& aEnabledData, TDesC8& aDisabledData ); + HBufC* DoGetEapDataLC(); + + void DoGetEapDataLC( HBufC8*& enabledEapsData, HBufC8*& disabledEapsData ); + void DoConnectL(); + +private: // Data + + // the current "row" + TInt iCurrentRecord; + + CMDBGenericRecord* iWLANRecord; + CMDBSession* iDBSession; + }; + +#endif // WLANSETTINGS_H