First draft about lock/wait thread management.
[apps/agl-service-can-low-level.git] / src / low-can-binding.hpp
index a1d3169..11df1f4 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>
+#include <mutex>
+#include <condition_variable>
 
-#include "timer.hpp"
-#include "openxc.pb.h"
-#include "can-utils.hpp"
-#include "can-signals.hpp"
-#include "can-decoder.hpp"
-#include "openxc-utils.hpp"
+extern "C" struct afb_binding_interface;
 
-/*
- *     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);
+extern const struct afb_binding_interface *binder_interface;
 
-       /**
-       * @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);
-};
-
-/** Can signal event map making access to afb_event
- * external to openxc existing structure.
- */
-static std::map<std::string, struct afb_event> subscribed_signals;
-static std::map<std::string, struct afb_event>::iterator subscribed_signals_i;
+extern std::condition_variable new_can_frame;
+extern std::mutex can_frame_mutex;
\ No newline at end of file