X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fpolicy_manager%2Fstm%2Fstub%2Fsrc%2Fstm.c;fp=src%2Fpolicy_manager%2Fstm%2Fstub%2Fsrc%2Fstm.c;h=222dc91e0e61f4d790c8fb47be2b0ead156c3cec;hb=99b6f4d2fcd421d3a760a88a67e511fb6fc98068;hp=0000000000000000000000000000000000000000;hpb=8ab10aaafc6fb3dc7bbad755dce9b4bdaa41f287;p=apps%2Fagl-service-windowmanager.git diff --git a/src/policy_manager/stm/stub/src/stm.c b/src/policy_manager/stm/stub/src/stm.c new file mode 100644 index 0000000..222dc91 --- /dev/null +++ b/src/policy_manager/stm/stub/src/stm.c @@ -0,0 +1,237 @@ +/* + * 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 +#include "stm.h" + +const char* kStmEventName[] = { + "none", + "activate", + "deactivate", + "restriction_mode_off", + "restriction_mode_1_on", + "restriction_mode_2_on", + "undo", +}; + +const char* kStmCategoryName[] = { + "none", + "homescreen", + "map", + "general", + "splitable", + "pop_up", + "system_alert", + "restriction", + "system", + "software_keyboard", +}; + +const char* kStmAreaName[] = { + "none", + "fullscreen", + "normal", + "split.main", + "split.sub", + "on_screen", + "restriction.normal", + "restriction.split.main", + "restriction.split.sub", + "software_keyboard", +}; + +const char* kStmLayoutName[] = { + "none", + "pop_up", + "system_alert", + "map.normal", + "map.split", + "map.fullscreen", + "splitable.normal", + "splitable.split", + "general.normal", + "homescreen", + "restriction.normal", + "restriction.split.main", + "restriction.split.sub", + "system.normal", + "software_keyboard", +}; + +const char* kStmLayerName[] = { + "homescreen", + "apps", + "near_homescreen", + "restriction", + "on_screen", +}; + +const char* kStmModeName[] = { + "trans_gear", + "parking_brake", + "accel_pedal", + "running", + "lamp", + "lightstatus_brake", + "restriction_mode", +}; + +const char* kStmRestrictionModeStateName[] = { + "off", + "1on", + "2on", +}; + +const char** kStmModeStateNameList[] = { + kStmRestrictionModeStateName, +}; + +static StmState g_crr_state; +static StmState g_prv_state; + +void stmInitialize() { + // Initialize previous state + memset(&g_prv_state, 0, sizeof(g_prv_state)); + + // Initialize current state + g_crr_state = g_prv_state; +} + +int stmTransitionState(int event, StmState* state) { + int event_no, category_no; + + event_no = STM_GET_EVENT_FROM_ID(event); + category_no = STM_GET_CATEGORY_FROM_ID(event); + + // Backup previous state + g_prv_state = g_crr_state; + + // Clear current state + memset(&g_prv_state, 0, sizeof(g_prv_state)); + + // ------------------------------------------------------- + // There is no policy table by default. + // Therefore update each layers + // to draw the applications in normal.full area + // in accordance with inputed activate/deactivate events. + // ------------------------------------------------------- + if (StmEvtNoActivate == event_no) + { + if (StmCtgNoHomescreen == category_no) + { + g_crr_state.layer[StmLayerNoHomescreen].state = StmLayoutNoHms; + g_crr_state.layer[StmLayerNoHomescreen].changed = STM_TRUE; + + g_crr_state.layer[StmLayerNoApps].state = StmLayoutNoNone; + g_crr_state.layer[StmLayerNoApps].changed = STM_TRUE; + } + else if (StmCtgNoMap == category_no) + { + g_crr_state.layer[StmLayerNoApps].state = StmLayoutNoMapNml; + g_crr_state.layer[StmLayerNoApps].changed = STM_TRUE; + } + else if (StmCtgNoGeneral == category_no) + { + g_crr_state.layer[StmLayerNoApps].state = StmLayoutNoGenNml; + g_crr_state.layer[StmLayerNoApps].changed = STM_TRUE; + } + else if (StmCtgNoSystem == category_no) + { + g_crr_state.layer[StmLayerNoApps].state = StmLayoutNoSysNml; + g_crr_state.layer[StmLayerNoApps].changed = STM_TRUE; + } + else if (StmCtgNoSplitable == category_no) + { + g_crr_state.layer[StmLayerNoApps].state = StmLayoutNoSplNml; + g_crr_state.layer[StmLayerNoApps].changed = STM_TRUE; + } + else if (StmCtgNoPopUp == category_no) + { + g_crr_state.layer[StmLayerNoOnScreen].state = StmLayoutNoPopUp; + g_crr_state.layer[StmLayerNoOnScreen].changed = STM_TRUE; + } + else if (StmCtgNoSystemAlert == category_no) + { + g_crr_state.layer[StmLayerNoOnScreen].state = StmLayoutNoSysAlt; + g_crr_state.layer[StmLayerNoOnScreen].changed = STM_TRUE; + } + } + else if (StmEvtNoDeactivate == event_no) + { + if (StmCtgNoHomescreen == category_no) + { + g_crr_state.layer[StmLayerNoHomescreen].state = StmLayoutNoNone; + g_crr_state.layer[StmLayerNoHomescreen].changed = STM_TRUE; + } + else if (StmCtgNoMap == category_no) + { + if (StmLayoutNoMapNml == g_prv_state.layer[StmLayerNoApps].state ) + { + g_crr_state.layer[StmLayerNoApps].state = StmLayoutNoNone; + g_crr_state.layer[StmLayerNoApps].changed = STM_TRUE; + } + } + else if (StmCtgNoGeneral == category_no) + { + if (StmLayoutNoGenNml == g_prv_state.layer[StmLayerNoApps].state ) + { + g_crr_state.layer[StmLayerNoApps].state = StmLayoutNoNone; + g_crr_state.layer[StmLayerNoApps].changed = STM_TRUE; + } + } + else if (StmCtgNoSystem == category_no) + { + if (StmLayoutNoSysNml == g_prv_state.layer[StmLayerNoApps].state ) + { + g_crr_state.layer[StmLayerNoApps].state = StmLayoutNoNone; + g_crr_state.layer[StmLayerNoApps].changed = STM_TRUE; + } + } + else if (StmCtgNoSplitable == category_no) + { + if (StmLayoutNoSplNml == g_prv_state.layer[StmLayerNoApps].state ) + { + g_crr_state.layer[StmLayerNoApps].state = StmLayoutNoNone; + g_crr_state.layer[StmLayerNoApps].changed = STM_TRUE; + } + } + else if (StmCtgNoPopUp == category_no) + { + if (StmLayoutNoPopUp == g_prv_state.layer[StmLayerNoOnScreen].state ) + { + g_crr_state.layer[StmLayerNoOnScreen].state = StmLayoutNoNone; + g_crr_state.layer[StmLayerNoOnScreen].changed = STM_TRUE; + } + } + else if (StmCtgNoSystemAlert == category_no) + { + if (StmLayoutNoSysAlt == g_prv_state.layer[StmLayerNoOnScreen].state ) + { + g_crr_state.layer[StmLayerNoOnScreen].state = StmLayoutNoNone; + g_crr_state.layer[StmLayerNoOnScreen].changed = STM_TRUE; + } + } + } + + // Copy current state for return + memcpy(state, &g_crr_state, sizeof(g_crr_state)); + + return 0; +} + +void stmUndoState() { + g_crr_state = g_prv_state; +}