add source for ces2019
[apps/agl-service-windowmanager-2017.git] / policy_manager / policy_manager.hpp
index 798b706..61fbf06 100644 (file)
@@ -31,7 +31,7 @@ class PolicyManager
 {
   public:
     explicit PolicyManager();
-    ~PolicyManager() = default;
+    ~PolicyManager();
 
     using Handler = std::function<void(json_object *)>;
 
@@ -41,7 +41,7 @@ class PolicyManager
         Handler onError;
     } CallbackTable;
 
-    int initialize();
+    int initialize(std::string ecu_name);
     void registerCallback(CallbackTable callback_table);
     int setInputEventData(json_object *json_in);
     int executeStateTransition();
@@ -87,10 +87,19 @@ class PolicyManager
         bool changed;
     } LayerState;
 
+    typedef struct Mode
+    {
+        std::string state;
+        bool changed;
+    } Mode;
+
     typedef std::vector<std::string> Areas;
     typedef std::vector<std::string> Categories;
     typedef std::vector<std::string> Roles;
 
+    StmState *p_crr_state;
+    StmState *p_prv_state;
+
     // Convert map
     std::unordered_map<std::string, int> eventname2no;
     std::unordered_map<std::string, int> categoryname2no;
@@ -107,27 +116,43 @@ class PolicyManager
 
     CallbackTable callback;
 
+    std::unordered_map<std::string, Mode> prv_car_elements;
+    std::unordered_map<std::string, Mode> crr_car_elements;
+
     std::unordered_map<std::string, LayerState> prv_layers;
     std::unordered_map<std::string, LayerState> crr_layers;
 
+    std::unordered_map<std::string, LayerState> prv_layers_car_stop;
+
     std::unordered_map<std::string, LayoutState> default_layouts;
 
-    std::map<std::string, Roles> invisible_role_history;
+    std::map<std::string, Roles> crr_invisible_role_history;
+    std::map<std::string, Roles> prv_invisible_role_history;
+
+    std::string ecu_name;
 
     void initializeState();
+    void initializeModeState();
     void initializeLayerState();
-    void updateState(int event_id, StmState crr_state);
-    void updateLayer(int event_id, StmState crr_state);
+    void updateState(int event_id);
+    void updateModeState();
+    void updateLayer(int event_id);
     int updateLayout(int event_id, int layer_no,
                      std::string crr_layout_name, LayoutState &crr_layout_state);
-    void createOutputInformation(StmState crr_state, json_object **json_out);
+    void createOutputInformation(json_object **json_out);
+    void controlTimerEvent();
     int setStateTransitionProcessToSystemd(int event, uint64_t delay_ms, std::string role);
 
     void pushInvisibleRoleHistory(std::string category, std::string role);
     std::string popInvisibleRoleHistory(std::string category);
 
-    int loadRoleDb();
-    int loadStateDb();
+    bool changedRestrictionModeTo2On();
+    bool changedRestrictionMode2OnToOther();
+    bool changedLightstatusBrakeOffToOn();
+    bool changedLightstatusBrakeOnToOff();
+
+    int loadRolesConfigFile();
+    int loadLayoutsConfigFile();
 
     void dumpLayerState(std::unordered_map<std::string, LayerState> &layers);
     void dumpInvisibleRoleHistory();
@@ -142,8 +167,8 @@ class PolicyManager
     std::vector<std::string> parseString(std::string str, char delimiter);
     std::string deleteSpace(std::string str);
 
-    static const char *kDefaultRoleDb;
-    static const char *kDefaultStateDb;
+    static const char *kDefaultRolesConfig;
+    static const char *kDefaultLayoutsConfig;
 };
 
 #endif // TMCAGLWM_POLICY_MANAGER_HPP