Remove automatic code generation
[apps/agl-service-windowmanager-2017.git] / src / afb_binding_api.cpp
1 /*
2  * Copyright (c) 2017 TOYOTA MOTOR CORPORATION
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 #include "app.hpp"
18 #include "json_helper.hpp"
19
20 #include <csignal>
21
22 #include <json.hpp>
23
24 using json = nlohmann::json;
25
26 #include <json-c/json.h>
27
28 namespace wm {
29 /**
30  * binding_api impl
31  */
32 binding_api::result_type binding_api::requestsurface(
33    char const *drawing_name) {
34    auto r = this->app->api_request_surface(drawing_name);
35    if (r.is_err()) {
36       return Err<json_object *>(r.unwrap_err());
37    }
38    return Ok(json_object_new_int(r.unwrap()));
39 }
40
41 binding_api::result_type binding_api::requestsurfacexdg(
42    char const *drawing_name, char const *ivi_id) {
43    auto r = this->app->api_request_surface(drawing_name, ivi_id);
44    if (r != nullptr) {
45       HMI_DEBUG("wm", "%s failed with error: %s", __func__, r);
46       return Err<json_object *>(r);
47    }
48    return Ok(json_object_new_object());
49 }
50
51 binding_api::result_type binding_api::activatesurface(
52    char const *drawing_name, char const *drawing_area) {
53   HMI_DEBUG("wm", "%s drawing_name %s, drawing_area %s", __func__, drawing_name, drawing_area);
54   auto r = this->app->api_activate_surface(drawing_name, drawing_area);
55    if (r != nullptr) {
56       HMI_DEBUG("wm", "%s failed with error: %s", __func__, r);
57       return Err<json_object *>(r);
58    }
59    return Ok(json_object_new_object());
60 }
61
62 binding_api::result_type binding_api::deactivatesurface(char const* drawing_name) {
63    HMI_DEBUG("wm", "%s drawing_name %s", __func__, drawing_name);
64    auto r = this->app->api_deactivate_surface(drawing_name);
65    if (r != nullptr) {
66       HMI_DEBUG("wm", "%s failed with error: %s", __func__, r);
67       return Err<json_object *>(r);
68    }
69    return Ok(json_object_new_object());
70 }
71
72 binding_api::result_type binding_api::enddraw(char const* drawing_name) {
73    HMI_DEBUG("wm", "%s drawing_name %s", __func__, drawing_name);
74    auto r = this->app->api_enddraw(drawing_name);
75    if (r != nullptr) {
76       HMI_DEBUG("wm", "%s failed with error: %s", __func__, r);
77       return Err<json_object *>(r);
78    }
79    return Ok(json_object_new_object());
80 }
81
82 binding_api::result_type binding_api::list_drawing_names() {
83    HMI_DEBUG("wm", "%s", __func__);
84    json j = this->app->id_alloc.name2id;
85    return Ok(json_tokener_parse(j.dump().c_str()));
86 }
87
88 binding_api::result_type binding_api::debug_layers() {
89    HMI_DEBUG("wm", "%s", __func__);
90    return Ok(json_tokener_parse(this->app->layers.to_json().dump().c_str()));
91 }
92
93 binding_api::result_type binding_api::debug_surfaces() {
94    HMI_DEBUG("wm", "%s", __func__);
95    return Ok(to_json(this->app->controller->sprops));
96 }
97
98 binding_api::result_type binding_api::debug_status() {
99    HMI_DEBUG("wm", "%s", __func__);
100    json_object *jr = json_object_new_object();
101    json_object_object_add(jr, "surfaces",
102                           to_json(this->app->controller->sprops));
103    json_object_object_add(jr, "layers", to_json(this->app->controller->lprops));
104    return Ok(jr);
105 }
106
107 binding_api::result_type binding_api::debug_terminate() {
108    HMI_DEBUG("wm", "%s", __func__);
109    if (getenv("WINMAN_DEBUG_TERMINATE") != nullptr) {
110       raise(SIGKILL);  // afb-daemon kills it's pgroup using TERM, which
111                        // doesn't play well with perf
112    }
113    return Ok(json_object_new_object());
114 }
115
116 binding_api::result_type binding_api::ping() {
117    this->app->api_ping();
118    return Ok(json_object_new_object());
119 }
120
121 }  // namespace wm