--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwtools/preparedefaultcommsdatabase/src/CommsDatSchema.cpp Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,2413 @@
+// Copyright (c) 1997-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:
+// Comms Data Schema Definitions (version 1.1)
+// Definitions of Symbian OS Comms Database Schema for Version 1.1.
+// This gives details of the value and value types in each field.
+// This information is used to validate data entered into the database.
+// The data schema is version controlled. New versions may be introduced from time to time.
+// Then older versions are marked as deprecated and given a planned removal date.
+// This version (1.1) was introduced with Release 9.1
+//
+//
+
+/**
+ @file
+*/
+
+
+
+// Internal headers
+#include <e32def.h>
+#include <metadatabase.h>
+#include <commsdattypeinfov1_1.h>
+#include <commsdattypesv1_1.h>
+
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <commsdat_internal.h>
+#include <commsdat_partner.h>
+#endif
+
+#include "Commsdat_Log.h"
+#include "CommsDatInternalDefs.h"
+
+#include <comms-infras/commsdatschema.h>
+
+
+
+using namespace CommsDat;
+
+
+/********************************************************************************************
+CONTENTS OF THIS FILE
+
+ 1/ Schema of field info for each table
+ Linking field name, field value type and constraints for the value
+
+ 2/ Utilities to validate meaning of element ids
+
+ 3/ Type Validation Functions
+ Lookup for type by id and
+ Function to check container type matches data type
+*/
+
+
+
+
+/*********************************************************************************************
+1/ Schema of type info for each field in each table
+*****************************************************
+
+See MetaDatabase.h for this definition:
+
+enum TFieldTypeAttributes
+**
+To express type information for all MetaDatabase fields
+@publishedAll
+@released
+**
+ {
+ ENoAttrs,
+ ENotNull,
+ };
+
+typedef struct
+**
+To express type information for all MetaDatabase fields
+@publishedAll
+@released
+**
+ {
+ const TMDBElementId iTypeId;
+ const TInt iValType;
+ const TFieldTypeAttributes iTypeAttr;
+ const TText * const iTypeName;
+
+ } SRecordTypeInfo;
+
+
+*/
+
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ const SRecordTypeInfo CommsDatSchemaV1_1::iParamsRecordBaseInfo[] = {
+ { KCDTIdParamsSTypeId, EInt, ENotNull, KCDTypeNameParamsSTypeId },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+#endif
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iServiceRecordBaseInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // this class
+ { KCDTIdServiceEnableLlmnr, EBool, ENoAttrs, KCDTypeNameServiceEnableLlmnr },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iBearerRecordBaseInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // this class
+ {KCDTIdBearerAgent, EText, ENotNull, KCDTypeNameBearerAgent },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ // 02/ Connection Prefs Record
+ const SRecordTypeInfo CommsDatSchemaV1_1::iConnectionPrefsRecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // this class
+ { KCDTIdRanking, EUint32, ENoAttrs, KCDTypeNameRanking },
+ { KCDTIdDirection, EInt, ENoAttrs, KCDTypeNameDirection },
+ { KCDTIdBearerSet, EUint32, ENoAttrs, KCDTypeNameBearerSet },
+ { KCDTIdDialogPref, EUint32, ENoAttrs, KCDTypeNameDialogPref },
+ { KCDTIdIAPLink, ELinkIAPRecord, ENoAttrs, KCDTypeNameIAP },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ // 03 Global Settings
+ const SRecordTypeInfo CommsDatSchemaV1_1::iGlobalSettingsRecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // this class
+ { KCDTIdGlobalWapAcessPoint, ELinkWAPAPRecord, ENoAttrs, KCDTypeNameWAPAccessPoint },
+ { KCDTIdMaxConnectionAttempts, EInt, ENoAttrs, KCDTypeNameMaxConnectionAttempts },
+ { KCDTIdMaxRedialAttempts, EInt, ENoAttrs, KCDTypeNameMaxRedialAttempts },
+ { KCDTIdSMSBearer, EInt, ENoAttrs, KCDTypeNameSMSBearer },
+ { KCDTIdSMSReceiveMode, EInt, ENoAttrs, KCDTypeNameSMSReceiveMode },
+ { KCDTIdGPRSAttachMode, EInt, ENoAttrs, KCDTypeNameGPRSAttachMode },
+ { KCDTIdAcceptIncomingGPRS, EInt, ENoAttrs, KCDTypeNameAcceptIncomingGPRS },
+ { KCDTIdGPRSClassCBearer, EInt, ENoAttrs, KCDTypeNameGPRSClassCBearer },
+ { KCDTIdModemDataFax, ELinkModemBearerRecord, ENoAttrs, KCDTypeNameModemDataFax },
+ { KCDTIdModemPhoneServicesSMS, ELinkModemBearerRecord, ENoAttrs, KCDTypeNameModemPhoneServicesSMS },
+ { KCDTIdLocationDataFax, ELinkLocationRecord, ENoAttrs, KCDTypeNameLocationDataFax },
+ { KCDTIdLocationPhoneServicesSMS, ELinkLocationRecord, ENoAttrs, KCDTypeNameLocationPhoneServicesSMS },
+ { KCDTIdMaxMBufHeap, EInt, ENoAttrs, KCDTypeNameMaxMBufHeap },
+ { KCDTIdDefaultAgent, ELinkAgentLookupRecord, ENoAttrs, KCDTypeNameDefaultAgent },
+ { KCDTIdDefaultNetwork, ELinkNetworkRecord, ENoAttrs, KCDTypeNameDefaultNetwork },
+ { KCDTIdBearerAvailabilityCheckTSY, EText, ENoAttrs, KCDTypeNameBearerAvailabilityCheckTSY },
+ { KCDTIdDefaultSnap, ELinkAPRecord, ENoAttrs, KCDTypeNameDefaultSnap },
+ //Name is env dependendent... :((
+ { KCDTIdPromptForSnap, EBool, ENoAttrs, KCDTypeNamePromptForSnap },
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ { KCDTIdDefaultTier, ELinkTierRecord, ENoAttrs, KCDTypeNameDefaultTier },
+#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ { KCDTIdRegulatoryDomain, EInt, ENoAttrs, KCDTypeNameRegulatoryDomain },
+ { KCDTIdWmmEnabled, EBool, ENoAttrs, KCDTypeNameWmmEnabled },
+ { KCDTIdEnableCountryCode, EBool, ENoAttrs, KCDTypeNameEnableCountryCode },
+ { KCDTIdDefaultRegulatoryDomain, EInt, ENoAttrs, KCDTypeNameDefaultRegulatoryDomain },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ // 04/ Network Record
+ const SRecordTypeInfo CommsDatSchemaV1_1::iNetworkRecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // this class
+ { KCDTIdHostName, EText, ENoAttrs, KCDTypeNameHostName },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ // 05/ Location record
+ const SRecordTypeInfo CommsDatSchemaV1_1::iLocationRecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // this class
+ { KCDTIdIntlPrefixCode, EText, ENoAttrs, KCDTypeNameIntlPrefixCode },
+ { KCDTIdNatPrefixCode, EText, ENoAttrs, KCDTypeNameNatPrefixCode },
+ { KCDTIdNatCode, EText, ENoAttrs, KCDTypeNameNatCode },
+ { KCDTIdAreaCode, EText, ENoAttrs, KCDTypeNameAreaCode },
+ { KCDTIdDialOutCode, EText, ENoAttrs, KCDTypeNameDialOutCode },
+ { KCDTIdDisableCallWaitingCode, EText, ENoAttrs, KCDTypeNameDisableCallWaitingCode },
+ { KCDTIdMobile, EBool, ENotNull, KCDTypeNameMobile },
+ { KCDTIdUsePulseDial, EBool, ENotNull, KCDTypeNameUsePulseDial },
+ { KCDTIdWaitForDialTone, EBool, ENotNull, KCDTypeNameWaitForDialTone },
+ { KCDTIdPauseAfterDialOut, EUint32, ENotNull, KCDTypeNamePauseAfterDialOut },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ // 06/ IAP Record
+ const SRecordTypeInfo CommsDatSchemaV1_1::iIAPRecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // this class
+ { KCDTIdIAPServiceType, EText, ENotNull, KCDTypeNameServiceType },
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ { KCDTIdIAPService, ELink, ENotNull, KCDTypeNameService },
+#else
+ { KCDTIdIAPService, EInt, ENotNull, KCDTypeNameService },
+#endif //SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ { KCDTIdIAPBearerType, EText, ENotNull, KCDTypeNameBearerType },
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ { KCDTIdIAPBearer, ELink, ENotNull, KCDTypeNameBearer },
+#else
+ { KCDTIdIAPBearer, EInt, ENotNull, KCDTypeNameBearer },
+#endif //SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ { KCDTIdIAPNetwork, ELinkNetworkRecord, ENotNull, KCDTypeNameIAPNetwork },
+ { KCDTIdIAPNetworkWeighting, EUint32, ENotNull, KCDTypeNameNetworkWeighting },
+ { KCDTIdIAPLocation, ELinkLocationRecord,ENotNull, KCDTypeNameLocation },
+#ifdef SYMBIAN_NETWORKING_UMTSR5
+ { KCDTIdIAPAppSid, EUint32, ENotNull, KCDTypeNameAppSid },
+#endif
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iWAPAccessPointRecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // this class
+ { KCDTIdWAPCurrentBearer, EText, ENotNull, KCDTypeNameWAPCurrentBearer },
+ { KCDTIdWAPStartPage, ELongText, ENoAttrs, KCDTypeNameWAPStartPage },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iDialOutISPRecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // this class
+ { KCDTIdDescription, EText, ENoAttrs, KCDTypeNameDescription },
+ { KCDTIdType, EInt, ENoAttrs, KCDTypeNameType },
+ { KCDTIdDefaultTelNum, EText, ENoAttrs, KCDTypeNameDefaultTelNum },
+ { KCDTIdDialResolution, EBool, ENotNull, KCDTypeNameDialResolution },
+ { KCDTIdChargecard, ELinkChargecardRecord, ENoAttrs, KCDTypeNameChargecard },
+ { KCDTIdUseLoginScript, EBool, ENotNull, KCDTypeNameUseLoginScript },
+ { KCDTIdLoginScript, ELongText, ENoAttrs, KCDTypeNameLoginScript },
+ { KCDTIdPromptForLogin, EBool, ENotNull, KCDTypeNamePromptForLogin },
+ { KCDTIdLoginName, EMedText, ENoAttrs, KCDTypeNameLoginName },
+ { KCDTIdLoginPass, EMedText, ENoAttrs, KCDTypeNameLoginPass },
+ { KCDTIdDisplayPct, EBool, ENoAttrs, KCDTypeNameDisplayPct },
+ { KCDTIdIfParams, EText, ENoAttrs, KCDTypeNameIfParams },
+ { KCDTIdIfNetworks, EText, ENoAttrs, KCDTypeNameIfNetworks },
+ { KCDTIdIfPromptForAuth, EBool, ENotNull, KCDTypeNameIfPromptForAuth },
+ { KCDTIdIfAuthName, EMedText, ENoAttrs, KCDTypeNameIfAuthName },
+ { KCDTIdIfAuthPass, EMedText, ENoAttrs, KCDTypeNameIfAuthPass },
+ { KCDTIdIfAuthRetries, EInt, ENoAttrs, KCDTypeNameIfAuthRetries },
+ { KCDTIdIfCallbackEnabled, EBool, ENoAttrs, KCDTypeNameIfCallbackEnabled },
+ { KCDTIdIfCallbackType, EInt, ENoAttrs, KCDTypeNameIfCallbackType },
+ { KCDTIdIfCallbackInfo, EDesC8, ENoAttrs, KCDTypeNameIfCallbackInfo },
+ { KCDTIdCallbackTimeout, EInt, ENoAttrs, KCDTypeNameCallbackTimeout },
+ { KCDTIdIfServerMode, EBool, ENoAttrs, KCDTypeNameIfServerMode },
+ { KCDTIdIpAddrFromServer, EBool, ENotNull, KCDTypeNameIpAddrFromServer },
+ { KCDTIdIpAddr, EText, ENoAttrs, KCDTypeNameIpAddr },
+ { KCDTIdIpNetMask, EText, ENoAttrs, KCDTypeNameIpNetMask },
+ { KCDTIdIpGateway, EText, ENoAttrs, KCDTypeNameIpGateway },
+ { KCDTIdIpDNSAddrFromServer, EBool, ENotNull, KCDTypeNameIpDNSAddrFromServer },
+ { KCDTIdIpNameServer1, EText, ENoAttrs, KCDTypeNameIpNameServer1 },
+ { KCDTIdIpNameServer2, EText, ENoAttrs, KCDTypeNameIpNameServer2 },
+ { KCDTIdIp6DNSAddrFromServer, EBool, ENoAttrs, KCDTypeNameIp6DNSAddrFromServer },
+ { KCDTIdIp6NameServer1, EText, ENoAttrs, KCDTypeNameIp6NameServer1 },
+ { KCDTIdIp6NameServer2, EText, ENoAttrs, KCDTypeNameIp6NameServer2 },
+ { KCDTIdIpAddrLeaseValidFrom, EText, ENoAttrs, KCDTypeNameIpAddrLeaseValidFrom },
+ { KCDTIdIpAddrLeaseValidTo, EText, ENoAttrs, KCDTypeNameIpAddrLeaseValidTo },
+ { KCDTIdConfigDaemonManagerName,EText, ENoAttrs, KCDTypeNameConfigDaemonManagerName },
+ { KCDTIdConfigDaemonName, EText, ENoAttrs, KCDTypeNameConfigDaemonName },
+ { KCDTIdEnableIpHeaderComp, EBool, ENoAttrs, KCDTypeNameEnableIpHeaderComp },
+ { KCDTIdEnableLCPExtension, EBool, ENoAttrs, KCDTypeNameEnableLcpExtensions },
+ { KCDTIdDisablePlainTextAuth, EBool, ENoAttrs, KCDTypeNameDisablePlainTextAuth },
+ { KCDTIdEnableSwComp, EBool, ENoAttrs, KCDTypeNameEnableSwComp },
+ { KCDTIdBearerName, EInt, ENoAttrs, KCDTypeNameBearerName },
+ { KCDTIdBearerSpeed, EInt, ENoAttrs, KCDTypeNameBearerSpeed },
+ { KCDTIdBearerCe, EInt, ENoAttrs, KCDTypeNameBearerCe },
+ { KCDTIdInitString, EDesC8, ENoAttrs, KCDTypeNameInitString },
+ { KCDTIdBearerType, EInt, ENoAttrs, KCDTypeNameISPBearerType },
+ { KCDTIdChannelCoding, EInt, ENoAttrs, KCDTypeNameChannelCoding },
+ { KCDTIdAiur, EInt, ENoAttrs, KCDTypeNameAiur },
+ { KCDTIdRequestedTimeSlots, EInt, ENoAttrs, KCDTypeNameRequestedTimeSlots },
+ { KCDTIdMaximumTimeSlots, EInt, ENoAttrs, KCDTypeNameMaximumTimeSlots },
+ { KCDTIdBearerService, EInt, ENoAttrs, KCDTypeNameBearerService },
+ { KCDTIdBearerProtocol, EInt, ENoAttrs, KCDTypeNameBearerProtocol },
+ { KCDTIdRlpVersion, EInt, ENoAttrs, KCDTypeNameRlpVersion },
+ { KCDTIdIwfToMs, EInt, ENoAttrs, KCDTypeNameIwfToMs },
+ { KCDTIdMsToIwf, EInt, ENoAttrs, KCDTypeNameMsToIwf },
+ { KCDTIdAckTimer, EInt, ENoAttrs, KCDTypeNameAckTimer },
+ { KCDTIdRetransmissionAttempts, EInt, ENoAttrs, KCDTypeNameRetransmissionAttempts },
+ { KCDTIdResequencePeriod, EInt, ENoAttrs, KCDTypeNameResequencePeriod },
+ { KCDTIdV42Compression, EInt, ENoAttrs, KCDTypeNameV42Compression },
+ { KCDTIdV42Codewords, EInt, ENoAttrs, KCDTypeNameV42Codewords },
+ { KCDTIdV42MaxLength, EInt, ENoAttrs, KCDTypeNameV42MaxLength },
+ { KCDTIdAsymmetry, EInt, ENoAttrs, KCDTypeNameAsymmetry },
+ { KCDTIdUserInitUpgrade, EBool, ENoAttrs, KCDTypeNameUserInitUpgrade },
+ { KCDTIdUseEdge, EBool, ENoAttrs, KCDTypeNameUseEdge },
+ /**** add new fields above this comment ****/
+ // service base class
+ { KCDTIdServiceEnableLlmnr, EBool, ENoAttrs, KCDTypeNameServiceEnableLlmnr },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ // 09/ DIAL IN ISP RECORD
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iDialInISPRecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // this class
+ { KCDTIdDINDescription, EText, ENoAttrs, KCDTypeNameDescription },
+ { KCDTIdDINType, EInt, ENoAttrs, KCDTypeNameType },
+ { KCDTIdDINUseLoginScript, EBool, ENoAttrs, KCDTypeNameUseLoginScript },
+ { KCDTIdDINLoginScript, ELongText, ENoAttrs, KCDTypeNameLoginScript },
+ { KCDTIdDINAuthentication, EInt, ENoAttrs, KCDTypeNameAuthentication },
+ { KCDTIdDINIfAuthRetries, EInt, ENoAttrs, KCDTypeNameIfAuthRetries },
+ { KCDTIdDINIfParams, EText, ENoAttrs, KCDTypeNameIfParams },
+ { KCDTIdDINIfNetworks, EText, ENoAttrs, KCDTypeNameIfNetworks },
+ { KCDTIdDINIpAddrFromServer, EBool, ENotNull, KCDTypeNameIpAddrFromServer },
+ { KCDTIdDINIpAddr, EText, ENoAttrs, KCDTypeNameIpAddr },
+ { KCDTIdDINIpNetMask, EText, ENoAttrs, KCDTypeNameIpNetMask },
+ { KCDTIdDINIpGateway, EText, ENoAttrs, KCDTypeNameIpGateway },
+ { KCDTIdDINIpDNSAddrFromServer, EBool, ENotNull, KCDTypeNameIpDNSAddrFromServer },
+ { KCDTIdDINIpNameServer1, EText, ENoAttrs, KCDTypeNameIpNameServer1 },
+ { KCDTIdDINIpNameServer2, EText, ENoAttrs, KCDTypeNameIpNameServer2 },
+ { KCDTIdDINIp6DNSAddrFromServer, EBool, ENoAttrs, KCDTypeNameIp6DNSAddrFromServer },
+ { KCDTIdDINIp6NameServer1, EText, ENoAttrs, KCDTypeNameIp6NameServer1 },
+ { KCDTIdDINIp6NameServer2, EText, ENoAttrs, KCDTypeNameIp6NameServer2 },
+ { KCDTIdDINEnableIpHeaderComp, EBool, ENoAttrs, KCDTypeNameEnableIpHeaderComp },
+ { KCDTIdDINEnableLCPExtensions, EBool, ENoAttrs, KCDTypeNameEnableLcpExtensions },
+ { KCDTIdDINDisablePlainTextAuth, EBool, ENoAttrs, KCDTypeNameDisablePlainTextAuth },
+ { KCDTIdDINEnableSwComp, EBool, ENoAttrs, KCDTypeNameEnableSwComp },
+ { KCDTIdDINBearerName, EInt, ENoAttrs, KCDTypeNameBearerName },
+ { KCDTIdDINBearerSpeed, EInt, ENoAttrs, KCDTypeNameBearerSpeed },
+ { KCDTIdDINBearerCe, EInt, ENoAttrs, KCDTypeNameBearerCe },
+ { KCDTIdDINInitString, EDesC8, ENoAttrs, KCDTypeNameInitString },
+ { KCDTIdDINUseEdge, EBool, ENoAttrs, KCDTypeNameUseEdge },
+ /**** add new fields above this comment ****/
+ // service base class
+ { KCDTIdServiceEnableLlmnr, EBool, ENoAttrs, KCDTypeNameServiceEnableLlmnr },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ // 0A/ LAN Service Record
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iLANServiceRecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // this class
+ { KCDTIdLANIfNetworks, EText, ENoAttrs, KCDTypeNameIfNetworks },
+ { KCDTIdLANIpNetMask, EText, ENoAttrs, KCDTypeNameIpNetMask },
+ { KCDTIdLANIpGateway, EText, ENoAttrs, KCDTypeNameIpGateway },
+ { KCDTIdLANIpAddrFromServer, EBool, ENotNull, KCDTypeNameIpAddrFromServer },
+ { KCDTIdLANIpAddr, EText, ENoAttrs, KCDTypeNameIpAddr },
+ { KCDTIdLANIpDNSAddrFromServer, EBool, ENotNull, KCDTypeNameIpDNSAddrFromServer },
+ { KCDTIdLANIpNameServer1, EText, ENoAttrs, KCDTypeNameIpNameServer1 },
+ { KCDTIdLANIpNameServer2, EText, ENoAttrs, KCDTypeNameIpNameServer2 },
+ { KCDTIdLANIp6DNSAddrFromServer, EBool, ENoAttrs, KCDTypeNameIp6DNSAddrFromServer },
+ { KCDTIdLANIp6NameServer1, EText, ENoAttrs, KCDTypeNameIp6NameServer1 },
+ { KCDTIdLANIp6NameServer2, EText, ENoAttrs, KCDTypeNameIp6NameServer2 },
+ { KCDTIdLANIpAddrLeaseValidFrom, EText, ENoAttrs, KCDTypeNameIpAddrLeaseValidFrom },
+ { KCDTIdLANIpAddrLeaseValidTo, EText, ENoAttrs, KCDTypeNameIpAddrLeaseValidTo },
+ { KCDTIdLANConfigDaemonManagerName, EText, ENoAttrs, KCDTypeNameConfigDaemonManagerName },
+ { KCDTIdLANConfigDaemonName, EText, ENoAttrs, KCDTypeNameConfigDaemonName },
+ { KCDTIdLANServiceExtensionTableName, EText, ENoAttrs, KCDTypeNameServiceExtensionTableName },
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ { KCDTIdLANServiceExtensionTableRecordId, ELink, ENoAttrs, KCDTypeNameServiceExtensionTableRecordId },
+#else
+ { KCDTIdLANServiceExtensionTableRecordId, EInt, ENoAttrs, KCDTypeNameServiceExtensionTableRecordId },
+#endif //SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ /**** add new fields above this comment ****/
+ // service base class
+ { KCDTIdServiceEnableLlmnr, EBool, ENoAttrs, KCDTypeNameServiceEnableLlmnr },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iWLANServiceExtRecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdWLANProfile, EText, ENotNull, KCDTypeNameWLANProfile },
+ { KCDTIdWLANSSID, EText, ENotNull, KCDTypeNameWLANSSID },
+ { KCDTIdWLANEncryptionStatus, EInt, ENoAttrs, KCDTypeNameWLANEncryptionStatus },
+ { KCDTIdWLANEncryptionType, EInt, ENoAttrs, KCDTypeNameWLANEncryptionType },
+ { KCDTIdWLANDefaultWepKey , EInt, ENoAttrs, KCDTypeNameWLANDefaultWepKey },
+ { KCDTIdWLANEncryptKey1Valid, EInt, ENoAttrs, KCDTypeNameWLANEncryptKey1Valid },
+ { KCDTIdWLANWepKey1, EText, ENoAttrs, KCDTypeNameWLANWepKey1 },
+ { KCDTIdWLANEncryptKey2Valid, EInt, ENoAttrs, KCDTypeNameWLANEncryptKey2Valid },
+ { KCDTIdWLANWepKey2, EText, ENoAttrs, KCDTypeNameWLANWepKey2 },
+ { KCDTIdWLANEncryptKey3Valid, EInt, ENoAttrs, KCDTypeNameWLANEncryptKey3Valid },
+ { KCDTIdWLANWepKey3, EText, ENoAttrs, KCDTypeNameWLANWepKey3 },
+ { KCDTIdWLANEncryptKey4Valid, EInt, ENoAttrs, KCDTypeNameWLANEncryptKey4Valid },
+ { KCDTIdWLANWepKey4, EText, ENoAttrs, KCDTypeNameWLANWepKey4 },
+ { KCDTIdWLANRanking, EInt, ENoAttrs, KCDTypeNameWLANRanking },
+ { KCDTIdWLANDialogPref, EInt, ENoAttrs, KCDTypeNameWLANDialogPref },
+ { KCDTIdWLANNetworkType, EInt, ENoAttrs, KCDTypeNameWLANNetworkType },
+ { KCDTIdWLANFragThres, EInt, ENoAttrs, KCDTypeNameWLANFragThres },
+ { KCDTIdWLANRTSThres, EInt, ENoAttrs, KCDTypeNameWLANRTSThres },
+ { KCDTIdWLANDesTransRate, EInt, ENoAttrs, KCDTypeNameWLANDesTransRate },
+ { KCDTIdWLANBeaconInt, EInt, ENoAttrs, KCDTypeNameWLANBeaconInt },
+ { KCDTIdWLANChannelId, EInt, ENoAttrs, KCDTypeNameWLANChannelId },
+ { KCDTIdWLANAuthenticationMode, EInt, ENoAttrs, KCDTypeNameWLANAuthenticationMode },
+ { KCDTIdWLANPowerSaveMode, EInt, ENoAttrs, KCDTypeNameWLANPowerSaveMode },
+ { KCDTIdWLANAllowUnencryptMode, EInt, ENoAttrs, KCDTypeNameWLANAllowUnencryptMode },
+ { KCDTIdWLANAllowShortPre, EInt, ENoAttrs, KCDTypeNameWLANAllowShortPre },
+ { KCDTIdWLANPreambleType, EInt, ENoAttrs, KCDTypeNameWLANPreambleType },
+ { KCDTIdWLANTxPowerLevel, EInt, ENoAttrs, KCDTypeNameWLANTxPowerLevel },
+ { KCDTIdWLANEapPresharedKey, EMedText, ENoAttrs, KCDTypeNameWLANEapPresharedKey },
+ { KCDTIdWLANRegDomain, EInt, ENoAttrs, KCDTypeNameWLANRegDomain },
+ { KCDTIdWLANSecData, ELinkEAPSecRecord, ENoAttrs, KCDTypeNameWLANSecData },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iVPNServiceRecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdVPNPolicyName, EText, ENotNull, KCDTypeNameVPNPolicyName },
+ { KCDTIdVPNIAPRecord, ELinkIAPRecord, ENoAttrs, KCDTypeNameVPNIAPRecord },
+ { KCDTIdVPNNetwork, ELinkNetworkRecord, ENoAttrs, KCDTypeNameVPNNetwork },
+ /**** add new fields above this comment ****/
+ // service base class
+ { KCDTIdServiceEnableLlmnr, EBool, ENoAttrs, KCDTypeNameServiceEnableLlmnr },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iUmtsR99QoSAndOnTableRecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // this class
+ { KCDTIdWCDMAReqTrafficClass, EUint32, ENoAttrs, KCDTypeNameGPRSReqTrafficClass },
+ { KCDTIdWCDMAMinTrafficClass, EUint32, ENoAttrs, KCDTypeNameGPRSMinTrafficClass },
+ { KCDTIdWCDMAReqDeliveryOrder, EUint32, ENoAttrs, KCDTypeNameGPRSReqDeliveryOrder },
+ { KCDTIdWCDMAMinDeliveryOrder , EUint32, ENoAttrs, KCDTypeNameGPRSMinDeliveryOrder },
+ { KCDTIdWCDMAReqDeliverErroneousSDU, EUint32, ENoAttrs, KCDTypeNameGPRSReqDeliverErroneousSDU },
+ { KCDTIdWCDMAMinDeliverErroneousSDU, EUint32, ENoAttrs, KCDTypeNameGPRSMinDeliverErroneousSDU },
+ { KCDTIdWCDMAReqMaxSDUSize, EInt, ENoAttrs, KCDTypeNameGPRSReqMaxSDUSize },
+ { KCDTIdWCDMAMinAcceptableMaxSDUSize, EInt, ENoAttrs, KCDTypeNameGPRSMinAcceptableMaxSDUSize },
+ { KCDTIdWCDMAReqMaxUplinkRate, EInt, ENoAttrs, KCDTypeNameGPRSReqMaxUplinkRate },
+ { KCDTIdWCDMAReqMinUplinkRate, EInt, ENoAttrs, KCDTypeNameGPRSReqMinUplinkRate },
+ { KCDTIdWCDMAReqMaxDownlinkRate, EInt, ENoAttrs, KCDTypeNameGPRSReqMaxDownlinkRate },
+ { KCDTIdWCDMAReqMinDownlinkRate, EInt, ENoAttrs, KCDTypeNameGPRSReqMinDownlinkRate },
+ { KCDTIdWCDMAReqBER, EUint32, ENoAttrs, KCDTypeNameGPRSReqBER },
+ { KCDTIdWCDMAMaxBER, EUint32, ENoAttrs, KCDTypeNameGPRSMaxBER },
+ { KCDTIdWCDMAReqSDUErrorRatio, EUint32, ENoAttrs, KCDTypeNameGPRSReqSDUErrorRatio },
+ { KCDTIdWCDMAMaxSDUErrorRatio, EUint32, ENoAttrs, KCDTypeNameGPRSMaxSDUErrorRatio },
+ { KCDTIdWCDMAReqTrafficHandlingPriority, EUint32, ENoAttrs, KCDTypeNameGPRSReqTrafficHandlingPriority },
+ { KCDTIdWCDMAMinTrafficHandlingPriority, EUint32, ENoAttrs, KCDTypeNameGPRSMinTrafficHandlingPriority },
+ { KCDTIdWCDMAReqTransferDelay, EInt, ENoAttrs, KCDTypeNameGPRSReqTransferDelay },
+ { KCDTIdWCDMAMaxTransferDelay, EInt, ENoAttrs, KCDTypeNameGPRSMaxTransferDelay },
+ { KCDTIdWCDMAReqGuaranteedUplinkRate, EInt, ENoAttrs, KCDTypeNameGPRSReqGuaranteedUplinkRate },
+ { KCDTIdWCDMAMinGuaranteedUplinkRate, EInt, ENoAttrs, KCDTypeNameGPRSMinGuaranteedUplinkRate },
+ { KCDTIdWCDMAReqGuaranteedDownlinkRate, EInt, ENoAttrs, KCDTypeNameGPRSReqGuaranteedDownlinkRate },
+ { KCDTIdWCDMAMinGuaranteedDownlinkRate, EInt, ENoAttrs, KCDTypeNameGPRSMinGuaranteedDownlinkRate },
+ { KCDTIdWCDMASignallingIndication, EBool, ENoAttrs, KCDTypeNameGPRSSignallingIndication },
+ { KCDTIdWCDMAImCmSignallingIndication, EBool, ENoAttrs, KCDTypeNameGPRSImCnSignallingIndication },
+ { KCDTIdWCDMASourceStatisticsDescriptor, EUint32, ENoAttrs, KCDTypeNameGPRSSourceStatisticsDescriptor },
+ { 0, 0, ENoAttrs, KCDNull }
+
+ };
+
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iWCDMAPacketServiceRecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdAPN, EMedText, ENoAttrs, KCDTypeNameGPRSAPN },
+ { KCDTIdWCDMPDPType, EInt, ENoAttrs, KCDTypeNameGPRSPDPType },
+ { KCDTIdWCDMAPDPAddress, EText, ENoAttrs, KCDTypeNameGPRSPDPAddress },
+ { KCDTIdReqPrecedence, EInt, ENoAttrs, KCDTypeNameGPRSReqPrecedence },
+ { KCDTIdReqDelay, EInt, ENoAttrs, KCDTypeNameGPRSReqDelay },
+ { KCDTIdReqReliability, EInt, ENoAttrs, KCDTypeNameGPRSReqReliability },
+ { KCDTIdReqPeakThroughput, EInt, ENoAttrs, KCDTypeNameGPRSReqPeakThroughput },
+ { KCDTIdReqMeanThroughput, EInt, ENoAttrs, KCDTypeNameGPRSReqMeanThroughput },
+ { KCDTIdMinPrecedence, EInt, ENoAttrs, KCDTypeNameGPRSMinPrecedence },
+ { KCDTIdMinDelay, EInt, ENoAttrs, KCDTypeNameGPRSMinDelay },
+ { KCDTIdMinReliability, EInt, ENoAttrs, KCDTypeNameGPRSMinReliability },
+ { KCDTIdMinPeakThroughput, EInt, ENoAttrs, KCDTypeNameGPRSMinPeakThroughput },
+ { KCDTIdMinMeanThroughput, EInt, ENoAttrs, KCDTypeNameGPRSMinMeanThroughput },
+ { KCDTIdWCDMADataCompression, EBool, ENoAttrs, KCDTypeNameGPRSDataCompression },
+ { KCDTIdWCDMAHeaderCompression, EBool, ENoAttrs, KCDTypeNameGPRSHeaderCompression },
+ { KCDTIdWCDMAUseEdge, EBool, ENoAttrs, KCDTypeNameGPRSUseEdge },
+ { KCDTIdWCDMAAnonymousAccess, EBool, ENoAttrs, KCDTypeNameGPRSAnonymousAccess },
+ { KCDTIdWCDMAIfParams, EText, ENoAttrs, KCDTypeNameGPRSIfParams },
+ { KCDTIdWCDMAIfNetworks, EText, ENoAttrs, KCDTypeNameIfNetworks },
+ { KCDTIdWCDMAIfPromptForAuth, EBool, ENoAttrs, KCDTypeNameGPRSIfPromptForAuth },
+ { KCDTIdWCDMAIfAuthName, EText, ENoAttrs, KCDTypeNameGPRSIfAuthName },
+ { KCDTIdWCDMAIfAuthPass, EText, ENoAttrs, KCDTypeNameGPRSIfAuthPass },
+ { KCDTIdWCDMAIfAuthRetries, EInt, ENoAttrs, KCDTypeNameGPRSIfAuthRetries },
+ { KCDTIdWCDMAIPNetMask, EText, ENoAttrs, KCDTypeNameGPRSIPNetMask },
+ { KCDTIdWCDMAIPGateway, EText, ENoAttrs, KCDTypeNameGPRSIPGateway },
+ { KCDTIdWCDMAIPAddrFromServer, EBool, ENoAttrs, KCDTypeNameGPRSIPAddrFromServer },
+ { KCDTIdWCDMAIPAddr, EText, ENoAttrs, KCDTypeNameGPRSIPAddr },
+ { KCDTIdWCDMAIPDNSAddrFromServer, EBool, ENoAttrs, KCDTypeNameGPRSIPDNSAddrFromServer },
+ { KCDTIdWCDMAIPNameServer1, EText, ENoAttrs, KCDTypeNameGPRSIPNameServer1 },
+ { KCDTIdWCDMAIPNameServer2, EText, ENoAttrs, KCDTypeNameGPRSIPNameServer2 },
+ { KCDTIdWCDMAIP6DNSAddrFromServer, EBool, ENoAttrs, KCDTypeNameGPRSIP6DNSAddrFromServer },
+ { KCDTIdWCDMAIP6NameServer1, EText, ENoAttrs, KCDTypeNameGPRSIP6NameServer1 },
+ { KCDTIdWCDMAIP6NameServer2, EText, ENoAttrs, KCDTypeNameGPRSIP6NameServer2 },
+ { KCDTIdWCDMAIPAddrLeaseValidFrom, EText, ENoAttrs, KCDTypeNameGPRSIPAddrLeaseValidFrom },
+ { KCDTIdWCDMAIPAddrLeaseValidTo, EText, ENoAttrs, KCDTypeNameGPRSIPAddrLeaseValidTo },
+ { KCDTIdWCDMAConfigDaemonManagerName, EText, ENoAttrs, KCDTypeNameGPRSConfigDaemonManagerName },
+ { KCDTIdWCDMAConfigDaemonName, EText, ENoAttrs, KCDTypeNameGPRSConfigDaemonName },
+ { KCDTIdWCDMAEnableLCPExtensions, EBool, ENoAttrs, KCDTypeNameGPRSEnableLCPExtensions },
+ { KCDTIdWCDMADisablePlainTextAuth, EBool, ENoAttrs, KCDTypeNameGPRSDisablePlainTextAuth },
+ { KCDTIdAPType, EInt, ENoAttrs, KCDTypeNameGPRSAPType },
+ { KCDTIdQOSWarningTimeOut, EInt, ENoAttrs, KCDTypeNameGPRSQOSWarningTimeOut },
+ { KCDTIdUmtsR99QoSAndOn, ELinkUMTSR99QoSRecord, ENoAttrs, KCDTypeNameUmtsR99QoSAndOn },
+ /**** add new fields above this comment ****/
+ // service base class
+ { KCDTIdServiceEnableLlmnr, EBool, ENoAttrs, KCDTypeNameServiceEnableLlmnr },
+ { KCDTIdR5DataCompression, EInt, ENoAttrs, KCDTypeNameR5DataCompression },
+ { KCDTIdR5HeaderCompression, EInt, ENoAttrs, KCDTypeNameR5HeaderCompression },
+ { KCDTIdPacketFlowIdentifier, EInt, ENoAttrs, KCDTypeNamePacketFlowIdentifier },
+ { KCDTIdUmtsGprsRelease, EInt, ENoAttrs, KCDTypeNameUmtsGprsRelease },
+
+
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ //
+ const SRecordTypeInfo CommsDatSchemaV1_1::iDefaultWCDMARecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdDefaultGPRSUsage, EUint32, ENoAttrs, KCDTypeNameUsage },
+ { KCDTIdDefaultGPRSAPN, EMedText, ENoAttrs, KCDTypeNameAPN },
+ { KCDTIdDefaultGPRSPDPType, EUint32, ENotNull, KCDTypeNamePDPType },
+ { KCDTIdDefaultGPRSPDPAddress, EText, ENoAttrs, KCDTypeNamePDPAddress },
+ { KCDTIdDefaultGPRSPrecedence, EUint32, ENoAttrs, KCDTypeNamePrecedence },
+ { KCDTIdDefaultGPRSDelay, EUint32, ENoAttrs, KCDTypeNameDelay },
+ { KCDTIdDefaultGPRSReliability, EUint32, ENoAttrs, KCDTypeNameReliability },
+ { KCDTIdDefaultGPRSPeakThroughput, EUint32, ENoAttrs, KCDTypeNamePeakThroughput },
+ { KCDTIdDefaultGPRSMeanThroughput, EUint32, ENoAttrs, KCDTypeNameMeanThroughput },
+ { KCDTIdDefaultGPRSMinPrecedence, EUint32, ENoAttrs, KCDTypeNameMinPrecedence },
+ { KCDTIdDefaultGPRSMinDelay, EUint32, ENoAttrs, KCDTypeNameMinDelay },
+ { KCDTIdDefaultGPRSMinReliability, EUint32, ENoAttrs, KCDTypeNameMinReliability },
+ { KCDTIdDefaultGPRSMinPeakThroughput, EUint32, ENoAttrs, KCDTypeNameMinPeakThroughput },
+ { KCDTIdDefaultGPRSMinMeanThroughput, EUint32, ENoAttrs, KCDTypeNameMinMeanThroughput },
+ { KCDTIdDefaultGPRSDataCompression, EBool, ENoAttrs, KCDTypeNameDataCompression },
+ { KCDTIdDefaultGPRSHeaderCompression, EBool, ENoAttrs, KCDTypeNameHeaderCompression },
+ { KCDTIdDefaultGPRSUseEdge, EBool, ENoAttrs, KCDTypeNameGPRSUseEdge },
+ { KCDTIdDefaultGPRSAnonymousAccess, EBool, ENoAttrs, KCDTypeNameAnonymousAccess },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iModemBearerRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdNifName, EText, ENoAttrs, KCDTypeNameNifName },
+ { KCDTIdPortName, EText, ENoAttrs, KCDTypeNamePortName },
+ { KCDTIdTsyName, EText, ENoAttrs, KCDTypeNameTsyName },
+ { KCDTIdCsyName, EText, ENoAttrs, KCDTypeNameCsyName },
+ { KCDTIdLastSocketActivityTimeout, EInt, ENoAttrs, KCDTypeNameLastSocketActivityTimeout },
+ { KCDTIdLastSessionClosedTimeout, EInt, ENoAttrs, KCDTypeNameLastSessionClosedTimeout },
+ { KCDTIdLastSocketClosedTimeout, EInt, ENoAttrs, KCDTypeNameLastSocketClosedTimeout },
+ { KCDTIdDataBits, EInt, ENoAttrs, KCDTypeNameDataBits },
+ { KCDTIdStopBits, EInt, ENoAttrs, KCDTypeNameStopBits },
+ { KCDTIdParity, EInt, ENoAttrs, KCDTypeNameParity },
+ { KCDTIdRate, EInt, ENoAttrs, KCDTypeNameRate },
+ { KCDTIdHandshaking, EInt, ENoAttrs, KCDTypeNameHandShaking },
+ { KCDTIdSpecialRate, EInt, ENoAttrs, KCDTypeNameSpecialRate },
+ { KCDTIdXonChar, EInt, ENoAttrs, KCDTypeNameXonChar },
+ { KCDTIdXoffChar, EInt, ENoAttrs, KCDTypeNameXoffChar },
+ { KCDTIdFaxClassPref, EInt, ENoAttrs, KCDTypeNameFaxClassPref },
+ { KCDTIdSpeakerPref, EInt, ENoAttrs, KCDTypeNameSpeakerPref },
+ { KCDTIdSpeakerVolPref, EInt, ENoAttrs, KCDTypeNameSpeakerVolPref },
+ { KCDTIdModemInitString, EDesC8, ENoAttrs, KCDTypeNameModemInitString },
+ { KCDTIdDataInitString, EDesC8, ENoAttrs, KCDTypeNameDataInitString },
+ { KCDTIdFaxInitString, EDesC8, ENoAttrs, KCDTypeNameFaxInitString },
+ { KCDTIdIspInitString, EDesC8, ENoAttrs, KCDTypeNameIspInitString },
+ { KCDTIdDialPauseLength, EText, ENoAttrs, KCDTypeNameDialPauseLength },
+ { KCDTIdCarrierTimeOut, EText, ENoAttrs, KCDTypeNameCarrierTimeout },
+ { KCDTIdAutoAnswerRingCount, EText, ENoAttrs, KCDTypeNameAutoAnswerRingCount },
+ { KCDTIdSpeakerVolControlLow, EText, ENoAttrs, KCDTypeNameSpeakerVolControlLow },
+ { KCDTIdSpeakerVolControlMedium, EText, ENoAttrs, KCDTypeNameSpeakerVolControlMedium },
+ { KCDTIdSpeakerVolControlHigh, EText, ENoAttrs, KCDTypeNameSpeakerVolControlHigh },
+ { KCDTIdSpeakerAlwaysOff, EText, ENoAttrs, KCDTypeNameSpeakerAlwaysOff },
+ { KCDTIdSpeakerOnUntilCarrier, EText, ENoAttrs, KCDTypeNameSpeakerOnUntilCarrier },
+ { KCDTIdSpeakerAlwaysOn, EText, ENoAttrs, KCDTypeNameSpeakerAlwaysOn },
+ { KCDTIdSpeakerOnAfterUntilCarrier, EText, ENoAttrs, KCDTypeNameSpeakerOnAfterUntilCarrier },
+ { KCDTIdDialToneWaitModifier, EText, ENoAttrs, KCDTypeNameDialToneWaitModifier },
+ { KCDTIdCallProgress1, EText, ENoAttrs, KCDTypeNameCallProgress1 },
+ { KCDTIdCallProgress2, EText, ENoAttrs, KCDTypeNameCallProgress2 },
+ { KCDTIdCallProgress3, EText, ENoAttrs, KCDTypeNameCallProgress3 },
+ { KCDTIdCallProgress4, EText, ENoAttrs, KCDTypeNameCallProgress4 },
+ { KCDTIdEchoOff, EText, ENoAttrs, KCDTypeNameEchoOff },
+ { KCDTIdVerboseText, EText, ENoAttrs, KCDTypeNameVerboseText },
+ { KCDTIdQuietOff, EText, ENoAttrs, KCDTypeNameQuietOff },
+ { KCDTIdQuietOn, EText, ENoAttrs, KCDTypeNameQuietOn },
+ { KCDTIdDialCommandStateModifier, EText, ENoAttrs, KCDTypeNameDialCommandStateModifier },
+ { KCDTIdOnLine, EText, ENoAttrs, KCDTypeNameOnLine },
+ { KCDTIdResetConfiguration, EText, ENoAttrs, KCDTypeNameResetConfiguration },
+ { KCDTIdReturnToFactoryDefs, EText, ENoAttrs, KCDTypeNameReturnToFactoryDefs },
+ { KCDTIdDcdOnDuringLink, EText, ENoAttrs, KCDTypeNameDcdOnDuringLink },
+ { KCDTIdDtrHangUp, EText, ENoAttrs, KCDTypeNameDtrHangUp },
+ { KCDTIdDsrAlwaysOn, EText, ENoAttrs, KCDTypeNameDsrAlwaysOn },
+ { KCDTIdRtsCtsHandshake, EText, ENoAttrs, KCDTypeNameRtsCtsHandshake },
+ { KCDTIdXonXoffHandshake, EText, ENoAttrs, KCDTypeNameXonXoffHandshake },
+ { KCDTIdEscapeCharacter, EText, ENoAttrs, KCDTypeNameEscapeCharacter },
+ { KCDTIdEscapeGuardPeriod, EText, ENoAttrs, KCDTypeNameEscapeGuardPeriod },
+ { KCDTIdFaxClassInterrogate, EText, ENoAttrs, KCDTypeNameFaxClassInterrogate },
+ { KCDTIdFaxClass, EText, ENoAttrs, KCDTypeNameFaxClass },
+ { KCDTIdNoDialTone, EText, ENoAttrs, KCDTypeNameNoDialTone },
+ { KCDTIdBusy, EText, ENoAttrs, KCDTypeNameBusy },
+ { KCDTIdNoAnswer, EText, ENoAttrs, KCDTypeNameNoAnswer },
+ { KCDTIdCarrier, EText, ENoAttrs, KCDTypeNameCarrier },
+ { KCDTIdConnect, EText, ENoAttrs, KCDTypeNameConnect },
+ { KCDTIdCompressionClass5, EText, ENoAttrs, KCDTypeNameCompressionClass5 },
+ { KCDTIdCompressionV42bis, EText, ENoAttrs, KCDTypeNameCompressionClassV42bis },
+ { KCDTIdCompressionNone, EText, ENoAttrs, KCDTypeNameCompressionNone },
+ { KCDTIdProtocolLapd, EText, ENoAttrs, KCDTypeNameProtocolLapd },
+ { KCDTIdProtocolAlt, EText, ENoAttrs, KCDTypeNameProtocolAlt },
+ { KCDTIdProtocolAltcellular, EText, ENoAttrs, KCDTypeNameProtocolAltcellular },
+ { KCDTIdProtocolNone, EText, ENoAttrs, KCDTypeNameProtocolNone },
+ { KCDTIdMessageCentreNumber, EText, ENoAttrs, KCDTypeNameMessageCentreNumber },
+ { KCDTIdMessageValidityPeriod, EInt, ENoAttrs, KCDTypeNameMessageValidityPeriod },
+ { KCDTIdMessageDeliveryReport, EBool, ENoAttrs, KCDTypeNameMessageDeliveryReport },
+ { KCDTIdMinSignalLevel, EInt, ENoAttrs, KCDTypeNameMinSignalLevel },
+ { KCDTIdCommRole, EInt, ENoAttrs, KCDTypeNameCommRole },
+ { KCDTIdControlChannelPortName, EText, ENoAttrs, KCDTypeNameControlChannelPortName },
+ { KCDTIdSirSettings, EInt, ENoAttrs, KCDTypeNameSirSettings },
+ { KCDTIdBCAStack, EText, ENoAttrs, KCDTypeNameBCAStack },
+ { KCDTIdBearerTechnology, EInt, ENoAttrs, KCDTypeNameBearerTechnology },
+ /**** add new fields above this comment ****/
+ // bearer base class
+ { KCDTIdBearerAgent, EText, ENoAttrs, KCDTypeNameBearerAgent },
+ { 0, 0, ENoAttrs, KCDNull }
+
+ };
+
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iLANBearerRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdLANBearerNifName, EText, ENotNull, KCDTypeNameNifName },
+ { KCDTIdLANBearerLddFilename, EText, ENoAttrs, KCDTypeNameLanBearerLddFilename },
+ { KCDTIdLANBearerLddName, EText, ENotNull, KCDTypeNameLanBearerLddName },
+ { KCDTIdLANBearerPddFilename, EText, ENoAttrs, KCDTypeNameLanBearerPddFilename },
+ { KCDTIdLANBearerPddName, EText, ENotNull, KCDTypeNameLanBearerPddName },
+ { KCDTIdLANBearerPacketDriverName, EText, ENoAttrs, KCDTypeNameLanBearerPacketDriverName },
+ { KCDTIdLANLastSocketActivityTimeout, EInt, ENoAttrs, KCDTypeNameLastSocketActivityTimeout },
+ { KCDTIdLANLastSessionClosedTimeout, EInt, ENoAttrs, KCDTypeNameLastSessionClosedTimeout },
+ { KCDTIdLANLastSocketClosedTimeout, EInt, ENoAttrs, KCDTypeNameLastSocketClosedTimeout },
+ { KCDTIdBearerTechnology, EInt, ENoAttrs, KCDTypeNameBearerTechnology },
+ /**** add new fields above this comment ****/
+ // bearer base class
+ { KCDTIdBearerAgent, EText, ENotNull, KCDTypeNameBearerAgent },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iVirtualBearerRecordInfo[] = {
+ // CCDRecordBase class
+ {KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ {KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ {KCDTIdVirtualBearerNifName, EText, ENotNull, KCDTypeNameNifName },
+ {KCDTIdVBLastSocketActivityTimeout, EInt, ENoAttrs, KCDTypeNameLastSocketActivityTimeout },
+ {KCDTIdVBLastSessionClosedTimeout, EInt, ENoAttrs, KCDTypeNameLastSessionClosedTimeout },
+ {KCDTIdVBLastSocketClosedTimeout, EInt, ENoAttrs, KCDTypeNameLastSocketClosedTimeout },
+ {KCDTIdBearerTechnology, EInt, ENoAttrs, KCDTypeNameBearerTechnology },
+ /**** add new fields above this comment ****/
+ // bearer base class
+ {KCDTIdBearerAgent, EText, ENotNull, KCDTypeNameBearerAgent },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iWAPSMSBearerRecordInfo[] =
+ {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdWAPSMSAccessPointId, ELinkWAPAPRecord, ENotNull, KCDTypeNameWAPAccessPointId },
+ { KCDTIdWAPSMSGatewayAddress, EText, ENoAttrs, KCDTypeNameWAPGatewayAddress },
+ { KCDTIdWAPSMSServiceCentreAddress, EText, ENoAttrs, KCDTypeNameWAPServiceCentreAddress },
+ { KCDTIdWAPSMSWSPOption, EInt, ENoAttrs, KCDTypeNameWAPWSPOption },
+ { KCDTIdWAPSMSSecurity, EBool, ENoAttrs, KCDTypeNameWAPSecurity },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iWAPIPBearerRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdWAPAccessPointId, ELinkWAPAPRecord, ENotNull, KCDTypeNameWAPAccessPointId },
+ { KCDTIdWAPGatewayAddress, EText, ENoAttrs, KCDTypeNameWAPGatewayAddress },
+ { KCDTIdWAPIAP, ELinkIAPRecord, ENoAttrs, KCDTypeNameWAPIAP },
+ { KCDTIdWAPWSPOption, EInt, ENoAttrs, KCDTypeNameWAPWSPOption },
+ { KCDTIdWAPSecurity, EBool, ENoAttrs, KCDTypeNameWAPSecurity },
+ { KCDTIdWAPProxyPort, EInt, ENotNull, KCDTypeNameWAPProxyPort },
+ { KCDTIdWAPProxyLoginName, EText, ENoAttrs, KCDTypeNameWAPProxyLoginName },
+ { KCDTIdWAPProxyLoginPass, EText, ENoAttrs, KCDTypeNameWAPProxyLoginPass },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iChargecardRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdAccountNo, EText, ENoAttrs, KCDTypeNameAccountNo },
+ { KCDTIdPin, EText, ENoAttrs, KCDTypeNamePin },
+ { KCDTIdLocalRule, EText, ENoAttrs, KCDTypeNameLocalRule },
+ { KCDTIdNatRule, EText, ENoAttrs, KCDTypeNameNatRule },
+ { KCDTIdIntlRule, EText, ENoAttrs, KCDTypeNameIntlRule },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iProxiesRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ { KCDTIdISP, ELink, ENoAttrs, KCDTypeNameProxyISP },
+#else
+ { KCDTIdISP, EInt, ENoAttrs, KCDTypeNameProxyISP },
+#endif //SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ { KCDTIdProxyServiceType, EText, ENoAttrs, KCDTypeNameProxyServiceType },
+ { KCDTIdUseProxyServer, EBool, ENotNull, KCDTypeNameUseProxyServer },
+ { KCDTIdServerName, ELongText, ENoAttrs, KCDTypeNameServerName },
+ { KCDTIdProtocolName, EText, ENotNull, KCDTypeNameProtocolName },
+ { KCDTIdPortNumber, EInt, ENoAttrs, KCDTypeNamePortNumber },
+ { KCDTIdExceptions, ELongText, ENoAttrs, KCDTypeNameExceptions },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iSecureSocketRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdSSProtoName, EText, ENotNull, KCDTypeNameSSProtoName },
+ { KCDTIdSSProtoLibrary, EText, ENotNull, KCDTypeNameSSProtoLibrary },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iAgentLookupRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdAgentFriendlyName, EText, ENotNull, KCDTypeNameAgentFriendlyName },
+ { KCDTIdAgentFileName, EText, ENotNull, KCDTypeNameAgentFileName },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iPANServiceExtRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdLocalRole, EInt, ENotNull, KCDTypeNameLocalRole },
+ { KCDTIdPeerRole, EInt, ENotNull, KCDTypeNamePeerRole },
+ { KCDTIdPeerMACAddresses, EText, ENotNull, KCDTypeNamePeerMACAddresses },
+ { KCDTIdPromptForRemoteDevices, EBool, ENotNull, KCDTypeNamePromptForRemoteDevices },
+ { KCDTIdDisableSdpQuery, EBool, ENotNull, KCDTypeNameDisableSdpQuery },
+ { KCDTIdAllowIncoming, EBool, ENotNull, KCDTypeNameAllowIncoming },
+ { KCDTIdPromptIfMACListFails, EBool, ENotNull, KCDTypeNamePromptIfMACListFails },
+#ifdef SYMBIAN_NETWORKING_DHCPSERVER
+ { KCDTIdNapServiceEnabled, EBool, ENotNull, KCDTypeNameNapServiceEnabled },
+#endif // SYMBIAN_NETWORKING_DHCPSERVER
+ /**** add new fields above this comment ****/
+ // service base class [BTW it is not correct that this inherits from Service Record base]
+ { KCDTIdServiceEnableLlmnr, EBool, ENoAttrs, KCDTypeNameServiceEnableLlmnr },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iAccessPointRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdAccessPointGID, EInt, ENotNull, KCDTypeNameAccessPointGID },
+ { KCDTIdSelectionPolicy, ELink, ENotNull, KCDTypeNameSelectionPolicy },
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ { KCDTIdTier, ELinkTierRecord, ENotNull, KCDTypeNameTier },
+ { KCDTIdMCpr, ELinkMCprRecord, ENotNull, KCDTypeNameMCpr },
+ { KCDTIdCpr, ELinkCprRecord, ENotNull, KCDTypeNameCpr },
+ { KCDTIdSCpr, ELinkSCprRecord, ENotNull, KCDTypeNameSCpr },
+ { KCDTIdProtocol, ELinkProtocolRecord, ENotNull, KCDTypeNameProtocol },
+ { KCDTIdCprConfig, EInt, ENotNull, KCDTypeNameCprConfig },
+ { KCDTIdAppSID, EInt, ENoAttrs, KCDTypeNameAppSID },
+ { KCDTIdConfigAPIdList, EText, ENoAttrs, KCDTypeNameConfigAPIdList },
+ { KCDTIdCustomSelectionPolicy, EInt, ENoAttrs, KCDTypeNameCustomSelectionPolicy },
+ { KCDTIdAccessPointPriority, EUint32, ENoAttrs, KCDTypeNameAccessPointPriority },
+#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iIAPPrioritySelectionPolicyRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdIap1, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap1Name },
+ { KCDTIdIap2, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap2Name },
+ { KCDTIdIap3, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap3Name },
+ { KCDTIdIap4, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap4Name },
+ { KCDTIdIap5, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap5Name },
+ { KCDTIdIap6, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap6Name },
+ { KCDTIdIap7, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap7Name },
+ { KCDTIdIap8, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap8Name },
+ { KCDTIdIap9, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap9Name },
+ { KCDTIdIap10, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap10Name },
+ { KCDTIdIap11, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap11Name },
+ { KCDTIdIap12, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap12Name },
+ { KCDTIdIap13, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap13Name },
+ { KCDTIdIap14, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap14Name },
+ { KCDTIdIap15, ELinkIAPRecord, ENoAttrs, KCDTypeNameIap15Name },
+ { KCDTIdIapCount, EInt, ENoAttrs, KCDTypeNameIapCountName },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iEAPSecRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdEAPSecOuterEAPType, EInt, ENoAttrs, KCDTypeNameEAPSecOuterEAPType },
+ { KCDTIdEAPSecId, EMedText, ENoAttrs, KCDTypeNameEapId },
+ { KCDTIdEAPSecPassword, EMedText, ENoAttrs, KCDTypeNameEAPSecPassword },
+ { KCDTIdEAPSecConfigId, EUint32,ENoAttrs, KCDTypeNameEAPSecConfigId },
+ { KCDTIdEAPSecData, EInt, ENoAttrs, KCDTypeNameEAPSecData },
+ { KCDTIdEAPSecVendorId, EText, ENoAttrs, KCDTypeNameEAPSecVendorId },
+ { KCDTIdEAPSecVendorType, EUint32,ENoAttrs, KCDTypeNameEAPSecVendorType },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iTunEAPRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdTUNEAPInnerType, EInt, ENoAttrs, KCDTypeNameTUNEAPInnerType },
+ { KCDTIdTUNEAPData, EInt, ENoAttrs, KCDTypeNameTUNEAPData },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iEAPTLSRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdEAPTLSClientCertName, EText, ENotNull, KCDTypeNameEAPTLSClientCertName },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iLEAPRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdLEAPTimeout, EInt, ENoAttrs, KCDTypeNameLEAPTimeout },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iEAPSIMRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdEapSimProtocolId, EInt, ENotNull, KCDTypeNameEapSimProtocolId },
+ { KCDTIdEapSimPseudonym, EDesC8, ENotNull, KCDTypeNameEapSimPseudonym },
+ { KCDTIdEapSimUseNaiRealm, EBool, ENotNull, KCDTypeNameEapSimUseNaiRealm },
+ { KCDTIdEapSimNaiRealm, EDesC8, ENotNull, KCDTypeNameEapSimNaiRealm },
+ { KCDTIdEapSimMinRands, EInt, ENotNull, KCDTypeNameEapSimMinRands },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iEAPAKARecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdEapAkaProtocolId, EInt, ENotNull, KCDTypeNameEapAkaProtocolId },
+ { KCDTIdEapAkaPseudonym, EDesC8, ENotNull, KCDTypeNameEapAkaPseudonym },
+ { KCDTIdEapAkaUseNaiRealm, EBool, ENotNull, KCDTypeNameEapAkaUseNaiRealm },
+ { KCDTIdEapAkaNaiRealm, EDesC8, ENotNull, KCDTypeNameEapAkaNaiRealm },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ const SRecordTypeInfo CommsDatSchemaV1_1::iAPPrioritySelectionPolicyRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdAp1, ELinkAPRecord, ENoAttrs, KCDTypeNameAp1Name },
+ { KCDTIdAp2, ELinkAPRecord, ENoAttrs, KCDTypeNameAp2Name },
+ { KCDTIdAp3, ELinkAPRecord, ENoAttrs, KCDTypeNameAp3Name },
+ { KCDTIdAp4, ELinkAPRecord, ENoAttrs, KCDTypeNameAp4Name },
+ { KCDTIdAp5, ELinkAPRecord, ENoAttrs, KCDTypeNameAp5Name },
+ { KCDTIdAp6, ELinkAPRecord, ENoAttrs, KCDTypeNameAp6Name },
+ { KCDTIdAp7, ELinkAPRecord, ENoAttrs, KCDTypeNameAp7Name },
+ { KCDTIdAp8, ELinkAPRecord, ENoAttrs, KCDTypeNameAp8Name },
+ { KCDTIdAp9, ELinkAPRecord, ENoAttrs, KCDTypeNameAp9Name },
+ { KCDTIdAp10, ELinkAPRecord, ENoAttrs, KCDTypeNameAp10Name },
+ { KCDTIdAp11, ELinkAPRecord, ENoAttrs, KCDTypeNameAp11Name },
+ { KCDTIdAp12, ELinkAPRecord, ENoAttrs, KCDTypeNameAp12Name },
+ { KCDTIdAp13, ELinkAPRecord, ENoAttrs, KCDTypeNameAp13Name },
+ { KCDTIdAp14, ELinkAPRecord, ENoAttrs, KCDTypeNameAp14Name },
+ { KCDTIdAp15, ELinkAPRecord, ENoAttrs, KCDTypeNameAp15Name },
+ { KCDTIdApCount, EInt, ENoAttrs, KCDTypeNameApCountName },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iTierRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdTierImplUid, EInt, ENotNull, KCDTypeNameTierImplUid },
+ { KCDTIdTierThreadName, EText, ENotNull, KCDTypeNameTierThreadName },
+ { KCDTIdTierManagerName, EText, ENotNull, KCDTypeNameTierManagerName },
+ { KCDTIdDefaultAccessPoint, ELinkAPRecord, ENotNull, KCDTypeNameDefaultAccessPoint },
+ { KCDTIdPromptUser, EInt, ENotNull, KCDTypeNamePromptUser },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iMCprRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdMCprUid, EInt, ENotNull, KCDTypeNameMCprUid },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iCprRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdCprUid, EInt, ENotNull, KCDTypeNameCprUid },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iSCprRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdSCprUid, EInt, ENotNull, KCDTypeNameSCprUid },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iProtocolRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdProtocolUid, EInt, ENotNull, KCDTypeNameProtocolUid },
+ { KCDTIdProtocolConfigLoaderUid, EInt, ENoAttrs, KCDTypeNameProtocolConfigLoaderUid },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iBearerTypeRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdBearerTypeTier, ELinkTierRecord, ENotNull, KCDTypeNameTier },
+ { KCDTIdBearerTypeMCpr, ELinkMCprRecord, ENotNull, KCDTypeNameMCpr },
+ { KCDTIdBearerTypeCpr, ELinkCprRecord, ENotNull, KCDTypeNameCpr },
+ { KCDTIdBearerTypeSCpr, ELinkSCprRecord, ENotNull, KCDTypeNameSCpr },
+ { KCDTIdBearerTypeProtocol, ELinkProtocolRecord, ENotNull, KCDTypeNameProtocol },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iConfigAccessPointRecordInfo[] = {
+ // CCDRecordBase class
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ // This class
+ { KCDTIdConfigAccessPointSCpr, ELinkSCprRecord, ENotNull, KCDTypeNameConfigAccessPointSCpr },
+ { KCDTIdConfigAccessPointProtocol, ELinkProtocolRecord,ENotNull, KCDTypeNameConfigAccessPointProtocol },
+ { KCDTIdConfigAccessPointProtocolConfig, EInt, ENotNull, KCDTypeNameConfigAccessPointProtocolConfig },
+ { KCDTIdConfigAccessPointLayerBelow, ELinkCAPRecord, ENoAttrs, KCDTypeNameConfigAccessPointLayerBelow },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iPolicySelectorRecordInfo[] = {
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ { KCDTIdPolicyId, EInt, ENotNull, KCDTypeNamePolicyId },
+ { KCDTIdAppUid, EInt, ENotNull, KCDTypeNameAppUid },
+ { KCDTIdSrcAddress, EText, ENotNull, KCDTypeNameSrcAddress },
+ { KCDTIdSrcMask, EText, ENotNull, KCDTypeNameSrcMask },
+ { KCDTIdDstAddress, EText, ENotNull, KCDTypeNameDstAddress },
+ { KCDTIdDstMask, EText, ENotNull, KCDTypeNameDstMask },
+ { KCDTIdSrcPort, EInt, ENotNull, KCDTypeNameSrcPort },
+ { KCDTIdDstPort, EInt, ENotNull, KCDTypeNameDstPort },
+ { KCDTIdSrcPortMax, EInt, ENotNull, KCDTypeNameSrcPortMax },
+ { KCDTIdDstPortMax, EInt, ENotNull, KCDTypeNameDstPortMax },
+ { KCDTIdProtocolId, EUint32, ENotNull, KCDTypeNameProtocolId },
+ { KCDTIdIAPid, EUint32, ENotNull, KCDTypeNameIAPid },
+ { KCDTIdPriority, EInt, ENotNull, KCDTypeNamePriority },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iPolicySelector2ParamsRecordInfo[] = {
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ { KCDTIdPolicySelectorId, EInt, ENotNull, KCDTypeNamePolicySelectorId },
+ { KCDTIdParamsId, EInt, ENotNull, KCDTypeNameParamsId },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iGenericQosRecordInfo[] = {
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ { KCDTIdUplinkBandwidth, EInt, ENotNull, KCDTypeNameUplinkBandwidth},
+ { KCDTIdDownLinkMaximumBurstSize, EInt, ENotNull, KCDTypeNameDownLinkMaximumBurstSize},
+ { KCDTIdUpLinkMaximumBurstSize, EInt, ENotNull, KCDTypeNameUpLinkMaximumBurstSize},
+ { KCDTIdDownLinkAveragePacketSize, EInt, ENotNull, KCDTypeNameDownLinkAveragePacketSize},
+ { KCDTIdUpLinkAveragePacketSize, EInt, ENotNull, KCDTypeNameUpLinkAveragePacketSize},
+ { KCDTIdDownLinkMaximumPacketSize, EInt, ENotNull, KCDTypeNameDownLinkMaximumPacketSize},
+ { KCDTIdUpLinkMaximumPacketSize, EInt, ENotNull, KCDTypeNameUpLinkMaximumPacketSize},
+ { KCDTIdDownLinkDelay, EInt, ENotNull, KCDTypeNameDownLinkDelay},
+ { KCDTIdUpLinkDelay, EInt, ENotNull, KCDTypeNameUpLinkDelay},
+ { KCDTIdDownLinkDelayVariation, EInt, ENotNull, KCDTypeNameDownLinkDelayVariation},
+ { KCDTIdUpLinkDelayVariation, EInt, ENotNull, KCDTypeNameUpLinkDelayVariation},
+ { KCDTIdDownLinkPriority, EInt, ENotNull, KCDTypeNameDownLinkPriority},
+ { KCDTIdUpLinkPriority, EInt, ENotNull, KCDTypeNameUpLinkPriority},
+ { KCDTIdHeaderMode, EBool, ENotNull, KCDTypeNameHeaderMode },
+ // { KCDTIdQosName, EText, ENotNull, KCDTypeNameQosName },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+
+ //
+ // Lookup table to associate table name with Table Id
+ //
+
+ const SRecordTypeInfo CommsDatSchemaV1_1::iWifiScanEngineRecordInfo[] = {
+ { KCDTIdRecordTag, EInt, ENoAttrs, KCDTypeNameRecordTag },
+ { KCDTIdRecordName, EText, ENotNull, KCDTypeNameRecordName },
+ { KCDTIdScanPeriodMs, EInt, ENotNull, KCDTypeNameScanPeriodMs },
+ { KCDTIdRSSIMin, EInt, ENotNull, KCDTypeNameRSSIMin },
+ { KCDTIdRSSIMax, EInt, ENotNull, KCDTypeNameRSSIMax },
+ { 0, 0, ENoAttrs, KCDNull }
+ };
+
+ const STableLookup CommsDatSchemaV1_1::iTableLookup[] = {
+ {KCDTIdConnectionPrefsRecord, KCDTypeNameConnectionPrefs, CommsDatSchemaV1_1::iConnectionPrefsRecordInfo },
+ {KCDTIdNetworkRecord, KCDTypeNameNetwork, CommsDatSchemaV1_1::iNetworkRecordInfo },
+ {KCDTIdIAPRecord, KCDTypeNameIAP, CommsDatSchemaV1_1::iIAPRecordInfo },
+ {KCDTIdWAPAccessPointRecord, KCDTypeNameWAPAccessPoint, CommsDatSchemaV1_1::iWAPAccessPointRecordInfo },
+ {KCDTIdDialOutISPRecord, KCDTypeNameDialOutISP, CommsDatSchemaV1_1::iDialOutISPRecordInfo },
+ {KCDTIdDialInISPRecord, KCDTypeNameDialInISP, CommsDatSchemaV1_1::iDialInISPRecordInfo },
+ {KCDTIdLANServiceRecord, KCDTypeNameLANService, CommsDatSchemaV1_1::iLANServiceRecordInfo },
+ {KCDTIdWLANServiceExtRecord, KCDTypeNameWLANServiceExt, CommsDatSchemaV1_1::iWLANServiceExtRecordInfo },
+ {KCDTIdVPNServiceRecord, KCDTypeNameVPNService, CommsDatSchemaV1_1::iVPNServiceRecordInfo },
+ {KCDTIdWCDMAPacketServiceRecord, KCDTypeNameWCDMAPacketService, CommsDatSchemaV1_1::iWCDMAPacketServiceRecordInfo },
+ {KCDTIdOutgoingGprsRecord, KCDTypeNameOutgoingWCDMA, CommsDatSchemaV1_1::iWCDMAPacketServiceRecordInfo },
+ {KCDTIdIncomingGprsRecord, KCDTypeNameIncomingWCDMA, CommsDatSchemaV1_1::iWCDMAPacketServiceRecordInfo },
+ {KCDTIdDefaultWCDMARecord, KCDTypeNameDefaultWCDMA, CommsDatSchemaV1_1::iDefaultWCDMARecordInfo },
+ {KCDTIdModemBearerRecord, KCDTypeNameModemBearer, CommsDatSchemaV1_1::iModemBearerRecordInfo },
+ {KCDTIdLANBearerRecord, KCDTypeNameLANBearer, CommsDatSchemaV1_1::iLANBearerRecordInfo },
+ {KCDTIdVirtualBearerRecord, KCDTypeNameVirtualBearer, CommsDatSchemaV1_1::iVirtualBearerRecordInfo },
+ {KCDTIdWAPSMSBearerRecord, KCDTypeNameWAPSMSBearer, CommsDatSchemaV1_1::iWAPSMSBearerRecordInfo },
+ {KCDTIdWAPIPBearerRecord, KCDTypeNameWAPIPBearer, CommsDatSchemaV1_1::iWAPIPBearerRecordInfo },
+ {KCDTIdChargecardRecord, KCDTypeNameChargecard, CommsDatSchemaV1_1::iChargecardRecordInfo },
+ {KCDTIdProxiesRecord, KCDTypeNameProxies, CommsDatSchemaV1_1::iProxiesRecordInfo },
+ {KCDTIdSSProtoRecord, KCDTypeNameSSProto, CommsDatSchemaV1_1::iSecureSocketRecordInfo},
+ {KCDTIdAgentLookupRecord, KCDTypeNameAgentLookup, CommsDatSchemaV1_1::iAgentLookupRecordInfo },
+ {KCDTIdPANServiceExtRecord, KCDTypeNamePANServiceExt, CommsDatSchemaV1_1::iPANServiceExtRecordInfo },
+ {KCDTIdGlobalSettingsRecord, KCDTypeNameGlobalSettings, CommsDatSchemaV1_1::iGlobalSettingsRecordInfo },
+ {KCDTIdLocationRecord, KCDTypeNameLocation, CommsDatSchemaV1_1::iLocationRecordInfo },
+ {KCDTIdAccessPointRecord, KCDTypeNameAccessPoint, CommsDatSchemaV1_1::iAccessPointRecordInfo },
+ {KCDTIdIapPrioritySelectionPolicyRecord, KCDTypeNameIapPrioritySelectionPolicy, CommsDatSchemaV1_1::iIAPPrioritySelectionPolicyRecordInfo },
+ {KCDTIdUmtsR99QoSAndOnTableRecord, KCDTypeNameUmtsR99QoSAndOnTable, CommsDatSchemaV1_1::iUmtsR99QoSAndOnTableRecordInfo },
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ {KCDTIdTierRecord, KCDTypeNameTierRecord, CommsDatSchemaV1_1::iTierRecordInfo },
+ {KCDTIdMCprRecord, KCDTypeNameMCprRecord, CommsDatSchemaV1_1::iMCprRecordInfo },
+ {KCDTIdCprRecord, KCDTypeNameCprRecord, CommsDatSchemaV1_1::iCprRecordInfo },
+ {KCDTIdSCprRecord, KCDTypeNameSCprRecord, CommsDatSchemaV1_1::iSCprRecordInfo },
+ {KCDTIdProtocolRecord, KCDTypeNameProtocolRecord, CommsDatSchemaV1_1::iProtocolRecordInfo },
+ {KCDTIdBearerTypeRecord, KCDTypeNameBearerTypeRecord, CommsDatSchemaV1_1::iBearerTypeRecordInfo },
+ {KCDTIdConfigAccessPointRecord, KCDTypeNameConfigAccessPointRecord, CommsDatSchemaV1_1::iConfigAccessPointRecordInfo },
+ {KCDTIdApPrioritySelectionPolicyRecord, KCDTypeNameApPrioritySelectionPolicy, CommsDatSchemaV1_1::iAPPrioritySelectionPolicyRecordInfo },
+#endif //SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ {KCDTIdEapSimProtocolRecord, KCDTypeNameEapSimProtocol, CommsDatSchemaV1_1::iEAPSIMRecordInfo },
+ {KCDTIdEapAkaProtocolRecord, KCDTypeNameEapAkaProtocol, CommsDatSchemaV1_1::iEAPAKARecordInfo },
+ {KCDTIdEAPSecRecord, KCDTTypeNameEAPSec, CommsDatSchemaV1_1::iEAPSecRecordInfo },
+ {KCDTIdTunEAPRecord, KCDTTypeNameTunEAP, CommsDatSchemaV1_1::iTunEAPRecordInfo },
+ {KCDTIdEAPTLSRecord, KCDTTypeNameEAPTLS, CommsDatSchemaV1_1::iEAPTLSRecordInfo },
+ {KCDTIdLEAPRecord, KCDTTypeNameLEAP, CommsDatSchemaV1_1::iLEAPRecordInfo },
+ {0, NULL, NULL } // stop marker
+ };
+
+/*****************************************************************************************
+2/ Static functions to interpret element ids
+**********************************************/
+
+
+TBool CommsDatSchema::IsNode(TMDBElementId aElementId)
+/*
+[ C == 7f ]
+[ R == ff ]
+Identifies Node as opposed to Field
+Understands new table, column or record request to mean Node too
+*/
+ {
+ return ( (aElementId & KCDMaskShowRecordId) == KCDMaskShowRecordId ||
+ (aElementId & KCDMaskShowFieldType) == KCDMaskShowFieldType );
+ }
+
+TBool CommsDatSchema::IsTable(TMDBElementId aElementId)
+/*
+[ 0 < T < ff ][ C == 7f ][ R == ff ]
+*/
+ {
+ return ( (aElementId & KCDMaskShowColumnTypeAndRecordId) == KCDMaskShowColumnTypeAndRecordId &&
+ HasValidTableId(aElementId) );
+ }
+
+
+TBool CommsDatSchema::IsColumn(TMDBElementId aElementId)
+/*
+[ 0 < T <= 7f8 ][ 0 < C < ff][ R == ff]
+*/
+ {
+ return ( (aElementId & KCDMaskShowRecordId) == KCDMaskShowRecordId &&
+ HasValidColumnId(aElementId) &&
+ HasValidTableId(aElementId) );
+ }
+
+
+TBool CommsDatSchema::IsRecord(TMDBElementId aElementId)
+/*
+[ 0 < T <= 7f8 ][ C == 7f ][ R < ff ]
+*/
+ {
+ return ( (aElementId & KCDMaskShowFieldType) == KCDMaskShowFieldType &&
+ HasValidRecordId(aElementId) &&
+ HasValidTableId(aElementId) );
+ }
+
+
+TBool CommsDatSchema::IsGenericRecord(TMDBElementId aElementId)
+/*
+[ 5F8 < T <= 7f8 ][ C == ff][ R == ff ]
+*/
+ {
+ const TMDBElementId tableType = (aElementId & KCDMaskShowRecordType);
+ return ( ( tableType >= KCDInitialUDefRecordType || tableType == 0 ) ||
+ IsNewTableRequest(aElementId) ); // But don't support new table request currently
+ }
+
+
+TBool CommsDatSchema::IsTemplate(TMDBElementId aElementId)
+/*
+0 record id in real table
+[ 0 < T < 7f8 ][ 0 < C < ff ][ R == 0 ]
+*/
+ {
+ return ( (aElementId & KCDMaskShowRecordId) == KCDDefaultRecord &&
+ HasValidTableId(aElementId) );
+ }
+
+
+TBool CommsDatSchema::HasValidTableId(TMDBElementId aElementId)
+ {
+ const TMDBElementId recordType = (aElementId & KCDMaskShowRecordType);
+ return ( recordType > 0 &&
+ recordType <= KCDMaskShowRecordType );
+ }
+
+
+TBool CommsDatSchema::HasValidColumnId(TMDBElementId aElementId)
+/*
+[ 0 <= C < ff ]
+*/
+ {
+ const TMDBElementId fieldType = (aElementId & KCDMaskShowFieldType);
+ return ( fieldType > 0 &&
+ fieldType < KCDMaskShowFieldType );
+ }
+
+
+TBool CommsDatSchema::HasValidRecordId(TMDBElementId aElementId)
+/*
+[ 0 <= R < ff ]
+*/
+ {
+ return (aElementId & KCDMaskShowRecordId) < KCDMaskShowRecordId;
+ }
+
+
+TBool CommsDatSchema::IsNewTableRequest(TMDBElementId aElementId)
+/*
+<T==0><C==7f><R==ff>
+*/
+ {
+ return (aElementId & KCDMaskHideAttrAndRes) == KCDNewTableRequest;
+ }
+
+
+TBool CommsDatSchema::IsNewColumnRequest(TMDBElementId aElementId)
+/*
+0xnn00ff01
+[ 0 < T < ff ][ C == 0 ][ R == ff ][ LSB == 1 ]
+*/ {
+ return ( ( aElementId & ~( KCDMaskShowAttributes | KCDUtilityFlag ) ) ==
+ ( KCDNewColumnRequest | (aElementId & KCDMaskShowFieldType) ) );
+ }
+
+
+TBool CommsDatSchema::IsNewRecordRequest(TMDBElementId aElementId)
+/*
+0x8n7f0001
+[ U == 1 ][ 0 < T < ff ][ C == 7f ][ R == 00 ][ LSB == 1 ]
+*/
+ {
+ return (aElementId & KCDMaskHideAttrAndRes) ==
+ ( (KCDNewRecordRequest & KCDMaskHideAttrAndRes) | (aElementId & KCDMaskShowRecordType) );
+
+ }
+
+
+TBool CommsDatSchema::IsDeprecatedRecord(
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ TMDBElementId aElementId
+#endif //SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ )
+/*
+Doesn't matter what version of the data schema is in use. If a
+record has been deprecated it is never stored in the database
+*/
+ {
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ switch (aElementId)
+ {
+ case KCDTIdIapPrioritySelectionPolicyRecord :
+ {
+ return ETrue;
+ }
+ }
+#endif // SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+
+ return EFalse;
+ }
+
+
+
+
+/*****************************************************************************************
+* 3/ Functions to check validity of container being used to store or modify data
+*/
+
+
+
+const SRecordTypeInfo* CommsDatSchemaV1_1::GetRecordTypeInfo(TMDBElementId aId)
+/*
+Retrieve the schema for this table
+Will Return NULL if someone looks up a table that doesn'exist
+@internalComponent
+*/
+ {
+ const TMDBElementId recordTypeId = aId & KCDMaskShowRecordType;
+
+ const STableLookup* tableInfoPtr = iTableLookup;
+
+ while( tableInfoPtr && tableInfoPtr->iTableId != 0)
+ {
+ if (tableInfoPtr->iTableId == recordTypeId)
+ {
+ return tableInfoPtr->iFields;
+ }
+
+ ++tableInfoPtr;
+ }
+
+ __FLOG_STATIC1(KLogComponent, KCDErrLog, _L("CommsDatSchema::GetRecordTypeInfo failed to find type info for Element %08x"), aId);
+
+ // CHECK - Don't leave or panic as client may have meant to search for generic record?
+
+ ASSERT(0);
+
+ return NULL;
+ }
+
+
+EXPORT_C TInt CommsDatSchemaV1_1::GetFieldTypeInfoL(TMDBElementId aId)
+/*
+Return the value type of a field that is known to be in this record
+@internalcomponent
+*/
+ {
+ const SRecordTypeInfo* recordInfo = GetRecordTypeInfo(aId);
+
+ if (recordInfo)
+ {
+ while( recordInfo->iTypeId != 0)
+ {
+ TMDBElementId temp = aId & KCDMaskShowFieldType;
+ if ((recordInfo->iTypeId & KCDMaskShowFieldType) == temp)//(aId & KCDMaskShowFieldType))
+ {
+ return recordInfo->iValType; // return the full val type info here (not just the basic type)
+ }
+ ++recordInfo;
+ }
+ }
+
+ User::Leave(KErrNotFound);
+
+ return KErrNone; // never get here
+ }
+
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+EXPORT_C const STableLookup* CommsDatSchemaV1_1::GetTableInfoL(TMDBElementId aId)
+/*
+Return a full tableinfo based on a tableId
+@internalcomponent
+*/
+ {
+ TInt tableID = aId & KCDMaskShowRecordType;
+
+ for (TInt i = 0;
+ ( 0 != CommsDat::CommsDatSchemaV1_1::iTableLookup[i].iTableId );
+ ++i)
+ {
+ if ( tableID == CommsDat::CommsDatSchemaV1_1::iTableLookup[i].iTableId )
+ {
+ //OK, got the tableId
+ return &CommsDat::CommsDatSchemaV1_1::iTableLookup[i];
+ }
+ }
+
+ User::Leave(KErrNotFound);
+
+ //this is dummy return statement here - never reached
+ return NULL;
+ }
+#endif
+
+TBool CommsDatSchemaV1_1::IsEnabledForcedLinkedTypeResolving(TMDBElementId aId)
+ {
+ /**
+ Forced link resolving is enabled for the:
+ - AccessPointRecord
+ - IAPRecord
+ - ProxiesRecord
+ - LANServiceRecord
+ */
+ return ( KCDTIdAccessPointRecord == aId );
+ }
+
+
+TMDBElementId CommsDatSchemaV1_1::ForcedFindLinkedIdL(TMDBElementId aTableId, TMDBElementId aLinkingFieldId)
+ {
+ const SRecordTypeInfo* recordInfo = GetRecordTypeInfo(aTableId);
+
+ if (recordInfo)
+ {
+ while( recordInfo->iTypeId != 0)
+ {
+ if (recordInfo->iTypeId == aLinkingFieldId)
+ {
+ return recordInfo->iValType;
+ }
+ ++recordInfo;
+ }
+ }
+
+ User::Leave(KErrNotFound);
+
+ return 0; // never get here
+ }
+
+
+TMDBElementId CommsDatSchemaV1_1::LookupTableId(TDesC& tableName)
+ {
+ const STableLookup* tableInfoPtr = iTableLookup;
+
+ while( tableInfoPtr && tableInfoPtr->iTableId != 0)
+ {
+ TPtrC tableNameFromId(tableInfoPtr->iTableName);
+
+ if (tableNameFromId.CompareF(tableName) == 0)
+ {
+ return tableInfoPtr->iTableId;
+ }
+
+ ++tableInfoPtr;
+ }
+
+ return 0;
+ }
+
+
+
+//
+// CommsDatSchema Functions
+//
+
+TMDBElementId CommsDatSchema::GetLegacyLinkTableIdL(CMDBSession& aSession, TMDBElementId aLinkingFieldId, CMDBElement* aLinkingRecord)
+ {
+ // for some legacy fields validate that the link is correct wrt another field
+
+ CMDBField<TDesC>* tableNameField = NULL;
+ TInt tmp = (aLinkingFieldId & KCDMaskShowType);
+
+ switch (tmp)
+ {
+ case KCDTIdIAPService :
+ {
+ if (aLinkingRecord)
+ {
+ CCDIAPRecord* iapRecord = static_cast<CCDIAPRecord*>(aLinkingRecord);
+ tableNameField = &iapRecord->iServiceType;
+ if (! tableNameField->IsNull())
+ {
+ return CommsDatSchemaV1_1::LookupTableId(tableNameField->GetL());
+ }
+ }
+ // create new field if linkingRecord is NULL or has no data in the qualifying field
+ tableNameField = new (ELeave) CMDBField<TDesC>(KCDTIdIAPServiceType);
+ break;
+ }
+ case KCDTIdIAPBearer :
+ {
+ if (aLinkingRecord)
+ {
+ tableNameField = &(static_cast<CCDIAPRecord&>(*aLinkingRecord)).iBearerType;
+ if (! tableNameField->IsNull())
+ {
+ return CommsDatSchemaV1_1::LookupTableId(tableNameField->GetL());
+ }
+ }
+
+ // create new field if linkingRecord is NULL or has no data in the qualifying field
+ tableNameField = new (ELeave) CMDBField<TDesC>(KCDTIdIAPBearerType);
+ break;
+ }
+ case KCDTIdISP :
+ {
+ if (aLinkingRecord)
+ {
+ tableNameField = &(static_cast<CCDProxiesRecord&>(*aLinkingRecord)).iServiceType;
+ if (! tableNameField->IsNull())
+ {
+ return CommsDatSchemaV1_1::LookupTableId(tableNameField->GetL());
+ }
+ }
+
+ // create new field if linkingRecord is NULL or has no data in the qualifying field
+ tableNameField = new (ELeave) CMDBField<TDesC>(KCDTIdProxyServiceType);
+ break;
+ }
+ case KCDTIdLANServiceExtensionTableRecordId :
+ {
+ if (aLinkingRecord)
+ {
+ tableNameField = &(static_cast<CCDLANServiceRecord&>(*aLinkingRecord)).iServiceExtensionTableName;
+ if (! tableNameField->IsNull())
+ {
+ return CommsDatSchemaV1_1::LookupTableId(tableNameField->GetL());
+ }
+ }
+
+ // create new field if linkingRecord is NULL or has no data in the qualifying field
+ tableNameField = new (ELeave) CMDBField<TDesC>(KCDTIdLANServiceExtensionTableName);
+ break;
+ }
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ case KCDTIdSelectionPolicy :
+ {
+ return KCDTIdApPrioritySelectionPolicyRecord;
+ }
+#endif //SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+ default :
+ {
+ //all other linking records should be identified by full element ids so
+ __FLOG_STATIC1(KLogComponent, KCDErrLog,
+ _L("CommsDatSchema::GetLegacyLinkTableIdL() - Don't have algorithm to find table id for Field <%08x>"), aLinkingFieldId);
+
+ return 0; // shouldn't be in this function in the first place
+ }
+ }
+
+
+ CleanupStack::PushL(tableNameField);
+
+
+ if (aLinkingFieldId & KCDMaskShowRecordId)
+ { //if the linkingField has a valid reocrdID...
+ tableNameField->SetRecordId((aLinkingFieldId & KCDMaskShowRecordId) >> 8);
+
+ tableNameField->LoadL(aSession);
+
+ if ( ! tableNameField->IsNull() )
+ {
+ tmp = CommsDatSchemaV1_1::LookupTableId(tableNameField->GetL());
+ }
+ }
+ else
+ {
+ /* Notifying the caller code that the resolving of the legacy link field was not successful.
+ * Some other actions need to be taken...
+ */
+
+ tmp = 0;
+ }
+
+ CleanupStack::PopAndDestroy(tableNameField);
+
+ return tmp;
+ }
+
+
+TMDBElementId CommsDatSchema::ConstructLinkFromLegacyValueL(CMDBSession& aSession, CMDBElement* aLegacyField, TInt aLegacyValue)
+ {
+ TMDBElementId linkedTableId = 0;
+ TMDBElementId serviceFieldId = 0;
+ TInt temp = aLegacyField->ElementId() & KCDMaskShowType;
+
+ switch (temp)
+ {
+ case KCDTIdIAPService :
+ {
+ serviceFieldId = KCDTIdIAPServiceType;
+ break;
+ }
+ case KCDTIdIAPBearer :
+ {
+ serviceFieldId = KCDTIdIAPBearerType;
+ break;
+ }
+ case KCDTIdISP :
+ {
+ serviceFieldId = KCDTIdProxyServiceType;
+ break;
+ }
+ case KCDTIdLANServiceExtensionTableRecordId :
+ {
+ serviceFieldId = KCDTIdLANServiceExtensionTableName;
+ break;
+ }
+ default :
+ {
+ //all other linking records should be identified by full element ids so
+ __FLOG_STATIC1(KLogComponent, KCDErrLog,
+ _L("CommsDatSchema::GetLegacyLinkTableIdL() - Don't have algorithm to find table id for Field <%08x>"), aLegacyField);
+
+ return 0; // shouldn't be in this function in the first place
+ }
+ }
+
+ //create an empty filed for loading the serviceType field for the given service...
+ CMDBField<TDesC>* serviceField = new(ELeave) CMDBField<TDesC>(serviceFieldId);
+ CleanupStack::PushL(serviceField);
+
+ serviceField->SetRecordId(aLegacyValue);
+
+ serviceField->LoadL(aSession);
+
+ linkedTableId = CommsDatSchemaV1_1::LookupTableId(serviceField->GetL());
+
+ if (linkedTableId !=0)
+ {
+ linkedTableId |= (aLegacyValue << 8);
+ }
+
+ CleanupStack::PopAndDestroy(serviceField);
+
+ return linkedTableId;
+ }
+
+
+
+TMDBElementId CommsDatSchema::IdTagResolverL(CMDBSession& aSession, TMDBElementId aLinkedTypeId, TMDBElementId aTargetValue)
+ {
+ TMDBElementId linkedElementId = 0;
+
+ CMDBField<TUint32>* tagField = new (ELeave) CMDBField<TUint32>(aLinkedTypeId | KCDTIdRecordTag);
+ CleanupStack::PushL(tagField);
+
+ *tagField = (aTargetValue & ~KLinkableTag);
+
+ if (tagField->FindL(aSession))
+ {
+ linkedElementId = (tagField->ElementId() & KCDMaskShowRecordTypeAndId);
+ }
+ else
+ {
+ User::Leave(KErrArgument);
+ }
+
+ CleanupStack::PopAndDestroy(tagField);
+
+ return linkedElementId;
+ }
+
+TMDBElementId CommsDatSchema::GetLinkIdL(CMDBSession& aSession, TMDBElementId aLinkingFieldId, TMDBElementId aLinkingFieldValue, TMDBElementId aLinkedTableId, CMDBElement* aLinkingRecord)
+/**
+ Get or calculate the id of the linked record if enough information is available
+
+ @param aSession the session to use if need to lookup in the database
+ @param The id of the table that is linked to. This can be NULL, but must be given
+ if the link type is a base class and link field value does not specify the table being linked to.
+
+ @leave KErrArgument if aKnownLinkType does not match current field value
+ @leave System wide error codes if database action fails unexpectedly for some reason.
+
+ @pre The linking field value must be set correctly for this operation to succeed.
+
+ @post The value of this field may be updated to reflect the correct location of the linked record in the database
+ The caller will have enough information to create the linked record if they need to
+
+ @internal component
+ @prototype
+*/
+ {
+ __FLOG_STATIC2(KLogComponent, KCDInfoLog,
+ _L("CommsDatSchema::GetLinkIdL() - aLinkingFieldId: <%08x>, aLinkingFieldValue: <%08x>."), aLinkingFieldId, aLinkingFieldValue);
+
+ TMDBElementId linkedElementId(0);
+ TMDBElementId linkedTypeId(aLinkedTableId & KCDMaskShowRecordType);
+ TMDBElementId targetValue(aLinkingFieldValue);
+
+
+ if ( (linkedTypeId & KCDMaskShowRecordType) == 0 )
+ {
+ if ( (targetValue & KLinkableTag) != 0 || // Linkable tag is set
+ (targetValue & KCDMaskShowRecordType) == 0 ) // target value does not contain table type info
+ {
+ // lookup the record type in the value of this field
+ linkedTypeId = CommsDatSchemaV1_1::GetFieldTypeInfoL(aLinkingFieldId) & KCDMaskShowRecordType;
+
+ if ((linkedTypeId & KCDMaskShowRecordType) == 0)
+ {
+ // This is the 3rd stage of the legacy link resolver - the BRUTE FORCE...
+ linkedTypeId = ForcedLegacyLinkFindL(aSession, aLinkingFieldId, aLinkingFieldValue, aLinkingRecord);
+
+ if ((linkedTypeId & KCDMaskShowRecordType) == 0)
+ {
+ // Can't establish the table id for this link. Link is not valid
+ __FLOG_STATIC2(KLogComponent, KCDErrLog,
+ _L("CommsDatSchema::GetLinkIdL() - Can't identify the table linked to by field <%08x>, value <%08x>. Link not usable"), aLinkingFieldId, targetValue);
+
+ User::Leave(KErrArgument);
+ }
+ }
+ }
+ else
+ {
+ linkedTypeId = (targetValue & KCDMaskShowRecordType);
+ }
+ }
+
+ // At this point the target table is known
+
+ if (KLinkableTag & targetValue)
+ {
+ // this is a link by tag so need to do a find for the iTag field in the linked table
+
+ linkedElementId = IdTagResolverL(aSession, linkedTypeId, targetValue);
+
+ }
+ else if (targetValue <= KCDMaxRecords)
+ {
+ // targetValue is just a simple record ID not in elementId form
+ //the record id is greater than 0. It's still not sure that the link is correct...
+ linkedElementId = linkedTypeId | (targetValue << 8);
+ }
+ else
+ {
+ // targetValue should be an element id
+ if ( (targetValue & KCDMaskShowRecordType) == (linkedTypeId & KCDMaskShowRecordType) ||
+ (linkedTypeId & KCDMaskShowRecordType) == 0 )
+ {
+ //tableid and recordid both set explicitly in targetValue;
+ linkedElementId = targetValue & KCDMaskShowRecordTypeAndId;
+ }
+ else if( (targetValue & KCDMaskShowRecordType) == 0 )
+ {
+ // hmmm quite unusual. linkValue does not specify a table but looks like
+ // an element id. So just add in the table id from aTargetTableId
+ linkedElementId = (linkedTypeId | (targetValue & KCDMaskShowRecordId));
+ }
+ else
+ {
+ __FLOG_STATIC3(KLogComponent, KCDErrLog,
+ _L("TMDBRecordLinkVisitor GetLinkIdL() - value <%08x> given in link field <%08x> and type of link <%08x> do not match. Link not usable"), (targetValue & KCDMaskShowRecordType), aLinkingFieldId & KCDMaskHideAttrAndRes, linkedTypeId);
+
+ User::Leave(KErrArgument);
+ }
+ }
+
+ __FLOG_STATIC3(KLogComponent, KCDInfoLog,
+ _L("TMDBRecordLinkVisitor GetLinkIdL() - resolved link field <%08x> with value <%08x> to link value <%08x>"), aLinkingFieldId & KCDMaskHideAttrAndRes, aLinkingFieldValue, linkedElementId);
+
+ return linkedElementId;
+ }
+
+//We are here because the client entered a number (possibly record id) for a linked field. CommsDat has to resolve
+//in this case the linked elementId.
+TMDBElementId CommsDatSchema::ForcedLegacyLinkFindL(CMDBSession& aSession, TMDBElementId aLinkingFieldId, TMDBElementId aLinkingFieldValue, CMDBElement* aElement)
+ {
+ TMDBElementId tableId = aLinkingFieldId & KCDMaskShowRecordType;
+ TMDBElementId linkedId = 0;
+ switch (tableId)
+ {
+ case KCDTIdIAPRecord:
+ {
+ linkedId = ForcedIAPFindL(aSession, aLinkingFieldId, aLinkingFieldValue, aElement);
+ __FLOG_STATIC0(KLogComponent, KCDInfoLog,
+ _L("CommsDatSchema::ForcedLegacyLinkFindL() - IAP"));
+ break;
+ }
+ case KCDTIdProxiesRecord:
+ {
+ linkedId = ForcedProxiesFindL(aSession, aLinkingFieldId, aLinkingFieldValue, aElement);
+ __FLOG_STATIC0(KLogComponent, KCDInfoLog,
+ _L("CommsDatSchema::ForcedLegacyLinkFindL() - Proxies"));
+ break;
+ }
+ case KCDTIdLANServiceRecord:
+ {
+ linkedId = ForcedLanServiceFindL(aSession, aLinkingFieldId, aLinkingFieldValue, aElement);
+ __FLOG_STATIC0(KLogComponent, KCDInfoLog,
+ _L("CommsDatSchema::ForcedLegacyLinkFindL() - LanService"));
+ break;
+ }
+ default:
+ __FLOG_STATIC2(KLogComponent, KCDErrLog,
+ _L("CommsDatSchema::ForcedLegacyLinkFindL() - Can't identify the table linked to by field <%08x>, value <%08x>. Link not usable"), aLinkingFieldId, aLinkingFieldValue);
+
+ User::Leave(KErrArgument);
+ break;
+ }
+ return linkedId;
+ }
+
+TMDBElementId CommsDatSchema::ForcedLanServiceFindL(CMDBSession& aSession, TMDBElementId aLinkingFieldId, TMDBElementId aLinkingFieldValue, CMDBElement* aElement)
+ {
+
+ /*CMDBField<TDesC>* serviceExtension = NULL;
+ TMDBElementId linkedTableId = 0;*/
+
+ TBuf<50> serviceExtension;
+ TMDBElementId linkedTableId = 0;
+ TBool isRecord = EFalse;
+
+ if ((NULL!=aElement) && (CommsDat::CommsDatSchema::IsRecord(aElement->ElementId())))
+ {
+ isRecord = ETrue;
+ }
+
+ if (0 != (aLinkingFieldId & KCDMaskShowRecordId))
+ {
+ //there is a record id set on the container. Let's try to resolve the link from this
+ CCDLANServiceRecord* lanServiceRec = static_cast<CCDLANServiceRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdLANServiceRecord));
+ CleanupStack::PushL(lanServiceRec);
+ lanServiceRec->SetRecordId((aLinkingFieldId & KCDMaskShowRecordId) >> 8);
+ lanServiceRec->LoadL(aSession);
+
+ serviceExtension = lanServiceRec->iServiceExtensionTableName.GetL();
+
+ linkedTableId = CommsDatSchemaV1_1::LookupTableId(serviceExtension);
+ CleanupStack::PopAndDestroy(lanServiceRec);
+ }
+ else if (isRecord)
+ {
+ RArray<TUint32> ids;
+
+ CleanupClosePushL(ids);
+
+ TUint32 mask = KCDMaskShowRecordType | KCDMaskShowFieldType | aSession.iMDBSessionImpl->GetReadAttributeMask() | KCDUtilityFlag;
+ TUint32 id = aElement->ElementId() & KCDMaskHideAttrAndRes;
+
+ aSession.iMDBSessionImpl->StorageL()->FindL(id, mask, ids);
+
+ TBool found = EFalse;
+ TInt i = 0;
+ TUint fieldValue = 0;
+
+ CCDLANServiceRecord* lanServiceRec = NULL;
+ lanServiceRec = static_cast<CCDLANServiceRecord*>(aElement);
+
+ TInt fieldExists = KErrNotFound;
+
+ while (!found && i<ids.Count())
+ {
+ fieldValue = 0;
+
+ if ( (IsRecord(ids[i])) && (KCDTIdLANServiceRecord == (ids[i] & KCDMaskShowRecordType)) )
+ {
+ //check whether the lanserviceext field is filled/changed...
+ if (KCDChangedFlag == (lanServiceRec->iServiceExtensionTableName.ElementId() & KCDChangedFlag))
+ {
+ //the given field has changed, let's check it
+ TInt cleanID = ((ids[i] & KCDMaskShowRecordType) | KCDTIdLANServiceExtensionTableName) | (ids[i] & KCDMaskShowRecordId);
+ CMDBField<TDesC>* lanServiceExtName = new(ELeave) CMDBField<TDesC>(cleanID);
+ CleanupStack::PushL(lanServiceExtName);
+ //This field is not mandatory so it's possible that the given record doesn't contain it...
+ TRAP(fieldExists, lanServiceExtName->LoadL(aSession));
+ if (KErrNone == fieldExists)
+ {
+ TPtrC serviceTypeFromCurrRec(*lanServiceExtName);
+ TPtrC serviceTypeFromOrigRec(lanServiceRec->iServiceExtensionTableName);
+ if (serviceTypeFromCurrRec == serviceTypeFromOrigRec)
+ {
+ //ok, found the primed record
+ cleanID = ((ids[i] & KCDMaskShowRecordType) | KCDTIdLANServiceExtensionTableRecordId) | (ids[i] & KCDMaskShowRecordId);
+ CMDBRecordLink<CCDServiceRecordBase>* lanServiceExtRecId = new(ELeave) CMDBRecordLink<CCDServiceRecordBase>(cleanID);
+ CleanupStack::PushL(lanServiceExtRecId);
+
+ TRAP(fieldExists, lanServiceExtRecId->LoadL(aSession));
+ if (KErrNone == fieldExists)
+ {
+ fieldValue = *lanServiceExtRecId;
+ serviceExtension = (*lanServiceExtName);
+ }
+
+ CleanupStack::PopAndDestroy(lanServiceExtRecId);
+ }
+ }
+ CleanupStack::PopAndDestroy(lanServiceExtName);
+ }
+ else
+ {
+ TInt cleanID = ((ids[i] & KCDMaskShowRecordType) | KCDTIdLANServiceExtensionTableRecordId) | (ids[i] & KCDMaskShowRecordId);
+ CMDBRecordLink<CCDServiceRecordBase>* lanServiceExtRecId = new(ELeave) CMDBRecordLink<CCDServiceRecordBase>(cleanID);
+ CleanupStack::PushL(lanServiceExtRecId);
+
+ TRAPD(fieldExists, lanServiceExtRecId->LoadL(aSession));
+ if (KErrNone == fieldExists)
+ {
+ cleanID = ((ids[i] & KCDMaskShowRecordType) | KCDTIdLANServiceExtensionTableName) | (ids[i] & KCDMaskShowRecordId);
+ CMDBField<TDesC>* lanServiceExtName = new(ELeave) CMDBField<TDesC>(cleanID);
+ CleanupStack::PushL(lanServiceExtName);
+
+ TRAP(fieldExists, lanServiceExtName->LoadL(aSession));
+ if (KErrNone == fieldExists)
+ {
+ fieldValue = *lanServiceExtRecId;
+ serviceExtension = (*lanServiceExtName);
+ }
+
+ CleanupStack::PopAndDestroy(lanServiceExtName);
+ }
+
+ CleanupStack::PopAndDestroy(lanServiceExtRecId);
+ }
+
+ //Note: the legacy link values are already in the expected decimal recordID format. So no need to shift
+ //the value to left...
+ if ( fieldValue == aLinkingFieldValue )
+ {
+ linkedTableId = CommsDatSchemaV1_1::LookupTableId(serviceExtension);
+ found = true;
+ }
+ ++i;
+ }
+ }
+
+ CleanupStack::PopAndDestroy(&ids);
+ }
+
+ __FLOG_STATIC1(KLogComponent, KCDInfoLog,
+ _L("CommsDatSchema::ForcedLanServiceFindL() - linkedTableId: <%08x>."), linkedTableId);
+
+ return linkedTableId;
+ }
+
+TMDBElementId CommsDatSchema::ForcedProxiesFindL(CMDBSession& aSession, TMDBElementId aLinkingFieldId, TMDBElementId aLinkingFieldValue, CMDBElement* aElement)
+ {
+ TBuf<50> serviceType;
+ TMDBElementId linkedTableId = 0;
+ TBool isRecord = EFalse;
+
+ if ((NULL!=aElement) && (CommsDat::CommsDatSchema::IsRecord(aElement->ElementId())))
+ {
+ isRecord = ETrue;
+ }
+
+ if (0 != (aLinkingFieldId & KCDMaskShowRecordId))
+ {
+ //there is a record id set on the container. Let's true to resolve the link from this
+ CCDProxiesRecord* proxiesRec = static_cast<CCDProxiesRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdProxiesRecord));
+ CleanupStack::PushL(proxiesRec);
+ proxiesRec->SetRecordId((aLinkingFieldId & KCDMaskShowRecordId) >> 8);
+ proxiesRec->LoadL(aSession);
+
+ serviceType = proxiesRec->iServiceType.GetL();
+
+ linkedTableId = CommsDatSchemaV1_1::LookupTableId(serviceType);
+ CleanupStack::PopAndDestroy(proxiesRec);
+ }
+ else if (isRecord)
+ {
+ RArray<TUint32> ids;
+
+ CleanupClosePushL(ids);
+
+ TUint32 mask = KCDMaskShowRecordType | KCDMaskShowFieldType | aSession.iMDBSessionImpl->GetReadAttributeMask() | KCDUtilityFlag;
+ TUint32 id = aElement->ElementId() & KCDMaskHideAttrAndRes;
+
+ aSession.iMDBSessionImpl->StorageL()->FindL(id, mask, ids);
+
+ TBool found = EFalse;
+ TInt i = 0;
+ TUint fieldValue = 0;
+
+ CCDProxiesRecord* proxiesRec = NULL;
+ proxiesRec = static_cast<CCDProxiesRecord*>(aElement);
+
+ while (!found && i<ids.Count())
+ {
+ fieldValue = 0;
+
+ if ( (IsRecord(ids[i])) && (KCDTIdProxiesRecord == (ids[i] & KCDMaskShowRecordType)) )
+ {
+ //check whether the proxyServiceType field is filled/changed...
+ if (KCDChangedFlag == (proxiesRec->iServiceType.ElementId() & KCDChangedFlag))
+ {
+ //the given field has changed, let's check it
+ TInt cleanID = ((ids[i] & KCDMaskShowRecordType) | KCDTIdProxyServiceType) | (ids[i] & KCDMaskShowRecordId);
+ CMDBField<TDesC>* proxyServiceType = new(ELeave) CMDBField<TDesC>(cleanID);
+ CleanupStack::PushL(proxyServiceType);
+ proxyServiceType->LoadL(aSession);
+
+ TPtrC serviceTypeFromCurrRec(*proxyServiceType);
+ TPtrC serviceTypeFromOrigRec(proxiesRec->iServiceType);
+ if (serviceTypeFromCurrRec == serviceTypeFromOrigRec)
+ {
+ //ok, found the primed record
+ cleanID = ((ids[i] & KCDMaskShowRecordType) | KCDTIdISP) | (ids[i] & KCDMaskShowRecordId);
+ CMDBRecordLink<CCDServiceRecordBase>* proxyISP = new(ELeave) CMDBRecordLink<CCDServiceRecordBase>(cleanID);
+ CleanupStack::PushL(proxyISP);
+ proxyISP->LoadL(aSession);
+
+ fieldValue = *proxyISP;
+ serviceType = (*proxyServiceType);
+
+ CleanupStack::PopAndDestroy(proxyISP);
+ }
+
+ CleanupStack::PopAndDestroy(proxyServiceType);
+ }
+ else
+ {
+ //the IAPService/BearerType field is not filled which means that were searcing for the 1st IAP
+ //record with the given service/bearer value.
+ TInt cleanID = ((ids[i] & KCDMaskShowRecordType) | KCDTIdISP) | (ids[i] & KCDMaskShowRecordId);
+ CMDBRecordLink<CCDServiceRecordBase>* proxyISP = new(ELeave) CMDBRecordLink<CCDServiceRecordBase>(cleanID);
+ CleanupStack::PushL(proxyISP);
+
+ cleanID = ((ids[i] & KCDMaskShowRecordType) | KCDTIdProxyServiceType) | (ids[i] & KCDMaskShowRecordId);
+ CMDBField<TDesC>* proxyServiceType = new(ELeave) CMDBField<TDesC>(cleanID);
+ CleanupStack::PushL(proxyServiceType);
+
+ proxyServiceType->LoadL(aSession);
+
+ proxyISP->LoadL(aSession);
+
+ fieldValue = *proxyISP;
+
+ serviceType = (*proxyServiceType);
+
+ CleanupStack::PopAndDestroy(proxyServiceType);
+
+ CleanupStack::PopAndDestroy(proxyISP);
+ }
+ }
+
+ //Note: the legacy link values are already in the expected decimal recordID format. So no need to shift
+ //the value to left...
+ if ( fieldValue == aLinkingFieldValue )
+ {
+ linkedTableId = CommsDatSchemaV1_1::LookupTableId(serviceType);
+ found = true;
+ }
+ ++i;
+ }
+
+ CleanupStack::PopAndDestroy(&ids);
+ }
+
+ __FLOG_STATIC1(KLogComponent, KCDInfoLog,
+ _L("CommsDatSchema::ForcedProxiesFindL() - linkedTableId: <%08x>."), linkedTableId);
+
+ return linkedTableId;
+ }
+
+TMDBElementId CommsDatSchema::ForcedIAPFindL(CMDBSession& aSession, TMDBElementId aLinkingFieldId, TMDBElementId aLinkingFieldValue, CMDBElement* aElement)
+ {
+ //According to the schema definition the IAP service/bearer type cannot be longer than 50 character
+ TBuf<50> serviceOrBearerType;
+ TMDBElementId linkedTableId = 0;
+ TMDBElementId tempField = 0;
+ TBool isRecord = EFalse;
+
+ if ((NULL!=aElement) && (CommsDat::CommsDatSchema::IsRecord(aElement->ElementId())))
+ {
+ isRecord = ETrue;
+ }
+
+ if (0 != (aLinkingFieldId & KCDMaskShowRecordId))
+ {
+ //there is a record id set on the container. Let's try to resolve the link from this
+ CCDIAPRecord* iapRec = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+ CleanupStack::PushL(iapRec);
+ iapRec->SetRecordId((aLinkingFieldId & KCDMaskShowRecordId) >> 8);
+ iapRec->LoadL(aSession);
+
+ tempField = aLinkingFieldId & (KCDMaskShowRecordType | KCDMaskShowFieldType);
+
+ if (KCDTIdIAPService == tempField)
+ { //searcing for the service...
+ //serviceOrBearerType.Set(iapRec->iServiceType.GetL());
+ serviceOrBearerType = (iapRec->iServiceType.GetL());
+ }
+ else
+ { //searching for the bearer...
+ serviceOrBearerType = (iapRec->iBearerType.GetL());
+ }
+
+ linkedTableId = CommsDatSchemaV1_1::LookupTableId(serviceOrBearerType);
+
+ CleanupStack::PopAndDestroy(iapRec);
+ }
+ else if (isRecord)
+ {
+ RArray<TUint32> ids;
+ CleanupClosePushL(ids);
+
+ TUint32 mask = KCDMaskShowRecordType | KCDMaskShowFieldType | aSession.iMDBSessionImpl->GetReadAttributeMask() | KCDUtilityFlag;
+ TUint32 id = aElement->ElementId() & KCDMaskHideAttrAndRes;
+
+ aSession.iMDBSessionImpl->StorageL()->FindL(id, mask, ids);
+
+ TBool found = EFalse;
+ TInt i = 0;
+ TUint fieldValue = 0;
+
+ CCDIAPRecord* iapRec = NULL;
+ iapRec = static_cast<CCDIAPRecord*>(aElement);
+
+ tempField = aLinkingFieldId & (KCDMaskShowRecordType | KCDMaskShowFieldType);
+
+ TInt iapServiceOrBearerTypeId = 0;
+ TInt iapServiceOrBearerId = 0;
+ TInt origIapServiceOrBearerType = 0;
+ TBuf<50> serviceOrbearerTypeFromOrigRec(iapRec->iServiceType);
+
+ if (KCDTIdIAPService == tempField)
+ { //searcing for the service...
+ iapServiceOrBearerTypeId = KCDTIdIAPServiceType;
+ iapServiceOrBearerId = KCDTIdIAPService;
+ origIapServiceOrBearerType = iapRec->iServiceType.ElementId();
+ serviceOrbearerTypeFromOrigRec = iapRec->iServiceType;
+ }
+ else
+ { //searching for the bearer...
+ iapServiceOrBearerTypeId = KCDTIdIAPBearerType;
+ iapServiceOrBearerId = KCDTIdIAPBearer;
+ origIapServiceOrBearerType = iapRec->iBearerType.ElementId();
+ serviceOrbearerTypeFromOrigRec = iapRec->iBearerType;
+ }
+
+ while (!found && i<ids.Count())
+ {
+ fieldValue = 0;
+
+ if ( (IsRecord(ids[i])) && (KCDTIdIAPRecord == (ids[i] & KCDMaskShowRecordType)) )
+ {
+ //check whether the IAPService/BearerType field is filled/changed...
+ if (KCDChangedFlag == (origIapServiceOrBearerType & KCDChangedFlag))
+ {
+ //the given field has changed, let's check it
+ TInt cleanID = ((ids[i] & KCDMaskShowRecordType) | iapServiceOrBearerTypeId) | (ids[i] & KCDMaskShowRecordId);
+ CMDBField<TDesC>* serviceOrbearerType = new(ELeave) CMDBField<TDesC>(cleanID);
+ CleanupStack::PushL(serviceOrbearerType);
+ serviceOrbearerType->LoadL(aSession);
+
+ TPtrC serviceTypeFromCurrRec(*serviceOrbearerType);
+ //TPtrC serviceTypeFromOrigRec(iapRec->iServiceType);
+ //if (serviceTypeFromCurrRec == serviceTypeFromOrigRec)
+ if (serviceTypeFromCurrRec == serviceOrbearerTypeFromOrigRec)
+ {
+ //ok, found the primed record
+ cleanID = ((ids[i] & KCDMaskShowRecordType) | iapServiceOrBearerId) | (ids[i] & KCDMaskShowRecordId);
+ CMDBRecordLink<CCDServiceRecordBase>* serviceOrbearer = new(ELeave) CMDBRecordLink<CCDServiceRecordBase>(cleanID);
+ CleanupStack::PushL(serviceOrbearer);
+ serviceOrbearer->LoadL(aSession);
+
+ fieldValue = *serviceOrbearer;
+ serviceOrBearerType = (*serviceOrbearerType);
+
+ CleanupStack::PopAndDestroy(serviceOrbearer);
+ }
+
+ CleanupStack::PopAndDestroy(serviceOrbearerType);
+ }
+ else
+ {
+ //the IAPService/BearerType field is not filled which means that were searcing for the 1st IAP
+ //record with the given service/bearer value.
+ TInt cleanID = ((ids[i] & KCDMaskShowRecordType) | iapServiceOrBearerId) | (ids[i] & KCDMaskShowRecordId);
+ CMDBRecordLink<CCDServiceRecordBase>* serviceOrbearer = new(ELeave) CMDBRecordLink<CCDServiceRecordBase>(cleanID);
+ CleanupStack::PushL(serviceOrbearer);
+
+ cleanID = ((ids[i] & KCDMaskShowRecordType) | iapServiceOrBearerTypeId) | (ids[i] & KCDMaskShowRecordId);
+ CMDBField<TDesC>* serviceOrbearerType = new(ELeave) CMDBField<TDesC>(cleanID);
+ CleanupStack::PushL(serviceOrbearerType);
+
+ serviceOrbearerType->LoadL(aSession);
+
+ serviceOrbearer->LoadL(aSession);
+
+ fieldValue = *serviceOrbearer;
+
+ serviceOrBearerType = (*serviceOrbearerType);
+
+ CleanupStack::PopAndDestroy(serviceOrbearerType);
+
+ CleanupStack::PopAndDestroy(serviceOrbearer);
+ }
+ }
+
+ //Note: the legacy link values are already in the expected decimal recordID format. So no need to shift
+ //the value to left...
+ if ( fieldValue == aLinkingFieldValue )
+ {
+ linkedTableId = CommsDatSchemaV1_1::LookupTableId(serviceOrBearerType);
+ found = true;
+ }
+ ++i;
+ }
+
+ CleanupStack::PopAndDestroy(&ids);
+ }
+
+ __FLOG_STATIC1(KLogComponent, KCDInfoLog,
+ _L("CommsDatSchema::ForcedIAPFindL() - linkedTableId: <%08x>."), linkedTableId);
+
+ return linkedTableId;
+ }
+
+void CommsDatSchema::ChangeLegacyLinkFieldValues(CMDBElement*& aLegacyField)
+ {
+ //only do the check if there is a legacy table...
+ if( ( (aLegacyField->ElementId() & KCDMaskShowRecordType ) < KCDTIdAccessPointRecord &&
+ (aLegacyField->ElementId() & KCDMaskShowRecordType ) != KCDTIdWLANServiceExtRecord ) )
+ {
+ //this is why we accept only fields in this function...
+ //CMDBNumFieldBase* field = static_cast<CMDBNumFieldBase*>(aLegacyField);
+
+ CMDBField<TInt>* field = static_cast<CMDBField<TInt>* >(aLegacyField);
+
+ TMDBElementId tableId = field->ElementId() & KCDMaskShowRecordType;
+
+ const STableLookup* tableInfoPtr = CommsDatSchemaV1_1::iTableLookup;
+ TInt i = 0;
+
+ while( tableInfoPtr && tableInfoPtr->iTableId != 0 && (tableInfoPtr->iTableId) != tableId )
+ {
+ ++i;
+ ++tableInfoPtr;
+ }
+
+ /* At this point we know that what is the table of the field.
+ Now we should search for the field in the table and get the position of it.
+ it is important because as the mapping here is 1:1 this position will be the
+ position of the mapped field either.
+ */
+ const CommsDat::SRecordTypeInfo* fieldInfoPtr = CommsDatSchemaV1_1::iTableLookup[i].iFields;
+ TMDBElementId fieldId = field->ElementId() & KCDMaskShowType;
+ TInt fieldPosition = 0;
+
+ //Skip the tagId and the name fields...
+ ++fieldInfoPtr;
+ ++fieldInfoPtr;
+
+ while( fieldInfoPtr && fieldInfoPtr->iTypeId != 0 && (fieldInfoPtr->iTypeId) != fieldId)
+ {
+ ++fieldPosition;
+ ++fieldInfoPtr;
+ }
+
+ if (fieldInfoPtr->iTypeId != 0)
+ //The field is found...
+ {
+ if ( (fieldInfoPtr->iValType & ELink) == ELink )
+ //Found a link. Remember that this function is called if the input container is a field and
+ //the type of the field is integer... So if we are here this means that somebody tries to read
+ //linked field with a CMDBField<TInt>. Conclusion is that this can be a legacy field where the
+ //value of the field needs to be chenged to contain only the record number...
+ {
+ //field->iValue = ((field->iValue & KCDMaskShowRecordId) >> 8);
+ *field = (*field & KCDMaskShowRecordId) >> 8;
+ }
+ }
+ }
+ }
+
+
+using namespace CommsDat;
+
+void CommsDatSchema::ValidateFieldTypeL(CMDBSession& aSession, CMDBElement& aElement)
+/* checks the validity of the container being used for this element id
+ *
+ EText, // 50 length
+ EDesC8, // binary
+ EUint32,
+ EInt,
+ EBool,
+ EMedText, // 256 length
+ ELongText, // 1024 length
+ ELink // an integer field that is a link
+
+ only looks up field types, not node types
+ */
+ {
+ TMDBElementId elementId = aElement.ElementId();
+
+ /*
+ Don't try to validate nodes or user defined fields here (CHECK - perhaps would be a good idea though??)
+ */
+ if ( IsNode(elementId) || IsGenericRecord(elementId | KCDMaskShowColumnTypeAndRecordId) )
+ {
+ return;
+ }
+
+ // Lookup type of element in the database
+ const SRecordTypeInfo* pRecordTypeInfo = CommsDatSchemaV1_1::GetRecordTypeInfo(elementId);
+
+ while ( pRecordTypeInfo &&
+ (pRecordTypeInfo->iTypeId & KCDMaskShowFieldType) != (elementId & KCDMaskShowFieldType ) )
+ {
+ ++pRecordTypeInfo;
+ }
+
+ if (pRecordTypeInfo == 0)
+ {
+ // CHECK - how about looking for generic record info too?
+ __FLOG_STATIC1(KLogComponent, KCDErrLog, _L("MMetaDatabase::ValidateFieldTypeL failed for unexpectedly for Element <%08x> because the type info for this element was not found"), aElement.ElementId());
+ User::Leave(KErrArgument);
+ }
+
+ TInt correctType = pRecordTypeInfo->iValType;
+
+ // read the type of the element stored with NetMeta
+ TInt containerType = aElement.Type();
+
+ switch (containerType)
+ {
+ // note - cases ordered with most common types first
+ case EInt :
+ {
+ switch (correctType & KCDShowBasicTypeInfo)
+ {
+ case EInt :
+ case EUint32 :
+ {
+ // everything ok
+ return;
+ }
+ case EBool :
+ {
+ CMDBField<TInt>& boolField = static_cast<CMDBField<TInt>&>(aElement);
+ TInt value = boolField;
+
+ if ( value == FALSE || value == TRUE)
+ {
+ // everything ok
+ return;
+ }
+
+ break;
+ }
+ case ELink :
+ {
+ CMDBNumFieldBase& numElement = static_cast<CMDBNumFieldBase&>(aElement);
+ numElement = GetLinkIdL(aSession, numElement.ElementId(), numElement.GetL(), 0/*, NULL*/);
+
+ return; // everything ok
+ }
+ }
+ break;
+ }
+ case ELink :
+ {
+ if ( (correctType & KCDShowBasicTypeInfo) == ELink )
+ {
+ CMDBNumFieldBase& numElement = static_cast<CMDBNumFieldBase&>(aElement);
+ numElement = GetLinkIdL(aSession, numElement.ElementId(), numElement.GetL(), 0/*, NULL*/);
+ return;
+ }
+ else
+ {
+ break;
+ }
+ }
+ case EText :
+ {
+ CMDBField<TDesC>& textField = static_cast<CMDBField<TDesC>&>(aElement);
+ TDesC value = textField;
+
+ // Note - Checking the real length of the data not the max length in the container
+ if (correctType == EText)
+ {
+ if ( value.Length() <= KMaxTextLength)
+ {
+ return;
+ }
+ }
+ else if (correctType == EMedText)
+ {
+ if ( value.Length() <= KMaxMedTextLength)
+ {
+ return;
+ }
+ }
+ else if (correctType == ELongText)
+ {
+ if ( value.Length() <= KMaxLongTextLength)
+ {
+ return;
+ }
+ }
+
+ break; // The string in the container is too long to be correct or the correct type is not text
+ }
+ case EDesC8 :
+ {
+ if (correctType == EDesC8)
+ {
+ return;
+ }
+ break;
+ }
+ default :
+ {
+ // don't need to check any other types so just return
+ // useful to log an error though as really should not get here
+ __FLOG_STATIC3(KLogComponent, KCDErrLog, _L("CommsDatSchema::ValidateTypeL. Unexpectedly, the container type is %d. ElementId is %d. Correct type is %d. No validation attempted."), containerType, elementId, correctType);
+
+ ASSERT(0);
+
+ return;
+ }
+ }
+
+
+ // The types are not compatible so log and leave
+
+ __FLOG_STATIC3(KLogComponent, KCDErrLog, _L("CommsDatSchema::ValidateTypeL. Container of type %d cannot be used to access element id %08x that has type %d"), containerType, elementId, correctType);
+
+ User::Leave(KErrArgument);
+ }
+
+
+
+//EOF