Fix: force to pass a ref at threads launch
authorRomain Forlot <romain.forlot@iot.bzh>
Tue, 21 Feb 2017 13:21:59 +0000 (13:21 +0000)
committerRomain Forlot <romain.forlot@iot.bzh>
Wed, 22 Feb 2017 11:15:09 +0000 (12:15 +0100)
Change-Id: Ife4206d6f6dce6888157239cce56b0040e3d2cf4
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
src/CMakeLists.txt
src/can-signals.cpp
src/can-signals.hpp
src/can-utils.cpp
src/can_decode_message.cpp
src/can_event_push.cpp
src/can_reader.cpp
src/low-can-binding.hpp
src/obd2.cpp
src/obd2.hpp

index 4f95cce..b08dead 100644 (file)
@@ -65,7 +65,8 @@ link_libraries(${EXTRAS_LIBRARIES})
 
 message(STATUS "Creation of ${PROJECT_NAME} binding for AFB-DAEMON")
 ###########################################################################
-add_library(${PROJECT_NAME}-binding MODULE ${PROJECT_NAME}-binding.cpp can-signals.cpp can-utils.cpp obd2.cpp)
+add_library(${PROJECT_NAME}-binding MODULE ${PROJECT_NAME}-binding.cpp can-signals.cpp can-utils.cpp can_reader.cpp can_decode_message.cpp can_event_push.cpp openxc-utils.cpp timer.cpp)
+#add_library(${PROJECT_NAME}-binding MODULE ${PROJECT_NAME}-binding.cpp can-signals.cpp can-utils.cpp obd2.cpp)
 
 set_target_properties(${PROJECT_NAME}-binding PROPERTIES
        PREFIX ""
index c6a8ae9..0348268 100644 (file)
@@ -57,23 +57,4 @@ std::vector<CanSignal> find_can_signals(openxc_DynamicField& key)
                        break;
        }
        return signals;
-}
-
-       struct CanMessageDefinition* message;
-       const char* genericName;
-       uint8_t bitPosition;
-       uint8_t bitSize;
-       float factor;
-       float offset;
-       float minValue;
-       float maxValue;
-       FrequencyClock frequencyClock;
-       bool sendSame;
-       bool forceSendChanged;
-       const CanSignalState* states;
-       uint8_t stateCount;
-       bool writable;
-       SignalDecoder decoder;
-       SignalEncoder encoder;
-       bool received;
-       float lastValue;
\ No newline at end of file
+}
\ No newline at end of file
index 5e7e581..6d15d8b 100644 (file)
@@ -31,21 +31,12 @@ extern "C"
        #include <afb/afb-event-itf.h>
 }
 
-#define MESSAGE_SET_ID 0
-
-/** 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;
-
 /**
  * @brief Dumb SIGNALS array. It is composed by CanMessageSet
  * SIGNALS[MESSAGE_SET_ID][CanSignal]
  */
 std::vector<std::vector<CanSignal>> SIGNALS {
-       { // message set: example
-       }
+       {}// message set: example
 };
 
 /** Public: Return the currently active CAN configuration. */
index 55daf44..a156df4 100644 (file)
@@ -234,8 +234,8 @@ canfd_frame can_bus_dev_t::read(const struct afb_binding_interface* interface)
  */
 void can_bus_dev_t::start_reading()
 {
-       th_reading_ = std::thread(can_reader, *this);
-       is_running_ = true;
+       th_reading_ = std::thread(can_reader, std::ref(*this));
+       is_running_ = true;     is_running_ = true;
 }
 
 /*
@@ -339,8 +339,8 @@ can_bus_t::can_bus_t(const afb_binding_interface *itf, int& conf_file)
  */
 void can_bus_t::start_threads()
 {
-       th_decoding_ = std::thread(can_decode_message, *this);
-       th_pushing_ = std::thread(can_event_push, *this);
+       th_decoding_ = std::thread(can_decode_message, std::ref(*this));
+       th_pushing_ = std::thread(can_event_push, std::ref(*this));
 }
 
 /**
index f5f530e..46b2977 100644 (file)
  * limitations under the License.
  */
 
