voipplugins/voipadapters/dmvoipadapter/inc/nsmldmvoipadapter.h
branchRCL_3
changeset 22 d38647835c2e
equal deleted inserted replaced
21:f742655b05bf 22:d38647835c2e
       
     1 /*
       
     2 * Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Device Management VoIP Settings Adapter
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #ifndef __NSMLDMVOIPADAPTER_H__
       
    20 #define __NSMLDMVOIPADAPTER_H__
       
    21 
       
    22 // INCLUDES
       
    23 #include <e32base.h>
       
    24 #include <smldmadapter.h>
       
    25 
       
    26 // CONSTANTS
       
    27 const TUint KMaxTerminalTypeLength = 64;
       
    28 const TUint KWlanMacAddressLength  = 50;
       
    29 const TUint KPhoneModelLength      = 20;
       
    30 const TInt KMaxUriLength           = 64;
       
    31 const TInt KMaxDebugPrintLength    = 256;
       
    32 
       
    33 // CLASS DECLARATION
       
    34 class CRCSEProfileRegistry;
       
    35 class CRCSEProfileEntry;
       
    36 class CRCSEAudioCodecRegistry;
       
    37 class CRCSEAudioCodecEntry;
       
    38 class MSIPProfileRegistryObserver;
       
    39 class CSIPProfileRegistryObserver;
       
    40 class CSIPManagedProfileRegistry;
       
    41 class CSIPManagedProfile;
       
    42 class CCoeEnv;
       
    43 class CDMVoIPSPSettings;
       
    44 
       
    45 /**
       
    46  *  CNSmlDmVoIPAdapter
       
    47  *  ?other_description_lines
       
    48  *
       
    49  *  @lib ?library
       
    50  *  @since Series 60_3.0
       
    51  */
       
    52 class CNSmlDmVoIPAdapter : public CSmlDmAdapter
       
    53     {
       
    54     #ifdef _DEBUG
       
    55     /**
       
    56      * Friend class for unit testing.
       
    57      */
       
    58     friend class UT_CNSmlDmVoIPAdapter;
       
    59     #endif
       
    60 
       
    61     public:
       
    62 
       
    63         static CNSmlDmVoIPAdapter* NewL( MSmlDmCallback* aDmCallback );
       
    64 
       
    65         virtual ~CNSmlDmVoIPAdapter();
       
    66 
       
    67     /**  For setting telephony preference */
       
    68 	enum TTelephonyPreference
       
    69 			{
       
    70             ECSPreferred,
       
    71             EPSPreferred
       
    72 			};
       
    73 
       
    74     private:
       
    75 
       
    76 // From base class NSmlDmAdapter
       
    77 
       
    78         /**
       
    79          * From CNsmlDmAdapter
       
    80          * @since Series 60_3.0
       
    81          * @param aVersion for returning DDF version of adapter
       
    82          */
       
    83         void DDFVersionL( CBufBase& aDDFVersion );
       
    84 
       
    85         /**
       
    86          * From CNsmlDmAdapter
       
    87          * @since Series 60_3.0
       
    88          * @param aDDF for returning DDF structure of adapter
       
    89          */
       
    90         void DDFStructureL( MSmlDmDDFObject& aDDF );
       
    91 
       
    92         /**
       
    93          * From CNsmlDmAdapter
       
    94          * @since Series 60_3.0
       
    95          * @param aURI URI from dm-module
       
    96          * @param aParentLUID luid mapping from dm-module
       
    97          * @param aType object type from dm-module
       
    98          * @param aStatusRef status from dm-module
       
    99          */                            
       
   100         void UpdateLeafObjectL( 
       
   101             const TDesC8& aURI, 
       
   102             const TDesC8& aLUID, 
       
   103             const TDesC8& aObject,
       
   104             const TDesC8& /*aType*/, 
       
   105             const TInt aStatusRef );
       
   106 
       
   107         /**
       
   108          * From CNsmlDmAdapter
       
   109          * @since Series 60_3.0
       
   110          * @param aURI URI from dm-module
       
   111          * @param aParentLUID luid mapping from dm-module
       
   112          * @param aType object type from dm-module
       
   113          * @param aStatusRef status from dm-module
       
   114          */                            
       
   115         void UpdateLeafObjectL( 
       
   116             const TDesC8& /*aURI*/, 
       
   117             const TDesC8& /*aLUID*/, 
       
   118             RWriteStream*& /*aStream*/,
       
   119             const TDesC8& /*aType*/, 
       
   120             TInt aStatusRef );
       
   121 
       
   122         /**
       
   123          * From CNsmlDmAdapter
       
   124          * @since Series 60_3.0
       
   125          * @param aURI URI from dm-module
       
   126          * @param aLUID luid mapping from dm-module
       
   127          * @param aStatusRef status from dm-module
       
   128          */        
       
   129         void DeleteObjectL( 
       
   130             const TDesC8& aURI, 
       
   131             const TDesC8& aLUID, 
       
   132             const TInt aStatusRef );
       
   133 
       
   134         /**
       
   135          * From CNsmlDmAdapter
       
   136          * @since Series 60_3.0
       
   137          * @param aURI URI from dm-module
       
   138          * @param aLUID luid mapping from dm-module
       
   139          * @param aType object type from dm-module
       
   140          * @param aResultsRef results reference from dm-module
       
   141          * @param aStatusRef status reference from dm-module
       
   142          */        
       
   143         void FetchLeafObjectL( 
       
   144             const TDesC8& aURI, 
       
   145             const TDesC8& aLUID, 
       
   146             const TDesC8& aType, 
       
   147             const TInt aResultsRef, 
       
   148             const TInt aStatusRef );
       
   149 
       
   150         /**
       
   151          * From CNsmlDmAdapter
       
   152          * @since Series 60_3.0
       
   153          * @param aURI URI from dm-module
       
   154          * @param aLUID luid mapping from dm-module
       
   155          * @param CArrayFix previousURISegmentList from dm-module
       
   156          * @param aResultsRef results reference from dm-module
       
   157          * @param aStatusRef status reference from dm-module
       
   158          */
       
   159         void ChildURIListL( 
       
   160             const TDesC8& aURI, 
       
   161             const TDesC8& aLUID, 
       
   162             const CArrayFix<TSmlDmMappingInfo>& aPreviousURISegmentList, 
       
   163             const TInt aResultsRef, 
       
   164             const TInt aStatusRef );
       
   165 
       
   166         /**
       
   167          * From CNsmlDmAdapter
       
   168          * @since Series 60_3.0
       
   169          * @param aURI URI from dm-module
       
   170          * @param aParentLUID luid mapping from dm-module
       
   171          * @param aStatusRef status from dm-module
       
   172          */        
       
   173         void AddNodeObjectL( 
       
   174             const TDesC8& aURI, 
       
   175             const TDesC8& aParentLUID, 
       
   176             const TInt aStatusRef );
       
   177 
       
   178         /**
       
   179          * From CNsmlDmAdapter
       
   180          * @since Series 60_3.0
       
   181          * @param ?arg1 ?description
       
   182          * 
       
   183          */
       
   184         void ExecuteCommandL( 
       
   185             const TDesC8& aURI, 
       
   186             const TDesC8& aLUID, 
       
   187             const TDesC8& aArgument, 
       
   188             const TDesC8& aType, 
       
   189             const TInt aStatusRef );
       
   190 
       
   191         /**
       
   192          * From CNsmlDmAdapter
       
   193          * @since Series 60_3.0
       
   194          * @param ?arg1 ?description
       
   195          * 
       
   196          */
       
   197         void ExecuteCommandL( 
       
   198             const TDesC8& aURI, 
       
   199             const TDesC8& aLUID, 
       
   200             RWriteStream*& aStream, 
       
   201             const TDesC8& aType, 
       
   202             const TInt aStatusRef );
       
   203 
       
   204         /**
       
   205          * From CNsmlDmAdapter
       
   206          * @since Series 60_3.0
       
   207          * @param ?arg1 ?description
       
   208          * 
       
   209          */   
       
   210         void CopyCommandL( 
       
   211             const TDesC8& aTargetURI, 
       
   212             const TDesC8& aTargetLUID, 
       
   213             const TDesC8& aSourceURI, 
       
   214             const TDesC8& aSourceLUID, 
       
   215             const TDesC8& aType, 
       
   216             TInt aStatusRef );
       
   217 
       
   218         /**
       
   219          * From CNsmlDmAdapter
       
   220          * @since Series 60_3.0
       
   221          * @param ?arg1 ?description
       
   222          * 
       
   223          */
       
   224         void FetchLeafObjectSizeL( const TDesC8& aURI, 
       
   225             const TDesC8& aLUID, 
       
   226             const TDesC8& aType, 
       
   227             TInt aResultsRef, 
       
   228             TInt aStatusRef );
       
   229 
       
   230         /**
       
   231          * From CNsmlDmAdapter
       
   232          * @since Series 60_3.0
       
   233          * @param ?arg1 ?description
       
   234          * 
       
   235          */
       
   236         void StartAtomicL();
       
   237 
       
   238         /**
       
   239          * From CNsmlDmAdapter
       
   240          * @since Series 60_3.0
       
   241          * @param ?arg1 ?description
       
   242          * 
       
   243          */
       
   244         void CommitAtomicL();
       
   245 
       
   246         /**
       
   247          * From CNsmlDmAdapter
       
   248          * @since Series 60_3.0
       
   249          * @param ?arg1 ?description
       
   250          * 
       
   251          */
       
   252         void RollbackAtomicL();
       
   253 
       
   254         /**
       
   255          * From CNsmlDmAdapter
       
   256          * @since Series 60_3.0
       
   257          * @param ?arg1 ?description
       
   258          * 
       
   259          */
       
   260         TBool StreamingSupport( TInt& aItemSize );
       
   261 
       
   262         /**
       
   263          * From CNsmlDmAdapter
       
   264          * @since Series 60_3.0
       
   265          * @param ?arg1 ?description
       
   266          * 
       
   267          */
       
   268         void StreamCommittedL();
       
   269 
       
   270         /**
       
   271          * From CNsmlDmAdapter
       
   272          * @since Series 60_3.0
       
   273          * @param ?arg1 ?description
       
   274          * 
       
   275          */
       
   276         void CompleteOutstandingCmdsL();
       
   277 
       
   278     private: 
       
   279 
       
   280         CNSmlDmVoIPAdapter( TAny* aEcomArguments );
       
   281 
       
   282         void ConstructL();
       
   283 
       
   284         /**
       
   285          * Fetches object based on URI and LUID.
       
   286          * @since Series 60_3.0
       
   287          * @param aURI URI of the object.
       
   288          * @param aLUID LUID of the object.
       
   289          * @param aObject The object.
       
   290          * @return DM error status.
       
   291          */
       
   292         CSmlDmAdapter::TError FetchObjectL( 
       
   293             const TDesC8& aURI,
       
   294             const TDesC8& aLUID, 
       
   295             CBufBase& aObject );
       
   296 
       
   297         /**
       
   298          * Loads SIP profile information
       
   299          * @since Series 60_3.0
       
   300          */        
       
   301         void LoadProfilesL();
       
   302 
       
   303         /**
       
   304          * Converts 8 bit descriptor to integer.
       
   305          * @since Series 60_3.0
       
   306          * @param aDes Descriptor to convert
       
   307          * @return integer
       
   308          */        
       
   309         TInt DesToInt( const TDesC8& aDes ) const;
       
   310 
       
   311         /**
       
   312          * Converts descriptor to unsigned integer
       
   313          * @since Series 60_3.0
       
   314          * @param aDes Descriptor to convert
       
   315          * @return unsigned integer
       
   316          */        
       
   317         TUint DesToTUint( const TDesC8& aDes ) const;
       
   318 
       
   319         /**
       
   320          * Removes last uri segment from aURI
       
   321          * @since Series 60_3.0
       
   322          * @param aDes Descriptor to handle
       
   323          * @return pointer to uri
       
   324          */        
       
   325         const TPtrC8 RemoveLastURISeg( const TDesC8& aURI ) const;
       
   326 
       
   327         /**
       
   328          * Gets number of uri segments.
       
   329          * @since Series 60_3.0
       
   330          * @param aURI Descriptor to handle
       
   331          * @return pointer to uri
       
   332          */
       
   333         TInt NumOfURISegs( const TDesC8& aURI ) const;
       
   334 
       
   335         /**
       
   336          * Gets last uri segment.
       
   337          * @since Series 60_3.0
       
   338          * @param aURI Descriptor to handle
       
   339          * @return integer
       
   340          */
       
   341         const TPtrC8 LastURISeg( const TDesC8& aURI ) const;
       
   342 
       
   343         /**
       
   344          * Removes ./ from uri
       
   345          * @since Series 60_3.0
       
   346          * @param aURI Descriptor to handle
       
   347          * @return pointer to uri
       
   348          */
       
   349         const TPtrC8 RemoveDotSlash( const TDesC8& aURI ) const;
       
   350 
       
   351         /**
       
   352          * Get Sip URI reference from SIP adapter
       
   353          * @since Series 60_3.0
       
   354          * @param aObject Object to insert found URI.
       
   355          * @param aID SIP profile ID to get URI
       
   356          * @return errorcode to tell wether operation was successful
       
   357          */        
       
   358         MSmlDmAdapter::TError GetSipIdL( CBufBase& aObject, 
       
   359             TUint32 aID ) const;
       
   360 
       
   361         /**
       
   362          * Set SipRef value according to aObject
       
   363          * Converts aObject to TUint 
       
   364          * @since Series 60_3.0
       
   365          * @param aObject SIP reference to change
       
   366          * @return SIP profile ID as TUint
       
   367          */
       
   368         TUint32 SetSipRefL( const TDesC8& aObject ) const;
       
   369 
       
   370         /**
       
   371          * Get Sccp URI reference from SIP adapter
       
   372          * @since Series 60_3.0
       
   373          * @param aObject Object to insert found URI.
       
   374          * @param aID SIP profile ID to get URI
       
   375          * @return errorcode to tell wether operation was successful
       
   376          */        
       
   377         MSmlDmAdapter::TError GetSccpIdL( CBufBase& aObject, 
       
   378             TUint32 aID ) const;
       
   379 
       
   380         /**
       
   381          * Set SccpRef value according to aObject
       
   382          * Converts aObject to TUint 
       
   383          * @since Series 60_3.0
       
   384          * @param aObject SIP reference to change
       
   385          * @return SIP profile ID as TUint
       
   386           */
       
   387         TUint SetSccpRefL( const TDesC8& aObject ) const;
       
   388 
       
   389         /**
       
   390          * Check for duplicate settingsName and rename if same
       
   391          * @since Series 60_3.0
       
   392          * @param aProfile Profile to check.
       
   393          */
       
   394         TBool CheckDuplicateNameL( CRCSEProfileEntry& aEntry );
       
   395 
       
   396         /**
       
   397          * Check for duplicate providerName and rename if same
       
   398          * @since Series 60_3.0
       
   399          * @param aProfile Profile to check.
       
   400          */
       
   401         TBool CheckDuplicateProviderL( CRCSEProfileEntry& aEntry );
       
   402 
       
   403         /**
       
   404          * Finds profile location in profile array.
       
   405          * @since Series 60_3.0
       
   406          * @param aURI Descriptor to look for
       
   407          * @return Profile location TInt
       
   408          */
       
   409         TInt FindProfileLocation( const TDesC8& aURI ) const;
       
   410 
       
   411         /**
       
   412          * Finds codec location in codec array.
       
   413          * @since Series 60_3.0
       
   414          * @param aID CodecId
       
   415          * @return Profile location TInt
       
   416          */
       
   417         TInt FindCodecLocation( TUint32 aID ) const;
       
   418 
       
   419 	    /**
       
   420 	     * Sets CS/PS telephony preference
       
   421 	     * @since Series 60_3.0
       
   422 	     * @param aTelephonyPreference state to set
       
   423 	     */
       
   424 	    void SetTelephonyPreferenceL( const TTelephonyPreference& 
       
   425 	        aTelephonyPreference );
       
   426 
       
   427         /**
       
   428          * Get Terminal Type for SIP User Agent Header.
       
   429          * @since S60 v3.0
       
   430          * @param aTeminalType Terminal type.
       
   431          */
       
   432         void GetTerminalTypeL( TBuf<KMaxTerminalTypeLength>& aTerminalType ) 
       
   433             const;
       
   434 
       
   435         /**
       
   436          * Get WLAN MAC address for SIP User Agent Header.
       
   437          * @since S60 v3.0
       
   438          * @param aMac WLAN MAC address.
       
   439          */
       
   440         void GetWlanMacAddressL( TBuf<KWlanMacAddressLength>& aMac ) const;
       
   441 
       
   442         /**
       
   443          * Get NAT/FW Domain specific URI according to given profile ID.
       
   444          * @since S60 3.2
       
   445          * @param aObject URI to be set.
       
   446          * @param aProfileId Profile ID from which the URI is to be found.
       
   447          * @return DM error status.
       
   448          */
       
   449         MSmlDmAdapter::TError GetNatFwUriL( TBuf16<KMaxUriLength>& aObject, 
       
   450             TInt aProfileId ) const;
       
   451 
       
   452         /**
       
   453          * Get NAT/FW Domain specific ID according to given URI.
       
   454          * @since S60 3.2
       
   455          * @param aObject URI with which to resolve the ID.
       
   456          * @return NAT/FW Domain specific ID.
       
   457          */
       
   458         TUint32 NatFwIdL( const TDesC8& aObject ) const;
       
   459 
       
   460         /**
       
   461          * Get Access Point ID (connection reference) according to aObject.
       
   462          * @since S60 3.2
       
   463          * @param aObject URI to look from AP adapter.
       
   464          * @return Access point ID number.
       
   465          */    
       
   466         TInt ConRefL( const TDesC8& aObject ) const;
       
   467 
       
   468         /**
       
   469          * Get Access Point URI reference from AP adapter.
       
   470          * @since S60 3.2
       
   471          * @param aObject Object into which to insert found URI.
       
   472          * @param aIapID IAP ID to look for.
       
   473          * @return DM error status.
       
   474          */
       
   475         MSmlDmAdapter::TError GetConRefL( CBufBase& aObject, 
       
   476             TInt aIapId ) const;
       
   477 
       
   478         /**
       
   479          * Get Presence profile URI according to given profile ID.
       
   480          * @since S60 3.2
       
   481          * @param aObject URI to be set.
       
   482          * @param aProfileId Profile ID from which the URI is to be found.
       
   483          * @return DM error status.
       
   484          */
       
   485         MSmlDmAdapter::TError GetPresenceUriL( TBuf16<KMaxUriLength>& aObject,
       
   486             TUint32 aProfileId ) const;
       
   487 
       
   488         /**
       
   489          * Get Presence profile ID according to given URI.
       
   490          * @since S60 3.2
       
   491          * @param aObject URI with which to resolve the ID.
       
   492          * @return Presence profile ID.
       
   493          */
       
   494         TUint32 PresenceIdL( const TDesC8& aObject ) const;
       
   495 		
       
   496         /**
       
   497          * Checks if Presence Settings ID is valid.
       
   498          * @since S60 3.2
       
   499          * @param aSetId Presence Settings ID.
       
   500          * @return ETrue if settings exists, EFalse if not.
       
   501          */
       
   502         TBool IsPresIDValidL( TUint32 aSetId ) const;
       
   503         
       
   504         /**
       
   505          * Get SNAP ID.
       
   506          * @since S60 3.2.
       
   507          * @param aUri URI from which to find SNAP ID.
       
   508          * @return SNAP ID.
       
   509          */
       
   510         TInt SnapIdL( const TDesC8& aUri );
       
   511 
       
   512         /**
       
   513          * Set SNAP URI.
       
   514          * @since S60 3.2.
       
   515          * @param aObject Object in which found URI is set.
       
   516          * @param aSnapId SNAP ID from which to find URI.
       
   517          * @return ETrue if successful, EFalse if not.
       
   518          */
       
   519         MSmlDmAdapter::TError GetSnapUriL( TDes8& aObject, TInt aSnapId );
       
   520 
       
   521         /**
       
   522          * Updates Codec specific object.
       
   523          * @since S60 3.2
       
   524          * @param aLUID luid mapping from dm-module
       
   525          * @param aUriSeg Last URI segment.
       
   526          * @param aObject Data of the object.
       
   527          * @return Value indicating if object was found.
       
   528          */
       
   529         CSmlDmAdapter::TError UpdateCodecSpecificObject( 
       
   530             const TDesC8& aLUID, const TDesC8& aUriSeg, 
       
   531             const TDesC8& aObject );
       
   532 
       
   533         /**
       
   534          * Fetches the values of Codec specific leaf objects.
       
   535          * @since S60 3.2
       
   536          * @param aLUID luid mapping from dm-module
       
   537          * @param aUriSeg Last URI segment.
       
   538          * @param aSegmentResult Storage for fetched objects.
       
   539          * @return Value indicating if object was found.
       
   540          */
       
   541         CSmlDmAdapter::TError FetchCodecObject( const TDesC8& aLUID,
       
   542             const TDesC8& aUriSeg, TDes8& aSegmentResult );
       
   543 
       
   544         /**
       
   545          * Inserts Codec specific leaf objects.
       
   546          * @since S60 3.2
       
   547          * @param aCurrentURISegmentList List for leaf objects.
       
   548          */
       
   549         void CodecChildListL( CBufBase* const aCurrentURISegmentList );
       
   550             
       
   551         /**
       
   552          * Updates Setting Ids specific object.
       
   553          * @since S60 3.2
       
   554          * @param aLUID luid mapping from dm-module
       
   555          * @param aUriSeg Last URI segment.
       
   556          * @param aObject Data of the object.
       
   557          * @return Value indicating if object was found.
       
   558          */
       
   559         CSmlDmAdapter::TError UpdateSettingIdsSpecificObjectL( 
       
   560             const TDesC8& aLUID, const TDesC8& aUriSeg, 
       
   561             const TDesC8& aObject );
       
   562             
       
   563         /**
       
   564          * Inserts Voip leaf objects.
       
   565          * @since S60 3.2
       
   566          * @param aCurrentURISegmentList List for leaf objects.
       
   567          */
       
   568         void VoipChildListL( CBufBase* const aCurrentURISegmentList );
       
   569 
       
   570     private:    // Data
       
   571 
       
   572         /**
       
   573          * RCSE profile registry handle.
       
   574          * Own.
       
   575          */
       
   576         CRCSEProfileRegistry* iCRCSEProfile;
       
   577 
       
   578         /**
       
   579          * RCSE codec registry handle.
       
   580          * Own.
       
   581          */
       
   582         CRCSEAudioCodecRegistry* iCRCSEAudioCodec;
       
   583 
       
   584         /**
       
   585          * Handle for DM callback interface.
       
   586          * Not own.
       
   587          */
       
   588         MSmlDmCallback* iDmCallback;
       
   589 
       
   590         /**
       
   591          * For telling status of command to the adapter.
       
   592          */
       
   593         TInt iStatusRef;
       
   594 
       
   595         /**
       
   596          * Array of pointers to all profile entries.
       
   597          * Own.
       
   598          */
       
   599         RPointerArray<CRCSEProfileEntry> iProfileEntries;
       
   600 
       
   601         /**
       
   602          * Array of pointers to all codec entries.
       
   603          * Own.
       
   604          */
       
   605         RPointerArray<CRCSEAudioCodecEntry> iCodecEntries;
       
   606 
       
   607         /**
       
   608          * For knowing if there are modifications to entries.
       
   609          */
       
   610         RArray<TInt> iProfileModifs;
       
   611 
       
   612         /**
       
   613          * For knowing if there are modifications to entries.
       
   614          */
       
   615         RArray<TInt> iCodecModifs;
       
   616 
       
   617         /**
       
   618          * Current editable profileID in array of profiles.
       
   619          */
       
   620         TInt iProfileID;
       
   621 
       
   622         /**
       
   623          * Array for service provider settings.
       
   624          */
       
   625         RPointerArray<CDMVoIPSPSettings> iSPSettings;
       
   626 
       
   627         /**
       
   628          * the temporary string used to fetch profile id 
       
   629          */
       
   630         HBufC8* iTempProfileIdObject;
       
   631 
       
   632         /**
       
   633          * flag which indicates whether the profile type is set or not
       
   634          */
       
   635         TBool iIsProfileTypeSet;
       
   636         
       
   637         /**
       
   638          * flag which indicates whether the AllowVoIPOverWCDMA flag is 
       
   639          * modified or not
       
   640          */
       
   641         TBool iAllowVoIPOverWCDMAModified;
       
   642     };
       
   643 
       
   644 #endif // __NSMLDMVOIPADAPTER_H__
       
   645 
       
   646 // End of File.