Templates separation between binding API hat and Callbacks
[apps/app-templates.git] / templates / service / binding / xxx-service-hat.c
1 /*
2  * Copyright (C) 2015, 2016 "IoT.bzh"
3  * Author "Fulup Ar Foll"
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 #define _GNU_SOURCE
18 #include <stdio.h>
19 #include <string.h>
20 #include <json-c/json.h>
21
22 #include <afb/afb-binding.h>
23 #include "xxx-service-hat.h"
24
25 const struct afb_binding_interface *interface;
26
27 // NOTE: this sample does not use session to keep test a basic as possible
28 //       in real application most APIs should be protected with AFB_SESSION_CHECK
29 static const struct afb_verb_desc_v1 verbs[]= {
30   {"ping"     , AFB_SESSION_NONE, pingSample  , "Ping the binder"},
31   {"pingfail" , AFB_SESSION_NONE, pingFail    , "Ping that fails"},
32   {"pingnull" , AFB_SESSION_NONE, pingNull    , "Ping which returns NULL"},
33   {"pingbug"  , AFB_SESSION_NONE, pingBug     , "Do a Memory Violation"},
34   {"pingJson" , AFB_SESSION_NONE, pingJson    , "Return a JSON object"},
35   {"pingevent", AFB_SESSION_NONE, pingEvent   , "Send an event"},
36   {"subcall",   AFB_SESSION_NONE, subcall     , "Call api/verb(args)"},
37   {"eventadd",  AFB_SESSION_NONE, eventadd    , "adds the event of 'name' for the 'tag'"},
38   {"eventdel",  AFB_SESSION_NONE, eventdel    , "deletes the event of 'tag'"},
39   {"eventsub",  AFB_SESSION_NONE, eventsub    , "subscribes to the event of 'tag'"},
40   {"eventunsub",AFB_SESSION_NONE, eventunsub  , "unsubscribes to the event of 'tag'"},
41   {"eventpush", AFB_SESSION_NONE, eventpush   , "pushes the event of 'tag' with the 'data'"},
42   {NULL}
43 };
44
45 static const struct afb_binding plugin_desc = {
46         .type = AFB_BINDING_VERSION_1,
47         .v1 = {
48                 .info = "xxxxxx service",
49                 .prefix = "xxxxxx",
50                 .verbs = verbs
51         }
52 };
53
54 const struct afb_binding *afbBindingV1Register (const struct afb_binding_interface *itf)
55 {
56         interface = itf;
57         return &plugin_desc;
58 }