--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sysstatemgmt/systemstatemgr/cmn/src/ssmstate.cpp Tue Feb 02 00:53:00 2010 +0200
@@ -0,0 +1,161 @@
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <ssm/ssmstate.h>
+#include "cmnpanic.h"
+
+/**
+Default constructor. Initialise this object to 0.
+*/
+EXPORT_C TSsmState::TSsmState()
+ : iMainState(0), iSubState(0)
+ {
+ }
+
+/**
+Constructor taking aMainState and aSubState as two separate arguments.
+@param aMainState The main state to be assigned to this object.
+@param aSubState The sub state to be assigned to this object.
+*/
+EXPORT_C TSsmState::TSsmState(TSsmMainSystemStates aMainState, TUint16 aSubState)
+ : iMainState(aMainState), iSubState(aSubState)
+ {
+ __ASSERT_DEBUG(aMainState <= ESsmMainSystemStateMax, User::Panic(KPanicSsmCmn, ECmnStateMaxValue1));
+ }
+
+/**
+Constructor taking aMainState and aSubState as two separate arguments.
+@param aMainState The main state to be assigned to this object.
+@param aSubState The sub state to be assigned to this object.
+*/
+EXPORT_C TSsmState::TSsmState(TUint16 aMainState, TUint16 aSubState)
+ : iMainState(aMainState), iSubState(aSubState)
+ {
+ __ASSERT_DEBUG(aMainState <= ESsmMainSystemStateMax, User::Panic(KPanicSsmCmn, ECmnStateMaxValue2));
+ }
+
+/**
+Copy constructor.
+@param aState The value to be assigned to this object.
+*/
+EXPORT_C TSsmState::TSsmState(const TSsmState& aState)
+ : iMainState(aState.iMainState), iSubState(aState.iSubState)
+ {
+ }
+
+/**
+@return The state as an unsigned integer
+*/
+EXPORT_C TUint16 TSsmState::MainState() const
+ {
+ return iMainState;
+ }
+
+/**
+@return The substate as an unsigned integer
+*/
+EXPORT_C TUint16 TSsmState::SubState() const
+ {
+ return iSubState;
+ }
+
+/**
+Set member data.
+@param aMainState The major state to be assigned to this object.
+@param aSubState The sub state to be assigned to this object.
+*/
+EXPORT_C void TSsmState::Set(TUint16 aMainState, TUint16 aSubState)
+ {
+ __ASSERT_DEBUG(aMainState <= ESsmMainSystemStateMax, User::Panic(KPanicSsmCmn, ECmnStateMaxValue3));
+ iMainState = aMainState;
+ iSubState = aSubState;
+ }
+
+/**
+@return An integer representing the value of this object. MainState is held in the upper 16 bits
+ and SubState in the lower 16 bits.
+*/
+EXPORT_C TUint32 TSsmState::Int() const
+ {
+ return (iMainState<<16 | iSubState);
+ }
+
+/**
+Set member data using a 32-bit unsigned integer.
+@param aState The composite value to be assigned to this object.
+*/
+EXPORT_C void TSsmState::SetFromInt(TUint32 aValue)
+ {
+ __ASSERT_DEBUG(((aValue & 0xFFFF0000)>>16) <= ESsmMainSystemStateMax, User::Panic(KPanicSsmCmn, ECmnStateMaxValue4));
+ iMainState = ((aValue & 0xFFFF0000)>>16);
+ iSubState = (aValue & 0x0000FFFF);
+ }
+
+/**
+Gives a textual description of the values assigned to this object.
+E.g. ESsmStartup.KSsmAnySubState is formated as 0000.FFFF
+@return A descriptor describing the TSsmState on the format XXXX.XXXX
+*/
+EXPORT_C TSsmStateName TSsmState::Name() const
+ {
+ TSsmStateName buf;
+ buf.AppendNumFixedWidth(iMainState,EHex,4);
+ buf.Append(TChar('.'));
+ buf.AppendNumFixedWidth(iSubState,EHex,4);
+ return(buf);
+ }
+
+/**
+@param aState The value to be assigned to this object.
+@return A reference to this object.
+*/
+EXPORT_C TSsmState& TSsmState::operator=(const TSsmState& aState)
+ {
+ // protect against self assignment
+ if( &aState == this)
+ {
+ return(*this);
+ }
+
+ // do assigment
+ iMainState = aState.iMainState;
+ iSubState = aState.iSubState;
+ return(*this);
+ }
+
+/**
+@param aState The value to be compared.
+@return True, if the values are equal; false otherwise.
+*/
+EXPORT_C TBool TSsmState::operator==(const TSsmState& aState) const
+ {
+ if(iSubState == KSsmAnySubState || aState.iSubState == KSsmAnySubState)
+ {
+ return (iMainState == aState.iMainState);
+ }
+ else
+ {
+ return ((iMainState == aState.iMainState) && (iSubState == aState.iSubState));
+ }
+ }
+
+/**
+@param aState The value to be compared.
+@return True, if the values are not equal; false otherwise.
+*/
+EXPORT_C TBool TSsmState::operator!=(const TSsmState& aState) const
+ {
+ return !(*this == aState);
+ }