2 * Copyright (C) 2017 Mentor Graphics Development (Deutschland) GmbH
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include "json_helper.hpp"
24 using json = nlohmann::json;
26 #include <json-c/json.h>
30 // | |__ (_)_ __ __| (_)_ __ __ _ __ _ _ __ (_) (_)_ __ ___ _ __ | |
31 // | '_ \| | '_ \ / _` | | '_ \ / _` | / _` | '_ \| | | | '_ ` _ \| '_ \| |
32 // | |_) | | | | | (_| | | | | | (_| | | (_| | |_) | | | | | | | | | |_) | |
33 // |_.__/|_|_| |_|\__,_|_|_| |_|\__, |___\__,_| .__/|_| |_|_| |_| |_| .__/|_|
34 // |___/_____| |_| |_|
35 binding_api::result_type binding_api::requestsurface(
36 char const *drawing_name) {
37 auto r = this->app->api_request_surface(drawing_name);
39 return Err<json_object *>(r.unwrap_err());
41 return Ok(json_object_new_int(r.unwrap()));
44 binding_api::result_type binding_api::activatesurface(
45 char const *drawing_name, char const *drawing_area) {
46 HMI_DEBUG("wm", "%s drawing_name %s, drawing_area %s", __func__, drawing_name, drawing_area);
47 auto r = this->app->api_activate_surface(drawing_name, drawing_area);
49 HMI_DEBUG("wm", "%s failed with error: %s", __func__, r);
50 return Err<json_object *>(r);
52 return Ok(json_object_new_object());
55 binding_api::result_type binding_api::deactivatesurface(char const* drawing_name) {
56 HMI_DEBUG("wm", "%s drawing_name %s", __func__, drawing_name);
57 auto r = this->app->api_deactivate_surface(drawing_name);
59 HMI_DEBUG("wm", "%s failed with error: %s", __func__, r);
60 return Err<json_object *>(r);
62 return Ok(json_object_new_object());
65 binding_api::result_type binding_api::enddraw(char const* drawing_name) {
66 HMI_DEBUG("wm", "%s drawing_name %s", __func__, drawing_name);
67 auto r = this->app->api_enddraw(drawing_name);
69 HMI_DEBUG("wm", "%s failed with error: %s", __func__, r);
70 return Err<json_object *>(r);
72 return Ok(json_object_new_object());
75 binding_api::result_type binding_api::list_drawing_names() {
76 HMI_DEBUG("wm", "%s", __func__);
77 json j = this->app->id_alloc.name2id;
78 return Ok(json_tokener_parse(j.dump().c_str()));
81 binding_api::result_type binding_api::debug_layers() {
82 HMI_DEBUG("wm", "%s", __func__);
83 return Ok(json_tokener_parse(this->app->layers.to_json().dump().c_str()));
86 binding_api::result_type binding_api::debug_surfaces() {
87 HMI_DEBUG("wm", "%s", __func__);
88 return Ok(to_json(this->app->controller->sprops));
91 binding_api::result_type binding_api::debug_status() {
92 HMI_DEBUG("wm", "%s", __func__);
93 json_object *jr = json_object_new_object();
94 json_object_object_add(jr, "surfaces",
95 to_json(this->app->controller->sprops));
96 json_object_object_add(jr, "layers", to_json(this->app->controller->lprops));
100 binding_api::result_type binding_api::debug_terminate() {
101 HMI_DEBUG("wm", "%s", __func__);
102 if (getenv("WINMAN_DEBUG_TERMINATE") != nullptr) {
103 raise(SIGKILL); // XXX afb-daemon kills it's pgroup using TERM, which
104 // doesn't play well with perf
106 return Ok(json_object_new_object());
109 binding_api::result_type binding_api::ping() {
110 this->app->api_ping();
111 return Ok(json_object_new_object());