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 /// \defgroup <<Group Tag>> <<Group Name>>
19 /// \ingroup tag_NS_NPPService
21 ////////////////////////////////////////////////////////////////////////////////////////////////////
23 ////////////////////////////////////////////////////////////////////////////////////////////////////
24 /// \ingroup tag_NS_NPPService
25 /// \brief This file all the states, events, internal transitions of state machine.
27 ////////////////////////////////////////////////////////////////////////////////////////////////////
29 #ifndef NOTIFICATION_PERSISTENT_SERVICE_SERVER_INCLUDE_APP_STATES_H_
30 #define NOTIFICATION_PERSISTENT_SERVICE_SERVER_INCLUDE_APP_STATES_H_
32 #include <native_service/frameworkunified_sm_framework_if.h>
33 #include <native_service/ns_np_service.h>
36 const UI_32 kCuiEventIdStartLimit = 20;
38 DEFINE_COMPOSITESTATE(sNotificationpersistentserviceNPPRoot) // NOLINT (readability/naming)
39 DEFINE_ORTHOGONALSTATE_OVERRIDE(sNotificationpersistentserviceNPPStart)
40 DEFINE_LEAFSTATE(sNotificationpersistentserviceNPPError)
42 // =====Define Persistence state
43 DEFINE_LEAFSTATE_OVERRIDE(sNotificationpersistentservicePersistenceReady)
44 DEFINE_LEAFSTATE(sNotificationpersistentservicePersistenceError)
46 // DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnLoadPersistentData)
47 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPReadPersistedData)
48 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPReleaseFileAck)
49 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnSaveDataAck)
50 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPNorDataSaveAck)
51 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnRegisterPersistentFile)
52 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnReleasePersistentFile)
53 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnLoadPersistentFile)
54 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnRegisterPersistentFolder)
55 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnLoadPersistentFolder)
56 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnReleasePersistentFolder)
57 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPSetFilePersistentType)
58 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPSetFolderPersistentType)
60 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnUserChange)
61 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceCheckAllReleaseRequestsProcessed)
62 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPPersistentSync)
64 // =====Define Shutdown state
65 DEFINE_LEAFSTATE(sNotificationpersistentserviceShutdownIdle)
66 // DEFINE_LEAFSTATE_OVERRIDE(sNotificationpersistentserviceShutdownDataSave)
67 class CsNotificationpersistentserviceShutdownDataSave : public CFrameworkunifiedLeafState {
69 explicit CsNotificationpersistentserviceShutdownDataSave(std::string f_pName);
70 virtual ~CsNotificationpersistentserviceShutdownDataSave();
71 EFrameworkunifiedStatus FrameworkunifiedOnEntry(CEventDataPtr f_peventdata);
72 EFrameworkunifiedStatus FrameworkunifiedOnExit(CEventDataPtr f_peventdata);
74 std::string m_cShutdownRequestor;
77 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPShutdown) // NOLINT (readability/naming)
78 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnShutdownTimeout)
79 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceReInitShutdownTimer)
81 // =====Define Notification state
82 DEFINE_LEAFSTATE(sNotificationpersistentserviceNotificationReady)
83 DEFINE_LEAFSTATE(sNotificationpersistentserviceNotificationError)
85 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPPublishNotification)
86 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPRegisterNotifications)
87 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPSubscribeToNotification)
88 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPSubscribeToNotifications)
89 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPUnRegisterNotifications)
90 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPUnSubscribeFromNotification)
91 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPUnSubscribeFromNotifications)
92 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPRegisterImmediateNotifications)
93 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPGetReadyStatus)
94 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPClearPersistedData)
95 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPSetDefaultPersistentData)
96 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPSetNotfnPersistentType)
97 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPPublishImmediateNotification)
99 #ifdef NPP_PROFILEINFO_ENABLE
101 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPProfileNotifications)
102 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPProfilePersistence)
106 // ==========Define event
107 DEFINE_EVENT(evIdle, kCuiEventIdStartLimit + 1)
108 DEFINE_EVENT(evReady, kCuiEventIdStartLimit + 2)
109 DEFINE_EVENT(evShutdown, kCuiEventIdStartLimit + 3)
110 DEFINE_EVENT(evError, kCuiEventIdStartLimit + 4)
112 DEFINE_EVENT(evNPSetNotfnPersistentType, kCuiEventIdStartLimit + 5)
113 DEFINE_EVENT(evNPSetDefaultPersistentData, kCuiEventIdStartLimit + 6)
114 DEFINE_EVENT(evNPReadPersistedData, kCuiEventIdStartLimit + 7)
115 DEFINE_EVENT(evNPReleaseLoadAck, kCuiEventIdStartLimit + 8)
116 DEFINE_EVENT(evNPNorShutdownAck, kCuiEventIdStartLimit + 9)
117 DEFINE_EVENT(evNPRegisterPersistentFile, kCuiEventIdStartLimit + 10)
118 DEFINE_EVENT(evNPReleasePersistentFile, kCuiEventIdStartLimit + 11)
119 DEFINE_EVENT(evNPLoadPersistentFile, kCuiEventIdStartLimit + 12)
120 DEFINE_EVENT(evNPSetFilePersistentType, kCuiEventIdStartLimit + 13)
121 DEFINE_EVENT(evNPSetFolderPersistentType, kCuiEventIdStartLimit + 14)
122 DEFINE_EVENT(evUserChange, kCuiEventIdStartLimit + 15)
123 DEFINE_EVENT(evShutdownTimeout, kCuiEventIdStartLimit + 16)
125 DEFINE_EVENT(evNPPublishNotification, kCuiEventIdStartLimit + 17)
126 DEFINE_EVENT(evNPRegisterNotifications, kCuiEventIdStartLimit + 18)
127 DEFINE_EVENT(evNPSubscribeToNotification, kCuiEventIdStartLimit + 19)
128 DEFINE_EVENT(evNPSubscribeToNotifications, kCuiEventIdStartLimit + 20)
129 DEFINE_EVENT(evNPUnRegisterNotifications, kCuiEventIdStartLimit + 21)
130 DEFINE_EVENT(evNPUnSubscribeFromNotification, kCuiEventIdStartLimit + 22)
131 DEFINE_EVENT(evNPRegisterPersistentFolder, kCuiEventIdStartLimit + 23)
132 DEFINE_EVENT(evNPLoadPersistentFolder, kCuiEventIdStartLimit + 24)
133 DEFINE_EVENT(evNPReleasePersistentFolder, kCuiEventIdStartLimit + 25)
134 DEFINE_EVENT(evNPUnSubscribeFromNotifications, kCuiEventIdStartLimit + 26)
135 DEFINE_EVENT(evCheckAllFilesPersisted, kCuiEventIdStartLimit + 27)
136 DEFINE_EVENT(evNPGetReadyStatus, kCuiEventIdStartLimit + 28)
137 DEFINE_EVENT(evNPRegisterImmediateNotifications, kCuiEventIdStartLimit + 29)
138 DEFINE_EVENT(evNPClearPersistedData, kCuiEventIdStartLimit + 30)
140 DEFINE_EVENT(evNPShutdownDataSave, kCuiEventIdStartLimit + 31)
142 #ifdef NPP_PROFILEINFO_ENABLE
144 DEFINE_EVENT(evNPProfileNotification, kCuiEventIdStartLimit + 32)
145 DEFINE_EVENT(evNPProfilePersistence, kCuiEventIdStartLimit + 33)
149 DEFINE_EVENT(evNPPublishImmediateNotification, kCuiEventIdStartLimit + 34)
150 DEFINE_EVENT(evNPPersistentSync, kCuiEventIdStartLimit + 35)
152 ////////////////////////////////////////////////////////////////////////////////////////////////
154 /// Set the personality in the framework on userchange.
156 /// \param [IN] f_happ
157 /// HANDLE - Application Handle
159 /// \param [IN] f_tMsg
160 /// NC_User - Structure containing user specific details
162 /// \return EFrameworkunifiedStatus
163 // EFrameworkunifiedStatus - success or failure status
165 ////////////////////////////////////////////////////////////////////////////////////////////////
166 EFrameworkunifiedStatus SetPersonality(HANDLE f_happ, NC_User &f_tMsg); // NOLINT (runtime/references)
171 * This class is used to pass the data between states sShutdownIdle and sShutdownDataSave
173 class CShutDownMsgData : public CEventData {
176 CShutDownMsgData(UI_32 f_uieventid, EFrameworkunifiedShutdownType f_etype, UI_32 f_uidata): CEventData(f_uieventid),
177 m_eShutdownType(f_etype), m_uiMsgData(f_uidata) {} // LCOV_EXCL_BR_LINE 11: unexpected branch
180 virtual ~CShutDownMsgData() {}
182 EFrameworkunifiedShutdownType m_eShutdownType;
187 #endif // NOTIFICATION_PERSISTENT_SERVICE_SERVER_INCLUDE_APP_STATES_H_