Add logging by request
[src/app-framework-binder.git] / include / afb / afb-binding.h
1 /*
2  * Copyright (C) 2016, 2017 "IoT.bzh"
3  * Author: José Bollo <jose.bollo@iot.bzh>
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *   http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 #pragma once
19
20 #include <stdarg.h>
21
22 /*****************************************************************************
23  * This files is the main file to include for writing bindings dedicated to
24  *
25  *                      AFB-DAEMON
26  *
27  * Functions of bindings of afb-daemon are accessible by authorized clients
28  * through the apis module of afb-daemon.
29  *
30  * A binding is a shared library. This shared library must have at least one
31  * exported symbol for being registered in afb-daemon.
32  *
33  */
34
35 #define AFB_BINDING_LOWER_VERSION     1
36 #define AFB_BINDING_UPPER_VERSION     2
37 #define AFB_BINDING_DEFAULT_VERSION   1
38
39 #ifndef AFB_BINDING_VERSION
40 #define AFB_BINDING_VERSION   AFB_BINDING_DEFAULT_VERSION
41 #endif
42
43 #if AFB_BINDING_VERSION != 0
44 # if AFB_BINDING_VERSION < AFB_BINDING_LOWER_VERSION || AFB_BINDING_VERSION > AFB_BINDING_UPPER_VERSION
45 #  error "Unsupported binding version AFB_BINDING_VERSION " #AFB_BINDING_VERSION
46 # endif
47 #endif
48
49 /*
50  * Some function of the library are exported to afb-daemon.
51  */
52
53 #include "afb-binding-v1.h"
54 #include "afb-binding-v2.h"
55
56 /***************************************************************************************************/
57
58 #if AFB_BINDING_VERSION == 1
59
60 # define afb_binding            afb_binding_v1
61 # define afb_binding_interface  afb_binding_interface_v1
62
63 # define AFB_SESSION_NONE       AFB_SESSION_NONE_V1
64 # define AFB_SESSION_CREATE     AFB_SESSION_CREATE_V1
65 # define AFB_SESSION_CLOSE      AFB_SESSION_CLOSE_V1
66 # define AFB_SESSION_RENEW      AFB_SESSION_RENEW_V1
67 # define AFB_SESSION_CHECK      AFB_SESSION_CHECK_V1
68
69 # define AFB_SESSION_LOA_GE     AFB_SESSION_LOA_GE_V1
70 # define AFB_SESSION_LOA_LE     AFB_SESSION_LOA_LE_V1
71 # define AFB_SESSION_LOA_EQ     AFB_SESSION_LOA_EQ_V1
72
73 # define AFB_SESSION_LOA_SHIFT  AFB_SESSION_LOA_SHIFT_V1
74 # define AFB_SESSION_LOA_MASK   AFB_SESSION_LOA_MASK_V1
75
76 # define AFB_SESSION_LOA_0      AFB_SESSION_LOA_0_V1
77 # define AFB_SESSION_LOA_1      AFB_SESSION_LOA_1_V1
78 # define AFB_SESSION_LOA_2      AFB_SESSION_LOA_2_V1
79 # define AFB_SESSION_LOA_3      AFB_SESSION_LOA_3_V1
80 # define AFB_SESSION_LOA_4      AFB_SESSION_LOA_4_V1
81
82 # define AFB_SESSION_LOA_LE_0   AFB_SESSION_LOA_LE_0_V1
83 # define AFB_SESSION_LOA_LE_1   AFB_SESSION_LOA_LE_1_V1
84 # define AFB_SESSION_LOA_LE_2   AFB_SESSION_LOA_LE_2_V1
85 # define AFB_SESSION_LOA_LE_3   AFB_SESSION_LOA_LE_3_V1
86
87 # define AFB_SESSION_LOA_EQ_0   AFB_SESSION_LOA_EQ_0_V1
88 # define AFB_SESSION_LOA_EQ_1   AFB_SESSION_LOA_EQ_1_V1
89 # define AFB_SESSION_LOA_EQ_2   AFB_SESSION_LOA_EQ_2_V1
90 # define AFB_SESSION_LOA_EQ_3   AFB_SESSION_LOA_EQ_3_V1
91
92 # define AFB_SESSION_LOA_GE_0   AFB_SESSION_LOA_GE_0_V1
93 # define AFB_SESSION_LOA_GE_1   AFB_SESSION_LOA_GE_1_V1
94 # define AFB_SESSION_LOA_GE_2   AFB_SESSION_LOA_GE_2_V1
95 # define AFB_SESSION_LOA_GE_3   AFB_SESSION_LOA_GE_3_V1
96
97 # if !defined(AFB_BINDING_PRAGMA_NO_VERBOSE_MACRO)
98
99 #  define ERROR                 AFB_ERROR_V1
100 #  define WARNING               AFB_WARNING_V1
101 #  define NOTICE                AFB_NOTICE_V1
102 #  define INFO                  AFB_INFO_V1
103 #  define DEBUG                 AFB_DEBUG_V1
104
105 #  define REQ_ERROR             AFB_REQ_ERROR_V1
106 #  define REQ_WARNING           AFB_REQ_WARNING_V1
107 #  define REQ_NOTICE            AFB_REQ_NOTICE_V1
108 #  define REQ_INFO              AFB_REQ_INFO_V1
109 #  define REQ_DEBUG             AFB_REQ_DEBUG_V1
110
111 # endif
112
113 #define afb_daemon_get_event_loop       afb_daemon_get_event_loop_v1
114 #define afb_daemon_get_user_bus         afb_daemon_get_user_bus_v1
115 #define afb_daemon_get_system_bus       afb_daemon_get_system_bus_v1
116 #define afb_daemon_broadcast_event      afb_daemon_broadcast_event_v1
117 #define afb_daemon_make_event           afb_daemon_make_event_v1
118 #define afb_daemon_verbose              afb_daemon_verbose_v1
119 #define afb_daemon_rootdir_get_fd       afb_daemon_rootdir_get_fd_v1
120 #define afb_daemon_rootdir_open_locale  afb_daemon_rootdir_open_locale_v1
121 #define afb_daemon_queue_job            afb_daemon_queue_job_v1
122
123 #define afb_service_call                afb_service_call_v1
124 #define afb_service_call_sync           afb_service_call_sync_v1
125
126 #endif
127
128 /***************************************************************************************************/
129
130 #if AFB_BINDING_VERSION == 2
131
132 # define afb_binding            afb_binding_v2
133 # define afb_binding_interface  afb_binding_interface_v2
134
135 # define AFB_SESSION_NONE       AFB_SESSION_NONE_V2
136 # define AFB_SESSION_CLOSE      AFB_SESSION_CLOSE_V2
137 # define AFB_SESSION_RENEW      AFB_SESSION_REFRESH_V2
138 # define AFB_SESSION_REFRESH    AFB_SESSION_REFRESH_V2
139 # define AFB_SESSION_CHECK      AFB_SESSION_CHECK_V2
140
141 # define AFB_SESSION_LOA_MASK   AFB_SESSION_LOA_MASK_V2
142
143 # define AFB_SESSION_LOA_0      AFB_SESSION_LOA_0_V2
144 # define AFB_SESSION_LOA_1      AFB_SESSION_LOA_1_V2
145 # define AFB_SESSION_LOA_2      AFB_SESSION_LOA_2_V2
146 # define AFB_SESSION_LOA_3      AFB_SESSION_LOA_3_V2
147
148 # if !defined(AFB_BINDING_PRAGMA_NO_VERBOSE_MACRO)
149
150 #  define ERROR                 AFB_ERROR_V2
151 #  define WARNING               AFB_WARNING_V2
152 #  define NOTICE                AFB_NOTICE_V2
153 #  define INFO                  AFB_INFO_V2
154 #  define DEBUG                 AFB_DEBUG_V2
155
156 #  define REQ_ERROR             AFB_REQ_ERROR_V2
157 #  define REQ_WARNING           AFB_REQ_WARNING_V2
158 #  define REQ_NOTICE            AFB_REQ_NOTICE_V2
159 #  define REQ_INFO              AFB_REQ_INFO_V2
160 #  define REQ_DEBUG             AFB_REQ_DEBUG_V2
161
162 # endif
163
164 #define afb_daemon_get_event_loop       afb_daemon_get_event_loop_v2
165 #define afb_daemon_get_user_bus         afb_daemon_get_user_bus_v2
166 #define afb_daemon_get_system_bus       afb_daemon_get_system_bus_v2
167 #define afb_daemon_broadcast_event      afb_daemon_broadcast_event_v2
168 #define afb_daemon_make_event           afb_daemon_make_event_v2
169 #define afb_daemon_verbose              afb_daemon_verbose_v2
170 #define afb_daemon_rootdir_get_fd       afb_daemon_rootdir_get_fd_v2
171 #define afb_daemon_rootdir_open_locale  afb_daemon_rootdir_open_locale_v2
172 #define afb_daemon_queue_job            afb_daemon_queue_job_v2
173
174 #define afb_service_call                afb_service_call_v2
175 #define afb_service_call_sync           afb_service_call_sync_v2
176
177 #endif