-#include "low-can-binding.hpp"
+#include "can_decode_message.hpp"
 
 void can_decode_message(can_bus_t &can_bus)
 {
-       can_message_t can_message;
-       std:vector <CanSignal> signals;
-       std:vector <CanSignal>::iterator signals_i;
+       can_message_t can_message(interface) ;
+       std::vector <CanSignal> signals;
+       std::vector <CanSignal>::iterator signals_i;
        openxc_VehicleMessage vehicle_message;
        openxc_DynamicField search_key, ret;
        bool send = true;
@@ -34,7 +34,7 @@ void can_decode_message(can_bus_t &can_bus)
                if(can_message = can_bus.next_can_message(interface))
                {
                        /* First we have to found which CanSignal is */
-                       search_key = build_DynamicField(openxc_DynamicField_Type::openxc_DynamicField_Type_NUM, (double)can_message.get_id())
+                       search_key = build_DynamicField((double)can_message.get_id())
                        signals = find_can_signals(search_key);
                        
                        /* Decoding the message ! Don't kill the messenger ! */
index bb69118..9251da6 100644 (file)
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-#include "low-can-binding.hpp"
+#include "can_event_push.hpp"
 
 void can_event_push(can_bus_t& can_bus)
 {
index 418e292..6fc1e74 100644 (file)
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-#include "low-can-binding.hpp"
+#include "can_reader.hpp"
 
 void can_reader(can_bus_dev_t &can_bus)
 {
index a46da6a..5c43ded 100644 (file)
@@ -39,7 +39,6 @@
 #include <linux/can/raw.h>
 #include <systemd/sd-event.h>
 
-#include "obd2.hpp"
 #include "timer.hpp"
 #include "openxc.pb.h"
 #include "can-utils.hpp"
@@ -47,6 +46,8 @@
 #include "can-decoder.hpp"
 #include "openxc-utils.hpp"
 
+#define MESSAGE_SET_ID 0
+
 /*
  *     Interface between the daemon and the binding
  */
@@ -87,4 +88,10 @@ extern "C"
        * @return Exit code, zero if success.
        */
        int afbBindingV1ServiceInit(struct afb_service service);
-};
\ No newline at end of file
+};
+
+/** 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;
index 25416cd..536df66 100644 (file)
  * limitations under the License.
  */
 
+#include "obd2.hpp"
 
-void shims_logger(afb_binding_interface *itf)
+void shims_logger(const char* m, const struct afb_binding_interface *interface)
 {
-       //DEBUG(itf, "dd");
+       DEBUG(interface, "%s", m);
 }
 
 void shims_timer()
@@ -28,15 +29,16 @@ void shims_timer()
 /*
  * Will scan for supported Obd2 pids
  */
-obd2_handler_t::obd2_handler_t(afb_binding_interface *itf, can_bus_t cb)
+obd2_handler_t::obd2_handler_t(const struct afb_binding_interface *interface, can_bus_t can_bus)
+       : can_bus_{can_bus}
 {
-       can_bus_t can_bus = cb;
-       DiagnosticShims shims = diagnostic_init_shims(shims_logger, can_bus.send_can_message, NULL);
+       can_bus_t can_bus_ = can_bus;
+       DiagnosticShims shims_ = diagnostic_init_shims(shims_logger, can_bus.send_can_message, NULL);
 
-       int n_pids, i;
+       int n_pids_, i_;
 
-       n_pids = size(Obd2Pid);
-       for(i=0; i<=n_pids; i++)
+       n_pids_ = size(Obd2Pid);
+       for(i_=0; i_<=n_pids_; i_++)
        {
        }
 }
index 42ba9fa..a1ba644 100644 (file)
  * limitations under the License.
  */
 
+ #pragma once
+
 #include <vector>
 #include "uds/uds.h"
+#include "can-utils.hpp"
+
 extern "C"
 {
        #include <afb/afb-binding.h>