X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=CAN-binder%2Flow-can-binding%2Futils%2Fopenxc-utils.cpp;h=08f1c8ab3d8733e33f4e2fb74bd6a549bbd6b746;hb=5bb0cc7268f47575b46baa1d7590f2727e8e193d;hp=a597f1caec003fb7d15241fda2c7aa39ae35de5f;hpb=12e680a3c97a2750c657a8c561a79706f3689149;p=apps%2Flow-level-can-service.git diff --git a/CAN-binder/low-can-binding/utils/openxc-utils.cpp b/CAN-binder/low-can-binding/utils/openxc-utils.cpp index a597f1c..08f1c8a 100644 --- a/CAN-binder/low-can-binding/utils/openxc-utils.cpp +++ b/CAN-binder/low-can-binding/utils/openxc-utils.cpp @@ -18,7 +18,7 @@ #include "openxc-utils.hpp" -#include "../configuration.hpp" +#include "../binding/application.hpp" /// /// @brief Build a specific VehicleMessage containing a DiagnosticResponse. @@ -31,15 +31,17 @@ /// @return a vehicle message including simple message that will be convert into /// a JSON object before being pushed to the subscribers /// -openxc_VehicleMessage build_VehicleMessage(active_diagnostic_request_t* request, const DiagnosticResponse& response, float parsed_value) +const openxc_VehicleMessage build_VehicleMessage(active_diagnostic_request_t* request, const DiagnosticResponse& response, float parsed_value) { openxc_VehicleMessage message; + application_t& app = application_t::instance(); message.has_type = true; message.type = openxc_VehicleMessage_Type::openxc_VehicleMessage_Type_DIAGNOSTIC; message.has_diagnostic_response = true; message.diagnostic_response.has_bus = true; - message.diagnostic_response.bus = configuration_t::instance().get_diagnostic_manager().get_can_bus_dev()->get_index(); + message.diagnostic_response.bus = app.get_can_bus_manager().get_can_device_index( + app.get_diagnostic_manager().get_bus_name()); message.diagnostic_response.has_message_id = true; if(request->get_id() != OBD2_FUNCTIONAL_BROADCAST_ID) @@ -84,6 +86,28 @@ openxc_VehicleMessage build_VehicleMessage(active_diagnostic_request_t* request, return message; } +/// +/// @brief Build a specific VehicleMessage containing a SimpleMessage with associated timestamp +/// +/// @param[in] message - simple message to include into openxc_VehicleMessage +/// @param[in] timestamp - timestamp from ioctl when reading the socket +/// +/// @return a vehicle message including simple message that will be convert into +/// a JSON object before being pushed to the subscribers +/// +const openxc_VehicleMessage build_VehicleMessage(const openxc_SimpleMessage& message, uint64_t timestamp) +{ + openxc_VehicleMessage v; + + v.has_type = true, + v.type = openxc_VehicleMessage_Type::openxc_VehicleMessage_Type_SIMPLE; + v.has_simple_message = true; + v.simple_message = message; + v.has_timestamp = true; + v.timestamp = timestamp; + + return v; +} /// /// @brief Build a specific VehicleMessage containing a SimpleMessage. @@ -93,7 +117,7 @@ openxc_VehicleMessage build_VehicleMessage(active_diagnostic_request_t* request, /// @return a vehicle message including simple message that will be convert into /// a JSON object before being pushed to the subscribers /// -openxc_VehicleMessage build_VehicleMessage(const openxc_SimpleMessage& message) +const openxc_VehicleMessage build_VehicleMessage(const openxc_SimpleMessage& message) { openxc_VehicleMessage v; @@ -102,7 +126,7 @@ openxc_VehicleMessage build_VehicleMessage(const openxc_SimpleMessage& message) v.has_simple_message = true; v.simple_message = message; v.has_timestamp = true; - v.timestamp = system_time_ms(); + v.timestamp = system_time_us(); return v; } @@ -145,7 +169,7 @@ bool is_valid(const openxc_VehicleMessage& v) /// /// @return an openxc_SimpleMessage struct initialized with name and value provided. /// -openxc_SimpleMessage build_SimpleMessage(const std::string& name, const openxc_DynamicField& value) +const openxc_SimpleMessage build_SimpleMessage(const std::string& name, const openxc_DynamicField& value) { openxc_SimpleMessage s; @@ -165,7 +189,29 @@ openxc_SimpleMessage build_SimpleMessage(const std::string& name, const openxc_D /// /// @return openxc_DynamicField initialized with a string value. /// -openxc_DynamicField build_DynamicField(const std::string& value) +const openxc_DynamicField build_DynamicField(const char* value) +{ + openxc_DynamicField d; + d.has_type = true; + d.type = openxc_DynamicField_Type_STRING; + + d.has_string_value = true; + d.has_numeric_value = false; + d.has_boolean_value = false; + ::strncpy(d.string_value, value, 100); + + return d; +} + +/// +/// @brief Build an openxc_DynamicField with a string value +/// +/// @param[in] value - const string reference value to assign to builded +/// openxc_DynamicField. +/// +/// @return openxc_DynamicField initialized with a string value. +/// +const openxc_DynamicField build_DynamicField(const std::string& value) { openxc_DynamicField d; d.has_type = true; @@ -188,7 +234,7 @@ openxc_DynamicField build_DynamicField(const std::string& value) /// /// @return openxc_DynamicField initialized with a double value. /// -openxc_DynamicField build_DynamicField(double value) +const openxc_DynamicField build_DynamicField(double value) { openxc_DynamicField d; d.has_type = true; @@ -209,7 +255,7 @@ openxc_DynamicField build_DynamicField(double value) /// /// @return openxc_DynamicField initialized with a boolean value. /// -openxc_DynamicField build_DynamicField(bool value) +const openxc_DynamicField build_DynamicField(bool value) { openxc_DynamicField d; d.has_type = true; @@ -233,7 +279,7 @@ openxc_DynamicField build_DynamicField(bool value) /// /// @return A simpleMessage from the provided VehicleMessage. /// -openxc_SimpleMessage get_simple_message(const openxc_VehicleMessage& v_msg) +const openxc_SimpleMessage get_simple_message(const openxc_VehicleMessage& v_msg) { if (v_msg.has_simple_message) return v_msg.simple_message;