diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-02-22 11:44:27 +0100 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-02-22 12:15:13 +0100 |
commit | 747d58ad84d230f6cf11ac818bab65019df83611 (patch) | |
tree | a7a6f84cac521fd181b8aec490260fda676f08cc | |
parent | cfd941effb1b2183f6d3f693496aadd45762523f (diff) |
No more warning about not defined functions
because of wrong header files inclusion.
Some variables are now accessible using functions
rather than using global variables that can not
be accessed through separated files.
Also fix timer returning function type.
Change-Id: I36138ff671c2537f595235273abaa34783be18e1
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
-rw-r--r-- | src/can-signals.cpp | 18 | ||||
-rw-r--r-- | src/can-signals.hpp | 37 | ||||
-rw-r--r-- | src/can-utils.cpp | 2 | ||||
-rw-r--r-- | src/can-utils.hpp | 3 | ||||
-rw-r--r-- | src/can_decode_message.cpp | 11 | ||||
-rw-r--r-- | src/can_decode_message.hpp | 5 | ||||
-rw-r--r-- | src/can_event_push.cpp | 1 | ||||
-rw-r--r-- | src/can_event_push.hpp | 4 | ||||
-rw-r--r-- | src/can_reader.cpp | 4 | ||||
-rw-r--r-- | src/can_reader.hpp | 1 | ||||
-rw-r--r-- | src/low-can-binding.cpp | 2 | ||||
-rw-r--r-- | src/low-can-binding.hpp | 6 | ||||
-rw-r--r-- | src/openxc-utils.cpp | 8 | ||||
-rw-r--r-- | src/openxc-utils.hpp | 4 | ||||
-rw-r--r-- | src/timer.cpp | 8 | ||||
-rw-r--r-- | src/timer.hpp | 2 |
16 files changed, 75 insertions, 41 deletions
diff --git a/src/can-signals.cpp b/src/can-signals.cpp index 1ccc7c3..ee682f9 100644 --- a/src/can-signals.cpp +++ b/src/can-signals.cpp @@ -17,6 +17,14 @@ #include "can-signals.hpp" +/** + * @brief Dumb SIGNALS array. It is composed by CanMessageSet + * SIGNALS[MESSAGE_SET_ID][CanSignal] + */ +std::vector<std::vector<CanSignal>> SIGNALS { + {}// message set: example +}; + const std::vector<CanSignal> getSignals() { return SIGNALS[MESSAGE_SET_ID]; @@ -57,4 +65,14 @@ std::vector<CanSignal> find_can_signals(const struct afb_binding_interface* inte break; } return signals; +} + +inline uint32_t get_CanSignal_id(const CanSignal& sig) +{ + return sig.message->id; +} + +const std::map<std::string, struct afb_event> get_subscribed_signals() +{ + return subscribed_signals; }
\ No newline at end of file diff --git a/src/can-signals.hpp b/src/can-signals.hpp index 3772486..e0fe223 100644 --- a/src/can-signals.hpp +++ b/src/can-signals.hpp @@ -32,13 +32,15 @@ extern "C" #define MESSAGE_SET_ID 0 -/** - * @brief Dumb SIGNALS array. It is composed by CanMessageSet - * SIGNALS[MESSAGE_SET_ID][CanSignal] +/** + * @brief Can signal event map making access to afb_event + * externaly to an openxc existing structure. + * + * @desc Event map is making relation between CanSignal generic name + * and the afb_event struct used by application framework to pushed + * to the subscriber. */ -std::vector<std::vector<CanSignal>> SIGNALS { - {}// message set: example -}; +static std::map<std::string, struct afb_event> subscribed_signals; /** Public: Return the currently active CAN configuration. */ CanMessageSet* getActiveMessageSet(); @@ -94,14 +96,25 @@ CanBus* getCanBuses(); * @brief Find one or many signals based on its name or id * passed through openxc_DynamicField. * - * params[openxc_DynamicField&] - a const reference with the key to search into signal. + * @param[in] openxc_DynamicField& - a const reference with the key to search into signal. * Key is either a signal name or its CAN arbitration id. * - * return[std::vector<std::string>] return found CanSignal generic name vector. + * @return std::vector<std::string> return found CanSignal generic name vector. */ std::vector<CanSignal> find_can_signals(const struct afb_binding_interface* interface, const openxc_DynamicField &key); -uint32_t get_CanSignal_id(const CanSignal& sig) -{ - return sig.message->id; -}
\ No newline at end of file +/** + * @brief Retrieve can arbitration id of a given CanSignal + * + * @param[in] CanSignal& - a const reference to a CanSignal + * + * @return uint32_t - unsigned integer representing the arbitration id. + */ +inline uint32_t get_CanSignal_id(const CanSignal& sig); + +/** + * @brief return the subscribed_signals map. + * + * return std::map<std::string, struct afb_event> - map of subscribed signals. + */ +const std::map<std::string, struct afb_event> get_subscribed_signals();
\ No newline at end of file diff --git a/src/can-utils.cpp b/src/can-utils.cpp index 868eb23..fb6025c 100644 --- a/src/can-utils.cpp +++ b/src/can-utils.cpp @@ -284,7 +284,7 @@ int can_bus_dev_t::send_can_message(can_message_t& can_msg, const struct afb_bin *********************************************************************************/ can_bus_t::can_bus_t(const struct afb_binding_interface *interface, int& conf_file) - : interface_{interface}, conf_file_{conf_file} + : conf_file_{conf_file}, interface_{interface} { } diff --git a/src/can-utils.hpp b/src/can-utils.hpp index c709af4..d945be4 100644 --- a/src/can-utils.hpp +++ b/src/can-utils.hpp @@ -147,7 +147,6 @@ class can_message_t { */ class can_bus_t { private: - const struct afb_binding_interface *interface_; int conf_file_; std::thread th_decoding_; @@ -160,6 +159,8 @@ class can_bus_t { std::queue <openxc_VehicleMessage> vehicle_message_q_; public: + const struct afb_binding_interface *interface_; + can_bus_t(const struct afb_binding_interface *itf, int& conf_file); int init_can_dev(); std::vector<std::string> read_conf(); diff --git a/src/can_decode_message.cpp b/src/can_decode_message.cpp index 126c4fa..8b087cf 100644 --- a/src/can_decode_message.cpp +++ b/src/can_decode_message.cpp @@ -20,7 +20,7 @@ void can_decode_message(can_bus_t &can_bus) { - can_message_t can_message(interface) ; + can_message_t can_message(can_bus.interface_) ; std::vector <CanSignal> signals; std::vector <CanSignal>::iterator signals_i; openxc_VehicleMessage vehicle_message; @@ -35,15 +35,16 @@ void can_decode_message(can_bus_t &can_bus) /* First we have to found which CanSignal is */ search_key = build_DynamicField((double)can_message.get_id()); - signals = find_can_signals(interface, search_key); + signals = find_can_signals(can_bus.interface_, search_key); /* Decoding the message ! Don't kill the messenger ! */ for(const auto& sig : signals) { - subscribed_signals_i = subscribed_signals.find(sig.genericName); + std::map<std::string, struct afb_event> subscribed_signals = get_subscribed_signals(); + const auto& it_event = subscribed_signals.find(sig.genericName); - if(subscribed_signals_i != subscribed_signals.end() && - afb_event_is_valid(subscribed_signals_i->second)) + if(it_event != subscribed_signals.end() && + afb_event_is_valid(it_event->second)) { ret = decoder.decodeSignal(sig, can_message, getSignals(), &send); diff --git a/src/can_decode_message.hpp b/src/can_decode_message.hpp index 833b992..118dac0 100644 --- a/src/can_decode_message.hpp +++ b/src/can_decode_message.hpp @@ -18,6 +18,9 @@ #pragma once -#include "low-can-binding.hpp" +#include "can-utils.hpp" +#include "openxc-utils.hpp" +#include "can-signals.hpp" +#include "can-decoder.hpp" void can_decode_message(can_bus_t &can_bus);
\ No newline at end of file diff --git a/src/can_event_push.cpp b/src/can_event_push.cpp index 07ae8d3..703a242 100644 --- a/src/can_event_push.cpp +++ b/src/can_event_push.cpp @@ -27,6 +27,7 @@ void can_event_push(can_bus_t& can_bus) { v_message = can_bus.next_vehicle_message(); s_message = get_simple_message(v_message); + std::map<std::string, struct afb_event> subscribed_signals = get_subscribed_signals(); const auto& it_event = subscribed_signals.find(s_message.name); if(it_event != subscribed_signals.end() && afb_event_is_valid(it_event->second)) afb_event_push(it_event->second, jsonify_simple(s_message)); diff --git a/src/can_event_push.hpp b/src/can_event_push.hpp index 787766e..7497a1c 100644 --- a/src/can_event_push.hpp +++ b/src/can_event_push.hpp @@ -18,6 +18,8 @@ #pragma once -#include "low-can-binding.hpp" +#include "can-utils.hpp" +#include "can-signals.hpp" +#include "openxc-utils.hpp" void can_event_push(can_bus_t& can_bus);
\ No newline at end of file diff --git a/src/can_reader.cpp b/src/can_reader.cpp index 4be1546..24bc600 100644 --- a/src/can_reader.cpp +++ b/src/can_reader.cpp @@ -20,11 +20,11 @@ void can_reader(can_bus_dev_t &can_bus_dev, can_bus_t& can_bus) { - can_message_t can_message(interface); + can_message_t can_message(can_bus.interface_); while(can_bus_dev.is_running()) { - can_message.convert_from_canfd_frame(can_bus_dev.read(interface)); + can_message.convert_from_canfd_frame(can_bus_dev.read(can_bus.interface_)); can_bus.push_new_can_message(can_message); } }
\ No newline at end of file diff --git a/src/can_reader.hpp b/src/can_reader.hpp index 2e33897..714a94d 100644 --- a/src/can_reader.hpp +++ b/src/can_reader.hpp @@ -19,6 +19,5 @@ #pragma once #include "can-utils.hpp" -#include "low-can-binding.hpp" void can_reader(can_bus_dev_t& can_bus_dev, can_bus_t& can_bus);
\ No newline at end of file diff --git a/src/low-can-binding.cpp b/src/low-can-binding.cpp index a335144..1812d81 100644 --- a/src/low-can-binding.cpp +++ b/src/low-can-binding.cpp @@ -96,7 +96,7 @@ static int subscribe_unsubscribe_all(struct afb_req request, bool subscribe) //for (const auto& sig : SIGNALS) // e += !subscribe_unsubscribe_signals(request, subscribe, sig); - e += !subscribe_unsubscribe_signals(request, subscribe, SIGNALS[MESSAGE_SET_ID]); + e += !subscribe_unsubscribe_signals(request, subscribe, getSignals()); return e == 0; } diff --git a/src/low-can-binding.hpp b/src/low-can-binding.hpp index a1d3169..6927826 100644 --- a/src/low-can-binding.hpp +++ b/src/low-can-binding.hpp @@ -87,9 +87,3 @@ extern "C" */ 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; diff --git a/src/openxc-utils.cpp b/src/openxc-utils.cpp index 5f001d4..cef8681 100644 --- a/src/openxc-utils.cpp +++ b/src/openxc-utils.cpp @@ -16,11 +16,6 @@ * limitations under the License. */ -#include <string> -#include <json-c/json.h> -#include <sys/timeb.h> - -#include "openxc.pb.h" #include "openxc-utils.hpp" openxc_VehicleMessage build_VehicleMessage_with_SimpleMessage(openxc_DynamicField_Type type, const openxc_SimpleMessage& message) @@ -115,6 +110,9 @@ openxc_SimpleMessage get_simple_message(const openxc_VehicleMessage& v_msg) { if (v_msg.has_simple_message) return v_msg.simple_message; + + openxc_SimpleMessage s_msg = { true, "", false, build_DynamicField(false), false, build_DynamicField(false)}; + return s_msg; } json_object* jsonify_simple(const openxc_SimpleMessage& s_msg) diff --git a/src/openxc-utils.hpp b/src/openxc-utils.hpp index c261443..ad2d1c5 100644 --- a/src/openxc-utils.hpp +++ b/src/openxc-utils.hpp @@ -18,6 +18,10 @@ #pragma once +#include <string> +#include <json-c/json.h> +#include <sys/timeb.h> + #include "openxc.pb.h" /** diff --git a/src/timer.cpp b/src/timer.cpp index b0ccb62..01fd763 100644 --- a/src/timer.cpp +++ b/src/timer.cpp @@ -17,15 +17,15 @@ #include "timer.hpp" -inline unsigned long systemTimeMs() +long long int systemTimeMs() { struct timeb t_msec; - unsigned long int timestamp_msec; + long long int timestamp_msec; if(!::ftime(&t_msec)) { - timestamp_msec = ((unsigned long int) t_msec.time) * 1000ll + - (unsigned long int) t_msec.millitm; + timestamp_msec = (t_msec.time) * 1000ll + + t_msec.millitm; } return timestamp_msec; }
\ No newline at end of file diff --git a/src/timer.hpp b/src/timer.hpp index 798baa2..0454a80 100644 --- a/src/timer.hpp +++ b/src/timer.hpp @@ -19,7 +19,7 @@ #include <sys/timeb.h> -typedef unsigned long (*TimeFunction)(); +typedef long long int (*TimeFunction)(); /** * @brief: A frequency counting clock. |