Init basesystem source codes.
[staging/basesystem.git] / nsframework / notification_persistent_service / server / include / app_states.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 /// \defgroup <<Group Tag>> <<Group Name>>
19 /// \ingroup  tag_NS_NPPService
20 /// .
21 ////////////////////////////////////////////////////////////////////////////////////////////////////
22
23 ////////////////////////////////////////////////////////////////////////////////////////////////////
24 /// \ingroup  tag_NS_NPPService
25 /// \brief    This file all the states, events, internal transitions of state machine.
26 ///
27 ////////////////////////////////////////////////////////////////////////////////////////////////////
28
29 #ifndef NOTIFICATION_PERSISTENT_SERVICE_SERVER_INCLUDE_APP_STATES_H_
30 #define NOTIFICATION_PERSISTENT_SERVICE_SERVER_INCLUDE_APP_STATES_H_
31
32 #include <native_service/frameworkunified_sm_framework_if.h>
33 #include <native_service/ns_np_service.h>
34 #include <string>
35
36 const UI_32 kCuiEventIdStartLimit = 20;
37
38 DEFINE_COMPOSITESTATE(sNotificationpersistentserviceNPPRoot)  // NOLINT (readability/naming)
39 DEFINE_ORTHOGONALSTATE_OVERRIDE(sNotificationpersistentserviceNPPStart)
40 DEFINE_LEAFSTATE(sNotificationpersistentserviceNPPError)
41
42 // =====Define Persistence state
43 DEFINE_LEAFSTATE_OVERRIDE(sNotificationpersistentservicePersistenceReady)
44 DEFINE_LEAFSTATE(sNotificationpersistentservicePersistenceError)
45
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)
59
60 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnUserChange)
61 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceCheckAllReleaseRequestsProcessed)
62 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPPersistentSync)
63
64 // =====Define Shutdown state
65 DEFINE_LEAFSTATE(sNotificationpersistentserviceShutdownIdle)
66 // DEFINE_LEAFSTATE_OVERRIDE(sNotificationpersistentserviceShutdownDataSave)
67 class CsNotificationpersistentserviceShutdownDataSave : public CFrameworkunifiedLeafState {
68  public:
69   explicit CsNotificationpersistentserviceShutdownDataSave(std::string f_pName);
70   virtual ~CsNotificationpersistentserviceShutdownDataSave();
71   EFrameworkunifiedStatus FrameworkunifiedOnEntry(CEventDataPtr f_peventdata);
72   EFrameworkunifiedStatus FrameworkunifiedOnExit(CEventDataPtr f_peventdata);
73  private:
74   std::string m_cShutdownRequestor;
75 };
76
77 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPShutdown)  // NOLINT (readability/naming)
78 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnShutdownTimeout)
79 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceReInitShutdownTimer)
80
81 // =====Define Notification state
82 DEFINE_LEAFSTATE(sNotificationpersistentserviceNotificationReady)
83 DEFINE_LEAFSTATE(sNotificationpersistentserviceNotificationError)
84
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)
98
99 #ifdef NPP_PROFILEINFO_ENABLE
100
101 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPProfileNotifications)
102 DEFINE_INTERNALTRANSITION(NotificationpersistentserviceOnNPProfilePersistence)
103
104 #endif
105
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)
111
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)
124
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)
139
140 DEFINE_EVENT(evNPShutdownDataSave,        kCuiEventIdStartLimit + 31)
141
142 #ifdef NPP_PROFILEINFO_ENABLE
143
144 DEFINE_EVENT(evNPProfileNotification,       kCuiEventIdStartLimit + 32)
145 DEFINE_EVENT(evNPProfilePersistence,        kCuiEventIdStartLimit + 33)
146
147 #endif
148
149 DEFINE_EVENT(evNPPublishImmediateNotification,  kCuiEventIdStartLimit + 34)
150 DEFINE_EVENT(evNPPersistentSync,                kCuiEventIdStartLimit + 35)
151
152 ////////////////////////////////////////////////////////////////////////////////////////////////
153 /// SetPersonality
154 /// Set the personality in the framework on userchange.
155 ///
156 /// \param [IN] f_happ
157 ///      HANDLE - Application Handle
158 ///
159 /// \param [IN] f_tMsg
160 ///      NC_User - Structure containing user specific details
161 ///
162 /// \return EFrameworkunifiedStatus
163 //      EFrameworkunifiedStatus - success or failure status
164 ///
165 ////////////////////////////////////////////////////////////////////////////////////////////////
166 EFrameworkunifiedStatus SetPersonality(HANDLE f_happ, NC_User &f_tMsg);  // NOLINT (runtime/references)
167
168
169 /*
170  * CShutDownMsgData
171  * This class is used to pass the data between states sShutdownIdle and sShutdownDataSave
172  */
173 class CShutDownMsgData : public CEventData {
174  public:
175   // constructor
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
178
179   // destructor
180   virtual ~CShutDownMsgData() {}
181
182   EFrameworkunifiedShutdownType m_eShutdownType;
183
184   UI_32 m_uiMsgData;
185 };
186
187 #endif  // NOTIFICATION_PERSISTENT_SERVICE_SERVER_INCLUDE_APP_STATES_H_