diff options
author | 2018-04-27 19:01:36 +0900 | |
---|---|---|
committer | 2018-04-27 19:01:36 +0900 | |
commit | 55be85ed4bdfea6fc037d781b8cd8f58487718d1 (patch) | |
tree | 279a88e26c74aee58f11e2a5d20348569ce34667 /src/layout_manager/layout.hpp | |
parent | d50188f726b15a0ae2777bf2d91ee88836feeac5 (diff) |
Add PolicyManager, related classes and some config files
- PolicyManager
Decide next layout by using occured event and current state
based on policy table.
This PolicyManger is reference and the OEMs can replace it.
- LayoutManager
Change the current layout to the layout
which decided by PolicyManager.
NOTE:
The functions of this class had been included in App class.
The part of function of this class remain there yet.
- LowCanClient
Receive the CAN signal from low level CAN service.
- app.db
Define the applications name and its role.
This file will be deleted
when the names and roles can be given by other module.
- layout.cb
Define the layouts and areas which are included by the layout.
- role.db
Define the roles of the applications.
Change-Id: I2f84bdf5e68355e022f516cee9a1db88efe58825
Signed-off-by: Yuta Doi <yuta-d@witz-inc.co.jp>
Diffstat (limited to 'src/layout_manager/layout.hpp')
-rw-r--r-- | src/layout_manager/layout.hpp | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/layout_manager/layout.hpp b/src/layout_manager/layout.hpp new file mode 100644 index 0000000..bfa4a6c --- /dev/null +++ b/src/layout_manager/layout.hpp @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2017 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. + */ + +#ifndef TMCAGLWM_LAYOUT_HPP +#define TMCAGLWM_LAYOUT_HPP + +#include <cstdint> +#include <string> +#include <map> +#include "result.hpp" +#include "wayland_ivi_wm.hpp" + +namespace wm { + +struct LayoutState { + int main{-1}; + int sub{-1}; + + bool operator==(const LayoutState &b) const { + return main == b.main && sub == b.sub; + } + + bool operator!=(const LayoutState &b) const { + return !(*this == b); + } +}; + +} // namespace wm + +class LayoutManager { +public: + explicit LayoutManager(); + ~LayoutManager() = default; + + typedef std::unordered_map<std::string, std::string> TypeRolCtg; + typedef std::unordered_map<std::string, TypeRolCtg> TypeAreas; + typedef std::unordered_map<std::string, TypeAreas> TypeLayouts; + typedef std::unordered_map<std::string, TypeLayouts> TypeLayers; + + int initialize(); + bool updateLayout(json_object* obj, const char* new_role, const char* new_area); + TypeLayers getCurrentLayers(); + TypeLayers getPreviousLayers(); + compositor::rect getAreaSize(const char* area); + bool isLayoutChanged(const char* layer); + + void updateArea(const char* layer, const char* role, const char* area); + +private: + // Disable copy and move + LayoutManager(LayoutManager const &) = delete; + LayoutManager &operator=(LayoutManager const &) = delete; + LayoutManager(LayoutManager &&) = delete; + LayoutManager &operator=(LayoutManager &&) = delete; + + TypeLayouts layout_define_; + std::unordered_map<std::string, compositor::rect> area2size_; + + TypeLayers crr_layers_, prv_layers_; + TypeLayers prv_layers_car_stop_; + + std::unordered_map<std::string, bool> is_layout_changed_; + + std::string getAreaName(TypeAreas area, const char* role, const char* category); + int loadLayoutDb(); + std::string role2App(std::string role, void* ptr); +}; + + + +#endif // TMCAGLWM_LAYOUT_HPP |