datacommsserver/esockserver/core_states/ss_coreprstates.h
changeset 0 dfb7c4ff071f
child 9 77effd21b2c9
equal deleted inserted replaced
-1:000000000000 0:dfb7c4ff071f
       
     1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // Core PR States
       
    15 //
       
    16 //
       
    17 
       
    18 /**
       
    19  @file
       
    20  @internalComponent
       
    21 */
       
    22 
       
    23 #ifndef SYMBIAN_SS_COREPRSTATES_H
       
    24 #define SYMBIAN_SS_COREPRSTATES_H
       
    25 
       
    26 #include <comms-infras/ss_nodemessages_serviceprovider.h>
       
    27 #include <comms-infras/ss_mmcommsprov.h>
       
    28 #include <comms-infras/ss_nodeinterfaces.h>
       
    29 #include <elements/mm_mutexpolicies.h>
       
    30 #include <elements/mm_states.h>
       
    31 #include <comms-infras/ss_activities.h>
       
    32 #include <comms-infras/ss_common.h>
       
    33 
       
    34 //-=========================================================
       
    35 //
       
    36 //Panics
       
    37 //
       
    38 //-=========================================================
       
    39 
       
    40 namespace CorePanics
       
    41 {
       
    42 enum
       
    43 	{
       
    44 	KPanicNoActivity = 1,
       
    45 	KPanicNoServiceProvider = 2,
       
    46 	KPanicNoControlProvider =3,
       
    47 	KPanicNoDataClient = 4,
       
    48 	KPanicNoCSR = 5,
       
    49 	KPanicNoSelectionPreferences = 6,
       
    50 	KPanicNoConnection = 7,
       
    51 	KPanicNoAvailabilityProvider = 8,
       
    52 
       
    53 	KPanicExpectedNoCSR = 9,
       
    54 	KPanicExpectedNoServiceProvider = 10,
       
    55 	KPanicClientsStillPresent =11,
       
    56 
       
    57 	KPanicIncorrectMessage = 12,
       
    58 	KOverridenProvisionMessage =13,
       
    59 	KPanicPeerMessage =14,
       
    60 	KPanicDataClient = 15,
       
    61 
       
    62 	KPanicUnexpectedExecutionPath =16,
       
    63 	KPanicExtInterfaceNotSupported =17,
       
    64 	KPanicInterfaceNotSupported = 18,
       
    65 
       
    66 	KPanicIncorrectState = 19,
       
    67 	KPanicPeerMisbehaving = 20,
       
    68 
       
    69 	KPanicActivity = 21,
       
    70 	KPanicNoContext = 22
       
    71 	};
       
    72 }
       
    73 
       
    74 namespace CoreStates
       
    75 {
       
    76 
       
    77 typedef MeshMachine::TNodeContext<ESock::ACFMMNodeBase, MeshMachine::TContext> TContext;
       
    78 
       
    79 //-=========================================================
       
    80 //
       
    81 //Core Transition Ids 1000..1999
       
    82 //
       
    83 //-=========================================================
       
    84 
       
    85 const TInt KNoPeer              = 1000;
       
    86 const TInt KPeerPresent         = 1001;
       
    87 const TInt KPeerReady           = 1002;
       
    88 const TInt KPeerNotReady        = 1003;
       
    89 const TInt KUseExisting         = 1004;
       
    90 const TInt KLoopTag             = 1005;
       
    91 const TInt KSetIdle             = 1006;
       
    92 const TInt KRecoverableErrorTag = 1007;
       
    93 const TInt KRetry               = 1008;
       
    94 const TInt KIgnore              = 1009;
       
    95 const TInt KPropagate           = 1010;
       
    96 const TInt KCommit	            = 1011;
       
    97 
       
    98 
       
    99 //-=========================================================
       
   100 //
       
   101 //States
       
   102 //
       
   103 //-=========================================================
       
   104 
       
   105 class ASetErrorState
       
   106     {
       
   107 protected:
       
   108 	IMPORT_C static TBool Accept(MeshMachine::TNodeContextBase& aContext, TBool aSuperAccept);
       
   109 	};
       
   110 
       
   111 template<class TSTATE, class TCONTEXT = CoreStates::TContext>
       
   112 class TSetErrorState  : public TSTATE, public ASetErrorState
       
   113     {
       
   114 public:
       
   115 	NETSM_TPL_DECLARE_CTR(TSetErrorState, NetStateMachine::MState, TCONTEXT)
       
   116 
       
   117     explicit TSetErrorState(TCONTEXT& aContext)
       
   118     :	TSTATE(aContext)
       
   119         {
       
   120         }
       
   121 
       
   122 	virtual TBool Accept()
       
   123     	{
       
   124     	return ASetErrorState::Accept(this->iContext, TSTATE::Accept());
       
   125     	}
       
   126     };
       
   127 
       
   128 EXPORT_DECLARE_SMELEMENT_HEADER( TNeverAccept,  MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   129 	IMPORT_C virtual TBool Accept();
       
   130 DECLARE_SMELEMENT_FOOTER( TNeverAccept )
       
   131 
       
   132 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingJoinComplete, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   133 	IMPORT_C virtual TBool Accept();
       
   134 DECLARE_SMELEMENT_FOOTER( TAwaitingJoinComplete )
       
   135 
       
   136 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingClientLeave, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   137 	IMPORT_C virtual TBool Accept();
       
   138 DECLARE_SMELEMENT_FOOTER( TAwaitingClientLeave )
       
   139 
       
   140 //-=========================================================
       
   141 //
       
   142 //State Forks
       
   143 //
       
   144 //-=========================================================
       
   145 
       
   146 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrRecoverableErrorTagOrErrorTag, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   147 	IMPORT_C virtual TInt TransitionTag();
       
   148 DECLARE_SMELEMENT_FOOTER( TNoTagOrRecoverableErrorTagOrErrorTag )
       
   149 
       
   150 EXPORT_DECLARE_SMELEMENT_HEADER( TPeerPresent, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   151 	virtual TInt TransitionTag();
       
   152 DECLARE_SMELEMENT_FOOTER( TPeerPresent )
       
   153 
       
   154 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrNoPeer, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   155 	virtual TInt TransitionTag();
       
   156 DECLARE_SMELEMENT_FOOTER( TNoTagOrNoPeer )
       
   157 
       
   158 EXPORT_DECLARE_SMELEMENT_HEADER( TRetryOrIgnoreOrPropagate, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   159 	virtual TInt TransitionTag();
       
   160 DECLARE_SMELEMENT_FOOTER( TRetryOrIgnoreOrPropagate )
       
   161 
       
   162 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrNoClients, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   163   	virtual TInt TransitionTag();
       
   164 DECLARE_SMELEMENT_FOOTER( TNoTagOrNoClients )
       
   165 
       
   166 class ACancelOrErrorOrTag
       
   167     {
       
   168 protected:
       
   169 	IMPORT_C static TInt TransitionTag(MeshMachine::TNodeContextBase& aContext, TInt aTag);
       
   170 	};
       
   171 
       
   172 template<TInt TAG>
       
   173 class TCancelOrErrorOrTag : public MeshMachine::TStateFork<TContext>, public ACancelOrErrorOrTag
       
   174     {
       
   175 public:
       
   176 	NETSM_TPL_DECLARE_CTR(TCancelOrErrorOrTag, NetStateMachine::MStateFork, TContext)
       
   177 
       
   178     TCancelOrErrorOrTag(TContext& aContext) :
       
   179         MeshMachine::TStateFork<TContext>(aContext)
       
   180         {
       
   181         }
       
   182 
       
   183 	virtual TInt TransitionTag()
       
   184     	{
       
   185     	return ACancelOrErrorOrTag::TransitionTag(this->iContext, TAG);
       
   186     	}
       
   187     };
       
   188 
       
   189 //-=========================================================
       
   190 //
       
   191 //Transitions
       
   192 //
       
   193 //-=========================================================
       
   194 
       
   195 //-=========================================================
       
   196 // CCFActivityBase::SetError handling transitions and states
       
   197 //-=========================================================
       
   198 
       
   199 EXPORT_DECLARE_SMELEMENT_HEADER( TPanic, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   200 	IMPORT_C virtual void DoL();
       
   201 DECLARE_SMELEMENT_FOOTER( TPanic )
       
   202 
       
   203 EXPORT_DECLARE_SMELEMENT_HEADER( TPostToOriginators, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   204 	IMPORT_C virtual void DoL();
       
   205 DECLARE_SMELEMENT_FOOTER( TPostToOriginators )
       
   206 
       
   207 EXPORT_DECLARE_SMELEMENT_HEADER( TSetIdleIfMoreClients, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   208 	IMPORT_C virtual void DoL();
       
   209 DECLARE_SMELEMENT_FOOTER( TSetIdleIfMoreClients )
       
   210 
       
   211 EXPORT_DECLARE_SMELEMENT_HEADER( TAbortAllActivities, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   212 	IMPORT_C virtual void DoL();
       
   213 DECLARE_SMELEMENT_FOOTER( TAbortAllActivities )
       
   214 
       
   215 EXPORT_DECLARE_SMELEMENT_HEADER( TAbortAllActivitiesNodeDeletion, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   216 	IMPORT_C virtual void DoL();
       
   217 DECLARE_SMELEMENT_FOOTER( TAbortAllActivitiesNodeDeletion )
       
   218 
       
   219 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagBackwardsOrCancel, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   220 	IMPORT_C virtual TInt TransitionTag();
       
   221 DECLARE_SMELEMENT_FOOTER( TNoTagBackwardsOrCancel )
       
   222 
       
   223 } //namespace CoreStates
       
   224 
       
   225 
       
   226 namespace CoreNetStates
       
   227 {
       
   228 typedef CoreStates::TContext TContext;
       
   229 
       
   230 //-=========================================================
       
   231 //
       
   232 //Net Core Transition Ids 2000..3999
       
   233 //
       
   234 //-=========================================================
       
   235 
       
   236 const TInt KNoBearer                      = 2000;
       
   237 const TInt KBearerPresent                 = 2001;
       
   238 const TInt KBearerReady                   = 2002;
       
   239 const TInt KNoDataClients                 = 2003;
       
   240 const TInt KDataClientPresent             = 2004;
       
   241 const TInt KDataClientReady               = 2005;
       
   242 const TInt KDataClientNotReady            = 2006;
       
   243 const TInt KProviderStopped               = 2007;
       
   244 const TInt KDataClientIdle                = 2008;
       
   245 const TInt KDataClientNoLongerIdle        = 2009;
       
   246 const TInt KBearerNoDataClientsToStop     = 2010;
       
   247 const TInt KNoBearerNoDataClients         = 2011;
       
   248 const TInt KNonDefault                    = 2012;
       
   249 const TInt KWaitForIncoming               = 2013;
       
   250 const TInt KLayerCompleted                = 2014;
       
   251 const TInt KDataClientsToStop             = 2015;
       
   252 const TInt KNoDataClientsToStop           = 2016;
       
   253 const TInt KDataClientsToStart            = 2017;
       
   254 const TInt KNoDataClientsToStart          = 2018;
       
   255 const TInt KAlreadyStarted                = 2019;
       
   256 const TInt KAlreadyStopped                = 2020;
       
   257 const TInt KBindToComplete                = 2021;
       
   258 const TInt KNoClients                     = 2022;
       
   259 const TInt KUnbind                        = 2023;
       
   260 const TInt KProviderStarted               = 2024;
       
   261 const TInt KAttachToDefault               = 2025;
       
   262 
       
   263 //-=========================================================
       
   264 //
       
   265 //States
       
   266 //
       
   267 //-=========================================================
       
   268 
       
   269 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingDataClientStart, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   270 	IMPORT_C virtual TBool Accept();
       
   271 DECLARE_SMELEMENT_FOOTER( TAwaitingDataClientStart )
       
   272 
       
   273 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingStart, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   274 	IMPORT_C virtual TBool Accept();
       
   275 DECLARE_SMELEMENT_FOOTER( TAwaitingStart )
       
   276 
       
   277 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingDataClientStop, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   278 	IMPORT_C virtual TBool Accept();
       
   279 DECLARE_SMELEMENT_FOOTER( TAwaitingDataClientStop )
       
   280 
       
   281 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingControlClientJoin, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   282 	IMPORT_C virtual TBool Accept();
       
   283 DECLARE_SMELEMENT_FOOTER( TAwaitingControlClientJoin )
       
   284 
       
   285 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingDataClientJoinRequest, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   286 	IMPORT_C virtual TBool Accept();
       
   287 DECLARE_SMELEMENT_FOOTER( TAwaitingDataClientJoinRequest )
       
   288 
       
   289 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingDataClientJoin, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   290 	IMPORT_C virtual TBool Accept();
       
   291 DECLARE_SMELEMENT_FOOTER( TAwaitingDataClientJoin )
       
   292 
       
   293 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingBinderResponse, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   294 	IMPORT_C virtual TBool Accept();
       
   295 DECLARE_SMELEMENT_FOOTER( TAwaitingBinderResponse )
       
   296 
       
   297 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingBindToComplete, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   298 	IMPORT_C virtual TBool Accept();
       
   299 DECLARE_SMELEMENT_FOOTER( TAwaitingBindToComplete )
       
   300 
       
   301 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingStarted, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   302 	IMPORT_C virtual TBool Accept();
       
   303 DECLARE_SMELEMENT_FOOTER( TAwaitingStarted )
       
   304 
       
   305 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingProvision, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   306 	IMPORT_C virtual TBool Accept();
       
   307 DECLARE_SMELEMENT_FOOTER( TAwaitingProvision )
       
   308 
       
   309 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingGoneDown, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   310 	IMPORT_C virtual TBool Accept();
       
   311 DECLARE_SMELEMENT_FOOTER( TAwaitingGoneDown )
       
   312 
       
   313 DECLARE_SMELEMENT_HEADER( TAwaitingGoneUp, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   314     virtual TBool Accept();
       
   315 DECLARE_SMELEMENT_FOOTER( TAwaitingGoneUp )
       
   316 
       
   317 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingBindTo, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   318 	IMPORT_C virtual TBool Accept();
       
   319 DECLARE_SMELEMENT_FOOTER( TAwaitingBindTo )
       
   320 
       
   321 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingBindToOrCancel, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   322 	virtual TBool Accept();
       
   323 DECLARE_SMELEMENT_FOOTER( TAwaitingBindToOrCancel )
       
   324 
       
   325 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingStopped, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   326  	IMPORT_C virtual TBool Accept();
       
   327 DECLARE_SMELEMENT_FOOTER( TAwaitingStopped )
       
   328 
       
   329 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingNoBearer, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   330 	IMPORT_C virtual TBool Accept();
       
   331 DECLARE_SMELEMENT_FOOTER( TAwaitingNoBearer )
       
   332 
       
   333 DECLARE_SMELEMENT_HEADER( TAwaitingCSRCreated, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   334 	virtual TBool Accept();
       
   335 DECLARE_SMELEMENT_FOOTER( TAwaitingCSRCreated )
       
   336 
       
   337 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingDataClientStarted, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   338 	IMPORT_C virtual TBool Accept();
       
   339 DECLARE_SMELEMENT_FOOTER( TAwaitingDataClientStarted )
       
   340 
       
   341 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingDataClientsStarted, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   342 	IMPORT_C virtual TBool Accept();
       
   343 DECLARE_SMELEMENT_FOOTER( TAwaitingDataClientsStarted )
       
   344 
       
   345 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingRejoinDataClientComplete, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   346 	IMPORT_C virtual TBool Accept();
       
   347 DECLARE_SMELEMENT_FOOTER( TAwaitingRejoinDataClientComplete )
       
   348 
       
   349 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingDataClientRejoinOrApplyOrCancel, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   350 	IMPORT_C virtual TBool Accept();
       
   351 DECLARE_SMELEMENT_FOOTER( TAwaitingDataClientRejoinOrApplyOrCancel )
       
   352 
       
   353 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingApplyResponse, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   354 	IMPORT_C virtual TBool Accept();
       
   355 DECLARE_SMELEMENT_FOOTER( TAwaitingApplyResponse )
       
   356 
       
   357 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingParamResponse, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   358 	IMPORT_C virtual TBool Accept();
       
   359 DECLARE_SMELEMENT_FOOTER( TAwaitingParamResponse )
       
   360 
       
   361 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingSubConEvent, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   362 	IMPORT_C virtual TBool Accept();
       
   363 DECLARE_SMELEMENT_FOOTER( TAwaitingSubConEvent )
       
   364 
       
   365 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingConEvent, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   366 	IMPORT_C virtual TBool Accept();
       
   367 DECLARE_SMELEMENT_FOOTER( TAwaitingConEvent )
       
   368 
       
   369 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingDataClientRejoin, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   370 	IMPORT_C virtual TBool Accept();
       
   371 DECLARE_SMELEMENT_FOOTER( TAwaitingDataClientRejoin )
       
   372 
       
   373 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingDataClientIdle, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   374 	IMPORT_C virtual TBool Accept();
       
   375 DECLARE_SMELEMENT_FOOTER( TAwaitingDataClientIdle )
       
   376 
       
   377 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingDataClientActive, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   378 	IMPORT_C virtual TBool Accept();
       
   379 DECLARE_SMELEMENT_FOOTER( TAwaitingDataClientActive )
       
   380 
       
   381 //Awaiting one data client stopped
       
   382 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingDataClientStopped, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   383 	IMPORT_C virtual TBool Accept();
       
   384 DECLARE_SMELEMENT_FOOTER( TAwaitingDataClientStopped )
       
   385 
       
   386 //Awaiting all of the data clients stopped
       
   387 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingDataClientsStopped, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   388 	IMPORT_C virtual TBool Accept();
       
   389 DECLARE_SMELEMENT_FOOTER( TAwaitingDataClientsStopped )
       
   390 
       
   391 EXPORT_DECLARE_SMELEMENT_HEADER( TSendDataClientGoneDown, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   392 	IMPORT_C virtual void DoL();
       
   393 DECLARE_SMELEMENT_FOOTER( TSendDataClientGoneDown )
       
   394 
       
   395 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingDataClientGoneDown, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   396 	IMPORT_C virtual TBool Accept();
       
   397 DECLARE_SMELEMENT_FOOTER( TAwaitingDataClientGoneDown )
       
   398 
       
   399 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingBinderRequest, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   400 	IMPORT_C virtual TBool Accept();
       
   401 DECLARE_SMELEMENT_FOOTER( TAwaitingBinderRequest )
       
   402 
       
   403 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingStop, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   404 	virtual TBool Accept();
       
   405 DECLARE_SMELEMENT_FOOTER( TAwaitingStop )
       
   406 
       
   407 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingProviderStatusChangeOrDataClientStatusChange, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   408 	IMPORT_C virtual TBool Accept();
       
   409 DECLARE_SMELEMENT_FOOTER( TAwaitingProviderStatusChangeOrDataClientStatusChange )
       
   410 
       
   411 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingDataClientStatusChange, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   412 	IMPORT_C virtual TBool Accept();
       
   413 DECLARE_SMELEMENT_FOOTER( TAwaitingDataClientStatusChange )
       
   414 
       
   415 /**
       
   416  * State awaiting a message which has derived from TCFSigLegacyRMessage2
       
   417  * @publishedPartner
       
   418  * @released since tb9.2
       
   419  */
       
   420 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingLegacyRMessage2Ext, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   421 	IMPORT_C virtual TBool Accept();
       
   422 DECLARE_SMELEMENT_FOOTER( TAwaitingLegacyRMessage2Ext )
       
   423 
       
   424 /**
       
   425  * State awaiting TLegacyRMessage2Processed message
       
   426  * @publishedPartner
       
   427  * @released since tb9.2
       
   428  */
       
   429 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingRMessage2Processed, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   430 	IMPORT_C virtual TBool Accept();
       
   431     IMPORT_C virtual void Cancel();
       
   432 DECLARE_SMELEMENT_FOOTER( TAwaitingRMessage2Processed )
       
   433 
       
   434 //-=========================================================
       
   435 //
       
   436 //State Forks
       
   437 //
       
   438 //-=========================================================
       
   439 
       
   440 DECLARE_SERIALIZABLE_STATE(
       
   441 	TNoTagBlockedByBinderRequest,
       
   442 	MeshMachine::TActivityIdMutex<ESock::ECFActivityBinderRequest>,
       
   443 	MeshMachine::TNoTag
       
   444 	)
       
   445 
       
   446 DECLARE_SERIALIZABLE_STATE(
       
   447 	TActiveOrNoTagBlockedByBindTo,
       
   448 	MeshMachine::TActivityIdMutex<ESock::ECFActivityBindTo>,
       
   449 	MeshMachine::TActiveOrNoTag<ESock::ECFActivityStartDataClient>
       
   450 	)
       
   451 
       
   452 typedef MeshMachine::TActivitiesIdMutex<ESock::ECFActivityStop, ESock::ECFActivityNoBearer> TActivityStopOrNoBearerMutex;
       
   453 DECLARE_SERIALIZABLE_STATE(
       
   454 	TNoTagBlockedByStopOrNoBearer,
       
   455 	TActivityStopOrNoBearerMutex,
       
   456 	MeshMachine::TNoTag
       
   457 	)
       
   458 
       
   459 DECLARE_SERIALIZABLE_STATE(
       
   460 	TNoTagBlockedByStart,
       
   461 	MeshMachine::TActivityIdMutex<ESock::ECFActivityStart>,
       
   462 	MeshMachine::TNoTag
       
   463 	)
       
   464 
       
   465 typedef MeshMachine::TNoClientMutex<Messages::TDefaultClientMatchPolicy, ESock::TCFClientType::EServProvider,ESock::TCFClientType::EStarted> TNoServiceProviderStartedMutex;
       
   466 DECLARE_SERIALIZABLE_STATE(
       
   467 	TNoTagBlockedByNoServiceProviderStarted,
       
   468 	TNoServiceProviderStartedMutex,
       
   469 	MeshMachine::TNoTag
       
   470 	)
       
   471 
       
   472 typedef MeshMachine::TNoClientMutex<Messages::TDefaultClientMatchPolicy, ESock::TCFClientType::ECtrl|ESock::TCFClientType::EData|ESock::TCFClientType::EAux> TNoClientsMutex;
       
   473 typedef MeshMachine::TAggregatedMutex_AND<MeshMachine::TActivityIdMutex<ESock::ECFActivityBindTo>, TNoClientsMutex> TBindToAndNoClientsMutex;
       
   474 DECLARE_SERIALIZABLE_STATE(
       
   475 	TNoTagBlockedByBindToAndNoClients,
       
   476 	TBindToAndNoClientsMutex,
       
   477 	MeshMachine::TNoTag
       
   478 	)
       
   479 
       
   480 DECLARE_SERIALIZABLE_STATE(
       
   481 	TNoTagBlockedByNoBearer,
       
   482 	MeshMachine::TActivityIdMutex<ESock::ECFActivityNoBearer>,
       
   483 	MeshMachine::TNoTag
       
   484 	)
       
   485 
       
   486 //[RZ] Please remove this at some point - better use TTag<KBearerPresent>
       
   487 EXPORT_DECLARE_SMELEMENT_HEADER( TBearerPresent, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   488      IMPORT_C virtual TInt TransitionTag();
       
   489 DECLARE_SMELEMENT_FOOTER( TBearerPresent )
       
   490 
       
   491 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrDataClientPresent, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   492 	IMPORT_C virtual TInt TransitionTag();
       
   493 DECLARE_SMELEMENT_FOOTER( TNoTagOrDataClientPresent )
       
   494 
       
   495 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrDataClientsToStop, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   496 	IMPORT_C virtual TInt TransitionTag();
       
   497 DECLARE_SMELEMENT_FOOTER( TNoTagOrDataClientsToStop )
       
   498 
       
   499 typedef MeshMachine::TClientMutex<Messages::TDefaultClientMatchPolicy, ESock::TCFClientType::EData,ESock::TCFClientType::EStarting> TDataClientStartingMutex;
       
   500 DECLARE_SERIALIZABLE_STATE(
       
   501 	TNoTagOrDataClientsToStopBlockedByStarting,
       
   502 	TDataClientStartingMutex,
       
   503 	CoreNetStates::TNoTagOrDataClientsToStop
       
   504 	)
       
   505 
       
   506 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrNoDataClients, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   507 	IMPORT_C virtual TInt TransitionTag();
       
   508 DECLARE_SMELEMENT_FOOTER( TNoTagOrNoDataClients )
       
   509 
       
   510 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrUnbindOnStop, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   511 	IMPORT_C virtual TInt TransitionTag();
       
   512 DECLARE_SMELEMENT_FOOTER( TNoTagOrUnbindOnStop )
       
   513 
       
   514 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrBearerPresent, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   515   	IMPORT_C virtual TInt TransitionTag();
       
   516 DECLARE_SMELEMENT_FOOTER( TNoTagOrBearerPresent )
       
   517 
       
   518 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrBearerPresentOrErrorTag, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   519 	virtual TInt TransitionTag();
       
   520 DECLARE_SMELEMENT_FOOTER( TNoTagOrBearerPresentOrErrorTag )
       
   521 
       
   522 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrNoBearer, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   523   	virtual TInt TransitionTag();
       
   524 DECLARE_SMELEMENT_FOOTER( TNoTagOrBearer )
       
   525 
       
   526 DECLARE_SERIALIZABLE_STATE(
       
   527 	TNoTagOrNoBearerBlockedByStart,
       
   528 	MeshMachine::TActivityIdMutex<ESock::ECFActivityStart>,
       
   529 	CoreNetStates::TNoTagOrNoBearer
       
   530 	)
       
   531 
       
   532 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrNonDefault, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   533   	virtual TInt TransitionTag();
       
   534 DECLARE_SMELEMENT_FOOTER( TNoTagOrNonDefault )
       
   535 
       
   536 DECLARE_SERIALIZABLE_STATE(
       
   537 	TNoTagOrBearerPresentBlockedByStop,
       
   538 	MeshMachine::TActivityIdMutex<ESock::ECFActivityStop>,
       
   539 	CoreNetStates::TNoTagOrBearerPresent
       
   540 	)
       
   541 
       
   542 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagBackwardsOrProviderStopped, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   543 	IMPORT_C virtual TInt TransitionTag();
       
   544 DECLARE_SMELEMENT_FOOTER( TNoTagBackwardsOrProviderStopped )
       
   545 
       
   546 
       
   547 typedef MeshMachine::TActivityIdMutex<ESock::ECFActivityStart> TActivityStartMutex;
       
   548 typedef MeshMachine::TActivitiesIdMutex<ESock::ECFActivityStop, ESock::ECFActivityGoneDown> TActivityStopAndGoneDownMutex;
       
   549 typedef MeshMachine::TActivityIdMutex<ESock::ECFActivityGoneDown> TActivityGoneDownMutex;
       
   550 
       
   551 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOrNoDataClientsToStop, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   552 	virtual TInt TransitionTag();
       
   553 DECLARE_SMELEMENT_FOOTER( TNoTagOrNoDataClientsToStop )
       
   554 
       
   555 DECLARE_SERIALIZABLE_STATE(
       
   556 	TNoTagBlockedByStop,
       
   557 	MeshMachine::TActivityIdMutex<ESock::ECFActivityStop>,
       
   558 	MeshMachine::TNoTag
       
   559 	)
       
   560 
       
   561 DECLARE_SERIALIZABLE_STATE(
       
   562 	TNoTagBlockedByGoneDown,
       
   563 	TActivityGoneDownMutex,
       
   564 	MeshMachine::TNoTag
       
   565 	)
       
   566 
       
   567 
       
   568 DECLARE_SERIALIZABLE_STATE(
       
   569 	TNoTagBlockedByStopOrGoneDown,
       
   570 	TActivityStopAndGoneDownMutex,
       
   571 	MeshMachine::TNoTag
       
   572 	)
       
   573 
       
   574 DECLARE_SERIALIZABLE_STATE(
       
   575 	TActiveOrNoTagBlockedByStopOrGoneDown,
       
   576 	TActivityStopAndGoneDownMutex,
       
   577 	MeshMachine::TActiveOrNoTag<ESock::ECFActivityStart>
       
   578 	)
       
   579 
       
   580 DECLARE_SERIALIZABLE_STATE(
       
   581 	TActiveOrNoTagBlockedByGoneDown,
       
   582 	TActivityGoneDownMutex,
       
   583 	MeshMachine::TActiveOrNoTag<ESock::ECFActivityStart>
       
   584 	)
       
   585 
       
   586 EXPORT_DECLARE_SMELEMENT_HEADER( TNoTagOnEvent, MeshMachine::TStateFork<TContext>, NetStateMachine::MStateFork, TContext )
       
   587   	virtual TInt TransitionTag();
       
   588 DECLARE_SMELEMENT_FOOTER( TNoTagOnEvent )
       
   589 
       
   590 //-=========================================================
       
   591 //
       
   592 //State Transitions
       
   593 //
       
   594 //-=========================================================
       
   595 EXPORT_DECLARE_SMELEMENT_HEADER( TAddAuxClient, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   596 	IMPORT_C virtual void DoL();
       
   597 DECLARE_SMELEMENT_FOOTER( TAddAuxClient )
       
   598 
       
   599 EXPORT_DECLARE_SMELEMENT_HEADER( TRemoveAuxClient, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   600 	IMPORT_C virtual void DoL();
       
   601 DECLARE_SMELEMENT_FOOTER( TRemoveAuxClient )
       
   602 
       
   603 EXPORT_DECLARE_SMELEMENT_HEADER( TSendClientLeavingAndRemoveServiceProvider, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   604 	IMPORT_C virtual void DoL();
       
   605 DECLARE_SMELEMENT_FOOTER( TSendClientLeavingAndRemoveServiceProvider )
       
   606 
       
   607 EXPORT_DECLARE_SMELEMENT_HEADER( TForwardToControlProvider, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   608 	IMPORT_C virtual void DoL();
       
   609 DECLARE_SMELEMENT_FOOTER( TForwardToControlProvider )
       
   610 
       
   611 EXPORT_DECLARE_SMELEMENT_HEADER( TRequestCommsBinder, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   612 	IMPORT_C virtual void DoL();
       
   613 DECLARE_SMELEMENT_FOOTER( TRequestCommsBinder )
       
   614 
       
   615 EXPORT_DECLARE_SMELEMENT_HEADER( TSendControlClientJoinRequest, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   616 	IMPORT_C virtual void DoL();
       
   617 DECLARE_SMELEMENT_FOOTER( TSendControlClientJoinRequest )
       
   618 
       
   619 EXPORT_DECLARE_SMELEMENT_HEADER( TSendBindTo, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   620 	IMPORT_C virtual void DoL();
       
   621 DECLARE_SMELEMENT_FOOTER( TSendBindTo )
       
   622 
       
   623 EXPORT_DECLARE_SMELEMENT_HEADER( TSendBearer, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   624 	IMPORT_C virtual void DoL();
       
   625 DECLARE_SMELEMENT_FOOTER( TSendBearer )
       
   626 
       
   627 EXPORT_DECLARE_SMELEMENT_HEADER( TSendApplyRequest, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   628 	IMPORT_C virtual void DoL();
       
   629 DECLARE_SMELEMENT_FOOTER( TSendApplyRequest )
       
   630 
       
   631 EXPORT_DECLARE_SMELEMENT_HEADER( TSendClientLeavingAndRemoveControlProvider, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   632 	IMPORT_C virtual void DoL();
       
   633 DECLARE_SMELEMENT_FOOTER( TSendClientLeavingAndRemoveControlProvider )
       
   634 
       
   635 EXPORT_DECLARE_SMELEMENT_HEADER( TSendClientLeavingAndRemoveControlProviderIfNoServiceProviders, TSendClientLeavingAndRemoveControlProvider, NetStateMachine::MStateTransition, TContext )
       
   636 	IMPORT_C virtual void DoL();
       
   637 DECLARE_SMELEMENT_FOOTER( TSendClientLeavingAndRemoveControlProviderIfNoServiceProviders )
       
   638 
       
   639 EXPORT_DECLARE_SMELEMENT_HEADER( TSendClientLeavingRequestToServiceProviders, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   640 	IMPORT_C virtual void DoL();
       
   641 DECLARE_SMELEMENT_FOOTER( TSendClientLeavingRequestToServiceProviders )
       
   642 
       
   643 EXPORT_DECLARE_SMELEMENT_HEADER( TSendClientLeavingToServiceProviders, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   644 	IMPORT_C virtual void DoL();
       
   645 DECLARE_SMELEMENT_FOOTER( TSendClientLeavingToServiceProviders )
       
   646 
       
   647 EXPORT_DECLARE_SMELEMENT_HEADER( TSendClientLeavingRequestToServiceProvider, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   648 	IMPORT_C virtual void DoL();
       
   649 DECLARE_SMELEMENT_FOOTER( TSendClientLeavingRequestToServiceProvider )
       
   650 
       
   651 EXPORT_DECLARE_SMELEMENT_HEADER( TSetIdleIfNoServiceProviders, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   652 	IMPORT_C virtual void DoL();
       
   653 DECLARE_SMELEMENT_FOOTER( TSetIdleIfNoServiceProviders )
       
   654 
       
   655 DECLARE_AGGREGATED_TRANSITION2(
       
   656     TLeaveControlProviderAndSetIdleIfNoServiceProviders,
       
   657     CoreNetStates::TSendClientLeavingAndRemoveControlProviderIfNoServiceProviders,
       
   658     CoreNetStates::TSetIdleIfNoServiceProviders
       
   659     )
       
   660 
       
   661 DECLARE_AGGREGATED_TRANSITION2(
       
   662     TLeaveServiceProvidersOrSetIdle,
       
   663     CoreNetStates::TSendClientLeavingRequestToServiceProviders,
       
   664     CoreNetStates::TSetIdleIfNoServiceProviders
       
   665     )
       
   666 
       
   667 //We need these because of silly macro preprocessing..
       
   668 typedef MeshMachine::TRetryTransition<CoreNetStates::TRequestCommsBinder, ESock::TCFServiceProvider::TCommsBinderRequest> TRequestCommsBinderRetry;
       
   669 
       
   670 EXPORT_DECLARE_SMELEMENT_HEADER( TAddControlClientAndSendJoinCompleteIfRequest, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   671 	IMPORT_C virtual void DoL();
       
   672 DECLARE_SMELEMENT_FOOTER( TAddControlClientAndSendJoinCompleteIfRequest )
       
   673 
       
   674 EXPORT_DECLARE_SMELEMENT_HEADER( TAddDataClient, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   675 	IMPORT_C virtual void DoL();
       
   676 	IMPORT_C virtual void Error(TInt aError);
       
   677 DECLARE_SMELEMENT_FOOTER( TAddDataClient )
       
   678 
       
   679 EXPORT_DECLARE_SMELEMENT_HEADER( TAddDataClientAndRespond, CoreNetStates::TAddDataClient, NetStateMachine::MStateTransition, TContext )
       
   680 	IMPORT_C virtual void DoL();
       
   681 DECLARE_SMELEMENT_FOOTER( TAddDataClientAndRespond )
       
   682 
       
   683 EXPORT_DECLARE_SMELEMENT_HEADER( TSendDataClientIdle, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   684 	IMPORT_C virtual void DoL();
       
   685 DECLARE_SMELEMENT_FOOTER( TSendDataClientIdle )
       
   686 
       
   687 EXPORT_DECLARE_SMELEMENT_HEADER( TSendDataClientActive, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   688 	IMPORT_C virtual void DoL();
       
   689 DECLARE_SMELEMENT_FOOTER( TSendDataClientActive )
       
   690 
       
   691 EXPORT_DECLARE_SMELEMENT_HEADER( TSendDataClientIdleIfNoClients, CoreNetStates::TSendDataClientIdle, NetStateMachine::MStateTransition, TContext )
       
   692 	IMPORT_C virtual void DoL();
       
   693 DECLARE_SMELEMENT_FOOTER( TSendDataClientIdleIfNoClients )
       
   694 
       
   695 EXPORT_DECLARE_SMELEMENT_HEADER( TSendLeaveCompleteIfRequest, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   696 	IMPORT_C virtual void DoL();
       
   697 DECLARE_SMELEMENT_FOOTER( TSendLeaveCompleteIfRequest )
       
   698 
       
   699 EXPORT_DECLARE_SMELEMENT_HEADER( TSendRejoinComplete, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   700 	IMPORT_C virtual void DoL();
       
   701 DECLARE_SMELEMENT_FOOTER( TSendRejoinComplete )
       
   702 
       
   703 EXPORT_DECLARE_SMELEMENT_HEADER( THandleDataClientIdle, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   704 	IMPORT_C virtual void DoL();
       
   705 DECLARE_SMELEMENT_FOOTER( THandleDataClientIdle )
       
   706 
       
   707 EXPORT_DECLARE_SMELEMENT_HEADER( TStopDataClients, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   708 	IMPORT_C virtual void DoL();
       
   709 DECLARE_SMELEMENT_FOOTER( TStopDataClients )
       
   710 
       
   711 EXPORT_DECLARE_SMELEMENT_HEADER( TStopSelf, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   712 	IMPORT_C virtual void DoL();
       
   713 DECLARE_SMELEMENT_FOOTER( TStopSelf )
       
   714 
       
   715 EXPORT_DECLARE_SMELEMENT_HEADER( TSendNoBearer, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   716 	IMPORT_C virtual void DoL();
       
   717 DECLARE_SMELEMENT_FOOTER( TSendNoBearer )
       
   718 
       
   719 EXPORT_DECLARE_SMELEMENT_HEADER( TForwardToControlClients, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   720 	virtual void DoL();
       
   721 DECLARE_SMELEMENT_FOOTER( TForwardToControlClients )
       
   722 
       
   723 EXPORT_DECLARE_SMELEMENT_HEADER( TStartServiceProvider, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   724 	IMPORT_C virtual void DoL();
       
   725 DECLARE_SMELEMENT_FOOTER( TStartServiceProvider )
       
   726 typedef MeshMachine::TRetryTransition<CoreNetStates::TStartServiceProvider,ESock::TCFServiceProvider::TStart> TStartServiceProviderRetry;
       
   727 
       
   728 EXPORT_DECLARE_SMELEMENT_HEADER( TSendStarted, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   729 	IMPORT_C virtual void DoL();
       
   730 DECLARE_SMELEMENT_FOOTER( TSendStarted )
       
   731 
       
   732 DECLARE_SMELEMENT_HEADER( TSendGoneUp, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   733 	virtual void DoL();
       
   734 DECLARE_SMELEMENT_FOOTER( TSendGoneUp )
       
   735 
       
   736 EXPORT_DECLARE_SMELEMENT_HEADER( TSendBindToComplete, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   737 	IMPORT_C virtual void DoL();
       
   738 DECLARE_SMELEMENT_FOOTER( TSendBindToComplete )
       
   739 
       
   740 EXPORT_DECLARE_SMELEMENT_HEADER( TBindSelfToPresentBearer, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   741 	IMPORT_C virtual void DoL();
       
   742 DECLARE_SMELEMENT_FOOTER( TBindSelfToPresentBearer )
       
   743 
       
   744 EXPORT_DECLARE_SMELEMENT_HEADER( TBindSelf, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   745 	IMPORT_C virtual void DoL();
       
   746 DECLARE_SMELEMENT_FOOTER( TBindSelf )
       
   747 
       
   748 EXPORT_DECLARE_SMELEMENT_HEADER( TStartSelf, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   749 	IMPORT_C virtual void DoL();
       
   750 DECLARE_SMELEMENT_FOOTER( TStartSelf )
       
   751 
       
   752 EXPORT_DECLARE_SMELEMENT_HEADER( TSendStop, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   753 	IMPORT_C virtual void DoL();
       
   754 DECLARE_SMELEMENT_FOOTER( TSendStop )
       
   755 
       
   756 EXPORT_DECLARE_SMELEMENT_HEADER( TCancelDataClientStart, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   757 	IMPORT_C virtual void DoL();
       
   758 DECLARE_SMELEMENT_FOOTER( TCancelDataClientStart )
       
   759 
       
   760 DECLARE_SMELEMENT_HEADER( TCancelAndCloseZone0ClientExtIfaces, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   761 	virtual void DoL();
       
   762 DECLARE_SMELEMENT_FOOTER( TCancelAndCloseZone0ClientExtIfaces )
       
   763 
       
   764 EXPORT_DECLARE_SMELEMENT_HEADER( TProcessOrForwardRMessage2Ext, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   765 	virtual void DoL();
       
   766 DECLARE_SMELEMENT_FOOTER( TProcessOrForwardRMessage2Ext )
       
   767 
       
   768 /**
       
   769  * Check if ECFActivityStart is running, and if so cancel it
       
   770  */
       
   771 EXPORT_DECLARE_SMELEMENT_HEADER( TCancelStart, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   772 	virtual void DoL();
       
   773 DECLARE_SMELEMENT_FOOTER( TCancelStart )
       
   774 
       
   775 DECLARE_AGGREGATED_TRANSITION2(
       
   776 	TCancelStartAndStopSelf,
       
   777     CoreNetStates::TCancelStart,
       
   778     CoreNetStates::TStopSelf
       
   779     )
       
   780 
       
   781 EXPORT_DECLARE_SMELEMENT_HEADER( TPassPlaneEventToControlClients, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   782 	IMPORT_C virtual void DoL();
       
   783 DECLARE_SMELEMENT_FOOTER( TPassPlaneEventToControlClients )
       
   784 } //namespace CoreNetStates
       
   785 
       
   786 
       
   787 
       
   788 namespace PRStates
       
   789 {
       
   790 typedef MeshMachine::TNodeContext<ESock::CMMCommsProviderBase, CoreNetStates::TContext> TContext;
       
   791 
       
   792 //-=========================================================
       
   793 //
       
   794 //Core Provider Transition Ids 4000..5999
       
   795 //
       
   796 //-=========================================================
       
   797 const TInt KParamsPresent                      = 4000;
       
   798 
       
   799 //-=========================================================
       
   800 //
       
   801 //States
       
   802 //
       
   803 //-=========================================================
       
   804 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingParamRequest, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   805 	IMPORT_C virtual TBool Accept();
       
   806 DECLARE_SMELEMENT_FOOTER( TAwaitingParamRequest )
       
   807 
       
   808 EXPORT_DECLARE_SMELEMENT_HEADER( TAwaitingApplyRequest, MeshMachine::TState<TContext>, NetStateMachine::MState, TContext )
       
   809  	IMPORT_C virtual TBool Accept();
       
   810 DECLARE_SMELEMENT_FOOTER( TAwaitingApplyRequest )
       
   811 
       
   812 //-=========================================================
       
   813 //
       
   814 //State Forks
       
   815 //
       
   816 //-=========================================================
       
   817 
       
   818 //-=========================================================
       
   819 //
       
   820 //State Transitions
       
   821 //
       
   822 //-=========================================================
       
   823 
       
   824 EXPORT_DECLARE_SMELEMENT_HEADER( TForwardStateChange, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   825 	IMPORT_C virtual void DoL();
       
   826 DECLARE_SMELEMENT_FOOTER( TForwardStateChange )
       
   827 
       
   828 
       
   829 
       
   830 EXPORT_DECLARE_SMELEMENT_HEADER( TCreateDataClient, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   831 	void IssuePeerCreationRequestL(ESock::TCFServiceProvider::TCommsBinderRequest* aBinderRequestMessage = NULL)	;
       
   832 	void RequestMetaConnPeer(const ESock::RMetaExtensionContainerC& aAccessPointCfg);
       
   833 	void RequestConnPeer(const ESock::RMetaExtensionContainerC& aAccessPointCfg);
       
   834 	void RequestSubConnPeer(const ESock::RMetaExtensionContainerC& aAccessPointCfg, ESock::TCFServiceProvider::TCommsBinderRequest* aBinderRequestMessage);
       
   835 	void RequestDataPeer(const ESock::RMetaExtensionContainerC& aAccessPointCfg, ESock::TCFServiceProvider::TCommsBinderRequest* aBinderRequestMessage);
       
   836 	IMPORT_C virtual void DoL();
       
   837 DECLARE_SMELEMENT_FOOTER( TCreateDataClient )
       
   838 
       
   839 EXPORT_DECLARE_SMELEMENT_HEADER( TDestroyOrphanedDataClients, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   840  	IMPORT_C virtual void DoL();
       
   841 DECLARE_SMELEMENT_FOOTER( TDestroyOrphanedDataClients )
       
   842 
       
   843 EXPORT_DECLARE_SMELEMENT_HEADER( TStoreProvision, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   844  	IMPORT_C virtual void DoL();
       
   845 DECLARE_SMELEMENT_FOOTER( TStoreProvision )
       
   846 
       
   847 EXPORT_DECLARE_SMELEMENT_HEADER( TSendProvision, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   848  	IMPORT_C virtual void DoL();
       
   849 DECLARE_SMELEMENT_FOOTER( TSendProvision )
       
   850 
       
   851 DECLARE_AGGREGATED_TRANSITION2(
       
   852 	TProcessDataClientCreation,
       
   853 	CoreNetStates::TAddDataClient,
       
   854 	PRStates::TSendProvision
       
   855 	)
       
   856 
       
   857 DECLARE_AGGREGATED_TRANSITION3(
       
   858 	TRemoveClientAndSendLeaveCompleteIfRequest,
       
   859 	MeshMachine::TRemoveClient,
       
   860 	PRStates::TDestroyOrphanedDataClients,
       
   861 	CoreNetStates::TSendLeaveCompleteIfRequest
       
   862 	)
       
   863 
       
   864 DECLARE_AGGREGATED_TRANSITION4(
       
   865 	TProcessClientLeave,
       
   866 	MeshMachine::TRemoveClient,
       
   867 	PRStates::TDestroyOrphanedDataClients,
       
   868 	CoreNetStates::TSendLeaveCompleteIfRequest,
       
   869 	CoreNetStates::TSendDataClientIdleIfNoClients
       
   870 	)
       
   871 
       
   872 DECLARE_AGGREGATED_TRANSITION4(
       
   873 	TProcessDestroy,
       
   874 	CoreStates::TAbortAllActivitiesNodeDeletion,
       
   875 	CoreNetStates::TSendClientLeavingRequestToServiceProviders,
       
   876 	CoreNetStates::TSendClientLeavingAndRemoveControlProviderIfNoServiceProviders,
       
   877 	CoreNetStates::TSetIdleIfNoServiceProviders
       
   878 	)
       
   879 
       
   880 EXPORT_DECLARE_SMELEMENT_HEADER( TStartDataClients, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   881 	IMPORT_C virtual void DoL();
       
   882 DECLARE_SMELEMENT_FOOTER( TStartDataClients )
       
   883 
       
   884 EXPORT_DECLARE_SMELEMENT_HEADER( TSendDataClientStarted, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   885 	IMPORT_C virtual void DoL();
       
   886 DECLARE_SMELEMENT_FOOTER( TSendDataClientStarted )
       
   887 
       
   888 EXPORT_DECLARE_SMELEMENT_HEADER( TSendDataClientStopped, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   889 	IMPORT_C virtual void DoL();
       
   890     TInt iStopCode;
       
   891 DECLARE_SMELEMENT_FOOTER( TSendDataClientStopped )
       
   892 
       
   893 EXPORT_DECLARE_SMELEMENT_HEADER( TSendStopped, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   894 	IMPORT_C virtual void DoL();
       
   895 DECLARE_SMELEMENT_FOOTER( TSendStopped )
       
   896 
       
   897 EXPORT_DECLARE_SMELEMENT_HEADER( TSendStoppedAndGoneDown, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   898 	IMPORT_C virtual void DoL();
       
   899 DECLARE_SMELEMENT_FOOTER( TSendStoppedAndGoneDown )
       
   900 
       
   901 EXPORT_DECLARE_SMELEMENT_HEADER( TSendGoneDown, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   902 	IMPORT_C virtual void DoL();
       
   903 	TInt iStopCode;
       
   904 DECLARE_SMELEMENT_FOOTER( TSendGoneDown )
       
   905 
       
   906 EXPORT_DECLARE_SMELEMENT_HEADER(TProcessDataClientStop, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext)
       
   907 	IMPORT_C virtual void DoL();
       
   908 DECLARE_SMELEMENT_FOOTER(TProcessDataClientStop)
       
   909 
       
   910 EXPORT_DECLARE_SMELEMENT_HEADER( TSendDataClientStatusChangeStarted, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   911 	IMPORT_C virtual void DoL();
       
   912 DECLARE_SMELEMENT_FOOTER( TSendDataClientStatusChangeStarted )
       
   913 
       
   914 EXPORT_DECLARE_SMELEMENT_HEADER( THandleDataClientStatusChange, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   915 	IMPORT_C virtual void DoL();
       
   916 DECLARE_SMELEMENT_FOOTER( THandleDataClientStatusChange )
       
   917 
       
   918 DECLARE_AGGREGATED_TRANSITION2(
       
   919 	THandleDataClientStatusChangeAndDestroyOrphans,
       
   920 	PRStates::THandleDataClientStatusChange,
       
   921 	PRStates::TDestroyOrphanedDataClients
       
   922 	)
       
   923 
       
   924 EXPORT_DECLARE_SMELEMENT_HEADER( TStoreParams, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   925 	IMPORT_C virtual void DoL();
       
   926 DECLARE_SMELEMENT_FOOTER( TStoreParams )
       
   927 
       
   928 EXPORT_DECLARE_SMELEMENT_HEADER( TRespondWithCurrentParams, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   929 	IMPORT_C virtual void DoL();
       
   930 DECLARE_SMELEMENT_FOOTER( TRespondWithCurrentParams )
       
   931 
       
   932 EXPORT_DECLARE_SMELEMENT_HEADER( TSendApplyResponse, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   933    	IMPORT_C virtual void DoL();
       
   934 DECLARE_SMELEMENT_FOOTER( TSendApplyResponse )
       
   935 
       
   936 EXPORT_DECLARE_SMELEMENT_HEADER( TPassToServiceProvider, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   937 	IMPORT_C virtual void DoL();
       
   938 DECLARE_SMELEMENT_FOOTER( TPassToServiceProvider )
       
   939 
       
   940 EXPORT_DECLARE_SMELEMENT_HEADER( TSendParamsToServiceProvider, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext )
       
   941 	IMPORT_C virtual void DoL();
       
   942 DECLARE_SMELEMENT_FOOTER( TSendParamsToServiceProvider )
       
   943 
       
   944 EXPORT_DECLARE_SMELEMENT_HEADER( TRespondWithRetrievedParams, MeshMachine::TStateTransition<TContext>, NetStateMachine::MStateTransition, TContext)
       
   945 	IMPORT_C virtual void DoL();
       
   946 DECLARE_SMELEMENT_FOOTER( TRespondWithRetrievedParams)
       
   947 
       
   948 
       
   949 DECLARE_AGGREGATED_TRANSITION2(
       
   950 	TStoreAndRespondWithCurrentParams,
       
   951 	PRStates::TStoreParams,
       
   952 	PRStates::TRespondWithCurrentParams
       
   953 	)
       
   954 
       
   955 DECLARE_AGGREGATED_TRANSITION2(
       
   956 	TStoreParamsAndPostToOriginators,
       
   957 	PRStates::TStoreParams,
       
   958 	CoreStates::TPostToOriginators
       
   959 	)
       
   960 
       
   961 } //namespace PRStates
       
   962 
       
   963 #endif //SYMBIAN_SS_COREPRSTATES_H
       
   964