Init basesystem source codes.
[staging/basesystem.git] / nsframework / framework_unified / client / include / native_service / frameworkunified_sm_framework_if.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 ///
22 ///
23 ///////////////////////////////////////////////////////////////////////////////
24 //@{
25 /**
26  * @file frameworkunified_sm_framework_if.h
27  * @brief \~english This File has public Macro definition that simplifies the statemachine implementation
28  *
29  */
30 /** @addtogroup BaseSystem
31  *  @{
32  */
33 /** @addtogroup native_service
34  *  @ingroup BaseSystem
35  *  @{
36  */
37 /** @addtogroup framework_unified
38  *  @ingroup native_service
39  *  @{
40  */
41 /** @addtogroup framework
42  *  @ingroup framework_unified
43  *  @{
44  */
45 /** @addtogroup statemachine
46  *  @ingroup framework
47  *  @{
48  */
49 #ifndef __FRAMEWORKUNIFIED_NATIVESERVICES_NATIVESERVICES_INC_FRAMEWORK_STATEMACHINE_FRAMEWORKUNIFIED_SM_FRAMEWORK_IF_H__  // NOLINT  (build/header_guard)
50 #define __FRAMEWORKUNIFIED_NATIVESERVICES_NATIVESERVICES_INC_FRAMEWORK_STATEMACHINE_FRAMEWORKUNIFIED_SM_FRAMEWORK_IF_H__
51
52 #include <native_service/frameworkunified_framework_if.h>
53 #include <native_service/frameworkunified_sm_framework_types.h>
54 #include <native_service/frameworkunified_types.h>
55 #include <native_service/frameworkunified_framework_types.h>
56 #include <native_service/frameworkunified_sm_framework_dispatch.h>
57
58 ///////////////////////////////////////////////////////////////////////////////////////////
59 /// \ingroup StateMachine_Macro
60 /// \~english @par Brief
61 ///        This macro creates an instance of a state object.
62 /// \~english @param [in] class_name Class name
63 /// \~english @retval None
64 /// \~english @par Prerequisite
65 ///       - None
66 /// \~english @par Change of internal state
67 ///       - The internal state is not changed.
68 /// \~english @par Conditions of processing failure
69 ///       - None
70 /// \~english @par Detail
71 ///       This macro creates an instance of a state object with the specified class name.
72 /// \~english @par Classification
73 ///          Public
74 /// \~english @see  None
75 ///////////////////////////////////////////////////////////////////////////////////////////
76 /// Create a instance of state object
77 #define CREATE_STATE(class_name) \
78     C## class_name *l_p## class_name = new C## class_name(#class_name);
79
80 ///////////////////////////////////////////////////////////////////////////////////////////
81 /// \ingroup StateMachine_Macro
82 /// \~english @par Brief
83 ///        This macro associates a framework event with a process and adds it to a state.
84 /// \~english @param [in] state State
85 /// \~english @param [in] eventid Event ID
86 /// \~english @param [in] reaction Pointers to CFrameworkunifiedReaction objects
87 /// \~english @retval None
88 /// \~english @par Prerequisite
89 ///       - None
90 /// \~english @par Change of internal state
91 ///       - The internal state is not changed.
92 /// \~english @par Conditions of processing failure
93 ///       - None
94 /// \~english @par Detail
95 ///       This macros retrieves the current state machine from the application handles used in the process
96 ///       and associates framework events with the process and adds them to the state using FrameworkunifiedFrameworkConnect().
97 /// \~english @par Classification
98 ///          Public
99 /// \~english @see  None
100 ///////////////////////////////////////////////////////////////////////////////////////////
101 /// Connect framework event to reaction and add to state
102 #define FRAMEWORKUNIFIED_CONNECT_EVENT(state, eventid, reaction) \
103     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedFrameworkConnect(CFrameworkunifiedHSMParentFramework::e## state, \
104         CFrameworkunifiedHSMParentFramework::_## eventid, l_pTrn## reaction, #eventid);
105
106 #define FRAMEWORKUNIFIED_CONNECT_LOCAL_EVENT(state, eventid, reaction) \
107     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedFrameworkConnect(CFrameworkunifiedHSMParentFramework::e## state, \
108         CFrameworkunifiedHSMParentFramework::_## eventid, l_pLocalTrn## reaction, #eventid);
109
110 /// Connect framework event to reaction and add to state as deferred event
111 #define FRAMEWORKUNIFIED_CONNECT_DEFERREDEVENT(state, eventid) \
112     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedFrameworkConnect(CFrameworkunifiedHSMParentFramework::e## state, \
113         CFrameworkunifiedHSMParentFramework::_## eventid, NULL, #eventid, TRUE);
114
115 ///////////////////////////////////////////////////////////////////////////////////////////
116 /// \ingroup StateMachine_Macro
117 /// \~english @par Brief
118 ///        This macro associates a child state as the default state with the ready state of the framework.
119 /// \~english @param [in] child Child state
120 /// \~english @retval None
121 /// \~english @par Prerequisite
122 ///       - None
123 /// \~english @par Change of internal state
124 ///       - The internal state is not changed.
125 /// \~english @par Conditions of processing failure
126 ///       - None
127 /// \~english @par Detail
128 ///       This macro retrieves the current state machine from the application handles used in the process and uses FrameworkunifiedFrameworkConnect() to associate the specified child state with the ready state of the framework as the default state.
129 /// \~english @par Classification
130 ///          Public
131 /// \~english @see  None
132 ///////////////////////////////////////////////////////////////////////////////////////////
133 /// connect state to framework ready state as default state
134 #define FRAMEWORKUNIFIED_CONNECT_DEFAULTSTATE(child) \
135     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedFrameworkConnect(l_p## child, TRUE);
136
137 ///////////////////////////////////////////////////////////////////////////////////////////
138 /// \ingroup StateMachine_Macro
139 /// \~english @par Brief
140 ///        This macro associates the child state with the ready state of the framework.
141 /// \~english @param [in] child Child state
142 /// \~english @retval None
143 /// \~english @par Prerequisite
144 ///       - None
145 /// \~english @par Change of internal state
146 ///       - The internal state is not changed.
147 /// \~english @par Conditions of processing failure
148 ///       - None
149 /// \~english @par Detail
150 ///       This macro retrieves the current state machine from the application handles used in the process and associates the specified child state with the ready state of the framework using FrameworkunifiedFrameworkConnect().
151 /// \~english @par Classification
152 ///          Public
153 /// \~english @see  None
154 ///////////////////////////////////////////////////////////////////////////////////////////
155 /// connect state to framework  ready state
156 #define FRAMEWORKUNIFIED_CONNECT_STATE(child) \
157     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedFrameworkConnect(l_p## child);
158
159 ///////////////////////////////////////////////////////////////////////////////////////////
160 /// \ingroup StateMachine_Macro
161 /// \~english @par Brief
162 ///        A macro that associates a child state as the defaut state with a parent state.
163 /// \~english @param [in] parent Parent state
164 /// \~english @param [in] child Child state
165 /// \~english @retval None
166 /// \~english @par Prerequisite
167 ///       - None
168 /// \~english @par Change of internal state
169 ///       - The internal state is not changed.
170 /// \~english @par Conditions of processing failure
171 ///       - None
172 /// \~english @par Detail
173 ///       This macro takes the current state machine from the application handles used in the process and uses FrameworkunifiedConnect() to associate the specified child state with the specified parent state as the default state.
174 /// \~english @par Classification
175 ///          Public
176 /// \~english @see  None
177 ///////////////////////////////////////////////////////////////////////////////////////////
178 /// connect child state to parent state as default state
179 #define CONNECT_DEFAULTSTATE(parent, child) \
180     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedConnect(l_p## parent, l_p## child, TRUE);
181
182 ///////////////////////////////////////////////////////////////////////////////////////////
183 /// \ingroup StateMachine_Macro
184 /// \~english @par Brief
185 ///        A macro that associates a child state with a parent state.
186 /// \~english @param [in] parent Parent state
187 /// \~english @param [in] child Child state
188 /// \~english @retval None
189 /// \~english @par Prerequisite
190 ///       - None
191 /// \~english @par Change of internal state
192 ///       - The internal state is not changed.
193 /// \~english @par Conditions of processing failure
194 ///       - None
195 /// \~english @par Detail
196 ///       This macro takes the current state machine from the application handles used in the process and associates the specified child state with the specified parent state using FrameworkunifiedConnect().
197 /// \~english @par Classification
198 ///          Public
199 /// \~english @see  None
200 ///////////////////////////////////////////////////////////////////////////////////////////
201 /// connect child state to parent state
202 #define CONNECT_STATE(parent, child) \
203     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedConnect(l_p## parent, l_p## child);
204
205 ///////////////////////////////////////////////////////////////////////////////////////////
206 /// \ingroup StateMachine_Macro
207 /// \~english @par Brief
208 ///        This macro associates a state as the state of the root.
209 /// \~english @param [in] orthogonalstate quadrature state(CFrameworkunifiedOrthogonalState*)
210 /// \~english @param [in] orthogonalregion orthographic region(CFrameworkunifiedCompositeState*)
211 /// \~english @retval None
212 /// \~english @par Prerequisite
213 ///       - None
214 /// \~english @par Change of internal state
215 ///       - The internal state is not changed.
216 /// \~english @par Conditions of processing failure
217 ///       - None
218 /// \~english @par Detail
219 ///       This macro gets the current state machine from the application handles used in the process and associates the specified orthographic state as the state of the root using FrameworkunifiedConnectOrthogonal().
220 /// \~english @par Classification
221 ///          Public
222 /// \~english @see  None
223 ///////////////////////////////////////////////////////////////////////////////////////////
224 /// connect child state to parent state
225 #define CONNECT_ORTHOGONAL_REGION(orthogonalstate, orthogonalregion) \
226     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedConnectOrthogonal(l_p## orthogonalstate, l_p## orthogonalregion);
227
228 /// connect the deferred  event and reactions and associate them with the state
229 #define CONNECT_DEFERREDEVENT(state, eventid) \
230     FrameworkunifiedGetStateMachine(hApp)->FrameworkunifiedConnect(l_p## state, _## eventid, NULL, #eventid, TRUE);
231
232 ///////////////////////////////////////////////////////////////////////////////////////////
233 /// \ingroup StateMachine_Macro
234 /// \~english @par Brief
235 ///        This macro associates a framework event with a process and adds it to a state.
236 /// \~english @param [in] state State
237 /// \~english @param [in] eventid Event ID
238 /// \~english @param [in] reaction Pointers to CFrameworkunifiedReaction objects
239 /// \~english @retval None
240 /// \~english @par Prerequisite
241 ///       - None
242 /// \~english @par Change of internal state
243 ///       - The internal state is not changed.
244 /// \~english @par Conditions of processing failure
245 ///       - None
246 /// \~english @par Detail
247 ///       This macros retrieves the current state machine from the application handles used in the process and associates framework events with the process and adds them to the state using FrameworkunifiedConnect().
248 /// \~english @par Classification
249 ///          Public
250 /// \~english @see  None
251 ///////////////////////////////////////////////////////////////////////////////////////////
252 /// connect event to reaction and add to state
253 #define CONNECT_EVENT(state, eventid, reaction) \
254     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedConnect(l_p## state, _## eventid, l_pTrn## reaction, #eventid);
255
256 /// connect event to reaction and add to state
257 #define CONNECT_LOCAL_EVENT(state, eventid, reaction) \
258         (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedConnect(l_p## state, _## eventid, l_pLocalTrn## reaction, #eventid);
259
260 ///////////////////////////////////////////////////////////////////////////////////////////
261 /// \ingroup StateMachine_Macro
262 /// \~english @par Brief
263 ///        This macro logs state and events of the state machine.
264 /// \~english @retval None
265 /// \~english @par Prerequisite
266 ///       - None
267 /// \~english @par Change of internal state
268 ///       - The internal state is not changed.
269 /// \~english @par Conditions of processing failure
270 ///       - None
271 /// \~english @par Detail
272 ///       This macro gets the current state machine from the application handles used in the process and logs the state and events of the state machine using FrameworkunifiedPrintAllStates().
273 /// \~english @par Classification
274 ///          Public
275 /// \~english @see  None
276 ///////////////////////////////////////////////////////////////////////////////////////////
277 /// print state machine states and events
278 #define PRINTSTATEMACHINE() \
279     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedPrintAllStates();
280
281 /// Connect application defined event to application defined reaction and add to framework state
282 #define CONNECT_FRAMEWORKUNIFIED_EVENT(state, eventid, reaction) \
283         (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedConnect(l_p## state, CFrameworkunifiedHSMParentFramework::_## eventid, \
284             l_pTrn## reaction, #eventid);
285
286 /// Connect application defined deferred event to framework state
287 #define CONNECT_FRAMEWORKUNIFIED_DEFERREDEVENT(state, eventid) \
288         (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedConnect(l_p## state, CFrameworkunifiedHSMParentFramework::_## eventid, \
289             NULL, #eventid, TRUE);
290
291 ///////////////////////////////////////////////////////////////////////////////////////////
292 /// \ingroup StateMachine_Macro
293 /// \~english @par Brief
294 ///        This macro associates an application event with a process and adds it to a state.
295 /// \~english @param [in] state State
296 /// \~english @param [in] eventid Event ID
297 /// \~english @param [in] reaction Pointers to CFrameworkunifiedReaction objects
298 /// \~english @retval None
299 /// \~english @par Prerequisite
300 ///       - None
301 /// \~english @par Change of internal state
302 ///       - The internal state is not changed.
303 /// \~english @par Conditions of processing failure
304 ///       - None
305 /// \~english @par Detail
306 ///       This macros retrieves the current state machine from the application handles used in the process, and associates the events of the application with the process and adds them to the state using FrameworkunifiedFrameworkConnect().
307 /// \~english @par Classification
308 ///          Public
309 /// \~english @see  None
310 ///////////////////////////////////////////////////////////////////////////////////////////
311 #define FRAMEWORKUNIFIED_CONNECT_APP_EVENT(state, eventid, reaction) \
312     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedFrameworkConnect(CFrameworkunifiedHSMParentFramework::e## state, _## eventid, \
313         l_pTrn## reaction, #eventid);
314
315 #define FRAMEWORKUNIFIED_CONNECT_APP_DEFERREDEVENT(state, eventid) \
316     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedFrameworkConnect(CFrameworkunifiedHSMParentFramework::e## state, _## eventid, \
317         NULL, #eventid, TRUE);
318
319 ///////////////////////////////////////////////////////////////////////////////////////////
320 /// \ingroup StateMachine_Macro
321 /// \~english @par Brief
322 ///        Macros that create and add Shallow history states to their parents.
323 /// \~english @param [in] parent Parent state
324 /// \~english @retval None
325 /// \~english @par Prerequisite
326 ///       - None
327 /// \~english @par Change of internal state
328 ///       - The internal state is not changed.
329 /// \~english @par Conditions of processing failure
330 ///       - None
331 /// \~english @par Detail
332 ///       This macro retrieves the current state machine from the application handles used in the process after a new Shallow history state is created, and adds the Shallow history state created to the parent state using FrameworkunifiedConnect().
333 /// \~english @par Classification
334 ///          Public
335 /// \~english @see  None
336 ///////////////////////////////////////////////////////////////////////////////////////////
337 // create a new shallow history state and add it in parent state
338 #define ADD_SHALLOWHISTORYSTATE(parent) \
339     CFrameworkunifiedShallowHistoryState *l_p##parent##SHALLOWHISTORYSTATE = new CFrameworkunifiedShallowHistoryState(SHALLOWHISTORYSTATE);\
340     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedConnect(l_p## parent, l_p##parent##SHALLOWHISTORYSTATE);\
341     CHKNULL(l_p##parent##SHALLOWHISTORYSTATE);\
342     l_p##parent##SHALLOWHISTORYSTATE->SetDefaultHistory();
343
344 // create a new shallow history state and add it in parent state
345 #define ADD_DEEPHISTORYSTATE(parent) \
346     CFrameworkunifiedDeepHistoryState *l_p##parent##DEEPHISTORYSTATE = new CFrameworkunifiedDeepHistoryState(DEEPHISTORYSTATE);\
347     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedConnect(l_p## parent, l_p##parent##DEEPHISTORYSTATE);\
348     CHKNULL(l_p##parent##DEEPHISTORYSTATE);\
349     l_p##parent##DEEPHISTORYSTATE->SetDefaultHistory();
350
351 /// connect deep history event to reaction and add to state
352 #define CONNECT_DEEPHISTORYEVENT(state, eventid, reaction) \
353     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedConnect(l_p## state, _## eventid, l_pTrn##reaction##DEEPHISTORYSTATE, #eventid);
354
355 ///////////////////////////////////////////////////////////////////////////////////////////
356 /// \ingroup StateMachine_Macro
357 /// \~english @par Brief
358 ///        Macros that associate Shallow history events with processes and add them to states.
359 /// \~english @param [in] state State
360 /// \~english @param [in] eventid Event ID
361 /// \~english @param [in] reaction Pointers to CFrameworkunifiedReaction objects
362 /// \~english @retval None
363 /// \~english @par Prerequisite
364 ///       - None
365 /// \~english @par Change of internal state
366 ///       - The internal state is not changed.
367 /// \~english @par Conditions of processing failure
368 ///       - None
369 /// \~english @par Detail
370 ///       This macros retrieves the current state machine from the application handles used in the process and associates Shallow history events with the process and adds them to the state using FrameworkunifiedConnect().
371 /// \~english @par Classification
372 ///          Public
373 /// \~english @see  None
374 ///////////////////////////////////////////////////////////////////////////////////////////
375 /// connect shallow history event to reaction and add to state
376 #define CONNECT_SHALLOWHISTORYEVENT(state, eventid, reaction) \
377     (FrameworkunifiedGetStateMachine(hApp))->FrameworkunifiedConnect(l_p## state, _## eventid, l_pTrn##reaction##SHALLOWHISTORYSTATE, #eventid);
378
379
380 ///////////////////////////////////////////////////////////////////////////////////////////
381 /// \ingroup StateMachine_Macro
382 ///////////////////////////////////////////////////////////////////////////////////////////
383
384 /// FrameworkunifiedCreateStateMachine
385 /// The application state machine is created in this interface. User defined events can also
386 /// be connected to the framework states in this interface.
387 ///
388 /// \~english @par Brief
389 ///        - It's a callback function to create state machine used by application.
390 /// \~english @param [in] hApp
391 ///        HANDLE - handle to application
392 /// \~english @retval eFrameworkunifiedStatusOK -successed
393 /// \~english @retval Except eFrameworkunifiedStatusOK - failure
394 /// \~english @par Prerequisite
395 ///       - None
396 /// \~english @par Inside state change
397 ///       - None
398 /// \~english @par Conditions of processing failure
399 ///       - None
400 /// \~english @par Detail
401 ///       The application state machine is created in this interface. User defined events can also\n
402 ///       be connected to the framework states in this interface.
403 ///       - FrameworkunifiedDispatcherWithArguments
404 ///       - FrameworkunifiedDispatcher
405 ///       - FrameworkunifiedCreateDispatcherWithoutLoop
406 /// \~english @par Classification
407 ///       - Public
408 /// \~english @see FrameworkunifiedDispatcherWithArguments, FrameworkunifiedDispatcher, FrameworkunifiedCreateDispatcherWithoutLoop
409 ///////////////////////////////////////////////////////////////////////////////////////////
410 EFrameworkunifiedStatus FrameworkunifiedCreateStateMachine(HANDLE hApp);
411
412 ///////////////////////////////////////////////////////////////////////////////////////////
413 /// \ingroup StateMachine_Macro
414 ///////////////////////////////////////////////////////////////////////////////////////////
415 ///////////////////////////////////////////////////////////////////////////////////////////
416 /// All HSM applications must define this function. This function will be called on entry
417 /// of sFrameworkunifiedLoadData state.
418 //  Expected in this function:
419 /// All the persistent data of the applications should be loaded in this function.
420 ///
421 /// \~english @par Brief
422 ///        - This function defines loading persistent data of HSM application.
423 /// \~english @param [in] hApp
424 ///        HANDLE - handle to application
425 /// \~english @retval eFrameworkunifiedStatusOK -successed
426 /// \~english @retval Except eFrameworkunifiedStatusOK - failure
427 /// \~english @par Prerequisite
428 ///       - None
429 /// \~english @par Inside state change
430 ///       - None
431 /// \~english @par Conditions of processing failure
432 ///       - The implementation specification of the callback depends on the implementation (design) of the application.
433 ///         For this reason, the application should consider the Public of errors in the failed condition.
434 /// \~english @par Detail
435 ///       - All HSM applications must define this function. This function will be called on entry\n
436 ///         of sFrameworkunifiedLoadData state.Expected in this function:\n
437 ///         All the persistent data of the applications should be loaded in this function.
438 /// \~english @par Classification
439 ///       - Private
440 /// \~english @par Detail
441 ///       - None
442 /// \~english @see  None
443 ///////////////////////////////////////////////////////////////////////////////////////////
444 EFrameworkunifiedStatus FrameworkunifiedHSMOnLoadData(HANDLE hApp);
445
446 ///////////////////////////////////////////////////////////////////////////////////////////
447 /// \ingroup StateMachine_Macro
448 ///////////////////////////////////////////////////////////////////////////////////////////
449 ///////////////////////////////////////////////////////////////////////////////////////////
450 /// All HSM applications must define this function. This function will be called on exit
451 /// of sFrameworkunifiedRun state.
452 //  Expected in this function:
453 /// Send stop request to all the child threads.
454 ///
455 /// \~english @par Brief
456 ///        - This function defines sending stop request to the child threads of HSM application.
457 /// \~english @param [in] hApp
458 ///        HANDLE - handle to application
459 /// \~english @retval eFrameworkunifiedStatusOK -successed
460 /// \~english @retval Except eFrameworkunifiedStatusOK - failure
461 /// \~english @par Prerequisite
462 ///       - None
463 /// \~english @par Inside state change
464 ///       - None
465 /// \~english @par Conditions of processing failure
466 ///       - The implementation specification of the callback depends on the implementation (design) of the application.
467 ///         For this reason, the application should consider the Public of errors in the failed condition.
468 /// \~english @par Detail
469 ///       - All HSM applications must define this function.\n
470 ///         This function will be called on exit of sFrameworkunifiedRun state.\n
471 ///         Expected in this function:Send stop request to all the child threads.
472 /// \~english @par Classification
473 ///       - Private
474 /// \~english @par Type
475 ///       - None
476 /// \~english @see  None
477 ///////////////////////////////////////////////////////////////////////////////////////////
478 EFrameworkunifiedStatus FrameworkunifiedHSMOnStopInsFrameworkunifiedRun(HANDLE hApp);
479
480 #endif /* __FRAMEWORKUNIFIED_NATIVESERVICES_NATIVESERVICES_INC_FRAMEWORK_STATEMACHINE_FRAMEWORKUNIFIED_SM_FRAMEWORK_IF_H__ */  // NOLINT  (build/header_guard)
481 /** @}*/
482 /** @}*/
483 /** @}*/
484 /** @}*/
485 /** @}*/
486 //@}