summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2017-02-22 19:11:46 +0100
committerRomain Forlot <romain.forlot@iot.bzh>2017-02-22 19:14:48 +0100
commitae8db2457e484f0d63aaf6dc04382555f47d21e7 (patch)
tree3713f5365ddd3e2d50c83bf89f6de72290c84d94
parentae49e206b6cf7c8db153f50a1c6f6bc87bb8b07d (diff)
make binder_interface global
Change-Id: I90b17d702cebdcf2d78cc108c2ecb995c231527e Signed-off-by: José Bollo <jose.bollo@iot.bzh>
-rw-r--r--src/low-can-binding.cpp61
-rw-r--r--src/low-can-binding.hpp70
2 files changed, 52 insertions, 79 deletions
diff --git a/src/low-can-binding.cpp b/src/low-can-binding.cpp
index 1812d818..1545c6d1 100644
--- a/src/low-can-binding.cpp
+++ b/src/low-can-binding.cpp
@@ -16,8 +16,47 @@
* limitations under the License.
*/
+#include <map>
+#include <queue>
+#include <vector>
+#include <string>
+#include <memory>
+#include <thread>
+#include <fcntl.h>
+#include <errno.h>
+#include <unistd.h>
+#include <net/if.h>
+#include <functional>
+#include <sys/ioctl.h>
+#include <linux/can.h>
+#include <openxc.pb.h>
+#include <sys/timeb.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <json-c/json.h>
+#include <linux/can/raw.h>
+#include <systemd/sd-event.h>
+
+#include "timer.hpp"
+#include "openxc.pb.h"
+#include "can-utils.hpp"
+#include "can-signals.hpp"
+#include "can-decoder.hpp"
+#include "openxc-utils.hpp"
+
#include "low-can-binding.hpp"
+extern "C"
+{
+ #include <afb/afb-binding.h>
+ #include <afb/afb-service-itf.h>
+};
+
+/*
+ * Interface between the daemon and the binding
+ */
+const struct afb_binding_interface *binder_interface;
+
/********************************************************************************
*
* Event management
@@ -42,15 +81,15 @@ static int subscribe_unsubscribe_signal(struct afb_req request, bool subscribe,
{
if(!subscribe)
{
- NOTICE(interface, "Event isn't valid, it can't be unsubscribed.");
+ NOTICE(binder_interface, "Event isn't valid, it can't be unsubscribed.");
ret = 1;
}
else
{
- ss_i->second = afb_daemon_make_event(interface->daemon, ss_i->first.c_str());
+ ss_i->second = afb_daemon_make_event(binder_interface->daemon, ss_i->first.c_str());
if (!afb_event_is_valid(ss_i->second))
{
- ERROR(interface, "Can't create an event, something goes wrong.");
+ ERROR(binder_interface, "Can't create an event, something goes wrong.");
ret = 0;
}
}
@@ -58,17 +97,17 @@ static int subscribe_unsubscribe_signal(struct afb_req request, bool subscribe,
}
else
{
- subscribed_signals[sig.genericName] = afb_daemon_make_event(interface->daemon, sig.genericName);
+ subscribed_signals[sig.genericName] = afb_daemon_make_event(binder_interface->daemon, sig.genericName);
if (!afb_event_is_valid(ss_i->second))
{
- ERROR(interface, "Can't create an event, something goes wrong.");
+ ERROR(binder_interface, "Can't create an event, something goes wrong.");
ret = 0;
}
}
if (((subscribe ? afb_req_subscribe : afb_req_unsubscribe)(request, subscribed_signals[sig.genericName])) < 0)
{
- ERROR(interface, "Operation goes wrong for signal: %s", sig.genericName);
+ ERROR(binder_interface, "Operation goes wrong for signal: %s", sig.genericName);
ret = 0;
}
else
@@ -118,7 +157,7 @@ static int subscribe_unsubscribe_name(struct afb_req request, bool subscribe, co
else
{
openxc_DynamicField search_key = build_DynamicField(name);
- sig = find_can_signals(interface, search_key);
+ sig = find_can_signals(binder_interface, search_key);
if (sig.empty())
ret = 0;
}
@@ -185,7 +224,7 @@ extern "C"
const struct afb_binding *afbBindingV1Register (const struct afb_binding_interface *itf)
{
- interface = itf;
+ binder_interface = itf;
return &binding_desc;
}
@@ -200,10 +239,10 @@ extern "C"
int afbBindingV1ServiceInit(struct afb_service service)
{
int fd_conf;
- fd_conf = afb_daemon_rootdir_open_locale(interface->daemon, "can_bus.json", O_RDONLY, NULL);
+ fd_conf = afb_daemon_rootdir_open_locale(binder_interface->daemon, "can_bus.json", O_RDONLY, NULL);
/* Open CAN socket */
- can_bus_t can_bus_handler(interface, fd_conf);
+ can_bus_t can_bus_handler(binder_interface, fd_conf);
if(can_bus_handler.init_can_dev() == 0)
{
can_bus_handler.start_threads();
@@ -212,4 +251,4 @@ extern "C"
return 1;
}
-}; \ No newline at end of file
+};
diff --git a/src/low-can-binding.hpp b/src/low-can-binding.hpp
index 6927826e..0f2b9505 100644
--- a/src/low-can-binding.hpp
+++ b/src/low-can-binding.hpp
@@ -18,72 +18,6 @@
#pragma once
-#include <map>
-#include <queue>
-#include <vector>
-#include <string>
-#include <memory>
-#include <thread>
-#include <fcntl.h>
-#include <errno.h>
-#include <unistd.h>
-#include <net/if.h>
-#include <functional>
-#include <sys/ioctl.h>
-#include <linux/can.h>
-#include <openxc.pb.h>
-#include <sys/timeb.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <json-c/json.h>
-#include <linux/can/raw.h>
-#include <systemd/sd-event.h>
+extern "C" struct afb_binding_interface;
-#include "timer.hpp"
-#include "openxc.pb.h"
-#include "can-utils.hpp"
-#include "can-signals.hpp"
-#include "can-decoder.hpp"
-#include "openxc-utils.hpp"
-
-/*
- * Interface between the daemon and the binding
- */
-static const struct afb_binding_interface *interface;
-
-extern "C"
-{
- #include <afb/afb-binding.h>
- #include <afb/afb-service-itf.h>
-
- static void subscribe(struct afb_req request);
- static void unsubscribe(struct afb_req request);
-
- /**
- * @brief Register the binding.
- *
- * @desc - A binding V1 MUST have a function of this name and signature.
- * This function is called during loading of the binding. It
- * receives an 'interface' that should be recorded for later access to
- * functions provided by the framework.
- *
- * This function MUST return the address of a structure that describes
- * the binding and its implemented verbs.
- *
- * In case of initialisation error, NULL must be returned.
- *
- * @param[in] const struct afb_binding_interface *itf - interface to the application framework binder.
- *
- * @return pointer to the binding or NULL in case of error
- */
- const struct afb_binding *afbBindingV1Register (const struct afb_binding_interface *itf);
-
- /**
- * @brief Initialize the binding.
- *
- * @param[in] service Structure which represent the Application Framework Binder.
- *
- * @return Exit code, zero if success.
- */
- int afbBindingV1ServiceInit(struct afb_service service);
-};
+extern const struct afb_binding_interface *binder_interface;