sysstatemgmt/systemstatemgr/cmn/src/ssmstate.cpp
changeset 0 4e1aa6a622a0
--- /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);
+	}