a6fe7972552692168e08885a2eefb6779d11e3f1
[apps/agl-service-can-low-level.git] / low-can-binding / binding / low-can-apidef.h
1
2 static const char _afb_description_v2_low_can[] =
3     "{\"openapi\":\"3.0.0\",\"$schema\":\"http:iot.bzh/download/openapi/schem"
4     "a-3.0/default-schema.json\",\"info\":{\"description\":\"\",\"title\":\"l"
5     "ow-can\",\"version\":\"4.0\",\"x-binding-c-generator\":{\"api\":\"low-ca"
6     "n\",\"version\":2,\"prefix\":\"\",\"postfix\":\"\",\"start\":null,\"onev"
7     "ent\":null,\"init\":\"initv2\",\"scope\":\"\",\"private\":false}},\"serv"
8     "ers\":[{\"url\":\"ws://{host}:{port}/api/monitor\",\"description\":\"Low"
9     " level CAN API.\",\"variables\":{\"host\":{\"default\":\"localhost\"},\""
10     "port\":{\"default\":\"1234\"}},\"x-afb-events\":[{\"$ref\":\"#/component"
11     "s/schemas/afb-event\"}]}],\"components\":{\"schemas\":{\"afb-reply\":{\""
12     "$ref\":\"#/components/schemas/afb-reply-v2\"},\"afb-event\":{\"$ref\":\""
13     "#/components/schemas/afb-event-v2\"},\"afb-reply-v2\":{\"title\":\"Gener"
14     "ic response.\",\"type\":\"object\",\"required\":[\"jtype\",\"request\"],"
15     "\"properties\":{\"jtype\":{\"type\":\"string\",\"const\":\"afb-reply\"},"
16     "\"request\":{\"type\":\"object\",\"required\":[\"status\"],\"properties\""
17     ":{\"status\":{\"type\":\"string\"},\"info\":{\"type\":\"string\"},\"toke"
18     "n\":{\"type\":\"string\"},\"uuid\":{\"type\":\"string\"},\"reqid\":{\"ty"
19     "pe\":\"string\"}}},\"response\":{\"type\":\"object\"}}},\"afb-event-v2\""
20     ":{\"type\":\"object\",\"required\":[\"jtype\",\"event\"],\"properties\":"
21     "{\"jtype\":{\"type\":\"string\",\"const\":\"afb-event\"},\"event\":{\"ty"
22     "pe\":\"string\"},\"data\":{\"type\":\"object\"}}}},\"x-permissions\":{\""
23     "monitor\":{\"permission\":\"urn:AGL:permission:low-can:public:monitor\"}"
24     ",\"write\":{\"permission\":\"urn:AGL:permission::platform:can:write \"}}"
25     ",\"responses\":{\"200\":{\"description\":\"A complex object array respon"
26     "se\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/compone"
27     "nts/schemas/afb-reply\"}}}}}},\"paths\":{\"/subscribe\":{\"description\""
28     ":\"Subscribe to CAN signals events\",\"parameters\":[{\"in\":\"query\",\""
29     "name\":\"event\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\""
30     "responses\":{\"200\":{\"$ref\":\"#/components/responses/200\"}}},\"/unsu"
31     "bscribe\":{\"description\":\"Unsubscribe previously suscribed signals.\""
32     ",\"parameters\":[{\"in\":\"query\",\"name\":\"event\",\"required\":false"
33     ",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"$ref\":\"#"
34     "/components/responses/200\"}}},\"/get\":{\"description\":\"get a current"
35     " value of CAN message\",\"parameters\":[{\"in\":\"query\",\"name\":\"eve"
36     "nt\",\"required\":false,\"schema\":{\"type\":\"string\"}}],\"responses\""
37     ":{\"200\":{\"$ref\":\"#/components/responses/200\"}}},\"/list\":{\"descr"
38     "iption\":\"get a supported CAN message list\",\"responses\":{\"200\":{\""
39     "$ref\":\"#/components/responses/200\"}}},\"/auth\":{\"description\":\"Au"
40     "thenticate session to be raise Level Of Assurance.\",\"get\":{\"x-permis"
41     "sions\":{\"$ref\":\"#/components/x-permissions/write\"},\"responses\":{\""
42     "200\":{\"$ref\":\"#/components/responses/200\"}}}},\"/write\":{\"descrip"
43     "tion\":\"Write a CAN messages to the CAN bus.\",\"get\":{\"x-permissions"
44     "\":{\"LOA\":1},\"parameters\":[{\"in\":\"query\",\"name\":\"bus_name\",\""
45     "required\":false,\"schema\":{\"type\":\"string\"}},{\"in\":\"query\",\"n"
46     "ame\":\"frame\",\"required\":false,\"schema\":{\"type\":\"array\"},\"par"
47     "ameters\":[{\"in\":\"query\",\"name\":\"can_id\",\"required\":false,\"sc"
48     "hema\":{\"type\":\"string\"}},{\"in\":\"query\",\"name\":\"can_dlc\",\"r"
49     "equired\":false,\"schema\":{\"type\":\"string\"}},{\"in\":\"query\",\"na"
50     "me\":\"can_data\",\"required\":false,\"schema\":{\"type\":\"string\"}}]}"
51     ",{\"in\":\"query\",\"name\":\"signal_name\",\"required\":false,\"schema\""
52     ":{\"type\":\"string\"}},{\"in\":\"query\",\"name\":\"signal_value\",\"re"
53     "quired\":false,\"schema\":{\"type\":\"integer\"}}],\"responses\":{\"200\""
54     ":{\"$ref\":\"#/components/responses/200\"}}}}}}"
55 ;
56
57 static const struct afb_auth _afb_auths_v2_low_can[] = {
58         afb::auth_permission("urn:AGL:permission::platform:can:write ")
59 };
60
61  void subscribe(struct afb_req req);
62  void unsubscribe(struct afb_req req);
63  void get(struct afb_req req);
64  void list(struct afb_req req);
65  void auth(struct afb_req req);
66  void write(struct afb_req req);
67
68 static const struct afb_verb_v2 _afb_verbs_v2_low_can[] = {
69     {
70         .verb = "subscribe",
71         .callback = subscribe,
72         .auth = NULL,
73         .info = "Subscribe to CAN signals events",
74         .session = AFB_SESSION_NONE_V2
75     },
76     {
77         .verb = "unsubscribe",
78         .callback = unsubscribe,
79         .auth = NULL,
80         .info = "Unsubscribe previously suscribed signals.",
81         .session = AFB_SESSION_NONE_V2
82     },
83     {
84         .verb = "get",
85         .callback = get,
86         .auth = NULL,
87         .info = "get a current value of CAN message",
88         .session = AFB_SESSION_NONE_V2
89     },
90     {
91         .verb = "list",
92         .callback = list,
93         .auth = NULL,
94         .info = "get a supported CAN message list",
95         .session = AFB_SESSION_NONE_V2
96     },
97     {
98         .verb = "auth",
99         .callback = auth,
100         .auth = &_afb_auths_v2_low_can[0],
101         .info = "Authenticate session to be raise Level Of Assurance.",
102         .session = AFB_SESSION_NONE_V2
103     },
104     {
105         .verb = "write",
106         .callback = write,
107         .auth = NULL,
108         .info = "Write a CAN messages to the CAN bus.",
109         .session = AFB_SESSION_LOA_1_V2
110     },
111     {
112         .verb = NULL,
113         .callback = NULL,
114         .auth = NULL,
115         .info = NULL,
116         .session = 0
117         }
118 };
119
120 const struct afb_binding_v2 afbBindingV2 = {
121     .api = "low-can",
122     .specification = _afb_description_v2_low_can,
123     .info = "",
124     .verbs = _afb_verbs_v2_low_can,
125     .preinit = NULL,
126     .init = initv2,
127     .onevent = NULL,
128     .noconcurrency = 0
129 };
130