--- a/omadm/omadmextensions/adapters/lawmodmadapter/src/lawmodmadapter.cpp Wed Sep 15 11:58:40 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1354 +0,0 @@
-/*
-* Copyright (c) 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: DCMO DM Adapter implementation
-*
-*/
-
-// INCLUDE
-#include <implementationproxy.h>
-#include <smldmadapter.h>
-#include <centralrepository.h>
-#include <e32base.h>
-#include <ecom.h>
-#include <utf.h>
-#include <lawmoadaptercrkeys.h>
-#include <DevManInternalCRKeys.h>
-#include <SyncMLClientDM.h> // syncmlclientapi.lib
-#include <NSmlPrivateAPI.h> // Generic alert
-#include <nsmlconstants.h>
-#include <TerminalControl3rdPartyAPI.h>
-#include <coreapplicationuisdomainpskeys.h>
-#include <lawmointerface.h>
-//User Include
-#include "lawmodmadapter.h"
-#include "nsmldebug.h"
-#include "nsmldmuri.h"
-#include "TPtrC8I.h"
-#include "lawmodebug.h"
-// CONSTANTS
-const TInt KSyncCmdStatus (200);
-#define MAXBUFLEN 255
-
-// ============================= MEMBER FUNCTIONS =============================
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::NewL
-// Symbian 1st phase contructor
-// (static, may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-CLawmoDMAdapter* CLawmoDMAdapter::NewL( MSmlDmCallback* aCallback )
- {
- RDEBUG( "CLawmoDMAdapter NewL: begin" );
- CLawmoDMAdapter* self = NewLC( aCallback );
- CleanupStack::Pop( self );
- return self;
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::NewLC
-// Symbian 1st phase contructor. Push object to cleanup-stack
-// (static, may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-CLawmoDMAdapter* CLawmoDMAdapter::NewLC( MSmlDmCallback* aCallback )
- {
- RDEBUG( "CLawmoDMAdapter NewLC : begin" );
- CLawmoDMAdapter* self = new ( ELeave ) CLawmoDMAdapter( aCallback );
- CleanupStack::PushL( self );
- self->ConstructL();
- RDEBUG( "CLawmoDMAdapter NewLC : end" );
- return self;
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::CLawmoDMAdapter()
-// C++ Constructor
-// Status : Draft
-// ----------------------------------------------------------------------------
-CLawmoDMAdapter::CLawmoDMAdapter( TAny* aEcomArguments )
- : CSmlDmAdapter::CSmlDmAdapter( aEcomArguments )
- {
- RDEBUG( "CLawmoDMAdapter default constructor" );
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::ConstructL
-// 2nd phase contructor
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::ConstructL()
- {
- RDEBUG( "CLawmoDMAdapter::ConstructL" );
- User::LeaveIfError( ilawmoSession.Connect() );
- RDEBUG( "CLawmoDMAdapter::session connected" );
- iRootNode.Zero();
- TBuf<MAXBUFLEN> temp;
- CRepository *repository=CRepository::NewLC ( KCRUidLawmoAdapter );
- repository->Get(KLawmoRootNode,temp);
- iRootNode.Copy(temp);
- CleanupStack::PopAndDestroy();
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::~CLawmoDMAdapter()
-// C++ Destructor
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-CLawmoDMAdapter::~CLawmoDMAdapter()
- {
- RDEBUG( "CLawmoDMAdapter Destructor" );
- ilawmoSession.Close();
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::DDFVersionL
-// Return DM plug-in version
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::DDFVersionL( CBufBase& aDDFVersion )
- {
- // Insert version information
- RDEBUG( "CLawmoDMAdapter::DDFVersionL" );
- aDDFVersion.InsertL( 0, KLAWMODMAdapterVersion );
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::DDFStructureL
-// Return DM plug-in structure
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::DDFStructureL( MSmlDmDDFObject& aDDF )
- {
- // Declare accesses
- RDEBUG( "CLawmoDMAdapter::DDFStructureL begin" );
- TSmlDmAccessTypes accessTypes;
- accessTypes.SetGet();
-
- // Create root node
- MSmlDmDDFObject& root = aDDF.AddChildObjectL( iRootNode );
- FillNodeInfoL( root,
- accessTypes,
- MSmlDmDDFObject::EPermanent,
- MSmlDmDDFObject::ENode,
- MSmlDmDDFObject::EOne,
- KNullDesC8(),
- KMimeType );
-
- root.SetDFTitleL( KNSmlLAWMOAdapterTitle );
-
- FillLAWMODDFL(root);
- RDEBUG( "CLawmoDMAdapter::DDFStructureL end" );
-
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::StreamingSupport
-// Return streaming support status, set supported item size
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-TBool CLawmoDMAdapter::StreamingSupport( TInt& /* aItemSize */ )
- {
- // Not supported
- RDEBUG( "CLawmoDMAdapter::StreamingSupport" );
- return EFalse;
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::StreamCommittedL
-// Commit stream buffer
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::StreamCommittedL()
- {
- RDEBUG("CLawmoDMAdapter::StreamCommitted" );
- // Intentionally left empty
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::CompleteOutstandingCmdsL
-// Complete outstanding commands
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::CompleteOutstandingCmdsL()
- {
- RDEBUG( "CLawmoDMAdapter::CompleteOutstandingCmdsL" );
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::FillNodeInfoL
-// Fill node info
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::FillNodeInfoL( MSmlDmDDFObject& aDDFObject,
- TSmlDmAccessTypes& aAccessTypes,
- MSmlDmDDFObject::TScope aScope,
- MSmlDmDDFObject::TDFFormat aFormat,
- MSmlDmDDFObject::TOccurence aOccurence,
- const TDesC8& aDescription,
- const TDesC8& aMIMEType )
- {
- RDEBUG( "CLawmoDMAdapter::FillNodeInfoL - begin" );
- aDDFObject.SetAccessTypesL( aAccessTypes );
- aDDFObject.SetScopeL( aScope );
- aDDFObject.SetOccurenceL( aOccurence );
- aDDFObject.SetDFFormatL( aFormat );
- aDDFObject.SetDescriptionL( aDescription );
- if ( aFormat != MSmlDmDDFObject::ENode )
- {
- aDDFObject.AddDFTypeMimeTypeL( aMIMEType );
- }
- RDEBUG( "CLawmoDMAdapter::FillNodeInfoL - end" );
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::CopyCommandL
-// Copy object
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::CopyCommandL( const TDesC8& /*aTargetURI*/,
- const TDesC8& /*aTargetLUID*/,
- const TDesC8& /*aSourceURI*/,
- const TDesC8& /*aSourceLUID*/,
- const TDesC8& /*aType*/,
- TInt aStatusRef )
- {
- // Not supported
- RDEBUG( "CLawmoDMAdapter::CopyCommandL" );
- Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError );
- }
-
-// ----------------------------------------------------------------------------
-// DeleteObjectL
-// Delete object
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::DeleteObjectL( const TDesC8& /* aURI */,
- const TDesC8& /* aLUID */,
- TInt aStatusRef )
-
- {
- // Not supported
- RDEBUG( "CLawmoDMAdapter::DeleteObjectL" );
- Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError );
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::FetchLeafObjectL
-// Fetch leaf
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::FetchLeafObjectL( const TDesC8& aURI,
- const TDesC8& aLUID,
- const TDesC8& aType,
- TInt aResultsRef,
- TInt aStatusRef )
- {
- RDEBUG("CLawmoDMAdapter::FetchLeafObjectL() Begin");
-
- TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash( aURI );
- CBufFlat *lObject = CBufFlat::NewL( MAXBUFLEN );
- CleanupStack::PushL( lObject );
- lObject->Reset();
-
- TInt err = InternalFetchObjectL( uriPtrc, aLUID, aType, lObject, aStatusRef );
-
- if((err == ELawMoSuccess)||(err == ELawMoOk))
- Callback().SetResultsL( aResultsRef, *lObject, aType );
-
- CSmlDmAdapter::TError status = MapErrorToStatus( err );
-
- Callback().SetStatusL( aStatusRef, status );
- CleanupStack::PopAndDestroy( lObject );
- RDEBUG("CLawmoDMAdapter::FetchLeafObjectL() End");
- }
-
-// ----------------------------------------------------------------------------
-//InternalFetchObjectL
-// ----------------------------------------------------------------------------
-
-TInt CLawmoDMAdapter::InternalFetchObjectL( const TDesC8& aURI,
- const TDesC8& /*aLUID*/,
- const TDesC8& /*aType*/,
- CBufFlat* aObject,
- TInt aStatusRef )
- {
- RDEBUG("CLawmoDMAdapter::InternalFetchObjectL() Begin");
- CLawmoDMAdapter::TNodeIdentifier identifier = GetNodeIdentifier(aURI);
- TInt numOfSegs = NSmlDmURI::NumOfURISegs( aURI ) ;
- TInt err (ELawMoInvalid);
-
- switch(identifier)
- {
-
- case CLawmoDMAdapter::ENodeState:
- {
- RDEBUG("CLawmoDMAdapter::InternalFetchObjectL ENodeState");
- TInt state;
- err = GetStateL(state);
- TBuf8<MAXBUFLEN> tmp;
- tmp.Num(state);
- aObject->InsertL(aObject->Size(),tmp);
- }
- break;
-
- case CLawmoDMAdapter::ENodeItemName:
- {
- RDEBUG("CLawmoDMAdapter::InternalFetchObjectL ENodeItemName");
- TBuf<MAXBUFLEN> val;
- TBuf<MAXBUFLEN> property;
- TPtrC8 seg = NSmlDmURI::URISeg(aURI, numOfSegs-2);
- property.Copy(seg);
- err = ilawmoSession.GetListItemName(property, val);
- TBuf8<MAXBUFLEN> tmp;
- tmp.Copy(val);
- aObject->InsertL(aObject->Size(),tmp);
- }
- break;
-
- case CLawmoDMAdapter::ENodeToBeWiped:
- {
- RDEBUG("CLawmoDMAdapter::InternalFetchObjectL ENodeToBeWiped");
- TBool val;
- TBuf<MAXBUFLEN> property;
- TPtrC8 seg = NSmlDmURI::URISeg(aURI, numOfSegs-2);
- property.Copy(seg);
- err = ilawmoSession.GetToBeWipedValue(property, val);
- TBuf8<MAXBUFLEN> tmp;
- if(val)
- tmp.Copy(KNSmlTrue);
- else
- tmp.Copy(KNSmlFalse);
- aObject->InsertL(aObject->Size(),tmp);
- }
- break;
-
- case CLawmoDMAdapter::ENodeWipe:
- {
- RDEBUG("CLawmoDMAdapter::InternalFetchObjectL ENodeWipe");
- err = ELawMoSuccess;
- TBuf8<MAXBUFLEN> tmp;
- tmp.Zero();
- RDEBUG("CLawmoDMAdapter::InternalFetchObjectL Null value return");
- aObject->InsertL(aObject->Size(),tmp);
- }
- break;
- default:
- err = ELawMoUnknown;
- break;
-
- }
- RDEBUG("CLawmoDMAdapter::InternalFetchObjectL() End");
- return err;
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::FetchLeafObjectSizeL
-// Calculate leaf object size
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::FetchLeafObjectSizeL( const TDesC8& /* aURI */,
- const TDesC8& /* aLUID */,
- const TDesC8& /* aType */,
- TInt /* aResultsRef */,
- TInt aStatusRef )
- {
- RDEBUG( "CLawmoDMAdapter::FetchLeafObjectSizeL" );
- MSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
- // Respond
- Callback().SetStatusL( aStatusRef, retValue );
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::ChildURIListL
-// Create child URI list
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::ChildURIListL( const TDesC8& aURI,
- const TDesC8& /* aLUID */,
- const CArrayFix<TSmlDmMappingInfo>& /* aPreviousURISegmentList */,
- TInt aResultsRef,
- TInt aStatusRef )
- {
- RDEBUG( "CLawmoDMAdapter::ChildURIListL - begin" );
- MSmlDmAdapter::TError retValue = CSmlDmAdapter::EOk;
- CBufBase *currentURISegmentList = CBufFlat::NewL( MAXBUFLEN );
- CleanupStack::PushL( currentURISegmentList );
- // Bcoz root node is configurable, remove the node for this operation.
- TPtrC8 uriPtrc = NSmlDmURI::RemoveFirstSeg(aURI);
-
- if( uriPtrc == KNullDesC8)
- {
- currentURISegmentList->InsertL( currentURISegmentList->Size(), KSegmLawmo );
- Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EOk );
- Callback().SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 );
- CleanupStack::PopAndDestroy( ); // currentURISegmentList
- RDEBUG( "CLawmoDMAdapter::ChildURIListL(): end" );
- return;
- }
- else if( ( aURI.Match( KLawmoAvWipe ) != KErrNotFound ) &&
- (aURI.Match( KLawmoAvWipe2 ) == KErrNotFound ))
- {
- currentURISegmentList->InsertL( currentURISegmentList->Size(), KSegmLawmo2 );
- }
- else if( ( aURI.Match( KLawmoAvWipe2 ) != KErrNotFound ))
- {
- currentURISegmentList->InsertL( currentURISegmentList->Size(), KSegmLawmo3 );
- }
- // Operations
- else if(( aURI.Match( KLawmoOperationsMatch ) != KErrNotFound ))
- {
- currentURISegmentList->InsertL( currentURISegmentList->Size(), KSegmLawmoOperations );
- }
- // Ext
- else if(( aURI.Match(KLawmoOperationsExtMatch) != KErrNotFound))
- {
- currentURISegmentList->InsertL( currentURISegmentList->Size(), KNSmlDdfOpExtWipeAll );
- }
- else
- {
- retValue = CSmlDmAdapter::ENotFound;
- }
-
- Callback().SetStatusL( aStatusRef, retValue );
- CleanupStack::PopAndDestroy(); // currentURISegmentList
- RDEBUG( "CLawmoDMAdapter::ChildURIListL - end" );
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::AddNodeObjectL
-// Add node
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::AddNodeObjectL( const TDesC8& /* aURI */,
- const TDesC8& /* aParentLUID */,
- TInt aStatusRef )
- {
- // Not supported
- RDEBUG( "CLawmoDMAdapter::AddNodeObjectL - begin" );
- Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError );
- RDEBUG( "CLawmoDMAdapter::AddNodeObjectL - end" );
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::ExecuteCommandL
-// Execute command
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::ExecuteCommandL( const TDesC8& aURI ,
- const TDesC8& /* aLUID */,
- const TDesC8& aArgument,
- const TDesC8& /* aType */,
- TInt aStatusRef )
- {
- RDEBUG("CLawmoDMAdapter::ExecuteCommandL() Begin");
- CSmlDmAdapter::TError status;
- if(IsFactoryProfileL())
- {
- RDEBUG("CLawmoDMAdapter::ExecuteCommandL() its factory prof");
- SetCurrentServerIdL();
- TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash( aURI );
- CLawmoDMAdapter::TNodeIdentifier identifier = GetNodeIdentifier(uriPtrc);
- TLawMoStatus err(ELawMoSuccess);
- RDEBUG_2("ExecuteCommandL executing %d", identifier);
- switch(identifier)
- {
- case ENodePartLock:
- err = LockDeviceL();
- break;
-
- case ENodeUnlock:
- err = UnLockDeviceL();
- break;
-
- case ENodeWipe:
- {
- //Write correlator id into the cenrep
- /********* disable this comment after correlator is added
- CRepository* crep = NULL;
- crep = CRepository::NewLC( KCRUidLawmoAdapter );
- RDEBUG("CLawmoDMAdapter::SetCurrentServerId() cenrep1");
- TInt reterr = crep->Set( KLawmoCorrelator, aArgument );
- CleanupStack::PopAndDestroy(crep);*/
- err = ilawmoSession.DeviceWipe();
- }
- break;
-
- case ENodeWipeAll:
- err = ilawmoSession.DeviceWipeAll();
- break;
-
- default:
- err = ELawMoUnknown;
- break;
- }
-
- CRepository* crepository = NULL;
- crepository = CRepository::NewLC( KCRUidLawmoAdapter );
- // Do the operations based on Sync or Nonsync Exec command
- if((identifier == ENodeWipe)||(identifier == ENodeWipeAll))
- {
- TInt reterr(KErrNone);
- TBuf<MAXBUFLEN> argument;
- TBuf<MAXBUFLEN> opURI;
- argument.Copy(aArgument);
- opURI.Copy(aURI);
- if(argument.Length()!=0)
- reterr = crepository->Set( KLawmoCorrelator, argument );
- RDEBUG_2("CLawmoDMAdapter write correlator %d", reterr);
- reterr = crepository->Set( KLawmoSourceURI, opURI);
- RDEBUG_2("CLawmoDMAdapter write sourceURI %d", reterr);
- }
- else
- {
- CRepository* crep = NULL;
- _LIT8(KNsmlNull,"null");
- crep = CRepository::NewLC( KCRUidDeviceManagementInternalKeys );
- RDEBUG("CLawmoDMAdapter::ExecuteCommandL Sourceref Crep");
- TInt reterr = crep->Set( KNSmlDMSCOMOTargetRef, KNsmlNull );
- RDEBUG_2("CLawmoDMAdapter::cenrep set for SourceRef, %d",reterr);
- CleanupStack::PopAndDestroy();
- if(err==ELawMoSuccess)
- {
- TInt resCode;
- RDEBUG("CLawmoDMAdapter check for the synchronous result code");
- //check the cenrep to determine which sync result code to send
- reterr = crepository->Get(KLawmoSyncRetVal, resCode);
- if(resCode==KSyncCmdStatus)
- {
- RDEBUG("CLawmoDMAdapter Lock return status 200");
- err = ELawMoOk;
- }
- }
- }
- CleanupStack::PopAndDestroy(crepository);
- status = MapErrorToStatus( err ); //map lawmo/syncml error codes
- }
- else
- {
- RDEBUG("CLawmoDMAdapter::ExecuteCommandL() NOT factory prof");
- status = CSmlDmAdapter::ENotAllowed; //405
- }
- Callback().SetStatusL( aStatusRef, status );
- RDEBUG( "CLawmoDMAdapter::ExecuteCommandL - end" );
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::ExecuteCommandL
-// Execute command, streaming enabled
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::ExecuteCommandL( const TDesC8& /* aURI */,
- const TDesC8& /* aLUID */,
- RWriteStream*& /* aStream */,
- const TDesC8& /* aType */,
- TInt aStatusRef )
- {
- // Not supported
- RDEBUG( "CLawmoDMAdapter::ExecuteCommandL Streaming" );
- Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError );
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::UpdateLeafObjectL
-// Update leaf object
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::UpdateLeafObjectL( const TDesC8& aURI,
- const TDesC8& aLUID,
- const TDesC8& aObject,
- const TDesC8& aType,
- TInt aStatusRef )
- {
- RDEBUG( "CLawmoDMAdapter::UpdateLeafObjectL - begin" );
- CSmlDmAdapter::TError status;
- if(IsFactoryProfileL())
- {
- RDEBUG("CLawmoDMAdapter::UpdateLeafObjectL() is factory prof");
- TPtrC8 uriPtrc = NSmlDmURI::RemoveDotSlash( aURI );
- TInt err = InternalUpdateObjectL( uriPtrc, aLUID, aObject, aType, aStatusRef );
- status = MapErrorToStatus( err );
- }
- else
- {
- RDEBUG("CLawmoDMAdapter::UpdateLeafObjectL() NOT factory prof");
- status = CSmlDmAdapter::ENotAllowed;//405
- }
-
- Callback().SetStatusL( aStatusRef, status );
- RDEBUG( "CLawmoDMAdapter::UpdateLeafObjectL - end" );
- }
-
- // ----------------------------------------------------------------------------
-//InternalFetchObjectL
-// ----------------------------------------------------------------------------
-
-TInt CLawmoDMAdapter::InternalUpdateObjectL( const TDesC8& aURI,
- const TDesC8& /*aLUID*/,
- const TDesC8& aObject,
- const TDesC8& /*aType*/,
- TInt aStatusRef )
- {
- RDEBUG( "CLawmoDMAdapter::InternalUpdateObjectL - begin" );
- CLawmoDMAdapter::TNodeIdentifier identifier = GetNodeIdentifier(aURI);
- TInt numOfSegs = NSmlDmURI::NumOfURISegs( aURI ) ;
- TInt err (ELawMoInvalid);
- RDEBUG_2("UpdateCommand updating %d", identifier);
- switch(identifier)
- {
- case CLawmoDMAdapter::ENodeToBeWiped:
- {
- TInt value;
- HBufC8 *object = HBufC8::NewLC( aObject.Length() );
- TPtr8 objPtr = object->Des();
- objPtr.Format( aObject );
- objPtr.LowerCase();
- if(objPtr.Compare(KNSmlTrue) == 0)
- value = 1;
- else if(objPtr.Compare(KNSmlFalse) == 0)
- value = 0;
- else
- {
- TLex8 lex( aObject );
- RDEBUG( "CLawmoDMAdapter::InternalUpdateObjectL lexing" );
- User::LeaveIfError( lex.Val( value ) );
- }
- CleanupStack::PopAndDestroy(); // object
-
- if(value<0||value>1)
- {
- RDEBUG_2("value to set %d", value);
- return ELawMoInvalid;
- }
-
- RDEBUG_2("value to set %d", value);
- TPtrC8 seg = NSmlDmURI::URISeg(aURI, numOfSegs-2);
- TBuf<MAXBUFLEN> property;
- property.Copy(seg);
- RDEBUG_2("category %s", property.PtrZ());
- err = ilawmoSession.SetToBeWipedValue(property, value);
- }
- break;
-
- default:
- err = ELawMoUnknown;
- break;
-
- }
- RDEBUG( "CLawmoDMAdapter::InternalUpdateObjectL - End" );
- return err;
- }
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::UpdateLeafObjectL
-// Update leaf object, streaming enabled
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::UpdateLeafObjectL( const TDesC8& /* aURI */,
- const TDesC8& /* aLUID */,
- RWriteStream*& /* aStream */,
- const TDesC8& /* aType */,
- TInt aStatusRef )
- {
-
- // Not supported
- RDEBUG( "CLawmoDMAdapter::UpdateLeafObjectL - Streaming" );
- Callback().SetStatusL( aStatusRef, CSmlDmAdapter::EError );//500
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::StartAtomicL
-// Start atomic
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::StartAtomicL()
- {
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::CommitAtomicL
-// Commit atomic commands
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::CommitAtomicL()
- {
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::RollbackAtomicL
-// Lose all modifications after 'StartAtomicL' command
-// (may leave)
-// Status : Draft
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::RollbackAtomicL()
- {
- }
-
-// ---------------------------------------------------------------------------
-// CNSmlDmFotaAdapter::MapStatusToError()
-// Returns a status code corresponding to the system error code given
-// as parameter.
-// ---------------------------------------------------------------------------
-//
-CSmlDmAdapter::TError CLawmoDMAdapter::MapErrorToStatus( TInt aError ) const
- {
- RDEBUG( "CLawmoDMAdapter::MapErrorToStatus - Begin" );
- CSmlDmAdapter::TError err;
-
- switch( aError )
- {
- case ELawMoSuccess:
- err = CSmlDmAdapter::EExecSuccess; //1200
- break;
- case ELawMoOk:
- err = CSmlDmAdapter::EOk; //200
- break;
- case ELawMoFail:
- err = CSmlDmAdapter::EExecClientError; //1400
- break;
- case ELawMoUserCancelled:
- err = CSmlDmAdapter::EExecUserCancelled; //1401
- break;
- case ELawMoFullyLockFailed:
- err = CSmlDmAdapter::EExecDownloadFailed; //1402
- break;
- case ELawMoPartialLockFailed:
- err = CSmlDmAdapter::EExecAltDwnldAuthFail; //1403
- break;
- case ELawMoUnlockFailed:
- err = CSmlDmAdapter::EExecDownFailOOM; //1404
- break;
- case ELawMoWipeFailed:
- err = CSmlDmAdapter::EExecInstallFailed; //1405
- break;
- case ELawMoWipeNotPerformed:
- err = CSmlDmAdapter::EExecInstallOOM; //1406
- break;
- case ELawMoWipeSuccess:
- err = CSmlDmAdapter::EExecDownFailOOM; //1201 ??????
- break;
- case ELawMoAccepted:
- err = CSmlDmAdapter::EAcceptedForProcessing; //202
- break;
- case ELawMoUnknown:
- err = CSmlDmAdapter::ENotFound; //404
- break;
- case ELawMoInvalid:
- err = CSmlDmAdapter::EError; //500
- break;
- default :
- err = CSmlDmAdapter::EExecClientError;//1400
- }
-
- return err;
- }
-
-// ========================= OTHER EXPORTED FUNCTIONS =========================
-
-void CleanupEComArray(TAny* aArray)
- {
- (static_cast<RImplInfoPtrArray*> (aArray))->ResetAndDestroy();
- (static_cast<RImplInfoPtrArray*> (aArray))->Close();
- }
-
-// ----------------------------------------------------------------------------
-// CLawmoDMAdapter::FillLAWMODDFL
-// This function constructs the DDFnode with the details
-// ----------------------------------------------------------------------------
-//
-void CLawmoDMAdapter::FillLAWMODDFL(MSmlDmDDFObject& aDDF)
-{
- RDEBUG("CLawmoDMAdapter::FillDCMPDDFL(): begin");
-
- TSmlDmAccessTypes accessTypesG;
- accessTypesG.SetGet();
-
- MSmlDmDDFObject& nStateDDF = aDDF.AddChildObjectL( KNSmlDdfState ); // State
- FillNodeInfoL( nStateDDF, accessTypesG,
- MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EInt, MSmlDmDDFObject::EOne,
- KNSmlDdfStateDescription, KMimeType );
-
- FillDynamicNodeL(aDDF);
-
- MSmlDmDDFObject& nOperationsDDF = aDDF.AddChildObjectL( KNSmlDdfOperations );
- FillNodeInfoL( nOperationsDDF, accessTypesG,
- MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode, MSmlDmDDFObject::EOne,
- KNSmlDdfOperationsDescription, KMimeType );
-
- TSmlDmAccessTypes accessTypesE;
- accessTypesE.SetExec();
-
- MSmlDmDDFObject& nPartLockDDF = nOperationsDDF.AddChildObjectL( KNSmlDdfPartLock ); // Partial Lock
- FillNodeInfoL( nPartLockDDF, accessTypesE,
- MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENull, MSmlDmDDFObject::EOne,
- KNSmlDdfPartLockDescription, KMimeType );
-
- MSmlDmDDFObject& nUnlockDDF = nOperationsDDF.AddChildObjectL( KNSmlDdfUnlock ); // Unlock
- FillNodeInfoL( nUnlockDDF, accessTypesE,
- MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENull, MSmlDmDDFObject::EOne,
- KNSmlDdfUnlockDescription, KMimeType );
-
- TSmlDmAccessTypes accessTypesEG;
- accessTypesEG.SetExec();
- accessTypesEG.SetGet();
-
- MSmlDmDDFObject& nWipeDDF = nOperationsDDF.AddChildObjectL( KNSmlDdfWipe ); // Wipe
- FillNodeInfoL( nWipeDDF, accessTypesEG,
- MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENull, MSmlDmDDFObject::EOne,
- KNSmlDdfWipeDescription, KMimeType );
-
- MSmlDmDDFObject& nExtDDF = aDDF.AddChildObjectL( KNSmlDdfOpExt ); // Ext
- FillNodeInfoL( nExtDDF, accessTypesG,
- MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode, MSmlDmDDFObject::EOne,
- KNSmlDdfExtDescription, KMimeType );
-
- MSmlDmDDFObject& nOpExtDDF = nExtDDF.AddChildObjectL( KNSmlDdfOpExtWipeAll ); // WipeAll
- FillNodeInfoL( nOpExtDDF, accessTypesE,
- MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENull, MSmlDmDDFObject::EOne,
- KNSmlDdfOpExtDescription, KMimeType );
- //Check for any generic alerts and send
- RDEBUG("CLawmoDMAdapter::FillDCMPDDFL(): send generic alert");
- SendGenericAlertL();
- RDEBUG("CLawmoDMAdapter::FillDCMPDDFL(): end");
-}
-
-void CLawmoDMAdapter::FillDynamicNodeL(MSmlDmDDFObject& aDDF)
- {
- RDEBUG("CDCMOServer::FillDynamicNode(): start");
- RImplInfoPtrArray infoArray;
- // Note that a special cleanup function is required to reset and destroy
- // all items in the array, and then close it.
- TCleanupItem cleanup(CleanupEComArray, &infoArray);
- CleanupStack::PushL(cleanup);
- REComSession::ListImplementationsL(KLAWMOPluginInterfaceUid, infoArray);
- RDEBUG("CDCMOServer::GetPluginUids(): listImpl");
-
- TSmlDmAccessTypes accessTypesG;
- accessTypesG.SetGet();
-
- TSmlDmAccessTypes accessTypesSR;
- accessTypesSR.SetGet();
- accessTypesSR.SetReplace();
-
- MSmlDmDDFObject& nAwlDDF = aDDF.AddChildObjectL( KNSmlDdfAvailWipeList ); // AWL
- FillNodeInfoL( nAwlDDF, accessTypesG,
- MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode, MSmlDmDDFObject::EOne,
- KNSmlDdfAWLDescription, KMimeType );
-
- // Loop through each info for each implementation
- for (TInt i=0; i< infoArray.Count(); i++)
- {
- RDEBUG("CDCMOServer::FillDynamicNode(): for loop");
- MSmlDmDDFObject& nDynamicNodeDDF = nAwlDDF.AddChildObjectL(infoArray[i]->OpaqueData());
- FillNodeInfoL( nDynamicNodeDDF, accessTypesG,
- MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode, MSmlDmDDFObject::EOne,
- KNSmlDdfDynNodeDescription, KMimeType );
- RDEBUG("CDCMOServer::FillDynamicNode(): fill dyn node");
-
- MSmlDmDDFObject& nListItemDDF = nDynamicNodeDDF.AddChildObjectL( KNSmlDdfListItemName ); // ListItemName
- FillNodeInfoL( nListItemDDF, accessTypesG,
- MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EChr, MSmlDmDDFObject::EOne,
- KNSmlDdfListDescription, KMimeType );
-
-
- MSmlDmDDFObject& nToWipeDDF = nDynamicNodeDDF.AddChildObjectL( KNSmlDdfToBeWiped ); // ToBeWiped
- FillNodeInfoL( nToWipeDDF, accessTypesSR,
- MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::EBool, MSmlDmDDFObject::EOne,
- KNSmlDdfToWipeDescription, KMimeType );
- RDEBUG("CDCMOServer::FillDynamicNode(): loop done");
- }
- CleanupStack::PopAndDestroy(); //cleanup
- }
-
-TBool CLawmoDMAdapter::IsFactoryProfileL()
- {
- RDEBUG("CLawmoDMAdapter::IsFactoryProfile() begin");
- TBool retval(EFalse);
- RSyncMLSession ses;
- ses.OpenL() ;
- CleanupClosePushL(ses);
- TSmlJobId jid;
- TSmlUsageType jtype;
- ses.CurrentJobL(jid, jtype);
- RSyncMLDevManJob job;
- job.OpenL(ses, jid);
- CleanupClosePushL(job) ;
-
- TSmlProfileId pid(job.Profile() );
- TInt fpid(-1);//factory profile id
- RDEBUG("CLawmoDMAdapter::IsFactoryProfile() before cenrep");
-
- CRepository* crep = NULL;
- crep = CRepository::NewLC( KCRUidDeviceManagementInternalKeys );
- RDEBUG("CLawmoDMAdapter::IsFactoryProfile() CRep1");
- TInt reterr = crep->Get( KMaxFactoryDMProfileId, fpid );
- RDEBUG("CLawmoDMAdapter::IsFactoryProfile() CRep2");
- fpid =fpid + KMaxDataSyncID; //fpid in cenrep needs to be updated
- RDEBUG_2("factprofidStored %d", fpid);
-
- if( pid <= fpid )
- {
- RDEBUG("CLawmoDMAdapter::IsFactoryProfile() pid is factory");
- retval = ETrue;
- }
- else
- {
- RDEBUG("CLawmoDMAdapter::IsFactoryProfile() pid not factory");
- }
- CleanupStack::PopAndDestroy(crep);
- CleanupStack::PopAndDestroy( &job) ;
- CleanupStack::PopAndDestroy( &ses) ;
-
- RDEBUG("CLawmoDMAdapter::IsFactoryProfile() end");
- return retval;
- }
-
-void CLawmoDMAdapter::SetCurrentServerIdL()
- {
- RDEBUG("CLawmoDMAdapter::SetCurrentServerId() begin");
- TBuf<MAXBUFLEN> tsrvrid;
- TBuf<MAXBUFLEN> tsrvrname;
- RSyncMLSession ses;
- ses.OpenL() ;
- CleanupClosePushL(ses);
-
- TSmlJobId jid;
- TSmlUsageType jtype;
- ses.CurrentJobL(jid, jtype);
-
- RSyncMLDevManJob job;
- job.OpenL(ses, jid);
- CleanupClosePushL(job) ;
- TSmlProfileId pid(job.Profile() );
-
- RDEBUG("CLawmoDMAdapter::SetCurrentServerId() syncprofile");
- RSyncMLDevManProfile syncProfile;
- syncProfile.OpenL(ses, pid);
- CleanupClosePushL(syncProfile);
- tsrvrid.Copy(syncProfile.ServerId());
- tsrvrname.Copy(syncProfile.DisplayName());
- TInt tempPid = (TInt) syncProfile.Identifier();
-
- RDEBUG_2("CLawmoDMAdapter::SetCurrentServerId() ProfileId 1 %d",tempPid);
- RDEBUG_2("CLawmoDMAdapter::SetCurrentServerId() ProfileId 2 %d",(TInt) pid);
- RDEBUG_2("CLawmoDMAdapter::SetCurrentServerId() Srvrid %s",tsrvrid.PtrZ());
- RDEBUG_2("CLawmoDMAdapter::SetCurrentServerId() srvrname %s",tsrvrname.PtrZ());
-
- CRepository* crep = NULL;
- crep = CRepository::NewLC( KCRUidDeviceManagementInternalKeys );
- TInt reterr = crep->Set( KLAWMOfactoryDmProfileID, (TInt)pid );
- RDEBUG_2("CLawmoDMAdapter::setProfile() %d",reterr);
- reterr = crep->Set( KLAWMOfactoryDmServerID, tsrvrid );
- RDEBUG_2("CLawmoDMAdapter::SetCurrentServerId() %d",reterr);
- reterr = crep->Set(KLAWMOfactoryDmServerName,tsrvrname);
- RDEBUG_2("CLawmoDMAdapter::servername() %d",reterr);
-
- CleanupStack::PopAndDestroy( &syncProfile);
- CleanupStack::PopAndDestroy( &job) ;
- CleanupStack::PopAndDestroy( &ses) ;
- CleanupStack::PopAndDestroy() ;//cenrep
-
- RDEBUG("CLawmoDMAdapter::SetCurrentServerId() end");
- }
-
-CLawmoDMAdapter::TNodeIdentifier CLawmoDMAdapter::GetNodeIdentifier(const TDesC8& aURI)
- {
- RDEBUG("CLawmoDMAdapter::GetNodeIdentifier() begin");
-
- TInt numOfSegs = NSmlDmURI::NumOfURISegs( aURI ) ;
- TPtrC8I seg1 = NSmlDmURI::URISeg(aURI, 0);
-
- if (seg1 == iRootNode)
- {
- if(numOfSegs == 1) return CLawmoDMAdapter::ENodeLawMo;
-
- TPtrC8I seg2 = NSmlDmURI::URISeg(aURI, 1);
-
- if (seg2 == KNSmlDdfState)
- {
- return CLawmoDMAdapter::ENodeState;
- }
- else if (seg2 == KNSmlDdfAvailWipeList)
- {
- if (numOfSegs == 2)
- {
- return CLawmoDMAdapter::ENodeAvWipeList;
- }
- else if (numOfSegs == 3)
- {
- // We are not using dynamic node name to do any decision making
- return CLawmoDMAdapter::ENodeDynamic;
- }
- else if (numOfSegs == 4)
- {
- TPtrC8I seg4 = NSmlDmURI::URISeg(aURI, 3);
-
- if (seg4 == KNSmlDdfListItemName)
- {
- return CLawmoDMAdapter::ENodeItemName;
- }
- else if (seg4 == KNSmlDdfToBeWiped)
- {
- return CLawmoDMAdapter::ENodeToBeWiped;
- }
- else
- {
- return CLawmoDMAdapter::ENodeNotUsedAndAlwaysLast;
- }
- }
- else
- {
- return CLawmoDMAdapter::ENodeNotUsedAndAlwaysLast;
- }
- }
- else if (seg2 == KNSmlDdfOperations)
- {
- if(numOfSegs == 2)
- {
- return CLawmoDMAdapter::ENodeOperations;
- }
- else if(numOfSegs == 3)
- {
- TPtrC8I seg3 = NSmlDmURI::URISeg(aURI, 2);
-
- if(seg3 == KNSmlDdfPartLock)
- {
- return CLawmoDMAdapter::ENodePartLock;
- }
- else if(seg3 == KNSmlDdfUnlock)
- {
- return CLawmoDMAdapter::ENodeUnlock;
- }
- else if(seg3 == KNSmlDdfWipe)
- {
- return CLawmoDMAdapter::ENodeWipe;
- }
- }
- else
- {
- return CLawmoDMAdapter::ENodeNotUsedAndAlwaysLast;
- }
- }
- else if (seg2 == KNSmlDdfOpExt)
- {
- if(numOfSegs == 2)
- {
- return CLawmoDMAdapter::ENodeExt;
- }
- else if(numOfSegs == 3)
- {
- TPtrC8I seg3 = NSmlDmURI::URISeg(aURI, 2);
-
- if(seg3 == KNSmlDdfOpExtWipeAll)
- {
- return CLawmoDMAdapter::ENodeWipeAll;
- }
- else
- {
- return CLawmoDMAdapter::ENodeNotUsedAndAlwaysLast;
- }
- }
- else
- {
- return CLawmoDMAdapter::ENodeNotUsedAndAlwaysLast;
- }
- }
- }
- RDEBUG("CLawmoDMAdapter::GetNodeIdentifier() End");
- return CLawmoDMAdapter::ENodeNotUsedAndAlwaysLast;
- }
-
-void CLawmoDMAdapter::SendGenericAlertL()
-{
- RDEBUG("CLawmoDMAdapter::SendGenericAlert(): begin");
- // check if wipe generic alert needs to be sent ?
- TInt wipeStatus;
- CRepository *repository=CRepository::NewLC ( KCRUidLawmoAdapter );
- repository->Get(KLawmoWipeStatus,wipeStatus);
- RDEBUG("CDCMOServer::SendGenericAlert(): chkin wipestatus");
- if(wipeStatus!=-1)
- {
- //Wipe Alert needs tobe sent
- RNSmlPrivateAPI privateAPI;
- privateAPI.OpenL();
- RDEBUG("CLawmoDMAdapter::SendGenericAlert(): OpenL");
- CleanupClosePushL(privateAPI);
- RArray<CNSmlDMAlertItem> iItemArray;
- CNSmlDMAlertItem* item = new (ELeave) CNSmlDMAlertItem ;
- RDEBUG("CLawmoDMAdapter::SendGenericAlert(): alertItem");
- TBuf<MAXBUFLEN> targetURI;
- targetURI.Append(KNullDesC);
- TBuf<MAXBUFLEN> correlator;
- correlator.Append(KNullDesC);
- TBuf<MAXBUFLEN> sourceURI;
- sourceURI.Append(KNullDesC);
- RDEBUG("CLawmoDMAdapter::SendGenericAlert(): bfore cenrep");
- // Construct generic alert message
- TInt reterr = repository->Get(KLawmoCorrelator,correlator );
- reterr = repository->Get(KLawmoSourceURI,sourceURI);
- RDEBUG("CLawmoDMAdapter::SendGenericAlert(): after cenrep");
-
- HBufC8 *descorrelator = HBufC8::NewL(MAXBUFLEN);
- (descorrelator->Des()).Copy(correlator);
-
- HBufC8 *aSourceuri = HBufC8::NewL(MAXBUFLEN);
- (aSourceuri->Des()).Copy(sourceURI);
- item->iSource = aSourceuri;
-
- HBufC8 *aTargeturi = HBufC8::NewL(MAXBUFLEN);
- (aTargeturi->Des()).Copy(targetURI);
- item->iTarget = aTargeturi;
- if(item->iTarget->Des().Compare(KNullDesC8)==0)
- RDEBUG("CLawmoDMAdapter::SendGenericAlert() targeturi is NULL");
- RDEBUG("CLawmoDMAdapter::SendGenericAlert(): targeturidone");
-
- HBufC8 *aMetatype = HBufC8::NewL(MAXBUFLEN);
- (aMetatype->Des()).Copy(KLawmoMetatype);
- item->iMetaType = aMetatype;
-
- HBufC8 *aMetaformat = HBufC8::NewL(MAXBUFLEN);
- (aMetaformat->Des()).Copy(KLawmoMetaformat);
- item->iMetaFormat = aMetaformat;
-
- HBufC8 *aMetamark = HBufC8::NewL(MAXBUFLEN);
- (aMetamark->Des()).Copy(KLawmoMetamark);
- item->iMetaMark = aMetamark;
-
- //appending result code
- HBufC8 *data = HBufC8::NewL(MAXBUFLEN);
- (data->Des()).Num(wipeStatus);
- item->iData = data;
-
- repository->Set(KLawmoWipeStatus,-1);//reset the wipestatus
-
- TInt genericStatus(KErrNone);
- RDEBUG("CLawmoDMAdapter::SendGenericAlert(): Appending data");
- iItemArray.AppendL(*item);
- RDEBUG("CLawmoDMAdapter::SendGenericAlert(): Issuing request");
- TRAP_IGNORE(genericStatus=privateAPI.AddDMGenericAlertRequestL(*descorrelator, iItemArray ));
- RDEBUG_2("CLawmoDMAdapter::SendGenericAlert(): Api call done %d", genericStatus);
- delete data;
- delete aMetamark;
- delete aMetaformat;
- delete aMetatype;
- delete aTargeturi;
- delete aSourceuri;
- delete item;
- delete descorrelator;
- iItemArray.Reset();
- iItemArray.Close();
- CleanupStack::PopAndDestroy( &privateAPI);
- }
-
- CleanupStack::PopAndDestroy();
- RDEBUG("CLawmoDMAdapter::SendGenericAlert(): end");
-}
-
-TLawMoStatus CLawmoDMAdapter::LockDeviceL()
- {
- RDEBUG("CLawmoDMAdapter::LockDevice(): begin");
- TInt lockValue(0);
- TInt currentLawmoState(0);
- TLawMoStatus lawmostatus(ELawMoSuccess);
- RDEBUG("CLawmoDMAdapter::LockDevice(): 1");
- CRepository* crep = NULL;
- crep = CRepository::NewLC( KCRUidDeviceManagementInternalKeys );
- RDEBUG("CLawmoDMAdapter::LockDevice(): 2");
-
- User::LeaveIfError(RProperty::Get(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus,lockValue));
- RDEBUG("CLawmoDMAdapter::LockDevice(): 3");
-
- // If Locked already by Tarm/autolock, set LawmoState.
- if(lockValue>EAutolockOff)
- {
- RDEBUG("CLawmoDMAdapter::LockDevice(): 3.0");
- TInt err = crep->Set( KLAWMOPhoneLock, EPartialLocked );
- CleanupStack::PopAndDestroy(crep);
- if(err==KErrNone) return lawmostatus;
- else
- return ELawMoPartialLockFailed;
- }
-
- TInt reterr = crep->Get( KLAWMOPhoneLock, currentLawmoState );
- if(reterr!= KErrNone)
- lawmostatus = ELawMoPartialLockFailed;
- RDEBUG("CLawmoDMAdapter::LockDevice(): 3.1");
-
- if(currentLawmoState==EUnlocked)
- {
- RTerminalControl tc;
- RTerminalControl3rdPartySession ts;
-
- User::LeaveIfError( tc.Connect() );
- CleanupClosePushL( tc );
-
- User::LeaveIfError( ts.Open( tc ) );
- CleanupClosePushL( ts );
- RDEBUG("CLawmoDMAdapter::LockDevice(): 3.5");
- TBuf8<8> data;
- data.Copy(_L8("1"));
- TInt status = ts.SetDeviceLockParameter(RTerminalControl3rdPartySession::ELock, data);
- RDEBUG_2("CLawmoDMAdapter::LockDevice() %d", status );
- if (status == KErrNone)
- {
- reterr = crep->Set( KLAWMOPhoneLock, EPartialLocked );
- if (reterr!= KErrNone)
- lawmostatus = ELawMoPartialLockFailed;
- }
- else if (status == KErrCancel)
- lawmostatus = ELawMoUserCancelled;
- else
- lawmostatus = ELawMoPartialLockFailed;
-
- ts.Close();
- tc.Close();
- RDEBUG("CLawmoDMAdapter::LockDevice(): set val to 20");
- CleanupStack::PopAndDestroy( &ts );
- CleanupStack::PopAndDestroy( &tc );
- RDEBUG("CLawmoDMAdapter::LockDevice(): 5");
- }
-
- CleanupStack::PopAndDestroy(crep);
- RDEBUG("CLawmoDMAdapter::LockDevice(): End");
- return lawmostatus;
- }
-
-TLawMoStatus CLawmoDMAdapter::UnLockDeviceL()
- {
- RDEBUG("CDCMOServer::UnLockDevice(): begin");
- CRepository* crep = NULL;
- TInt currentLawmoState =0;
- TLawMoStatus lawmostat(ELawMoSuccess);
- TBool currentLockState(EFalse);
- TInt lockValue(0);
- User::LeaveIfError(RProperty::Get(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus,lockValue));
- RDEBUG("CDCMOServer::unLockDevice(): 0");
-
- if(lockValue>EAutolockOff)
- currentLockState = ETrue;
-
- RDEBUG("CDCMOServer::UnLockDevice(): 1");
- crep = CRepository::NewLC( KCRUidDeviceManagementInternalKeys );
- RDEBUG("CDCMOServer::UnLockDevice(): 2");
- TInt reterr = crep->Get( KLAWMOPhoneLock, currentLawmoState );
- RDEBUG("CDCMOServer::UnLockDevice(): 2.1");
-
- if(reterr!= KErrNone)
- lawmostat = ELawMoUnlockFailed;
-
- if((currentLawmoState != EUnlocked) ||(currentLockState))
- {
- RTerminalControl tc;
- RTerminalControl3rdPartySession ts;
- RDEBUG("CDCMOServer::UnLockDevice(): 3");
- User::LeaveIfError( tc.Connect() );
- CleanupClosePushL( tc );
- User::LeaveIfError( ts.Open( tc ) );
- CleanupClosePushL( ts );
- RDEBUG("CDCMOServer::UnLockDevice(): 4");
- TBuf8<8> data;
- data.Copy(_L8("0"));
- TInt status = ts.SetDeviceLockParameter(RTerminalControl3rdPartySession::ELock, data);
- RDEBUG_2("CDCMOServer::UnLockDevice() %d", status );
- if (status == KErrNone)
- {
- reterr = crep->Set( KLAWMOPhoneLock, EUnlocked );
- if (reterr!= KErrNone)
- lawmostat = ELawMoPartialLockFailed;
- }
- else if (status == KErrCancel)
- lawmostat = ELawMoUserCancelled;
- else
- lawmostat = ELawMoUnlockFailed;
-
- ts.Close();
- tc.Close();
- RDEBUG("CDCMOServer::UnLockDevice(): set to 30");
- CleanupStack::PopAndDestroy( &ts );
- CleanupStack::PopAndDestroy( &tc );
- }
-
- if(!currentLockState)
- {
- reterr = crep->Set( KLAWMOPhoneLock, EUnlocked );
- if(reterr!=KErrNone)
- lawmostat = ELawMoUnlockFailed;
- }
-
- CleanupStack::PopAndDestroy(crep);
- RDEBUG("CDCMOServer::UnLockDevice(): End");
- return lawmostat;
- }
-
-TLawMoStatus CLawmoDMAdapter::GetStateL(TInt& aState)
-{
- RDEBUG("CDCMOServer::GetState(): begin");
- TLawMoStatus lawmostat(ELawMoOk);
- CRepository* crep = NULL;
- crep = CRepository::NewLC( KCRUidDeviceManagementInternalKeys );
- RDEBUG("CDCMOServer::GetState(): created cenrep");
- TInt reterr = crep->Get( KLAWMOPhoneLock, aState );
- RDEBUG("CDCMOServer::GetState(): get on cenrep");
- if(reterr!= KErrNone)
- {
- RDEBUG("CDCMOServer::GetLocalCategoryL(): centrep Get error");
- lawmostat = ELawMoInvalid;
- }
- RDEBUG("CDCMOServer::GetState(): writing the int val");
- CleanupStack::PopAndDestroy(crep);
- RDEBUG("CDCMOServer::GetState(): End");
- return lawmostat;
-}
-
-// End of File