--- /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 <commsdattypesv1_1.h>
+#include <commsdat.h>
+
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <commsdat_partner.h>
+#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<KMaxMedTextLength> Name;
+
+ TUint32 ServiceID;
+ TUint32 ConnectionMode; // Infrastructure / adhoc
+ TBuf<KMaxSSIDLen> SSID; // network name
+
+ TBuf<KMaxSSIDLen> 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<KWlanWpaPskLength> 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<TEap> TEapArray;
+/**
+* Struct for containing expanded eap identifiers
+*/
+struct SEapExpandedType
+ {
+ TBuf8<KExpandedEapTypeSize> EapExpandedType; // Unique ID
+ };
+
+typedef RPointerArray<SEapExpandedType> RExpandedEapTypeArray;
+
+/**
+* Structure for storing information about a secondary SSID.
+*/
+struct TWlanSecondarySsid
+ {
+ TUint32 id;
+ TBuf<KMaxSSIDLen> ssid;
+ TBuf<KMaxSSIDLen> 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<SWlanIAPId>& 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<TWlanSecondarySsid>& 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<TDesC8>* 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