fix segmentation fault error
[apps/agl-service-homescreen.git] / src / hs-proxy.h
1 /*
2  * Copyright (c) 2019 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 #ifndef HOMESCREEN_PROXY_H
18 #define HOMESCREEN_PROXY_H
19
20 #include <string>
21 #include <json-c/json.h>
22 #include <functional>
23 #include <list>
24 #include "hs-helper.h"
25
26 extern const char _afm_main[];
27 extern const char _vshl_capabilities[];
28
29 typedef void (*api_cb_func)(struct json_object *obj, const char *error, const char *info);
30
31 class HS_AfmMainProxy {
32 public:
33     // synchronous call, call result in object
34     int runnables(afb_api_t api, struct json_object **object);
35     int detail(afb_api_t api, const std::string &id, struct json_object **object);
36
37     // asynchronous call, reply in callback function
38     void start(afb_api_t api, const std::string &id);
39 };
40
41 class HS_WmProxy {
42 public:
43
44     enum EventType
45     {
46         Event_Val_Min = 0,
47
48         Event_Active = Event_Val_Min,
49         Event_Inactive,
50
51         Event_Visible,
52         Event_Invisible,
53
54         Event_SyncDraw,
55         Event_FlushDraw,
56
57         Event_ScreenUpdated,
58
59         Event_Handshake,
60
61         Event_HeadlampOff,
62         Event_HeadlampOn,
63
64         Event_ParkingBrakeOff,
65         Event_ParkingBrakeOn,
66
67         Event_LightstatusBrakeOff,
68         Event_LightstatusBrakeOn,
69
70         Event_CarStop,
71         Event_CarRun,
72
73         Event_Error,
74
75         Event_Val_Max = Event_Error,
76     };
77
78     // asynchronous call, reply in callback function
79     void subscribe(afb_api_t api, EventType event, api_cb_func f = nullptr);
80 };
81
82 struct HS_VshlCapabilitiesProxy {
83     // asynchronous call, reply in callback function
84     void subscribe(afb_api_t api, const std::string &module, const std::list<std::string> &ev_list);
85 };
86
87 #endif // HOMESCREEN_PROXY_H