commsfwsupport/commselements/meshmachine/inc/mm_activities_internal.h
changeset 0 dfb7c4ff071f
child 29 9644881fedd0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commsfwsupport/commselements/meshmachine/inc/mm_activities_internal.h	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,104 @@
+// 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:
+// generic framework node state machine states
+// 
+//
+
+/**
+ @file 
+ @internalAll
+*/
+
+#ifndef SYMBIAN_MM_ACTIVITIES_INTERNAL_H
+#define SYMBIAN_MM_ACTIVITIES_INTERNAL_H
+
+namespace MeshMachine
+{
+
+static const TUint16 KActivityNull                 = 0;
+static const TUint16 KActivityCustom               = 0x007f;
+//the range is used for activities that can run more than one instance in parallel
+//such activities must be type of or derived from CNodeParallerActivityBase (e_mm_activity.h)
+static const TUint16 KActivityParallelRangeMin     = 0x0100;
+static const TUint16 KActivityParallelRangeMax     = 0xFF00;
+
+class AMMNodeBase;
+class CNodeActivityBase;
+class TNodeContextBase;
+
+//-=========================================================
+//
+// TNodeActivity
+//
+//-=========================================================
+struct TNodeActivity
+/**
+*/
+	{
+	typedef CNodeActivityBase* (*TStaticActivityCtor)(const TNodeActivity& aActivitySig, AMMNodeBase& aNode);
+	const TUint8 iId;
+	//Message starting the activity (state in iFirstTriple is waiting for),
+	//used by error handling, could be NULL for "single triple" activities because
+	//than the current message associated with context is used.
+    const TUint16 iKickOffMessageId;
+    const TUint32 iKickOffMessageRealm;
+	const NetStateMachine::TStateTriple& iFirstTriple;
+	const TStaticActivityCtor iCtor;
+	const TText8* iName;
+	};
+
+//-=========================================================
+//
+// TNodeActivityMap
+//
+//-=========================================================
+struct TNodeActivityMap
+/**
+*/
+	{
+	typedef const TNodeActivityMap& (*TStaticNodeActivityMap)();
+	typedef const TNodeActivity& (*TStaticNodeActivity)();
+	const TStaticNodeActivity& iFirstActivity;
+	};
+
+//-=========================================================
+//
+// TNodeActivityIter
+//
+//-=========================================================
+class TNodeActivityIter
+/**
+*/
+	{
+public:
+	TNodeActivityIter(const TNodeActivityMap& aActivityMap)
+	:	iCurrentEntry(&aActivityMap.iFirstActivity)
+		{
+		}
+	const TNodeActivity* operator++(TInt /*aInd*/)
+		{
+		return FetchActivity(); //recursive
+		}
+
+private:
+	const TNodeActivity* FetchActivity();
+
+private:
+	const TNodeActivityMap::TStaticNodeActivity* iCurrentEntry;
+	};
+
+} // namespace MeshMachine
+
+#endif // SYMBIAN_MM_ACTIVITIES_INTERNAL_H
+