aboutsummaryrefslogtreecommitdiffstats
path: root/policy_manager/stm/zipc/StateTransitionor/ZST_StateTransitionor_func.c
blob: 39032021f7ee22635ea264ec302e58337fcf83da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/************************************************************/
/*     ZST_StateTransitionor_func.c                         */
/*     Function and variable source file                    */
/*     ZIPC Designer Version 1.2.0                          */
/************************************************************/
#include "ZST_include.h"

/*************************************************************
    Function definition
*************************************************************/

#include <string.h>

//=================================
// API
//=================================
/**
 *  Initialize STM
 */
void stmInitializeInner() {
    // Initialize previous state
    memset(&g_stm_prv_state, 0, sizeof(g_stm_prv_state));

    // Initialize current state
    g_stm_crr_state = g_stm_prv_state;

	/* Initialize restriction mode state */
	stm_rem_initialize();
	stm_rem_initialize_variable();

	// Initialize homecsreen layer
	stm_hsl_initialize();
	stm_hsl_initialize_variable();

	// Initialize apps layer
	stm_apl_initialize();
	stm_apl_initialize_variable();

	// Initialize near_homecsreen layer
	stm_nhl_initialize();
	stm_nhl_initialize_variable();

	/* Initialize restriction layer */
	stm_rel_initialize();
	stm_rel_initialize_variable();

	g_stm_map_is_activated = STM_FALSE;
}

/**
 *  Transition State
 */
int stmTransitionStateInner(int event_id, StmState* state) {
    g_stm_event    = STM_GET_EVENT_FROM_ID(event_id);
    g_stm_category = STM_GET_CATEGORY_FROM_ID(event_id);
    g_stm_area     = STM_GET_AREA_FROM_ID(event_id);

    // restriction mode
    stm_rem_event_call();

    // homescreen layer
    stm_hsl_event_call();

    // apps layer
    stm_apl_event_call();

    // near_homecsreen layer
    stm_nhl_event_call();

    // restriction layer
    stm_rel_event_call();

    // on_screen layer
    stm_osl_event_call();

    // Copy current state for return
    memcpy(state, &g_stm_crr_state, sizeof(g_stm_crr_state));

    return 0;
}

/**
 *  Undo State
 */
void stmUndoStateInner() {
    g_stm_event = StmEvtNoUndo;

    // apps layer
    stm_apl_event_call();

    // near_homecsreen layer
    stm_nhl_event_call();

    // restriction layer
    stm_rel_event_call();

    // on_screen layer
    stm_osl_event_call();

	g_stm_crr_state = g_stm_prv_state;
}