make binder_interface global
authorJosé Bollo <jose.bollo@iot.bzh>
Wed, 22 Feb 2017 18:11:46 +0000 (19:11 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Wed, 22 Feb 2017 18:14:48 +0000 (19:14 +0100)
Change-Id: I90b17d702cebdcf2d78cc108c2ecb995c231527e
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
src/low-can-binding.cpp
src/low-can-binding.hpp

index 1812d81..1545c6d 100644 (file)
  * 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
+};
index 6927826..0f2b950 100644 (file)
  
 #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;