aboutsummaryrefslogtreecommitdiffstats
path: root/policy_manager/stm/stub/stm_inner.c
diff options
context:
space:
mode:
Diffstat (limited to 'policy_manager/stm/stub/stm_inner.c')
-rw-r--r--policy_manager/stm/stub/stm_inner.c151
1 files changed, 151 insertions, 0 deletions
diff --git a/policy_manager/stm/stub/stm_inner.c b/policy_manager/stm/stub/stm_inner.c
new file mode 100644
index 0000000..bd1b319
--- /dev/null
+++ b/policy_manager/stm/stub/stm_inner.c
@@ -0,0 +1,151 @@
+/*
+ * Copyright (c) 2018 TOYOTA MOTOR CORPORATION
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <string.h>
+#include "stm.h"
+#include "stm_inner.h"
+
+static StmState g_stm_crr_state;
+static StmState g_stm_prv_state;
+
+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;
+}
+
+int stmTransitionStateInner(int event, StmState* state) {
+ int event_no, category_no, area_no;
+
+ event_no = STM_GET_EVENT_FROM_ID(event);
+ category_no = STM_GET_CATEGORY_FROM_ID(event);
+ area_no = STM_GET_AREA_FROM_ID(event);
+
+ // Backup previous state
+ g_stm_prv_state = g_stm_crr_state;
+
+ // -------------------------------------------------------
+ // There is no policy table by default.
+ // Therefore update each layers
+ // to draw the applications in requested area
+ // in accordance with inputed activate/deactivate events.
+ // -------------------------------------------------------
+ if (StmEvtNoActivate == event_no)
+ {
+ if (StmCtgNoHomescreen == category_no)
+ {
+ g_stm_crr_state.layer[StmLayerNoHomescreen].state = StmLayoutNoHms;
+ g_stm_crr_state.layer[StmLayerNoHomescreen].changed = STM_TRUE;
+
+ // For AGL JIRA SPEC-1407
+ // Apps layer is invisibled only when Homescreen app is started already
+ if (StmLayoutNoHms == g_stm_prv_state.layer[StmLayerNoHomescreen].state)
+ {
+ g_stm_crr_state.layer[StmLayerNoApps].state = StmLayoutNoNone;
+ g_stm_crr_state.layer[StmLayerNoApps].changed = STM_TRUE;
+ }
+ }
+ else if (StmCtgNoDebug == category_no)
+ {
+ if (StmAreaNoNormal == area_no)
+ {
+ g_stm_crr_state.layer[StmLayerNoApps].state = StmLayoutNoDbgNml;
+ }
+ else if (StmAreaNoSplitMain == area_no)
+ {
+ g_stm_crr_state.layer[StmLayerNoApps].state = StmLayoutNoDbgSplMain;
+ }
+ else if (StmAreaNoSplitSub == area_no)
+ {
+ g_stm_crr_state.layer[StmLayerNoApps].state = StmLayoutNoDbgSplSub;
+ }
+ else if (StmAreaNoFullscreen == area_no)
+ {
+ g_stm_crr_state.layer[StmLayerNoApps].state = StmLayoutNoDbgFll;
+ }
+ g_stm_crr_state.layer[StmLayerNoApps].changed = STM_TRUE;
+ }
+ else if (StmCtgNoSoftwareKeyboard == category_no)
+ {
+ g_stm_crr_state.layer[StmLayerNoNearHomescreen].state = StmLayoutNoSftKbd;
+ g_stm_crr_state.layer[StmLayerNoNearHomescreen].changed = STM_TRUE;
+ }
+ else if (StmCtgNoPopUp == category_no)
+ {
+ g_stm_crr_state.layer[StmLayerNoOnScreen].state = StmLayoutNoPopUp;
+ g_stm_crr_state.layer[StmLayerNoOnScreen].changed = STM_TRUE;
+ }
+ else if (StmCtgNoSystemAlert == category_no)
+ {
+ g_stm_crr_state.layer[StmLayerNoOnScreen].state = StmLayoutNoSysAlt;
+ g_stm_crr_state.layer[StmLayerNoOnScreen].changed = STM_TRUE;
+ }
+ }
+ else if (StmEvtNoDeactivate == event_no)
+ {
+ if (StmCtgNoHomescreen == category_no)
+ {
+ g_stm_crr_state.layer[StmLayerNoHomescreen].state = StmLayoutNoNone;
+ g_stm_crr_state.layer[StmLayerNoHomescreen].changed = STM_TRUE;
+ }
+ else if (StmCtgNoDebug == category_no)
+ {
+ if ((StmLayoutNoDbgNml == g_stm_prv_state.layer[StmLayerNoApps].state) ||
+ (StmLayoutNoDbgSplMain == g_stm_prv_state.layer[StmLayerNoApps].state) ||
+ (StmLayoutNoDbgSplSub == g_stm_prv_state.layer[StmLayerNoApps].state) ||
+ (StmLayoutNoDbgFll == g_stm_prv_state.layer[StmLayerNoApps].state))
+ {
+ g_stm_crr_state.layer[StmLayerNoApps].state = StmLayoutNoNone;
+ g_stm_crr_state.layer[StmLayerNoApps].changed = STM_TRUE;
+ }
+ }
+ else if (StmCtgNoSoftwareKeyboard == category_no)
+ {
+ if (StmLayoutNoSftKbd == g_stm_prv_state.layer[StmLayerNoNearHomescreen].state )
+ {
+ g_stm_crr_state.layer[StmLayerNoNearHomescreen].state = StmLayoutNoNone;
+ g_stm_crr_state.layer[StmLayerNoNearHomescreen].changed = STM_TRUE;
+ }
+ }
+ else if (StmCtgNoPopUp == category_no)
+ {
+ if (StmLayoutNoPopUp == g_stm_prv_state.layer[StmLayerNoOnScreen].state )
+ {
+ g_stm_crr_state.layer[StmLayerNoOnScreen].state = StmLayoutNoNone;
+ g_stm_crr_state.layer[StmLayerNoOnScreen].changed = STM_TRUE;
+ }
+ }
+ else if (StmCtgNoSystemAlert == category_no)
+ {
+ if (StmLayoutNoSysAlt == g_stm_prv_state.layer[StmLayerNoOnScreen].state )
+ {
+ g_stm_crr_state.layer[StmLayerNoOnScreen].state = StmLayoutNoNone;
+ g_stm_crr_state.layer[StmLayerNoOnScreen].changed = STM_TRUE;
+ }
+ }
+ }
+
+ // Copy current state for return
+ memcpy(state, &g_stm_crr_state, sizeof(g_stm_crr_state));
+
+ return 0;
+}
+
+void stmUndoStateInner() {
+ g_stm_crr_state = g_stm_prv_state;
+}