userlibandfileserver/domainmgr/src/domaincli.cpp
author hgs
Mon, 04 Oct 2010 12:03:52 +0100
changeset 279 957c583b417b
parent 243 c7a0ce20c48c
permissions -rw-r--r--
201039_07
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
243
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
     1
// Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     2
// All rights reserved.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     3
// This component and the accompanying materials are made available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     4
// under the terms of the License "Eclipse Public License v1.0"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     5
// which accompanies this distribution, and is available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     7
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     8
// Initial Contributors:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    10
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    11
// Contributors:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    12
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    13
// Description:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    14
// domain\src\domaincli.cpp
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    15
// 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    16
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    17
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    18
#include <e32base.h>
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    19
#include <e32base_private.h>
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    20
#include <e32property.h>
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    21
243
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
    22
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    23
#include <domainmember.h>
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    24
#include <domainmanager.h>
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    25
#include "domainmanager_private.h"
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    26
#include "domainobserver.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    27
#include "domainsrv.h"
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    28
#include "domainmember_private.h"
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    29
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    30
#define __DM_PANIC(aError) User::Panic(_L("domainCli.cpp"), (-(aError)) | (__LINE__ << 16))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    31
#define __DM_ASSERT(aCond) __ASSERT_DEBUG(aCond,User::Panic(_L("domainCli.cpp; assertion failed"), __LINE__))
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    32
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    33
TInt RDmDomainSession::Connect(TDmHierarchyId aHierarchyId, TDmDomainId aDomainId, TUint* aKey)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    34
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    35
	TInt r = RSessionBase::CreateSession(KDmDomainServerNameLit, KDmDomainServerVersion, 1);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    36
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    37
		return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    38
	TIpcArgs a( (TInt)aHierarchyId, (TInt)aDomainId );
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    39
	r = RSessionBase::SendReceive(EDmDomainJoin, a);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    40
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    41
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    42
		RSessionBase::Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    43
		return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    44
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    45
	*aKey = DmStatePropertyKey(
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    46
		aHierarchyId, 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    47
		aDomainId);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    48
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    49
	return KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    50
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    51
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    52
TInt RDmDomainSession::Acknowledge(TInt aValue, TInt aError)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    53
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    54
	__DM_ASSERT(Handle() != KNullHandle);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    55
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    56
	TIpcArgs a(aValue, aError);
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    57
	return RSessionBase::SendReceive(EDmStateAcknowledge, a);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    58
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    59
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    60
void RDmDomainSession::RequestTransitionNotification()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    61
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    62
	__DM_ASSERT(Handle() != KNullHandle);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    63
	TInt r = RSessionBase::SendReceive(EDmStateRequestTransitionNotification);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    64
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    65
		__DM_PANIC(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    66
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    67
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    68
void RDmDomainSession::CancelTransitionNotification()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    69
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    70
	if (Handle() != KNullHandle)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    71
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    72
		TInt r = RSessionBase::SendReceive(EDmStateCancelTransitionNotification);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    73
		if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    74
			__DM_PANIC(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    75
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    76
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    77
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    78
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    79
void RDmDomainSession::DeferAcknowledgement(TRequestStatus& aStatus)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    80
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    81
	__DM_ASSERT(Handle() != KNullHandle);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    82
	RSessionBase::SendReceive(EDmStateDeferAcknowledgement, aStatus);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    83
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    84
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    85
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    86
void RDmDomainSession::CancelDeferral()
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    87
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    88
	if (Handle() != KNullHandle)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    89
		{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    90
		TInt r = RSessionBase::SendReceive(EDmStateCancelDeferral);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    91
		if (r != KErrNone)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    92
			__DM_PANIC(r);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    93
		}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    94
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
    95
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    96
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    97
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    98
Connects to the domain identified by the specified domain Id.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    99
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   100
To connect to the root domain, which has the Id KDmIdRoot,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   101
the capability WriteDeviceData is required.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   102
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   103
Once connected, an  application can use this RDmDomain object to read
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   104
the domain's power state and to request notification
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   105
when the power state changes.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   106
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   107
@param aDomainId The identifier of the domain to be connected to.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   108
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   109
@return KErrNone, if successful; otherwise one of the other system-wide
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   110
        or Domain Manager specific error codes.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   111
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   112
@capability WriteDeviceData If aDomainId==KDmIdRoot
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   113
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   114
EXPORT_C TInt RDmDomain::Connect(TDmDomainId aDomainId)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   115
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   116
	TUint key;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   117
	TInt r = iSession.Connect(KDmHierarchyIdPower, aDomainId, &key);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   118
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   119
		return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   120
	r = iStateProperty.Attach(KUidDmPropertyCategory, key);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   121
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   122
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   123
		iSession.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   124
		return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   125
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   126
	return KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   127
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   128
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   129
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   130
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   131
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   132
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   133
Connects to the domain identified by the specified domain Id.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   134
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   135
To connect to the root domain, which has the Id KDmIdRoot,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   136
the capability WriteDeviceData is required.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   137
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   138
Once connected, an  application can use this RDmDomain object to read
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   139
the domain's state and to request notification
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   140
when the state changes.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   141
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   142
@param aHierarchyId	The Id of the domain hierarchy to connect to.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   143
@param aDomainId    The identifier of the domain to be connected to.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   144
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   145
@return KErrNone, if successful; otherwise one of the other system-wide
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   146
        or Domain Manager specific error codes.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   147
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   148
@capability WriteDeviceData If aDomainId==KDmIdRoot
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   149
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   150
EXPORT_C TInt RDmDomain::Connect(TDmHierarchyId aHierarchyId, TDmDomainId aDomainId)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   151
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   152
	TUint key;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   153
	TInt r = iSession.Connect(aHierarchyId, aDomainId, &key);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   154
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   155
		return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   156
	r = iStateProperty.Attach(KUidDmPropertyCategory, key);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   157
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   158
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   159
		iSession.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   160
		return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   161
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   162
	return KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   163
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   164
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   165
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   166
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   167
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   168
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   169
Disconnects from the associated domain.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   170
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   171
If this object is not connected to any domain, then it returns silently.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   172
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   173
EXPORT_C void RDmDomain::Close()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   174
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   175
	iSession.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   176
	iStateProperty.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   177
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   178
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   179
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   180
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   181
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   182
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   183
Requests notification when the domain's state changes.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   184
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   185
This is an asynchronous request that completes when
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   186
the domain's state changes.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   187
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   188
@param aStatus The request status object for this asynchronous request.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   189
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   190
@see RDmDomain::CancelTransitionNotification()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   191
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   192
EXPORT_C void RDmDomain::RequestTransitionNotification(TRequestStatus& aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   193
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   194
	iStateProperty.Subscribe(aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   195
	iSession.RequestTransitionNotification();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   196
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   197
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   198
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   199
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   200
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   201
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   202
Cancels an outstanding notification request.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   203
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   204
Any outstanding notification request completes with KErrCancel.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   205
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   206
EXPORT_C void RDmDomain::CancelTransitionNotification()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   207
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   208
	iSession.CancelTransitionNotification();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   209
	iStateProperty.Cancel();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   210
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   211
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   212
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   213
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   214
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   215
Gets the domain's power state.
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   216
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   217
An application normally calls this function after a notification request
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   218
has completed. It then performs any application-dependent action demanded by
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   219
the power state, and then acknowledges the state transition.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   220
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   221
Note that the Domain Manager requires any domain power state change to be
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   222
acknowledged by all applications connected to the domain.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   223
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   224
@return The connected domain's power state.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   225
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   226
@see RDmDomain::AcknowledgeLastState()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   227
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   228
EXPORT_C TPowerState RDmDomain::GetPowerState()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   229
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   230
	TInt value;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   231
	TInt r = iStateProperty.Get(value);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   232
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   233
		__DM_PANIC(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   234
	iLastStatePropertyValue = value;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   235
	return (TPowerState) DmStateFromPropertyValue(value);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   236
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   237
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   238
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   239
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   240
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   241
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   242
Acknowledges the state change.
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   243
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   244
An application must acknowledge that it has performed all actions required
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   245
by the last known state of the domain.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   246
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   247
EXPORT_C void RDmDomain::AcknowledgeLastState()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   248
	{
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   249
	TInt r = iSession.Acknowledge(iLastStatePropertyValue, KErrNone);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   250
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   251
	if (r != KErrNone && r != KErrNotFound)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   252
		__DM_PANIC(r);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   253
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   254
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   255
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   256
Acknowledges the state change with the specified error
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   257
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   258
An application must acknowledge that it has performed all actions required
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   259
by the last known state of the domain.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   260
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   261
@param aError KDmErrNotJoin if domain is not part of the hierarchy or a
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   262
	system wide error value associated with the state change.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   263
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   264
EXPORT_C void RDmDomain::AcknowledgeLastState(TInt aError)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   265
	{
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   266
	TInt r = iSession.Acknowledge(iLastStatePropertyValue, aError);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   267
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   268
	if (r != KErrNone && r != KErrNotFound)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   269
		__DM_PANIC(r);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   270
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   271
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   272
/**
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   273
Acknowledges the state change with the specified error
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   274
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   275
@param aError KDmErrNotJoin if domain is not part of the hierarchy or a
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   276
	system wide error value associated with the state change.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   277
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   278
@return KErrNone If the acknowledgment was valid, KErrNotFound if it was spurious
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   279
*/
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   280
TInt RDmDomain::AcknowledgeLastStatePriv(TInt aError)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   281
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   282
	return iSession.Acknowledge(iLastStatePropertyValue, aError);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   283
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   284
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   285
/**
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   286
Having received a state transition notification, instead of acknowledging,
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   287
request more time. To be sure of deferring in time a client should call this immediately
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   288
after receiving notification. This asynchronous call will complete once the original deadline
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   289
is reached (ie. one period earlier than the final deadline), at which point the member must either
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   290
defer again or acknowledge the transition. In the meantime, the member should perform
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   291
its transition actions, whilst remaining responsive to new completion events.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   292
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   293
For example, if after receiving a transition notification, the client calls DeferAcknowledgement
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   294
once, but fails to acknowledge or renew its deferral, it would be timed out after two time periods.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   295
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   296
Once the member has completed all necessary actions it should call AcknowledgeLastState
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   297
to indicate a successful transition (it need not wait for the completion of DeferAcknowledgement).
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   298
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   299
@note Deferrals are not always possible,
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   300
whether the member will actually be given more time depends on if
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   301
   - The current transition allows deferrals at all.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   302
   - The member still has deferrals left - there may be a maximum number
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   303
     allowed.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   304
   - The deferral request was received in time.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   305
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   306
@param aStatus Status of request
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   307
   - KErrNone Request has completed i.e. The member must either defer again or acknowledge.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   308
   - KErrCompletion The deferral was obsoleted by a subsequent call to AcknowledgeLastState.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   309
   - KErrNotSupported The current transition may not be deferred, or maximum deferral count reached.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   310
   - KErrCancel The deferral was cancelled.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   311
   - KErrNotReady Deferral attempted before a transition notification was received
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   312
     or after the deadline for the previous one.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   313
   - KErrPermissionDenied The member lacked the necessary capabilities.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   314
   - KErrServerBusy A deferral was already outstanding.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   315
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   316
This function is provided for members to inform the Domain Manager that they
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   317
are still active and are responding to a transition notification.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   318
For example, a server may have to persist data using
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   319
the file server before shut down. Since this task should be allowed to complete
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   320
before shutdown continues, the member should defer the transition, and then persist
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   321
the data, using asynchronous calls.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   322
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   323
At least one of the below capabilities is required in order to defer a
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   324
domain transition. Without them, the client will get KErrPermissionDenied.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   325
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   326
@capability WriteDeviceData
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   327
@capability ProtServ
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   328
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   329
@pre The member has been notified of a transition which it has not yet acknowledged
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   330
*/
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   331
EXPORT_C void RDmDomain::DeferAcknowledgement(TRequestStatus& aStatus)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   332
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   333
	iSession.DeferAcknowledgement(aStatus);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   334
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   335
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   336
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   337
/**
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   338
Will cancel a call of DeferAcknowledgement(), if one was pending.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   339
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   340
If none was pending, it does nothing.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   341
*/
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   342
EXPORT_C void RDmDomain::CancelDeferral()
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   343
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   344
	iSession.CancelDeferral();
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   345
	}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   346
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   347
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   348
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   349
Gets the domain's state.
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   350
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   351
An application normally calls this function after a notification request
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   352
has completed. It then performs any application-dependent action demanded by
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   353
the state, and then acknowledges the state transition.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   354
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   355
Note, that the Domain Manager requires any domain state change to be
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   356
acknowledged by all applications connected to the domain.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   357
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   358
@return The connected domain's state.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   359
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   360
EXPORT_C TDmDomainState RDmDomain::GetState()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   361
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   362
	TInt value;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   363
	TInt r = iStateProperty.Get(value);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   364
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   365
		__DM_PANIC(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   366
	iLastStatePropertyValue = value;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   367
	return DmStateFromPropertyValue(value);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   368
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   369
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   370
TInt RDmManagerSession::Connect()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   371
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   372
	__DM_ASSERT(Handle() == KNullHandle);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   373
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   374
	return RSessionBase::CreateSession(
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   375
				KDmManagerServerNameLit, 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   376
				KDmManagerServerVersion, 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   377
				2);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   378
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   379
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   380
TInt RDmManagerSession::ConnectObserver(TDmHierarchyId aHierarchyId)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   381
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   382
	TInt r = Connect();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   383
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   384
		return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   385
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   386
	TIpcArgs a( (TInt)aHierarchyId);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   387
	r = RSessionBase::SendReceive(EDmObserverJoin, a);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   388
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   389
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   390
		RSessionBase::Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   391
		return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   392
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   393
	return KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   394
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   395
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   396
TInt RDmManagerSession::Connect(TDmHierarchyId aHierarchyId)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   397
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   398
	TInt r = Connect();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   399
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   400
		return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   401
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   402
	TIpcArgs a( (TInt)aHierarchyId);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   403
	r = RSessionBase::SendReceive(EDmHierarchyJoin, a);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   404
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   405
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   406
		RSessionBase::Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   407
		return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   408
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   409
	return KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   410
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   411
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   412
void RDmManagerSession::RequestDomainTransition(
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   413
	TDmDomainId aDomainId, 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   414
	TDmDomainState aState,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   415
	TDmTraverseDirection aDirection,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   416
	TRequestStatus& aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   417
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   418
	__DM_ASSERT(Handle() != KNullHandle);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   419
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   420
	if(aDirection < 0 || aDirection > ETraverseMax)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   421
		__DM_PANIC(KErrArgument);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   422
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   423
	TIpcArgs a(aDomainId, aState, aDirection);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   424
	RSessionBase::SendReceive(EDmRequestDomainTransition, a, aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   425
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   426
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   427
void RDmManagerSession::CancelTransition()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   428
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   429
	if (Handle() != KNullHandle)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   430
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   431
		TInt r = RSessionBase::SendReceive(EDmCancelTransition);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   432
		if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   433
			__DM_PANIC(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   434
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   435
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   436
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   437
void RDmManagerSession::CancelObserver()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   438
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   439
	if (Handle() != KNullHandle)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   440
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   441
		TInt r = RSessionBase::SendReceive(EDmObserverCancel);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   442
		if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   443
			__DM_PANIC(r);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   444
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   445
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   446
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   447
void RDmManagerSession::RequestSystemTransition(
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   448
	TDmDomainState aState,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   449
	TDmTraverseDirection aDirection,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   450
	TRequestStatus& aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   451
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   452
	__DM_ASSERT(Handle() != KNullHandle);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   453
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   454
	TIpcArgs a(aState, aDirection);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   455
	RSessionBase::SendReceive(EDmRequestSystemTransition, a, aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   456
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   457
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   458
TInt RDmManagerSession::AddDomainHierarchy(TDmHierarchyId aHierarchyId)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   459
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   460
	__DM_ASSERT(Handle() != KNullHandle);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   461
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   462
	TIpcArgs a( (TInt)aHierarchyId);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   463
	TInt r = RSessionBase::SendReceive(EDmHierarchyAdd, a);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   464
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   465
	return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   466
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   467
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   468
TInt RDmManagerSession::GetTransitionFailureCount()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   469
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   470
	__DM_ASSERT(Handle() != KNullHandle);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   471
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   472
	return RSessionBase::SendReceive(EDmGetTransitionFailureCount);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   473
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   474
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   475
TInt RDmManagerSession::GetTransitionFailures(RArray<const TTransitionFailure>& aTransitionFailures)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   476
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   477
	__DM_ASSERT(Handle() != KNullHandle);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   478
243
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   479
	
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   480
	aTransitionFailures.Reset();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   481
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   482
	TInt err = KErrNone;
243
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   483
		
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   484
	TInt failureCount = GetTransitionFailureCount();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   485
	if (failureCount <= 0)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   486
		return failureCount;
243
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   487
	
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   488
	// Pre-allocate array with a known size which for this case is the value in failureCount 
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   489
	// in order to guarantee that future append operations to the array aTransitionFailures would
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   490
	// not fail. This is assuming that the pre-allocated size is not exceeded.
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   491
	err=aTransitionFailures.Reserve(failureCount); 
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   492
	if (err != KErrNone)
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   493
		return err;
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   494
		
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   495
	TTransitionFailure* failures = new TTransitionFailure[failureCount];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   496
	if(failures == NULL)
243
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   497
		{		
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   498
		aTransitionFailures.Reset();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   499
		return(KErrNoMemory);
243
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   500
		}
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   501
	
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   502
	TPtr8 dataPtr(reinterpret_cast<TUint8*>(failures), failureCount * sizeof(TTransitionFailure));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   503
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   504
	TIpcArgs a(&dataPtr);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   505
	err = RSessionBase::SendReceive(EDmGetTransitionFailures, a);
243
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   506
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   507
	if (err == KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   508
		{
243
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   509
		for (TInt i=0; i<failureCount; i++)	
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   510
			{
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   511
			err = aTransitionFailures.Append(failures[i]);		
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   512
			//The pre-allocation made above for the array aTransitionFailures should guarantee
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   513
			//that append operations complete succesfully.			
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   514
			__DM_ASSERT(err == KErrNone);	
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   515
			}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   516
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   517
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   518
	delete [] failures;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   519
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   520
	return err;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   521
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   522
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   523
TInt RDmManagerSession::StartObserver(TDmDomainId aDomainId, TDmNotifyType aNotifyType)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   524
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   525
	__DM_ASSERT(Handle() != KNullHandle);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   526
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   527
	TIpcArgs a(aDomainId,aNotifyType);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   528
	return(RSessionBase::SendReceive(EDmObserverStart,a));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   529
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   530
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   531
void RDmManagerSession::GetNotification(TRequestStatus& aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   532
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   533
	__DM_ASSERT(Handle() != KNullHandle);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   534
	RSessionBase::SendReceive(EDmObserverNotify,aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   535
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   536
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   537
TInt RDmManagerSession::GetEventCount()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   538
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   539
	__DM_ASSERT(Handle() != KNullHandle);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   540
	return(RSessionBase::SendReceive(EDmObserverEventCount));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   541
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   542
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   543
TInt RDmManagerSession::GetEvents(RArray<const TTransInfo>& aTransitions)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   544
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   545
	__DM_ASSERT(Handle() != KNullHandle);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   546
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   547
	aTransitions.Reset();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   548
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   549
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   550
	TInt count = GetEventCount();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   551
	// This shouldn't happen unless something gone terribly wrong
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   552
	if (count <= 0)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   553
		return KErrGeneral;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   554
243
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   555
	// Pre-allocate array with a known size which for this case is the value in count 
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   556
	// in order to guarantee that future append operations to the array aTransitionFailures 
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   557
	// would not fail. This is assuming that the pre-allocated size is not exceeded.
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   558
	TInt ret=aTransitions.Reserve(count); 
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   559
	if (ret != KErrNone)
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   560
		return ret;
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   561
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   562
	TTransInfo* trans = new TTransInfo[count];
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   563
	if(trans == NULL)
243
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   564
		{
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   565
		aTransitions.Reset();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   566
		return(KErrNoMemory);
243
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   567
		}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   568
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   569
	TPtr8 dataPtr(reinterpret_cast<TUint8*>(trans), count * sizeof(TTransInfo));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   570
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   571
	TIpcArgs a(&dataPtr);
243
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   572
	ret=RSessionBase::SendReceive(EDmObserverGetEvent, a);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   573
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   574
	if(ret==KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   575
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   576
		for (TInt i=0; i<count; i++)
243
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   577
			{
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   578
			ret = aTransitions.Append(trans[i]);					
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   579
			//The pre-allocation made above for the array aTransitions should guarantee
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   580
			//that append operations complete succesfully.
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   581
			__DM_ASSERT(ret == KErrNone);					
c7a0ce20c48c 201031_07
hgs
parents: 0
diff changeset
   582
			}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   583
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   584
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   585
	delete [] trans;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   586
	return ret;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   587
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   588
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   589
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   590
TInt RDmManagerSession::ObserverDomainCount()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   591
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   592
	__DM_ASSERT(Handle() != KNullHandle);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   593
	return(RSessionBase::SendReceive(EDmObserveredCount));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   594
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   595
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   596
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   597
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   598
//-- RDmDomainManager ---------------------------------------------------------
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   599
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   600
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   601
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   602
/**
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   603
Caller blocked until the Domain Manager server has started up and is ready 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   604
for requests.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   605
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   606
@return	KErrNone once the Domain Manager server is ready, otherwise one of the 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   607
		other system wide or the Domain Manager specific error codes.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   608
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   609
EXPORT_C TInt RDmDomainManager::WaitForInitialization()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   610
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   611
	RProperty prop;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   612
	TInt r = prop.Attach(KUidDmPropertyCategory, KDmPropertyKeyInit);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   613
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   614
		return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   615
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   616
#ifdef _DEBUG
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   617
	TInt count = RThread().RequestCount();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   618
#endif
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   619
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   620
	TRequestStatus status;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   621
	for (;;)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   622
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   623
		prop.Subscribe(status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   624
		TInt value;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   625
		r = prop.Get(value);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   626
		if (r == KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   627
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   628
			if (value) break; // initialized
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   629
			// property exists but the server is not initialised yet
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   630
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   631
		else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   632
			{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   633
			if (r != KErrNotFound) break; // error
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   634
			// property doesn't exist yet
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   635
			}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   636
		User::WaitForRequest(status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   637
		if (status.Int() != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   638
			break;	// error
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   639
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   640
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   641
	if (status.Int() == KRequestPending)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   642
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   643
		prop.Cancel();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   644
		User::WaitForRequest(status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   645
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   646
	prop.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   647
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   648
	__DM_ASSERT(RThread().RequestCount() == count);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   649
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   650
	return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   651
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   652
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   653
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   654
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   655
Opens a controlling connection to the standard power domain hierarchy
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   656
in the Domain Manager.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   657
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   658
The Domain Manager allows only one open connection at any one time to the 
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   659
power domain hierarchy.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   660
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   661
@return KErrNone if successful, otherwise one of the other system-wide
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   662
        or the Domain Manager specific error codes.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   663
@return KErrInUse when the power hierarchy already has a controller connected.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   664
@return KErrBadHierarchyId when the server has failed to load the power hierarchy. 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   665
@return KErrPermissionDenied when the client has insufficient capabilities
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   666
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   667
@capability PowerMgmt Required to create a connection to the Domain Manager.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   668
@see KDmHierarchyIdPower
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   669
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   670
EXPORT_C TInt RDmDomainManager::Connect()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   671
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   672
	return iSession.Connect(KDmHierarchyIdPower);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   673
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   674
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   675
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   676
/**
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   677
Opens a controlling connection to a specific domain hierarchy previously 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   678
loaded into the Domain Manager by the controller. The Domain Manager allows only 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   679
one open connection at any one time to a particular hierarchy.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   680
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   681
@param	aHierarchyId The Id of the domain hierarchy to connect to.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   682
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   683
@return KErrNone if successful, otherwise one of the other system-wide
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   684
        or the Domain Manager specific error codes.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   685
@return KErrInUse when the power hierarchy already has a controller connected.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   686
@return KErrBadHierarchyId when the server has failed to load the power hierarchy.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   687
@return KErrPermissionDenied when the client has insufficient capabilities
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   688
   
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   689
@capability PowerMgmt Required to create a connection to the Domain Manager.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   690
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   691
EXPORT_C TInt RDmDomainManager::Connect(TDmHierarchyId aHierarchyId)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   692
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   693
	return iSession.Connect(aHierarchyId);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   694
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   695
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   696
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   697
/**
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   698
Closes this connection to the Domain Manager.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   699
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   700
If there is no existing connection, then it returns silently.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   701
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   702
EXPORT_C void RDmDomainManager::Close()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   703
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   704
	iSession.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   705
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   706
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   707
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   708
/**
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   709
Requests a system-wide power state transition and is used with the
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   710
KDmHierarchyIdPower hierarchy. The domain hierarchy is traversed in the 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   711
default direction. 
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   712
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   713
A transition to the power state EPwActive is an error and result in 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   714
async completion with KErrArgument.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   715
	
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   716
@param aState   The target power state, not EPwActive or >=EPwLimit.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   717
@param aStatus	The request status object for this asynchronous request.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   718
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   719
@see RDmDomainManager::CancelTransition()
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   720
@see KDmHierarchyIdPower
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   721
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   722
EXPORT_C void RDmDomainManager::RequestSystemTransition(TPowerState aState, TRequestStatus& aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   723
	{
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   724
	if ((aState == EPwActive) || (aState >= EPwLimit))
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   725
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   726
		TRequestStatus* status = &aStatus;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   727
		User::RequestComplete(status, KErrArgument);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   728
		return;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   729
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   730
	RequestSystemTransition((TDmDomainState) aState, ETraverseDefault, aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   731
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   732
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   733
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   734
/**
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   735
Requests a system-wide power off (EPwOff) state transition to shutdown the 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   736
platform. Applicable to the KDmHierarchyIdPower hierarchy.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   737
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   738
This call does not return; the system can only return by physical button restart.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   739
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   740
@see KDmHierarchyIdPower
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   741
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   742
EXPORT_C void RDmDomainManager::SystemShutdown()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   743
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   744
	TRequestStatus status;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   745
	RequestSystemTransition((TDmDomainState) EPwOff, ETraverseDefault, status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   746
	User::WaitForRequest(status);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   747
	__DM_ASSERT(0);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   748
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   749
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   750
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   751
/**
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   752
Requests a domain power state transition and is used with the
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   753
KDmHierarchyIdPower hierarchy. The domain hierarchy is traversed in the 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   754
default direction.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   755
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   756
@param aDomainId The Id of the domain for which the state transition
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   757
                 is being requested.
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   758
@param aState    The target power state.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   759
@param aStatus   The request status object to receive the asynchronous result.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   760
				 KErrNone if successful, otherwise one of the other system-wide
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   761
        		 or the Domain Manager specific error codes.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   762
        		 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   763
@see KDmHierarchyIdPower
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   764
@see RDmDomainManager::CancelTransition()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   765
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   766
EXPORT_C void RDmDomainManager::RequestDomainTransition(
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   767
	TDmDomainId aDomainId, 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   768
	TPowerState aState, 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   769
	TRequestStatus& aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   770
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   771
	RequestDomainTransition(aDomainId,(TDmDomainState)  aState, ETraverseDefault, aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   772
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   773
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   774
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   775
/**
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   776
Cancels an outstanding state transition, whether initiated by a call
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   777
to RequestSystemTransition() or RequestDomainTransition().
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   778
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   779
The outstanding state transition request completes with KErrCancel.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   780
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   781
EXPORT_C void RDmDomainManager::CancelTransition()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   782
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   783
	iSession.CancelTransition();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   784
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   785
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   786
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   787
/**
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   788
Requests a state transition across the whole domain hierarchy that 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   789
this connection is controlling. The domain hierarchy is traversed in the 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   790
specified direction.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   791
		
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   792
@param aState	The target state, hierarchy specific state value.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   793
@param aDirection The direction in which to traverse the hierarchy
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   794
@param aStatus  The request status object to receive the asynchronous result.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   795
				KErrNone if successful, otherwise one of the other system-wide
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   796
        		or the Domain Manager specific error codes.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   797
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   798
@panic domainCli.cpp; assertion failed line - if the numerical value of 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   799
		aDirection is greater than the value of ETraverseMax. 
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   800
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   801
@see RDmDomainManager::CancelTransition()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   802
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   803
EXPORT_C void RDmDomainManager::RequestSystemTransition(
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   804
	TDmDomainState aState, 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   805
	TDmTraverseDirection aDirection, 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   806
	TRequestStatus& aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   807
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   808
	__DM_ASSERT(aDirection <= ETraverseMax);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   809
	iSession.RequestSystemTransition(aState, aDirection, aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   810
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   811
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   812
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   813
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   814
/**
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   815
Requests a domain state transition for the hierarchy that this connection is 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   816
controlling. The domain hierarchy is traversed in the specified direction.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   817
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   818
@param aDomainId The Id of the domain for which the state transition
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   819
                 is being requested.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   820
@param aState    The target state.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   821
@param aDirection The direction in which to traverse the hierarchy.
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   822
@param aStatus   The request status object to receive the asynchronous result.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   823
				 KErrNone if successful, otherwise one of the other system-wide
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   824
        		 or the Domain Manager specific error codes.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   825
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   826
@panic domainCli.cpp; assertion failed VARNUM if the numerical value of aDirection
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   827
       is greater than the value of ETraverseMax. NOTE: VARNUM is the line number
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   828
       in the source code and may change if the implementation changes.
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   829
       
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   830
@see RDmDomainManager::CancelTransition()
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   831
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   832
EXPORT_C void RDmDomainManager::RequestDomainTransition(
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   833
	TDmDomainId aDomainId, 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   834
	TDmDomainState aState, 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   835
	TDmTraverseDirection aDirection,
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   836
	TRequestStatus& aStatus)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   837
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   838
	__DM_ASSERT(aDirection <= ETraverseMax);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   839
	iSession.RequestDomainTransition(aDomainId, aState, aDirection, aStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   840
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   841
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   842
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   843
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   844
/**
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   845
Instructs the Domain Manager to load the domain hierarchy library for
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   846
aHierarchyId. The library takes the name "domainpolicyNN.dll" where NN is 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   847
the hierarchy number as supplied.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   848
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   849
@param aHierarchyId The Id of the domain hierarchy to be added.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   850
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   851
@return KErrNone if successful, otherwise one of the other system-wide
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   852
        or the Domain Manager specific error codes.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   853
@return KErrBadHierarchyId If the library is not found or contains invalid data
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   854
@return KErrPermissionDenied when the client has insufficient capabilities
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   855
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   856
@capability PowerMgmt Required to create a connection to the Domain Manager.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   857
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   858
EXPORT_C TInt RDmDomainManager::AddDomainHierarchy(TDmHierarchyId aHierarchyId)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   859
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   860
	RDmManagerSession	session;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   861
	TInt r = session.Connect();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   862
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   863
		return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   864
	r = session.AddDomainHierarchy(aHierarchyId);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   865
	session.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   866
	return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   867
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   868
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   869
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   870
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   871
Requests a list of transition failures since the last transition request.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   872
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   873
@param aTransitionFailures A client supplied array of TTransitionFailure objects
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   874
		which on exit will contain the failures that have occurred since the 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   875
		last transition	request. 
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   876
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   877
@return KErrNone if successful, otherwise one of the other system-wide
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   878
        or the Domain Manager specific error codes.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   879
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   880
EXPORT_C TInt RDmDomainManager::GetTransitionFailures(RArray<const TTransitionFailure>& aTransitionFailures)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   881
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   882
	return iSession.GetTransitionFailures(aTransitionFailures);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   883
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   884
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   885
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   886
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   887
Gets the number of transition failures since the last transition request.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   888
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   889
@return KErrNone if successful, otherwise one of the other system-wide
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   890
        or the Domain Manager specific error codes.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   891
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   892
EXPORT_C TInt RDmDomainManager::GetTransitionFailureCount()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   893
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   894
	return iSession.GetTransitionFailureCount();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   895
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   896
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   897
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   898
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   899
//-- CDmDomain ----------------------------------------------------------------
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   900
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   901
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   902
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   903
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   904
Constructor.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   905
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   906
Adds this active object to the active scheduler. The priority of the active object
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   907
is the standard value, i.e. CActive::EPriorityStandard.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   908
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   909
@param aHierarchyId The Id of the domain hierarchy to connect to.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   910
@param aDomainId	The Id of the domain to connect to.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   911
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   912
@see CActive
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   913
@see CActive::TPriority
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   914
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   915
EXPORT_C CDmDomain::CDmDomain(TDmHierarchyId aHierarchyId, TDmDomainId aDomainId) : 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   916
	CActive(CActive::EPriorityStandard), 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   917
	iHierarchyId(aHierarchyId), 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   918
	iDomainId(aDomainId)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   919
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   920
	CActiveScheduler::Add(this);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   921
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   922
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   923
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   924
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   925
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   926
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   927
Destructor.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   928
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   929
Closes the session to the Domain Manager.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   930
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   931
EXPORT_C CDmDomain::~CDmDomain()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   932
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   933
	Cancel();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   934
	iDomain.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   935
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   936
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   937
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   938
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   939
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   940
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   941
Second-phase constructor.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   942
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   943
The function attempts to connect to the domain specified in the constructor.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   944
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   945
@leave One of the system-wide error codes
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   946
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   947
EXPORT_C void CDmDomain::ConstructL()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   948
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   949
	User::LeaveIfError(iDomain.Connect(iHierarchyId, iDomainId));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   950
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   951
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   952
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   953
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   954
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   955
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   956
Requests notification when the domain's state changes.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   957
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   958
RunL() will be called when this happens.
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   959
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   960
@note
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   961
If the client is ready to acknowledge the last transition, but
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   962
would like to register for notification of the next one, it
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   963
should call this function and then call AcknowledgeLastState,
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   964
immediately afterwards.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   965
This eliminates the possibility of a transition occurring
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   966
between acknowledging and registering for notification.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   967
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   968
EXPORT_C void CDmDomain::RequestTransitionNotification()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   969
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   970
	__DM_ASSERT(!IsActive());
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   971
	iDomain.RequestTransitionNotification(iStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   972
	SetActive();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   973
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   974
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   975
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   976
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   977
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   978
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   979
Cancels an outstanding notification request.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   980
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   981
Any outstanding notification request completes with KErrCancel.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   982
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   983
EXPORT_C void CDmDomain::DoCancel()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   984
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   985
	iDomain.CancelTransitionNotification();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   986
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   987
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   988
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   989
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   990
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   991
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   992
Acknowledges the last state change.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   993
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   994
An application must acknowledge that it has performed all actions required
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   995
by the last known state of the domain.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   996
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
   997
@param aError	The error to return to the Domain Manager. The client should
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   998
				set this to KErrNone if it successfully transitioned to the 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   999
				new state or to one of the system-wide error codes.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1000
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1001
EXPORT_C void CDmDomain::AcknowledgeLastState(TInt aError)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1002
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1003
	iDomain.AcknowledgeLastState(aError);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1004
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1005
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1006
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1007
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1008
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1009
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1010
Gets the domain's state.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1011
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1012
An application normally calls this function after a notification request
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1013
has completed. It then performs any application-dependent action demanded by
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1014
the state, and then acknowledges the state transition.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1015
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1016
@return The connected domain's state.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1017
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1018
EXPORT_C TDmDomainState CDmDomain::GetState()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1019
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1020
	return iDomain.GetState();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1021
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1022
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1023
//-- CDmDomainKeepAlive ----------------------------------------------------------------
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1024
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1025
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1026
/**
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1027
Constructor.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1028
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1029
Adds this active object to the active scheduler.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1030
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1031
@param aHierarchyId The Id of the domain hierarchy to connect to.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1032
@param aDomainId	The Id of the domain to connect to.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1033
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1034
@see CActive
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1035
*/
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1036
EXPORT_C CDmDomainKeepAlive::CDmDomainKeepAlive(TDmHierarchyId aHierarchyId, TDmDomainId aDomainId)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1037
	: CDmDomain(aHierarchyId, aDomainId), iKeepAlive(NULL)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1038
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1039
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1040
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1041
/**
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1042
Destructor.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1043
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1044
Cleanup the internal CDmKeepAlive active object.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1045
*/
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1046
EXPORT_C CDmDomainKeepAlive::~CDmDomainKeepAlive()
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1047
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1048
	delete iKeepAlive;
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1049
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1050
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1051
/**
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1052
Complete construction of this object. Classes derived from this one
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1053
should call this as part of their ConstructL or NewL functions.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1054
*/
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1055
EXPORT_C void CDmDomainKeepAlive::ConstructL()
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1056
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1057
	CDmDomain::ConstructL();
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1058
	iKeepAlive = new (ELeave) CDmKeepAlive(iDomain, *this);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1059
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1060
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1061
/**
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1062
Acknowledges the last state change.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1063
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1064
An application must acknowledge that it has performed all actions required
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1065
by the last known state of the domain.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1066
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1067
Once this is done the AO will no longer attempt to defer deadlines.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1068
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1069
@param aError	The error to return to the Domain Manager. The client should
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1070
				set this to KErrNone if it successfully transitioned to the 
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1071
				new state or to one of the system-wide error codes.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1072
*/
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1073
EXPORT_C void CDmDomainKeepAlive::AcknowledgeLastState(TInt aError)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1074
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1075
	TInt r = iDomain.AcknowledgeLastStatePriv(aError);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1076
	if (r != KErrNone && r != KErrNotFound)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1077
		__DM_PANIC(r);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1078
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1079
	if (r == KErrNone)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1080
		{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1081
		// KErrNone indicates that an acknowledgment was accepted
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1082
		// (as opposed to being spurious or late)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1083
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1084
		iKeepAlive->NotifyOfAcknowledgment();
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1085
		}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1086
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1087
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1088
/**
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1089
Handle completion of request notifications, begins deferrals.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1090
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1091
@note Clients should not need to override this, they
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1092
will be notified of events via calls to HandleTransitionL.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1093
*/
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1094
EXPORT_C void CDmDomainKeepAlive::RunL()
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1095
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1096
	iKeepAlive->DeferNotification();
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1097
	HandleTransitionL();
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1098
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1099
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1100
/**
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1101
This object will internally, use RDmDomain::DeferAcknowledgement.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1102
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1103
The default implementation of this function will simply ignore errors
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1104
from RDmDomain::DeferAcknowledgement that
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1105
it presumes the client can not or need not handle.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1106
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1107
ie.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1108
KErrCompletion - Client has now acknowledged notification - not an error.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1109
KErrCancel - Server cancelled request - client can do nothing.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1110
KErrNotSupported - Deferral not possible - client can do nothing.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1111
KErrNotReady - Deferral too late or too early - client can do nothing.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1112
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1113
All other error codes will be returned unhandled to the active scheduler,
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1114
leading to a panic.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1115
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1116
If the client does want to handle or inspect these errors e.g. for diagnostic
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1117
purposes, they can override this method. KErrNone should be returned
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1118
for errors that should not be passed to the active scheduler.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1119
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1120
@param aError Error code to handle
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1121
*/
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1122
EXPORT_C TInt CDmDomainKeepAlive::HandleDeferralError(TInt aError)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1123
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1124
	switch (aError)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1125
		{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1126
		case KErrCompletion:
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1127
		case KErrCancel:
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1128
		case KErrNotSupported:
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1129
		case KErrNotReady:
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1130
			{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1131
			// All the above error codes may occur but signal only
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1132
			// that Deferrals should not continue for the current
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1133
			// transition.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1134
			return KErrNone;
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1135
			}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1136
		case KErrPermissionDenied:
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1137
		case KErrServerBusy:
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1138
		default:
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1139
			{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1140
			return aError;
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1141
			}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1142
		}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1143
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1144
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1145
//-- CDmKeepAlive ----------------------------------------------------------------
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1146
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1147
CDmKeepAlive::CDmKeepAlive(RDmDomain& aDomain, CDmDomainKeepAlive& aOwnerActiveObject)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1148
	: CActive(CActive::EPriorityHigh), iDomain(aDomain), iOwnerActiveObject(aOwnerActiveObject), iCeaseDeferral(EFalse)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1149
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1150
	CActiveScheduler::Add(this);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1151
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1152
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1153
CDmKeepAlive::~CDmKeepAlive()
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1154
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1155
	Cancel();
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1156
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1157
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1158
void CDmKeepAlive::DeferNotification()
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1159
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1160
	__DM_ASSERT(!IsActive());
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1161
	iStatus = KRequestPending;
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1162
	iDomain.DeferAcknowledgement(iStatus);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1163
	SetActive();
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1164
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1165
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1166
/**
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1167
Informs the object that the state transition has
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1168
been _successfully_ acknowledged
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1169
*/
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1170
void CDmKeepAlive::NotifyOfAcknowledgment()
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1171
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1172
	if (IsActive())
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1173
		{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1174
		iCeaseDeferral = ETrue;
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1175
		}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1176
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1177
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1178
void CDmKeepAlive::RunL()
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1179
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1180
	const TInt error = iStatus.Int();
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1181
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1182
	TBool ceaseDeferral = iCeaseDeferral;
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1183
	iCeaseDeferral = EFalse;
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1184
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1185
	User::LeaveIfError(error);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1186
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1187
	// If a valid acknowledgment
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1188
	// has occured since the last deferral
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1189
	// then avoid deferring again since
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1190
	// this would only lead to KErrNotReady
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1191
	if(!ceaseDeferral)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1192
		{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1193
		DeferNotification();
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1194
		}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1195
	else
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1196
		{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1197
		// At this point we know error == KErrNone
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1198
		// However, we return the error code KErrCompletion, as this
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1199
		// is what would have happened, had the acknowledgment come in
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1200
		// a little earlier,
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1201
		// whilst the deferral was still outstanding on the server.
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1202
		User::Leave(KErrCompletion);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1203
		}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1204
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1205
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1206
TInt CDmKeepAlive::RunError(TInt aError)
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1207
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1208
	return iOwnerActiveObject.HandleDeferralError(aError);
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1209
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1210
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1211
void CDmKeepAlive::DoCancel()
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1212
	{
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1213
	iDomain.CancelDeferral();
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1214
	}
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1215
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1216
// CDmDomainManager
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1217
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1218
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1219
Constructor.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1220
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1221
Adds this active object to the active scheduler.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1222
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1223
@param aHierarchyId The Id of the domain hierarchy to connect to
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1224
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1225
EXPORT_C CDmDomainManager::CDmDomainManager(TDmHierarchyId aHierarchyId) : 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1226
	CActive(CActive::EPriorityStandard), 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1227
	iHierarchyId(aHierarchyId)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1228
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1229
	CActiveScheduler::Add(this);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1230
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1231
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1232
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1233
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1234
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1235
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1236
Destructor.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1237
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1238
Closes the session to the Domain Manager.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1239
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1240
EXPORT_C CDmDomainManager::~CDmDomainManager()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1241
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1242
	Cancel();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1243
	iManager.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1244
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1245
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1246
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1247
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1248
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1249
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1250
The second-phase constructor.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1251
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1252
This function attempts to connect to the hierarchy 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1253
specified in the constructor.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1254
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1255
@leave One of the system-wide error codes.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1256
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1257
EXPORT_C void CDmDomainManager::ConstructL()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1258
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1259
	User::LeaveIfError(iManager.Connect(iHierarchyId));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1260
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1261
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1262
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1263
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1264
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1265
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1266
Requests a system-wide state transition.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1267
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1268
The domain hierarchy is traversed in the specified direction
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1269
		
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1270
@param aState   The target state.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1271
@param aDirection The direction in which to traverse the hierarchy.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1272
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1273
EXPORT_C void CDmDomainManager::RequestSystemTransition(TDmDomainState aState, TDmTraverseDirection aDirection)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1274
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1275
	__DM_ASSERT(!IsActive());
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1276
	iStatus = KRequestPending;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1277
	iManager.RequestSystemTransition(aState, aDirection, iStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1278
	SetActive();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1279
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1280
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1281
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1282
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1283
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1284
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1285
Requests a domain state transition.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1286
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1287
The domain hierarchy is traversed in the specified direction.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1288
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1289
@param aDomain The Id of the domain for which the state transition
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1290
                 is being requested.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1291
@param aState    The target state.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1292
@param aDirection The direction in which to traverse the hierarchy.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1293
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1294
EXPORT_C void CDmDomainManager::RequestDomainTransition(TDmDomainId aDomain, TDmDomainState aState, TDmTraverseDirection aDirection)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1295
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1296
	__DM_ASSERT(!IsActive());
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1297
	iStatus = KRequestPending;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1298
	iManager.RequestDomainTransition(aDomain, aState, aDirection, iStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1299
	SetActive();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1300
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1301
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1302
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1303
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1304
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1305
/**
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1306
Adds a domain hierarchy to the Domain Manager.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1307
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1308
@param aHierarchyId The Id of the domain hierarchy to add
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1309
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1310
@return	KErrNone if successful; otherwise one of the other system-wide
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1311
        or Domain Manager specific error codes.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1312
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1313
EXPORT_C TInt CDmDomainManager::AddDomainHierarchy(TDmHierarchyId aHierarchyId)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1314
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1315
	RDmManagerSession	session;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1316
	TInt r = session.Connect();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1317
	if (r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1318
		return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1319
	r = session.AddDomainHierarchy(aHierarchyId);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1320
	session.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1321
	return r;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1322
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1323
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1324
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1325
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1326
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1327
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1328
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1329
Cancels a pending event.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1330
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1331
EXPORT_C void CDmDomainManager::DoCancel()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1332
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1333
	iManager.CancelTransition();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1334
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1335
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1336
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1337
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1338
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1339
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1340
Requests a list of transition failures since the last transition request.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1341
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1342
@param aTransitionFailures A client-supplied array of TTransitionFailure objects which 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1343
		on exit will contain the failures that have occurred since the last transition 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1344
		request. 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1345
@pre	The session must be connected.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1346
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1347
@return KErrNone, if successful; otherwise one of the other system-wide
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1348
        or Domain Manager specific error codes.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1349
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1350
EXPORT_C TInt CDmDomainManager::GetTransitionFailures(RArray<const TTransitionFailure>& aTransitionFailures)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1351
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1352
	return iManager.GetTransitionFailures(aTransitionFailures);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1353
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1354
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1355
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1356
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1357
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1358
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1359
Gets the number of transition failures since the last transition request.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1360
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1361
@return	The number of failures if successful, otherwise one of the other system-wide
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1362
        or Domain Manager specific error codes.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1363
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1364
EXPORT_C TInt CDmDomainManager::GetTransitionFailureCount()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1365
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1366
	return iManager.GetTransitionFailureCount();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1367
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1368
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1369
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1370
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1371
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1372
CHierarchyObserver::CHierarchyObserver(MHierarchyObserver& aHierarchyObserver, TDmHierarchyId aHierarchyId):
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1373
	CActive(CActive::EPriorityStandard), 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1374
	iHierarchyId(aHierarchyId),
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1375
	iObserver(aHierarchyObserver)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1376
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1377
	iTransitionEvents.Reset();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1378
	CActiveScheduler::Add(this);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1379
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1380
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1381
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1382
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1383
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1384
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1385
Constructs a new observer on the domain hierarchy.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1386
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1387
Note that only one observer per domain hierarchy is allowed.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1388
279
957c583b417b 201039_07
hgs
parents: 243
diff changeset
  1389
@param	aHierarchyObserver	The implementation of the interface to the Domain Manager.
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1390
@param	aHierarchyId		The Id of the domain hierarchy.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1391
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1392
@return The newly created CHierarchyObserver object.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1393
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1394
EXPORT_C CHierarchyObserver* CHierarchyObserver::NewL(MHierarchyObserver& aHierarchyObserver,TDmHierarchyId aHierarchyId)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1395
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1396
	CHierarchyObserver* observer=new(ELeave)CHierarchyObserver(aHierarchyObserver,aHierarchyId);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1397
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1398
	CleanupStack::PushL(observer);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1399
	User::LeaveIfError(observer->iSession.ConnectObserver(aHierarchyId));
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1400
	CleanupStack::Pop();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1401
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1402
	return(observer);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1403
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1404
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1405
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1406
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1407
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1408
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1409
Destructor.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1410
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1411
Frees resources prior to destruction of the object.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1412
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1413
EXPORT_C CHierarchyObserver::~CHierarchyObserver()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1414
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1415
	Cancel();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1416
	iSession.Close();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1417
	iTransitionEvents.Reset();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1418
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1419
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1420
void CHierarchyObserver::DoCancel()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1421
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1422
	iObserverStarted=EFalse;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1423
	iSession.CancelObserver();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1424
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1425
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1426
void CHierarchyObserver::RunL()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1427
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1428
// Process the reply to client's request for domain transition/failure
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1429
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1430
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1431
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1432
	TInt ret= iSession.GetEvents(iTransitionEvents);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1433
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1434
	User::LeaveIfError(ret);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1435
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1436
	TInt count = iTransitionEvents.Count();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1437
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1438
	for(TInt i=0;i<count;i++)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1439
		{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1440
		if(iTransitionEvents[i].iError==KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1441
			iObserver.TransProgEvent(iTransitionEvents[i].iDomainId,iTransitionEvents[i].iState);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1442
		else if(iTransitionEvents[i].iError==KDmErrOutstanding)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1443
			iObserver.TransReqEvent(iTransitionEvents[i].iDomainId,iTransitionEvents[i].iState);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1444
		else
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1445
			iObserver.TransFailEvent(iTransitionEvents[i].iDomainId,iTransitionEvents[i].iState,iTransitionEvents[i].iError);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1446
		}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1447
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1448
	GetNotification();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1449
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1450
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1451
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1452
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1453
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1454
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1455
Starts the observer. 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1456
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1457
@param	aDomainId		The Id of the domain to which the obsever is attached.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1458
@param	aNotifyType		The type of notifications of interest to the observer.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1459
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1460
@return KErrNone on successful start, otherwise one of the other system wide error codes.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1461
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1462
EXPORT_C TInt CHierarchyObserver::StartObserver(TDmDomainId aDomainId, TDmNotifyType aNotifyType)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1463
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1464
	iNotifyType=aNotifyType;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1465
	iDomainId=aDomainId;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1466
	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1467
	TInt ret=iSession.StartObserver(iDomainId, iNotifyType);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1468
	if(ret!=KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1469
		return ret;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1470
	iObserverStarted=ETrue;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1471
	GetNotification();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1472
	return KErrNone;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1473
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1474
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1475
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1476
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1477
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1478
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1479
Stops the observer. 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1480
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1481
@return KErrNone if successful; KDmErrBadSequence, if the observer 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1482
        has not already started.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1483
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1484
EXPORT_C TInt CHierarchyObserver::StopObserver()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1485
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1486
	if(!iObserverStarted)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1487
		return(KDmErrBadSequence);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1488
	Cancel();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1489
	return(KErrNone);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1490
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1491
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1492
void CHierarchyObserver::GetNotification()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1493
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1494
	iSession.GetNotification(iStatus);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1495
	SetActive();
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1496
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1497
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1498
/**
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1499
Gets the number of domains that are being observed.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1500
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1501
This value is the number of children of the domain member to which the observer
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1502
is attached, including itself. 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1503
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1504
@return The number of observed domain members.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1505
        One of the other system wide error codes may be returned on failure;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1506
        specifically KErrNotFound if the observer is not already started.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1507
*/
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1508
EXPORT_C TInt CHierarchyObserver::ObserverDomainCount()
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1509
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1510
	if(!iObserverStarted)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1511
		return KErrNotFound;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1512
	return(iSession.ObserverDomainCount());	
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
  1513
	}