2 * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 ///////////////////////////////////////////////////////////////////////////////
18 /// \ingroup tag_StateMachine
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
25 ///////////////////////////////////////////////////////////////////////////////
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
33 /** @addtogroup BaseSystem
36 /** @addtogroup native_service
40 /** @addtogroup framework_unified
41 * @ingroup native_service
44 /** @addtogroup framework
45 * @ingroup framework_unified
48 /** @addtogroup statemachine
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__
55 ///////////////////////////////////////////////////////////////////////////////////////////////////
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>
66 class CFrameworkunifiedHSMFramework: public CFrameworkunifiedHSM {
69 * \~english state machine state
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;
91 /// Define evFrameworkunifiedStart event
92 DEFINE_EVENT(evFrameworkunifiedStart, 1)
94 /// Define evFrameworkunifiedStop event
95 DEFINE_EVENT(evFrameworkunifiedStop, 5)
97 /// Define evFrameworkunifiedDestroy event
98 DEFINE_EVENT(evFrameworkunifiedDestroy, 3)
100 /// Define evFrameworkunifiedReady event
101 DEFINE_EVENT(evFrameworkunifiedReady, 12)
103 /// Define evFrameworkunifiedError event
104 DEFINE_EVENT(evFrameworkunifiedError, 16)
106 /// Define evFrameworkunifiedPreStart event
107 DEFINE_EVENT(evFrameworkunifiedPreStart, 19)
109 /// Define evFrameworkunifiedPreStop event
110 DEFINE_EVENT(evFrameworkunifiedPreStop, 20)
112 /// Define evFrameworkunifiedBackgroundStart event
113 DEFINE_EVENT(evFrameworkunifiedBackgroundStart, 21)
115 /// Define evFrameworkunifiedBackgroundStop event
116 DEFINE_EVENT(evFrameworkunifiedBackgroundStop, 22)
118 // Define internal transition for event evFrameworkunifiedStart in sFrameworkunifiedStop state
119 DEFINE_INTERNALTRANSITION(OnEventStartInStopState)
121 // Define internal transition for event evFrameworkunifiedUserChange in sFrameworkunifiedInitialization state
122 DEFINE_INTERNALTRANSITION(OnEventUserChangeInInitializationState)
124 // Define internal transition for event evFrameworkunifiedUserChange in sFrameworkunifiedRun state
125 DEFINE_INTERNALTRANSITION(OnEventUserChangeInRunState)
127 DEFINE_INTERNALTRANSITION(OnEventStopInStoppingState)
129 /////////////////////////////////////////////////////////////////////////////////////
130 /// \ingroup CFrameworkunifiedHSMFramework
131 /// \~english @par Brief
132 /// CFrameworkunifiedHSMFramework default constructor
133 /// \~english @param None
134 /// \~english @retval None
135 /// \~english @par Prerequisite
137 /// \~english @par Change of internal state
138 /// CFrameworkunifiedHSM()
139 /// \~english @par Conditions of processing failure
141 /// \~english @par Detail
142 /// CFrameworkunifiedHSMFramework default constructor, for create CFrameworkunifiedHSMFramework object
143 /// \~english @par Classification
145 /// \~english @par Type
149 /////////////////////////////////////////////////////////////////////////////////////
150 CFrameworkunifiedHSMFramework();
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
161 /// \~english @par Change of internal state
162 /// CFrameworkunifiedHSM(f_pHApp)
163 /// \~english @par Conditions of processing failure
165 /// \~english @par Detail
166 /// CFrameworkunifiedHSMFramework constructor with param, for create CFrameworkunifiedHSMFramework object
167 /// \~english @par Classification
169 /// \~english @par Type
173 /////////////////////////////////////////////////////////////////////////////////////
174 CFrameworkunifiedHSMFramework(PVOID f_pHApp); // NOLINT (readability/nolint)
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
185 /// \~english @par Change of the internal state
187 /// \~english @par Causes of failures
189 /// \~english @par Classification
191 /// \~english @par Type
193 /// \~english @par Detail
194 /// pure virtual function , implement by child class
196 ////////////////////////////////////////////////////////////////////////////////////
197 ///////////////////////////////////////////////////////////////////////////////////////////
198 /// FrameworkunifiedCreate
199 /// Statemachine states and events created and connected in this interface.
201 /// \param [in] f_pEventData
202 /// PVOID - Event data
204 /// \return EFrameworkunifiedStatus
205 /// EFrameworkunifiedStatus - Returns status of operation
207 ///////////////////////////////////////////////////////////////////////////////////////////
208 virtual EFrameworkunifiedStatus FrameworkunifiedCreate(PVOID f_pEventData = NULL) = 0;
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
221 /// \~english @par Change of the internal state
223 /// \~english @par Causes of failures
225 /// \~english @par Classification
227 /// \~english @par Type
229 /// \~english @par Detail
230 /// pure virtual function , implement by child class
232 ////////////////////////////////////////////////////////////////////////////////////
233 ///////////////////////////////////////////////////////////////////////////////////////////
234 /// FrameworkunifiedFrameworkConnect
235 /// This adds the given state as a sub state of sReady state of the Framework
237 /// \param [in] f_pAppState
238 /// CFrameworkunifiedState* - state object to be added in the ready state.
240 /// \param [in] f_bIsDefaultState
241 /// BOOL - defines if the state is default state
243 /// \return EFrameworkunifiedStatus
244 /// EFrameworkunifiedStatus - Returns status of operation
246 ///////////////////////////////////////////////////////////////////////////////////////////
247 virtual EFrameworkunifiedStatus FrameworkunifiedFrameworkConnect(CFrameworkunifiedState *f_pAppState, BOOL f_bIsDefaultState = FALSE) = 0;
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
266 /// \~english @par Change of the internal state
268 /// \~english @par Causes of failures
270 /// \~english @par Classification
272 /// \~english @par Type
274 /// \~english @par Detail
275 /// pure virtual function , implement by child class
277 ////////////////////////////////////////////////////////////////////////////////////
278 ///////////////////////////////////////////////////////////////////////////////////////////
279 /// FrameworkunifiedFrameworkConnect
280 /// This connects the reaction to event and add event to states
282 /// \param [in] f_eFrameworkunifiedState
283 /// FRAMEWORKUNIFIED_HSM_STATES - enum maping to framework state
285 /// \param [in] f_uiEventId
288 /// \param [in] f_pReaction
289 /// CFrameworkunifiedReaction* - Reaction object for attaching to event
291 /// \param [in] f_strEventName
292 /// std::string - Event name
294 /// \param [in] f_bIsDeferredEvent
295 /// BOOL - defines if the event is deferred event
297 /// \return EFrameworkunifiedStatus
298 /// EFrameworkunifiedStatus - Returns status of operation
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;
306 /// Stores the state objects against FRAMEWORKUNIFIED_HSM_STATES enumerations
307 std::map<UI_32, CFrameworkunifiedState *> *m_pFrameworkunifiedStateList;
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 {
316 /// Define evFrameworkunifiedLoadPersistenceAck event
317 DEFINE_EVENT(evFrameworkunifiedLoadFileAck, 2)
319 /// Define evFrameworkunifiedLoadComplete event
320 DEFINE_EVENT(evFrameworkunifiedLoadComplete, 4)
322 /// Define evFrameworkunifiedUserChange event
323 DEFINE_EVENT(evFrameworkunifiedUserChange, 6)
325 /// Define evFrameworkunifiedReInit event
326 DEFINE_EVENT(evFrameworkunifiedReInit, 7)
328 /// Define evFrameworkunifiedLoadUserData event
329 DEFINE_EVENT(evFrameworkunifiedLoadUserData, 8)
331 /// Define evFrameworkunifiedCloseSessionAck event
332 DEFINE_EVENT(evFrameworkunifiedCloseSessionAck, 9)
334 /// Define evFrameworkunifiedCloseSessionAck event
335 DEFINE_EVENT(evFrameworkunifiedOpenSessionAck, 10)
337 /// Define evFrameworkunifiedStopComplete event
338 DEFINE_EVENT(evFrameworkunifiedStopComplete, 11)
340 /// Define evFrameworkunifiedOpenSessionReq event
341 DEFINE_EVENT(evFrameworkunifiedOpenSessionReq, 14)
343 /// Define evFrameworkunifiedCloseSessionReq event
344 DEFINE_EVENT(evFrameworkunifiedCloseSessionReq, 15)
346 /// Define evFrameworkunifiedInit event
347 DEFINE_EVENT(evFrameworkunifiedInit, 16)
349 /// Define evFrameworkunifiedUserChangeComplete event
350 DEFINE_EVENT(evFrameworkunifiedUserChangeComplete, 17)
352 /// Define evFrameworkunifiedLoadSessions event
353 DEFINE_EVENT(evFrameworkunifiedLoadSessions, 18)
355 /// Define sFrameworkunifiedRoot state
356 DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedRoot)
358 /// Define sFrameworkunifiedRoot state
359 DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedApp)
361 /// Define sFrameworkunifiedInitialization state
362 DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedInitialization)
364 /// Define sFrameworkunifiedPre state
365 DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedPre)
367 /// Define sFrameworkunifiedBackground state
368 DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedBackground)
370 /// Define sFrameworkunifiedRun state
371 DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedRun)
373 /// Define sFrameworkunifiedStop state
374 DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedStop)
376 /// Define sFrameworkunifiedReady state
377 DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedReady)
379 /// Define sFrameworkunifiedLoadData state
380 DEFINE_LEAFSTATE_OVERRIDE(sFrameworkunifiedLoadData)
382 /// Define sFrameworkunifiedLoadSessions state
383 DEFINE_LEAFSTATE_OVERRIDE(sFrameworkunifiedLoadSessions)
385 /// Define sFrameworkunifiedStopping state
386 DEFINE_LEAFSTATE_OVERRIDE(sFrameworkunifiedStopping)
388 /// Define sFrameworkunifiedUserChange state
389 DEFINE_LEAFSTATE_OVERRIDE(sFrameworkunifiedUserChange)
391 // DEFINE_ACTION(aFrameworkunifiedOnStart)
392 DEFINE_ACTION(aFrameworkunifiedOnStop)
394 /////////////////////////////////////////////////////////////////////////////////////
395 /// \ingroup CFrameworkunifiedHSMParentFramework
396 /// \~english @par Brief
397 /// CFrameworkunifiedHSMFramework default constructor
398 /// \~english @param None
399 /// \~english @retval None
400 /// \~english @par Prerequisite
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
410 /// \~english @par Type
414 /////////////////////////////////////////////////////////////////////////////////////
415 CFrameworkunifiedHSMParentFramework();
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
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
434 /// \~english @par Type
438 /////////////////////////////////////////////////////////////////////////////////////
439 ///////////////////////////////////////////////////////////////////////////////////////////
440 /// CFrameworkunifiedHSMParentFramework
441 /// default constructor
442 /// \param [in] f_pName
443 /// string - Name of the state
446 ///////////////////////////////////////////////////////////////////////////////////////////
447 CFrameworkunifiedHSMParentFramework(PVOID f_pHApp); // NOLINT (readability/nolint)
449 /////////////////////////////////////////////////////////////////////////////////////
450 /// \ingroup CFrameworkunifiedHSMParentFramework
451 /// \~english @par Brief
452 /// CFrameworkunifiedHSMFramework destructor
453 /// \~english @param None
454 /// \~english @retval None
455 /// \~english @par Prerequisite
457 /// \~english @par Change of internal state
459 /// \~english @par Conditions of processing failure
461 /// \~english @par Detail
462 /// CFrameworkunifiedHSMFramework destructor, for destory CFrameworkunifiedHSMFramework object
463 /// \~english @par Classification
465 /// \~english @par Type
469 /////////////////////////////////////////////////////////////////////////////////////
470 ///////////////////////////////////////////////////////////////////////////////////////////
471 /// ~CFrameworkunifiedHSMParentFramework
475 ///////////////////////////////////////////////////////////////////////////////////////////
476 virtual ~CFrameworkunifiedHSMParentFramework();
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
488 /// \~english @par Change of internal state
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
496 /// \~english @par Type
500 /////////////////////////////////////////////////////////////////////////////////////
501 ///////////////////////////////////////////////////////////////////////////////////////////
502 /// FrameworkunifiedCreate
503 /// Statemachine states and events created and connected in this interface.
505 /// \param [in] f_pHApp
506 /// PVOID - application handle
508 /// \return EFrameworkunifiedStatus
509 /// EFrameworkunifiedStatus - Returns status of operation
511 ///////////////////////////////////////////////////////////////////////////////////////////
512 virtual EFrameworkunifiedStatus FrameworkunifiedCreate(PVOID f_pEventData = NULL);
514 /////////////////////////////////////////////////////////////////////////////////////
515 /// \ingroup CFrameworkunifiedHSMParentFramework
516 /// \~english @par Brief
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
526 /// \~english @par Change of internal state
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
534 /// \~english @par Type
538 /////////////////////////////////////////////////////////////////////////////////////
539 ///////////////////////////////////////////////////////////////////////////////////////////
540 /// FrameworkunifiedFrameworkConnect
541 /// This adds the given state as a sub state of sReady state of the Framework
543 /// \param [in] f_pAppState
544 /// CFrameworkunifiedState* - state object to be added in the ready state.
546 /// \param [in] f_bIsDefaultState
547 /// BOOL - defines if the state is default state
549 /// \return EFrameworkunifiedStatus
550 /// EFrameworkunifiedStatus - Returns status of operation
552 ///////////////////////////////////////////////////////////////////////////////////////////
553 EFrameworkunifiedStatus FrameworkunifiedFrameworkConnect(CFrameworkunifiedState *f_pAppState, BOOL f_bIsDefaultState = FALSE);
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
573 /// \~english @par Change of internal state
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
581 /// \~english @par Type
585 /////////////////////////////////////////////////////////////////////////////////////
586 ///////////////////////////////////////////////////////////////////////////////////////////
587 /// FrameworkunifiedFrameworkConnect
588 /// This connects the reaction to event and add event to states
590 /// \param [in] f_eFrameworkunifiedState
591 /// FRAMEWORKUNIFIED_HSM_STATES - enum maping to framework state
593 /// \param [in] f_uiEventId
596 /// \param [in] f_pReaction
597 /// CFrameworkunifiedReaction* - Reaction object for attaching to event
599 /// \param [in] f_strEventName
600 /// std::string - Event name
602 /// \param [in] f_bIsDeferredEvent
603 /// BOOL - defines if the event is deferred event
605 /// \return EFrameworkunifiedStatus
606 /// EFrameworkunifiedStatus - Returns status of operation
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);
614 class CFrameworkunifiedHSMChildFramework: public CFrameworkunifiedHSMFramework {
616 /// Define sFrameworkunifiedThreadIdle state
617 DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedThreadRoot)
619 /// Define sFrameworkunifiedThreadIdle state
620 DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedThreadIdle)
622 /// Define sFrameworkunifiedThreadStart state
623 DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedThreadStart)
625 /// Define sFrameworkunifiedThreadReady state
626 DEFINE_COMPOSITESTATE_OVERRIDE(sFrameworkunifiedThreadReady)
628 /// Define sFrameworkunifiedThreadStop state
629 DEFINE_LEAFSTATE_OVERRIDE(sFrameworkunifiedThreadStop)
631 // Define internal transition for event evFrameworkunifiedDestroy
632 DEFINE_INTERNALTRANSITION(OnDestroyThread)
634 /////////////////////////////////////////////////////////////////////////////////////
635 /// \ingroup CFrameworkunifiedHSMChildFramework
636 /// \~english @par Brief
637 /// CFrameworkunifiedHSMChildFramework constructor
638 /// \~english @param None
639 /// \~english @retval None
640 /// \~english @par Prerequisite
642 /// \~english @par Change of internal state
644 /// \~english @par Conditions of processing failure
646 /// \~english @par Detail
647 /// CFrameworkunifiedHSMChildFramework constructor, for create CFrameworkunifiedHSMChildFramework object
648 /// \~english @par Classification
650 /// \~english @par Type
654 /////////////////////////////////////////////////////////////////////////////////////
655 ///////////////////////////////////////////////////////////////////////////////////////////
656 /// CFrameworkunifiedHSMChildFramework
657 /// default constructor
660 ///////////////////////////////////////////////////////////////////////////////////////////
661 CFrameworkunifiedHSMChildFramework();
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
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
680 /// \~english @par Type
684 /////////////////////////////////////////////////////////////////////////////////////
685 ///////////////////////////////////////////////////////////////////////////////////////////
686 /// CFrameworkunifiedHSMChildFramework
687 /// default constructor
688 /// \param [in] f_pHApp
689 /// PVOID - application handle
692 ///////////////////////////////////////////////////////////////////////////////////////////
693 CFrameworkunifiedHSMChildFramework(PVOID f_pHApp); // NOLINT (readability/nolint)
695 /////////////////////////////////////////////////////////////////////////////////////
696 /// \ingroup CFrameworkunifiedHSMChildFramework
697 /// \~english @par Brief
698 /// CFrameworkunifiedHSMChildFramework destructor
699 /// \~english @param None
700 /// \~english @retval None
701 /// \~english @par Prerequisite
703 /// \~english @par Change of internal state
705 /// \~english @par Conditions of processing failure
707 /// \~english @par Detail
708 /// CFrameworkunifiedHSMChildFramework destructor, for destory CFrameworkunifiedHSMChildFramework object
709 /// \~english @par Classification
711 /// \~english @par Type
715 /////////////////////////////////////////////////////////////////////////////////////
716 ///////////////////////////////////////////////////////////////////////////////////////////
717 /// ~CFrameworkunifiedHSMChildFramework
721 ///////////////////////////////////////////////////////////////////////////////////////////
722 virtual ~CFrameworkunifiedHSMChildFramework();
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
734 /// \~english @par Change of internal state
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
742 /// \~english @par Type
746 /////////////////////////////////////////////////////////////////////////////////////
747 ///////////////////////////////////////////////////////////////////////////////////////////
748 /// FrameworkunifiedCreate
749 /// Statemachine states and events created and connected in this interface.
751 /// \param [in] f_pEventData
752 /// PVOID - Event data
754 /// \return EFrameworkunifiedStatus
755 /// EFrameworkunifiedStatus - Returns status of operation
757 ///////////////////////////////////////////////////////////////////////////////////////////
758 virtual EFrameworkunifiedStatus FrameworkunifiedCreate(PVOID f_pEventData = NULL);
760 /////////////////////////////////////////////////////////////////////////////////////
761 /// \ingroup CFrameworkunifiedHSMChildFramework
762 /// \~english @par Brief
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
772 /// \~english @par Change of internal state
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
780 /// \~english @par Type
784 /////////////////////////////////////////////////////////////////////////////////////
785 ///////////////////////////////////////////////////////////////////////////////////////////
786 /// FrameworkunifiedFrameworkConnect
787 /// This adds the given state as a sub state of sReady state of the Framework
789 /// \param [in] f_pAppState
790 /// CFrameworkunifiedState* - state object to be added in the ready state.
792 /// \param [in] f_bIsDefaultState
793 /// BOOL - defines if the state is default state
795 /// \return EFrameworkunifiedStatus
796 /// EFrameworkunifiedStatus - Returns status of operation
798 ///////////////////////////////////////////////////////////////////////////////////////////
799 EFrameworkunifiedStatus FrameworkunifiedFrameworkConnect(CFrameworkunifiedState *f_pAppState, BOOL f_bIsDefaultState = FALSE);
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
819 /// \~english @par Change of internal state
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
827 /// \~english @par Type
831 /////////////////////////////////////////////////////////////////////////////////////
832 ///////////////////////////////////////////////////////////////////////////////////////////
833 /// FrameworkunifiedFrameworkConnect
834 /// This connects the reaction to event and add event to states
836 /// \param [in] f_eFrameworkunifiedState
837 /// FRAMEWORKUNIFIED_HSM_STATES - enum maping to framework state
839 /// \param [in] f_uiEventId
842 /// \param [in] f_pReaction
843 /// CFrameworkunifiedReaction* - Reaction object for attaching to event
845 /// \param [in] f_strEventName
846 /// std::string - Event name
848 /// \param [in] f_bIsDeferredEvent
849 /// BOOL - defines if the event is deferred event
851 /// \return EFrameworkunifiedStatus
852 /// EFrameworkunifiedStatus - Returns status of operation
854 ///////////////////////////////////////////////////////////////////////////////////////////
855 EFrameworkunifiedStatus FrameworkunifiedFrameworkConnect(FRAMEWORKUNIFIED_HSM_STATES f_eFrameworkunifiedState,
857 CFrameworkunifiedReaction *f_pReaction, std::string f_strEventName = "",
858 BOOL f_bIsDeferredEvent = FALSE);
860 /// function pointer of the Thread start routine
861 CbFuncPtr m_fpStartThread;
863 /// function pointer of the Thread stop routine
864 CbFuncPtr m_fpStopThread;
867 #endif /* __FRAMEWORKUNIFIED_NATIVESERVICES_NATIVESERVICES_INC_FRAMEWORK_STATEMACHINE_FRAMEWORKUNIFIED_SM_HSMFRAMEWORK_H__ */ // NOLINT (build/header_guard)