2 * Copyright (c) 2017 TOYOTA MOTOR CORPORATION
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>
32 binding_api::result_type binding_api::requestsurface(
33 char const *drawing_name) {
34 auto r = this->app->api_request_surface(drawing_name);
36 return Err<json_object *>(r.unwrap_err());
38 return Ok(json_object_new_int(r.unwrap()));
41 binding_api::result_type binding_api::activatesurface(
42 char const *drawing_name, char const *drawing_area) {
43 HMI_DEBUG("wm", "%s drawing_name %s, drawing_area %s", __func__, drawing_name, drawing_area);
44 auto r = this->app->api_activate_surface(drawing_name, drawing_area);
46 HMI_DEBUG("wm", "%s failed with error: %s", __func__, r);
47 return Err<json_object *>(r);
49 return Ok(json_object_new_object());
52 binding_api::result_type binding_api::deactivatesurface(char const* drawing_name) {
53 HMI_DEBUG("wm", "%s drawing_name %s", __func__, drawing_name);
54 auto r = this->app->api_deactivate_surface(drawing_name);
56 HMI_DEBUG("wm", "%s failed with error: %s", __func__, r);
57 return Err<json_object *>(r);
59 return Ok(json_object_new_object());
62 binding_api::result_type binding_api::enddraw(char const* drawing_name) {
63 HMI_DEBUG("wm", "%s drawing_name %s", __func__, drawing_name);
64 auto r = this->app->api_enddraw(drawing_name);
66 HMI_DEBUG("wm", "%s failed with error: %s", __func__, r);
67 return Err<json_object *>(r);
69 return Ok(json_object_new_object());
72 binding_api::result_type binding_api::list_drawing_names() {
73 HMI_DEBUG("wm", "%s", __func__);
74 json j = this->app->id_alloc.name2id;
75 return Ok(json_tokener_parse(j.dump().c_str()));
78 binding_api::result_type binding_api::debug_layers() {
79 HMI_DEBUG("wm", "%s", __func__);
80 return Ok(json_tokener_parse(this->app->layers.to_json().dump().c_str()));
83 binding_api::result_type binding_api::debug_surfaces() {
84 HMI_DEBUG("wm", "%s", __func__);
85 return Ok(to_json(this->app->controller->sprops));
88 binding_api::result_type binding_api::debug_status() {
89 HMI_DEBUG("wm", "%s", __func__);
90 json_object *jr = json_object_new_object();
91 json_object_object_add(jr, "surfaces",
92 to_json(this->app->controller->sprops));
93 json_object_object_add(jr, "layers", to_json(this->app->controller->lprops));
97 binding_api::result_type binding_api::debug_terminate() {
98 HMI_DEBUG("wm", "%s", __func__);
99 if (getenv("WINMAN_DEBUG_TERMINATE") != nullptr) {
100 raise(SIGKILL); // afb-daemon kills it's pgroup using TERM, which
101 // doesn't play well with perf
103 return Ok(json_object_new_object());
106 binding_api::result_type binding_api::ping() {
107 this->app->api_ping();
108 return Ok(json_object_new_object());