From 55be85ed4bdfea6fc037d781b8cd8f58487718d1 Mon Sep 17 00:00:00 2001 From: Yuta Doi Date: Fri, 27 Apr 2018 19:01:36 +0900 Subject: 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 --- src/layout_manager/layout.hpp | 84 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/layout_manager/layout.hpp (limited to 'src/layout_manager/layout.hpp') 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 +#include +#include +#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 TypeRolCtg; + typedef std::unordered_map TypeAreas; + typedef std::unordered_map TypeLayouts; + typedef std::unordered_map 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 area2size_; + + TypeLayers crr_layers_, prv_layers_; + TypeLayers prv_layers_car_stop_; + + std::unordered_map 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 -- cgit