Add gitlab issue/merge request templates
[staging/basesystem.git] / service / native / framework_unified / client / include / native_service / frameworkunified_sm_hsmframework.h
1 /*
2  * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 ///////////////////////////////////////////////////////////////////////////////
18 /// \ingroup  tag_StateMachine
19 /// \brief
20 ///
21 /// This file has the CFrameworkunifiedHSMParentFramework class definitions. CFrameworkunifiedHSMParentFramework is derived from
22 /// CFrameworkunifiedHSM class. It defines the states required for NS statemachine framework, it creates the NS
23 /// statemachine and implements the reaction associated with the events
24 ///
25 ///////////////////////////////////////////////////////////////////////////////
26 //@{
27 /**
28  * @file frameworkunified_sm_hsmframework.h
29  * @brief \~english This file has the CFrameworkunifiedHSMParentFramework class definitions. CFrameworkunifiedHSMParentFramework is derived from
30  *        CFrameworkunifiedHSM class. It defines the states required for NS statemachine framework, it creates the NS
31  *        statemachine and implements the reaction associated with the events
32  */
33 /** @addtogroup BaseSystem
34  *  @{
35  */
36 /** @addtogroup native_service
37  *  @ingroup BaseSystem
38  *  @{
39  */
40 /** @addtogroup framework_unified
41  *  @ingroup native_service
42  *  @{
43  */
44 /** @addtogroup framework
45  *  @ingroup framework_unified
46  *  @{
47  */
48 /** @addtogroup statemachine
49  *  @ingroup framework
50  *  @{
51  */
52 #ifndef __FRAMEWORKUNIFIED_NATIVESERVICES_NATIVESERVICES_INC_FRAMEWORK_STATEMACHINE_FRAMEWORKUNIFIED_SM_HSMFRAMEWORK_H__  // NOLINT  (build/header_guard)
53 #define __FRAMEWORKUNIFIED_NATIVESERVICES_NATIVESERVICES_INC_FRAMEWORK_STATEMACHINE_FRAMEWORKUNIFIED_SM_HSMFRAMEWORK_H__
54
55 ///////////////////////////////////////////////////////////////////////////////////////////////////
56 // Include Files
57 ///////////////////////////////////////////////////////////////////////////////////////////////////
58 #include <native_service/frameworkunified_sm_hsm.h>
59 #include <native_service/frameworkunified_sm_framework_types.h>
60 #include <native_service/ns_timer_if.h>
61 #include <native_service/ns_message_center_if.h>
62 #include <native_service/frameworkunified_framework_types.h>
63 #include <map>
64 #include <string>
65
66 class CFrameworkunifiedHSMFramework: public CFrameworkunifiedHSM {
67  public:
68   /**
69    * \~english state machine state
70    */
71   typedef enum _FRAMEWORKUNIFIED_HSM_STATES {
72     esFrameworkunifiedRoot = 0,  //!< \~english Root state
73     esFrameworkunifiedInitialization,  //!< \~english Initialization state
74     esFrameworkunifiedLoadData,  //!< \~english LoadData state
75     esFrameworkunifiedPre,  //!< \~english Pre state
76     esFrameworkunifiedBackground,  //!< \~english Background state
77     esFrameworkunifiedRun,  //!< \~english Run state
78     esFrameworkunifiedLoadSessions,  //!< \~english LoadSessions state
79     esFrameworkunifiedReady,  //!< \~english Ready state
80     esFrameworkunifiedStop,  //!< \~english Stop state
81     esFrameworkunifiedApp,  //!< \~english App state
82     esFrameworkunifiedUserChange,  //!< \~english UserChange state
83     esFrameworkunifiedThreadRoot,  //!< \~english ThreadRoot state
84     esFrameworkunifiedThreadIdle,  //!< \~english ThreadIdle state
85     esFrameworkunifiedThreadStart,  //!< \~english ThreadStart state
86     esFrameworkunifiedThreadReady,  //!< \~english ThreadReady state
87     esFrameworkunifiedThreadStop,  //!< \~english ThreadStop state
88     esFrameworkunifiedStopping,  //!< \~english Stopping state
89   } FRAMEWORKUNIFIED_HSM_STATES;
90
91   /// Define evFrameworkunifiedStart event
92   DEFINE_EVENT(evFrameworkunifiedStart, 1)
93
94   /// Define evFrameworkunifiedStop event
95   DEFINE_EVENT(evFrameworkunifiedStop, 5)
96
97   /// Define evFrameworkunifiedDestroy event
98   DEFINE_EVENT(evFrameworkunifiedDestroy, 3)
99
100   /// Define evFrameworkunifiedReady event
101   DEFINE_EVENT(evFrameworkunifiedReady, 12)
102
103   /// Define evFrameworkunifiedError event
104   DEFINE_EVENT(evFrameworkunifiedError, 16)
105
106   /// Define evFrameworkunifiedPreStart event
107   DEFINE_EVENT(evFrameworkunifiedPreStart, 19)
108
109   /// Define evFrameworkunifiedPreStop event
110   DEFINE_EVENT(evFrameworkunifiedPreStop, 20)
111
112   /// Define evFrameworkunifiedBackgroundStart event
113   DEFINE_EVENT(evFrameworkunifiedBackgroundStart, 21)
114
115   /// Define evFrameworkunifiedBackgroundStop event
116   DEFINE_EVENT(evFrameworkunifiedBackgroundStop, 22)
117
118   // Define internal transition for event evFrameworkunifiedStart in sFrameworkunifiedStop state
119   DEFINE_INTERNALTRANSITION(OnEventStartInStopState)
120
121   // Define internal transition for event evFrameworkunifiedUserChange in sFrameworkunifiedInitialization state
122   DEFINE_INTERNALTRANSITION(OnEventUserChangeInInitializationState)
123
124   // Define internal transition for event evFrameworkunifiedUserChange in sFrameworkunifiedRun state
125   DEFINE_INTERNALTRANSITION(OnEventUserChangeInRunState)
126
127   DEFINE_INTERNALTRANSITION(OnEventStopInStoppingState)
128
129   /////////////////////////////////////////////////////////////////////////////////////
130   /// \ingroup CFrameworkunifiedHSMFramework
131   /// \~english @par Brief
132   ///        CFrameworkunifiedHSMFramework default constructor
133   /// \~english @param None
134   /// \~english @retval None
135   /// \~english @par Prerequisite
136   ///        None
137   /// \~english @par Change of internal state
138   ///        CFrameworkunifiedHSM()
139   /// \~english @par Conditions of processing failure
140   ///        None
141   /// \~english @par Detail
142   ///        CFrameworkunifiedHSMFramework default constructor, for create CFrameworkunifiedHSMFramework object
143   /// \~english @par Classification
144   ///        Public
145   /// \~english @par Type
146   ///        sync only
147   /// \~english @see
148   ///
149   /////////////////////////////////////////////////////////////////////////////////////
150   CFrameworkunifiedHSMFramework();
151
152   /////////////////////////////////////////////////////////////////////////////////////
153   /// \ingroup CFrameworkunifiedHSMFramework
154   /// \~english @par Brief
155   ///        CFrameworkunifiedHSMFramework constructor with param
156   /// \~english @param [in] f_pHApp
157   ///        PVOID f_pHApp  -  for parent class constructor
158   /// \~english @retval None
159   /// \~english @par Prerequisite
160   ///        - None
161   /// \~english @par Change of internal state
162   ///        CFrameworkunifiedHSM(f_pHApp)
163   /// \~english @par Conditions of processing failure
164   ///        - None
165   /// \~english @par Detail
166   ///        CFrameworkunifiedHSMFramework constructor with param, for create CFrameworkunifiedHSMFramework object
167   /// \~english @par Classification
168   ///        - Public
169   /// \~english @par Type
170   ///        - sync only
171   /// \~english @see
172   ///
173   /////////////////////////////////////////////////////////////////////////////////////
174   CFrameworkunifiedHSMFramework(PVOID f_pHApp);  // NOLINT  (readability/nolint)
175
176   /////////////////////////////////////////////////////////////////////////////////////
177   /// \ingroup CFrameworkunifiedHSMFramework
178   /// \~english @par Summary
179   ///       pure virtual fuction
180   /// \~english @param [in] f_pEventData
181   ///        PVOID f_pEventData  -  event data
182   /// \~english @retval None
183   /// \~english @par Preconditions
184   ///       - None.
185   /// \~english @par Change of the internal state
186   ///       - None
187   /// \~english @par Causes of failures
188   ///       None
189   /// \~english @par Classification
190   ///       Public
191   /// \~english @par Type
192   ///       sync only
193   /// \~english @par Detail
194   ///       pure virtual function , implement by child class
195   /// \~english @see
196   ////////////////////////////////////////////////////////////////////////////////////
197   ///////////////////////////////////////////////////////////////////////////////////////////
198   /// FrameworkunifiedCreate
199   /// Statemachine states and events created and connected in this interface.
200   ///
201   /// \param [in] f_pEventData
202   ///     PVOID - Event data
203   ///
204   /// \return EFrameworkunifiedStatus
205   ///         EFrameworkunifiedStatus - Returns status of operation
206   ///
207   ///////////////////////////////////////////////////////////////////////////////////////////
208   virtual EFrameworkunifiedStatus FrameworkunifiedCreate(PVOID f_pEventData = NULL) = 0;
209
210   /////////////////////////////////////////////////////////////////////////////////////
211   /// \ingroup CFrameworkunifiedHSMFramework
212   /// \~english @par Summary
213   ///       pure virtual fuction
214   /// \~english @param [in] f_pAppState
215   ///        CFrameworkunifiedState *f_pAppState  -  state object to be added in the ready state.
216   /// \~english @param [in] f_bIsDefaultState
217   ///        BOOL f_bIsDefaultState  -  if the state is default state
218   /// \~english @retval None
219   /// \~english @par Preconditions
220   ///       - None.
221   /// \~english @par Change of the internal state
222   ///       - None
223   /// \~english @par Causes of failures
224   ///       None
225   /// \~english @par Classification
226   ///       Public
227   /// \~english @par Type
228   ///       sync only
229   /// \~english @par Detail
230   ///       pure virtual function , implement by child class
231   /// \~english @see
232   ////////////////////////////////////////////////////////////////////////////////////
233   ///////////////////////////////////////////////////////////////////////////////////////////
234   /// FrameworkunifiedFrameworkConnect
235   /// This adds the given state as a sub state of sReady state of the Framework
236   ///
237   /// \param [in] f_pAppState
238   ///     CFrameworkunifiedState* - state object to be added in the ready state.
239   ///
240   /// \param [in] f_bIsDefaultState
241   ///     BOOL - defines if the state is default state
242   ///
243   /// \return EFrameworkunifiedStatus
244   ///         EFrameworkunifiedStatus - Returns status of operation
245   ///
246   ///////////////////////////////////////////////////////////////////////////////////////////
247   virtual EFrameworkunifiedStatus FrameworkunifiedFrameworkConnect(CFrameworkunifiedState *f_pAppState, BOOL f_bIsDefaultState = FALSE) = 0;
248
249   /////////////////////////////////////////////////////////////////////////////////////
250   /// \ingroup CFrameworkunifiedHSMFramework
251   /// \~english @par Summary
252   ///       pure virtual fuction
253   /// \~english @param [in] f_eFrameworkunifiedState
254   ///        FRAMEWORKUNIFIED_HSM_STATES f_eFrameworkunifiedState  -  enum maping to framework state
255   /// \~english @param [in] f_uiEventId
256   ///        UI_32 f_uiEventId  -  Event id
257   /// \~english @param [in] f_pReaction
258   ///        CFrameworkunifiedReaction *f_pReaction  -  Reaction object for attaching to event
259   /// \~english @param [in] f_strEventName
260   ///        std::string f_strEventName  -  Event name
261   /// \~english @param [in] f_bIsDeferredEvent
262   ///        BOOL f_bIsDeferredEvent  -  defines if the event is deferred event
263   /// \~english @retval EFrameworkunifiedStatus   depend on implement class
264   /// \~english @par Preconditions
265   ///       - None.
266   /// \~english @par Change of the internal state
267   ///       - None
268   /// \~english @par Causes of failures
269   ///       - None
270   /// \~english @par Classification
271   ///       Public
272   /// \~english @par Type
273   ///       sync only
274   /// \~english @par Detail
275   ///       pure virtual function , implement by child class
276   /// \~english @see
277   ////////////////////////////////////////////////////////////////////////////////////
278   ///////////////////////////////////////////////////////////////////////////////////////////
279   /// FrameworkunifiedFrameworkConnect
280   /// This connects the reaction to event and add event to states
281   ///
282   /// \param [in] f_eFrameworkunifiedState
283   ///     FRAMEWORKUNIFIED_HSM_STATES - enum maping to framework state
284   ///
285   /// \param [in] f_uiEventId
286   ///     UI_32 - Event id
287   ///
288   /// \param [in] f_pReaction
289   ///     CFrameworkunifiedReaction* - Reaction object for attaching to event
290   ///
291   /// \param [in] f_strEventName
292   ///     std::string - Event name
293   ///
294   /// \param [in] f_bIsDeferredEvent
295   ///     BOOL - defines if the event is deferred event
296   ///
297   /// \return EFrameworkunifiedStatus
298   ///         EFrameworkunifiedStatus - Returns status of operation
299   ///
300   ///////////////////////////////////////////////////////////////////////////////////////////
301   virtual EFrameworkunifiedStatus FrameworkunifiedFrameworkConnect(FRAMEWORKUNIFIED_HSM_STATES f_eFrameworkunifiedState, UI_32 f_uiEventId,
302                                          CFrameworkunifiedReaction *f_pReaction, std::string f_strEventName = "",
303                                          BOOL f_bIsDeferredEvent = FALSE) = 0;
304
305  protected:
306   /// Stores the state objects against FRAMEWORKUNIFIED_HSM_STATES enumerations
307   std::map<UI_32, CFrameworkunifiedState *> *m_pFrameworkunifiedStateList;
308 };
309
310 ///////////////////////////////////////////////////////////////////////////////////////////////////
311 /// It defines the states required for NS statemachine framework, it creates the NS
312 /// statemachine and implements the reaction associated with the events
313 ///////////////////////////////////////////////////////////////////////////////////////////////////
314 class CFrameworkunifiedHSMParentFramework: public CFrameworkunifiedHSMFramework {
315  public:
316   /// Define evFrameworkunifiedLoadPersistenceAck event
317   DEFINE_EVENT(evFrameworkunifiedLoadFileAck, 2)
318
319   /// Define evFrameworkunifiedLoadComplete event
320   DEFINE_EVENT(evFrameworkunifiedLoadComplete, 4)
321
322   /// Define evFrameworkunifiedUserChange event
323   DEFINE_EVENT(evFrameworkunifiedUserChange, 6)
324
325   /// Define evFrameworkunifiedReInit event
326   DEFINE_EVENT(evFrameworkunifiedReInit, 7)
327
328   /// Define evFrameworkunifiedLoadUserData event
329   DEFINE_EVENT(evFrameworkunifiedLoadUserData, 8)
330
331   /// Define evFrameworkunifiedCloseSessionAck event
332   DEFINE_EVENT(evFrameworkunifiedCloseSessionAck, 9)
333
334   /// Define evFrameworkunifiedCloseSessionAck event
335   DEFINE_EVENT(evFrameworkunifiedOpenSessionAck, 10)
336
337   /// Define evFrameworkunifiedStopComplete event
338   DEFINE_EVENT(evFrameworkunifiedStopComplete, 11)
339
340   /// Define evFrameworkunifiedOpenSessionReq event
341   DEFINE_EVENT(evFrameworkunifiedOpenSessionReq, 14)
342
343   /// Define evFrameworkunifiedCloseSessionReq event
344   DEFINE_EVENT(evFrameworkunifiedCloseSessionReq, 15)
345
346   /// Define evFrameworkunifiedInit event
347   DEFINE_EVENT(evFrameworkunifiedInit, 16)
348
349   /// Define evFrameworkunifiedUserChangeComplete event
350   DEFINE_EVENT(evFrameworkunifiedUserChangeComplete, 17)
351
352   /// Define evFrameworkunifiedLoadSessions event
353   DEFINE_EVENT(evFrameworkunifiedLoadSessions, 18)
354
355   /// Define sFrameworkunifiedRoot state
356   DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedRoot)
357
358   /// Define sFrameworkunifiedRoot state
359   DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedApp)
360
361   /// Define sFrameworkunifiedInitialization state
362   DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedInitialization)
363
364   /// Define sFrameworkunifiedPre state
365   DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedPre)
366
367   /// Define sFrameworkunifiedBackground state
368   DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedBackground)
369
370   /// Define sFrameworkunifiedRun state
371   DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedRun)
372
373   /// Define sFrameworkunifiedStop state
374   DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedStop)
375
376   /// Define sFrameworkunifiedReady state
377   DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedReady)
378
379   /// Define sFrameworkunifiedLoadData state
380   DEFINE_LEAFSTATE_OVERRIDE(sFrameworkunifiedLoadData)
381
382   /// Define sFrameworkunifiedLoadSessions state
383   DEFINE_LEAFSTATE_OVERRIDE(sFrameworkunifiedLoadSessions)
384
385   /// Define sFrameworkunifiedStopping state
386   DEFINE_LEAFSTATE_OVERRIDE(sFrameworkunifiedStopping)
387
388   /// Define sFrameworkunifiedUserChange state
389   DEFINE_LEAFSTATE_OVERRIDE(sFrameworkunifiedUserChange)
390
391   // DEFINE_ACTION(aFrameworkunifiedOnStart)
392   DEFINE_ACTION(aFrameworkunifiedOnStop)
393
394   /////////////////////////////////////////////////////////////////////////////////////
395   /// \ingroup CFrameworkunifiedHSMParentFramework
396   /// \~english @par Brief
397   ///        CFrameworkunifiedHSMFramework default constructor
398   /// \~english @param None
399   /// \~english @retval None
400   /// \~english @par Prerequisite
401   ///        - None
402   /// \~english @par Change of internal state
403   ///        m_pFrameworkunifiedStateList = new std::map<UI_32, CFrameworkunifiedState *>();
404   /// \~english @par Conditions of processing failure
405   ///        apply space for m_pFrameworkunifiedStateList failed
406   /// \~english @par Detail
407   ///        CFrameworkunifiedHSMFramework default constructor, for create CFrameworkunifiedHSMFramework object
408   /// \~english @par Classification
409   ///        Public
410   /// \~english @par Type
411   ///        sync only
412   /// \~english @see
413   ///
414   /////////////////////////////////////////////////////////////////////////////////////
415   CFrameworkunifiedHSMParentFramework();
416
417   /////////////////////////////////////////////////////////////////////////////////////
418   /// \ingroup CFrameworkunifiedHSMParentFramework
419   /// \~english @par Brief
420   ///        CFrameworkunifiedHSMFramework constructor with param
421   /// \~english @param [in] f_pHApp
422   ///        PVOID f_pHApp  -  Name of the state
423   /// \~english @retval None
424   /// \~english @par Prerequisite
425   ///        None
426   /// \~english @par Change of internal state
427   ///        m_pFrameworkunifiedStateList = new std::map<UI_32, CFrameworkunifiedState *>();
428   /// \~english @par Conditions of processing failure
429   ///        apply space for m_pFrameworkunifiedStateList failed
430   /// \~english @par Detail
431   ///        CFrameworkunifiedHSMFramework constructor with param, for create CFrameworkunifiedHSMFramework object
432   /// \~english @par Classification
433   ///        Public
434   /// \~english @par Type
435   ///        sync only
436   /// \~english @see
437   ///
438   /////////////////////////////////////////////////////////////////////////////////////
439   ///////////////////////////////////////////////////////////////////////////////////////////
440   /// CFrameworkunifiedHSMParentFramework
441   /// default constructor
442   /// \param [in] f_pName
443   ///     string - Name of the state
444   ///
445   /// \return none
446   ///////////////////////////////////////////////////////////////////////////////////////////
447   CFrameworkunifiedHSMParentFramework(PVOID f_pHApp);  // NOLINT  (readability/nolint)
448
449   /////////////////////////////////////////////////////////////////////////////////////
450   /// \ingroup CFrameworkunifiedHSMParentFramework
451   /// \~english @par Brief
452   ///        CFrameworkunifiedHSMFramework destructor
453   /// \~english @param None
454   /// \~english @retval None
455   /// \~english @par Prerequisite
456   ///        None
457   /// \~english @par Change of internal state
458   ///        None
459   /// \~english @par Conditions of processing failure
460   ///        None
461   /// \~english @par Detail
462   ///        CFrameworkunifiedHSMFramework destructor, for destory CFrameworkunifiedHSMFramework object
463   /// \~english @par Classification
464   ///        Public
465   /// \~english @par Type
466   ///        sync only
467   /// \~english @see
468   ///
469   /////////////////////////////////////////////////////////////////////////////////////
470   ///////////////////////////////////////////////////////////////////////////////////////////
471   /// ~CFrameworkunifiedHSMParentFramework
472   /// Class destructor
473   ///
474   /// \return none
475   ///////////////////////////////////////////////////////////////////////////////////////////
476   virtual ~CFrameworkunifiedHSMParentFramework();
477
478   /////////////////////////////////////////////////////////////////////////////////////
479   /// \ingroup CFrameworkunifiedHSMParentFramework
480   /// \~english @par Brief
481   ///        create state and event
482   /// \~english @param [in] f_pEventData
483   ///        PVOID f_pEventData  -  event data
484   /// \~english @retval eFrameworkunifiedStatusOK  create state and event success
485   /// \~english @retval eFrameworkunifiedStatusNullPointer  NULL point exception occur when create state and event
486   /// \~english @par Prerequisite
487   ///        None
488   /// \~english @par Change of internal state
489   ///        None
490   /// \~english @par Conditions of processing failure
491   ///        NULL pointer exception occur
492   /// \~english @par Detail
493   ///        Statemachine states and events created and connected in this interface.
494   /// \~english @par Classification
495   ///        Public
496   /// \~english @par Type
497   ///        sync only
498   /// \~english @see
499   ///
500   /////////////////////////////////////////////////////////////////////////////////////
501   ///////////////////////////////////////////////////////////////////////////////////////////
502   /// FrameworkunifiedCreate
503   /// Statemachine states and events created and connected in this interface.
504   ///
505   /// \param [in] f_pHApp
506   ///     PVOID - application handle
507   ///
508   /// \return EFrameworkunifiedStatus
509   ///         EFrameworkunifiedStatus - Returns status of operation
510   ///
511   ///////////////////////////////////////////////////////////////////////////////////////////
512   virtual EFrameworkunifiedStatus FrameworkunifiedCreate(PVOID f_pEventData = NULL);
513
514   /////////////////////////////////////////////////////////////////////////////////////
515   /// \ingroup CFrameworkunifiedHSMParentFramework
516   /// \~english @par Brief
517   ///        add sub state
518   /// \~english @param [in] f_pAppState
519   ///        CFrameworkunifiedState *f_pAppState  -  state object to be added in the ready state.
520   /// \~english @param [in] f_bIsDefaultState
521   ///        BOOL f_bIsDefaultState  -  defines if the state is default state.
522   /// \~english @retval eFrameworkunifiedStatusOK  add sub state success
523   /// \~english @retval eFrameworkunifiedStatusNullPointer  NULL point exception occur when add sub state
524   /// \~english @par Prerequisite
525   ///        None
526   /// \~english @par Change of internal state
527   ///        None
528   /// \~english @par Conditions of processing failure
529   ///        NULL point exception occur when add sub state
530   /// \~english @par Detail
531   ///        This adds the given state as a sub state of sReady state of the Framework
532   /// \~english @par Classification
533   ///        Public
534   /// \~english @par Type
535   ///        sync only
536   /// \~english @see
537   ///
538   /////////////////////////////////////////////////////////////////////////////////////
539   ///////////////////////////////////////////////////////////////////////////////////////////
540   /// FrameworkunifiedFrameworkConnect
541   /// This adds the given state as a sub state of sReady state of the Framework
542   ///
543   /// \param [in] f_pAppState
544   ///     CFrameworkunifiedState* - state object to be added in the ready state.
545   ///
546   /// \param [in] f_bIsDefaultState
547   ///     BOOL - defines if the state is default state
548   ///
549   /// \return EFrameworkunifiedStatus
550   ///         EFrameworkunifiedStatus - Returns status of operation
551   ///
552   ///////////////////////////////////////////////////////////////////////////////////////////
553   EFrameworkunifiedStatus FrameworkunifiedFrameworkConnect(CFrameworkunifiedState *f_pAppState, BOOL f_bIsDefaultState = FALSE);
554
555   /////////////////////////////////////////////////////////////////////////////////////
556   /// \ingroup CFrameworkunifiedHSMParentFramework
557   /// \~english @par Brief
558   ///        connects the reaction to event and add event to states
559   /// \~english @param [in] f_eFrameworkunifiedState
560   ///        FRAMEWORKUNIFIED_HSM_STATES f_eFrameworkunifiedState  -  framework state
561   /// \~english @param [in] f_uiEventId
562   ///        UI_32 f_uiEventId  -  Event id
563   /// \~english @param [in] f_pReaction
564   ///        CFrameworkunifiedReaction *f_pReaction  -  Reaction object
565   /// \~english @param [in] f_strEventName
566   ///        std::string f_strEventName  -  Event name
567   /// \~english @param [in] f_bIsDeferredEvent
568   ///        BOOL f_bIsDeferredEvent  -  defines if the event is deferred event
569   /// \~english @retval eFrameworkunifiedStatusOK  add sub state success
570   /// \~english @retval eFrameworkunifiedStatusNullPointer  NULL point exception occur when add sub state
571   /// \~english @par Prerequisite
572   ///        None
573   /// \~english @par Change of internal state
574   ///        None
575   /// \~english @par Conditions of processing failure
576   ///        NULL point exception occur when add sub state
577   /// \~english @par Detail
578   ///        This connects the reaction to event and add event to states
579   /// \~english @par Classification
580   ///        Public
581   /// \~english @par Type
582   ///        sync only
583   /// \~english @see
584   ///
585   /////////////////////////////////////////////////////////////////////////////////////
586   ///////////////////////////////////////////////////////////////////////////////////////////
587   /// FrameworkunifiedFrameworkConnect
588   /// This connects the reaction to event and add event to states
589   ///
590   /// \param [in] f_eFrameworkunifiedState
591   ///     FRAMEWORKUNIFIED_HSM_STATES - enum maping to framework state
592   ///
593   /// \param [in] f_uiEventId
594   ///     UI_32 - Event id
595   ///
596   /// \param [in] f_pReaction
597   ///     CFrameworkunifiedReaction* - Reaction object for attaching to event
598   ///
599   /// \param [in] f_strEventName
600   ///     std::string - Event name
601   ///
602   /// \param [in] f_bIsDeferredEvent
603   ///     BOOL - defines if the event is deferred event
604   ///
605   /// \return EFrameworkunifiedStatus
606   ///         EFrameworkunifiedStatus - Returns status of operation
607   ///
608   ///////////////////////////////////////////////////////////////////////////////////////////
609   EFrameworkunifiedStatus FrameworkunifiedFrameworkConnect(FRAMEWORKUNIFIED_HSM_STATES f_eFrameworkunifiedState, UI_32 f_uiEventId,
610                                  CFrameworkunifiedReaction *f_pReaction, std::string f_strEventName = "",
611                                  BOOL f_bIsDeferredEvent = FALSE);
612 };
613
614 class CFrameworkunifiedHSMChildFramework: public CFrameworkunifiedHSMFramework {
615  public:
616   /// Define sFrameworkunifiedThreadIdle state
617   DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedThreadRoot)
618
619   /// Define sFrameworkunifiedThreadIdle state
620   DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedThreadIdle)
621
622   /// Define sFrameworkunifiedThreadStart state
623   DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedThreadStart)
624
625   /// Define sFrameworkunifiedThreadReady state
626   DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedThreadReady)
627
628   /// Define sFrameworkunifiedThreadStop state
629   DEFINE_LEAFSTATE_OVERRIDE(sFrameworkunifiedThreadStop)
630
631   // Define internal transition for event evFrameworkunifiedDestroy
632   DEFINE_INTERNALTRANSITION(OnDestroyThread)
633
634   /////////////////////////////////////////////////////////////////////////////////////
635   /// \ingroup CFrameworkunifiedHSMChildFramework
636   /// \~english @par Brief
637   ///        CFrameworkunifiedHSMChildFramework constructor
638   /// \~english @param None
639   /// \~english @retval None
640   /// \~english @par Prerequisite
641   ///        None
642   /// \~english @par Change of internal state
643   ///        None
644   /// \~english @par Conditions of processing failure
645   ///        None
646   /// \~english @par Detail
647   ///        CFrameworkunifiedHSMChildFramework constructor, for create CFrameworkunifiedHSMChildFramework object
648   /// \~english @par Classification
649   ///        Public
650   /// \~english @par Type
651   ///        sync only
652   /// \~english @see
653   ///
654   /////////////////////////////////////////////////////////////////////////////////////
655   ///////////////////////////////////////////////////////////////////////////////////////////
656   /// CFrameworkunifiedHSMChildFramework
657   /// default constructor
658   ///
659   /// \return none
660   ///////////////////////////////////////////////////////////////////////////////////////////
661   CFrameworkunifiedHSMChildFramework();
662
663   /////////////////////////////////////////////////////////////////////////////////////
664   /// \ingroup CFrameworkunifiedHSMChildFramework
665   /// \~english @par Brief
666   ///        CFrameworkunifiedHSMChildFramework constructor with param
667   /// \~english @param [in] f_pHApp
668   ///        PVOID f_pHApp  - application handle
669   /// \~english @retval None
670   /// \~english @par Prerequisite
671   ///        None
672   /// \~english @par Change of internal state
673   ///        m_pFrameworkunifiedStateList = new std::map<UI_32, CFrameworkunifiedState *>();
674   /// \~english @par Conditions of processing failure
675   ///        m_pFrameworkunifiedStateList apply space fail
676   /// \~english @par Detail
677   ///        CFrameworkunifiedHSMChildFramework constructor with param, for create CFrameworkunifiedHSMChildFramework object
678   /// \~english @par Classification
679   ///        Public
680   /// \~english @par Type
681   ///        sync only
682   /// \~english @see
683   ///
684   /////////////////////////////////////////////////////////////////////////////////////
685   ///////////////////////////////////////////////////////////////////////////////////////////
686   /// CFrameworkunifiedHSMChildFramework
687   /// default constructor
688   /// \param [in] f_pHApp
689   ///     PVOID - application handle
690   ///
691   /// \return none
692   ///////////////////////////////////////////////////////////////////////////////////////////
693   CFrameworkunifiedHSMChildFramework(PVOID f_pHApp);  // NOLINT  (readability/nolint)
694
695   /////////////////////////////////////////////////////////////////////////////////////
696   /// \ingroup CFrameworkunifiedHSMChildFramework
697   /// \~english @par Brief
698   ///        CFrameworkunifiedHSMChildFramework destructor
699   /// \~english @param None
700   /// \~english @retval None
701   /// \~english @par Prerequisite
702   ///        None
703   /// \~english @par Change of internal state
704   ///        None
705   /// \~english @par Conditions of processing failure
706   ///        None
707   /// \~english @par Detail
708   ///        CFrameworkunifiedHSMChildFramework destructor, for destory CFrameworkunifiedHSMChildFramework object
709   /// \~english @par Classification
710   ///        Public
711   /// \~english @par Type
712   ///        sync only
713   /// \~english @see
714   ///
715   /////////////////////////////////////////////////////////////////////////////////////
716   ///////////////////////////////////////////////////////////////////////////////////////////
717   /// ~CFrameworkunifiedHSMChildFramework
718   /// Class destructor
719   ///
720   /// \return none
721   ///////////////////////////////////////////////////////////////////////////////////////////
722   virtual ~CFrameworkunifiedHSMChildFramework();
723
724   /////////////////////////////////////////////////////////////////////////////////////
725   /// \ingroup CFrameworkunifiedHSMChildFramework
726   /// \~english @par Brief
727   ///        create state and event
728   /// \~english @param [in] f_pEventData
729   ///        PVOID f_pEventData  -  event data
730   /// \~english @retval eFrameworkunifiedStatusOK  create state and event success
731   /// \~english @retval eFrameworkunifiedStatusNullPointer  NULL point exception occur when create state and event
732   /// \~english @par Prerequisite
733   ///        None
734   /// \~english @par Change of internal state
735   ///        None
736   /// \~english @par Conditions of processing failure
737   ///        NULL pointer exception occur
738   /// \~english @par Detail
739   ///        Statemachine states and events created and connected in this interface.
740   /// \~english @par Classification
741   ///        Public
742   /// \~english @par Type
743   ///        sync only
744   /// \~english @see
745   ///
746   /////////////////////////////////////////////////////////////////////////////////////
747   ///////////////////////////////////////////////////////////////////////////////////////////
748   /// FrameworkunifiedCreate
749   /// Statemachine states and events created and connected in this interface.
750   ///
751   /// \param [in] f_pEventData
752   ///     PVOID - Event data
753   ///
754   /// \return EFrameworkunifiedStatus
755   ///         EFrameworkunifiedStatus - Returns status of operation
756   ///
757   ///////////////////////////////////////////////////////////////////////////////////////////
758   virtual EFrameworkunifiedStatus FrameworkunifiedCreate(PVOID f_pEventData = NULL);
759
760   /////////////////////////////////////////////////////////////////////////////////////
761   /// \ingroup CFrameworkunifiedHSMChildFramework
762   /// \~english @par Brief
763   ///        add sub state
764   /// \~english @param [in] f_pAppState
765   ///        CFrameworkunifiedState *f_pAppState  -  state object to be added in the ready state.
766   /// \~english @param [in] f_bIsDefaultState
767   ///        BOOL f_bIsDefaultState  -  defines if the state is default state.
768   /// \~english @retval eFrameworkunifiedStatusOK  add sub state success
769   /// \~english @retval eFrameworkunifiedStatusNullPointer  NULL point exception occur when add sub state
770   /// \~english @par Prerequisite
771   ///        None
772   /// \~english @par Change of internal state
773   ///        None
774   /// \~english @par Conditions of processing failure
775   ///        NULL point exception occur when add sub state
776   /// \~english @par Detail
777   ///        This adds the given state as a sub state of sReady state of the Framework
778   /// \~english @par Classification
779   ///        Public
780   /// \~english @par Type
781   ///        sync only
782   /// \~english @see
783   ///
784   /////////////////////////////////////////////////////////////////////////////////////
785   ///////////////////////////////////////////////////////////////////////////////////////////
786   /// FrameworkunifiedFrameworkConnect
787   /// This adds the given state as a sub state of sReady state of the Framework
788   ///
789   /// \param [in] f_pAppState
790   ///     CFrameworkunifiedState* - state object to be added in the ready state.
791   ///
792   /// \param [in] f_bIsDefaultState
793   ///     BOOL - defines if the state is default state
794   ///
795   /// \return EFrameworkunifiedStatus
796   ///         EFrameworkunifiedStatus - Returns status of operation
797   ///
798   ///////////////////////////////////////////////////////////////////////////////////////////
799   EFrameworkunifiedStatus FrameworkunifiedFrameworkConnect(CFrameworkunifiedState *f_pAppState, BOOL f_bIsDefaultState = FALSE);
800
801   /////////////////////////////////////////////////////////////////////////////////////
802   /// \ingroup CFrameworkunifiedHSMChildFramework
803   /// \~english @par Brief
804   ///        connects the reaction to event and add event to states
805   /// \~english @param [in] f_eFrameworkunifiedState
806   ///        FRAMEWORKUNIFIED_HSM_STATES f_eFrameworkunifiedState  -  framework state
807   /// \~english @param [in] f_uiEventId
808   ///        UI_32 f_uiEventId  -  Event id
809   /// \~english @param [in] f_pReaction
810   ///        CFrameworkunifiedReaction *f_pReaction  -  Reaction object
811   /// \~english @param [in] f_strEventName
812   ///        std::string f_strEventName  -  Event name
813   /// \~english @param [in] f_bIsDeferredEvent
814   ///        BOOL f_bIsDeferredEvent  -  defines if the event is deferred event
815   /// \~english @retval eFrameworkunifiedStatusOK  add sub state success
816   /// \~english @retval eFrameworkunifiedStatusNullPointer  NULL point exception occur when add sub state
817   /// \~english @par Prerequisite
818   ///        None
819   /// \~english @par Change of internal state
820   ///        None
821   /// \~english @par Conditions of processing failure
822   ///        NULL point exception occur when add sub state
823   /// \~english @par Detail
824   ///        This connects the reaction to event and add event to states
825   /// \~english @par Classification
826   ///        Public
827   /// \~english @par Type
828   ///        sync only
829   /// \~english @see
830   ///
831   /////////////////////////////////////////////////////////////////////////////////////
832   ///////////////////////////////////////////////////////////////////////////////////////////
833   /// FrameworkunifiedFrameworkConnect
834   /// This connects the reaction to event and add event to states
835   ///
836   /// \param [in] f_eFrameworkunifiedState
837   ///     FRAMEWORKUNIFIED_HSM_STATES - enum maping to framework state
838   ///
839   /// \param [in] f_uiEventId
840   ///     UI_32 - Event id
841   ///
842   /// \param [in] f_pReaction
843   ///     CFrameworkunifiedReaction* - Reaction object for attaching to event
844   ///
845   /// \param [in] f_strEventName
846   ///     std::string - Event name
847   ///
848   /// \param [in] f_bIsDeferredEvent
849   ///     BOOL - defines if the event is deferred event
850   ///
851   /// \return EFrameworkunifiedStatus
852   ///         EFrameworkunifiedStatus - Returns status of operation
853   ///
854   ///////////////////////////////////////////////////////////////////////////////////////////
855   EFrameworkunifiedStatus FrameworkunifiedFrameworkConnect(FRAMEWORKUNIFIED_HSM_STATES f_eFrameworkunifiedState,
856                                  UI_32 f_uiEventId,
857                                  CFrameworkunifiedReaction *f_pReaction, std::string f_strEventName = "",
858                                  BOOL f_bIsDeferredEvent = FALSE);
859
860   /// function pointer of the Thread start routine
861   CbFuncPtr m_fpStartThread;
862
863   /// function pointer of the Thread stop routine
864   CbFuncPtr m_fpStopThread;
865 };
866
867 #endif /* __FRAMEWORKUNIFIED_NATIVESERVICES_NATIVESERVICES_INC_FRAMEWORK_STATEMACHINE_FRAMEWORKUNIFIED_SM_HSMFRAMEWORK_H__ */  // NOLINT  (build/header_guard)
868 /** @}*/
869 /** @}*/
870 /** @}*/
871 /** @}*/
872 /** @}*/
873 //@}