diff options
Diffstat (limited to 'policy_manager/policy_manager.hpp')
-rw-r--r-- | policy_manager/policy_manager.hpp | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/policy_manager/policy_manager.hpp b/policy_manager/policy_manager.hpp index 798b706..61fbf06 100644 --- a/policy_manager/policy_manager.hpp +++ b/policy_manager/policy_manager.hpp @@ -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 |