Update build and package configuration file.
[apps/agl-service-can-low-level.git] / CAN-binder / low-can-binding / utils / openxc-utils.cpp
index 27c2509..f39f418 100644 (file)
 const openxc_VehicleMessage build_VehicleMessage(active_diagnostic_request_t* request, const DiagnosticResponse& response, float parsed_value)
 {
        openxc_VehicleMessage message;
-       application_t& conf = application_t::instance();
+       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 = conf.get_can_bus_manager().get_can_device_index(
-                                                                                                                               conf.get_diagnostic_manager().get_bus_name());
+       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)
@@ -87,9 +87,10 @@ const openxc_VehicleMessage build_VehicleMessage(active_diagnostic_request_t* re
        return message;
 }
 ///
-/// @brief Build a specific VehicleMessage containing a SimpleMessage.
+/// @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
@@ -180,6 +181,28 @@ const openxc_SimpleMessage build_SimpleMessage(const std::string& name, const op
        return s;
 }
 
+///
+/// @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 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
 ///
@@ -246,6 +269,29 @@ const openxc_DynamicField build_DynamicField(bool value)
        return d;
 }
 
+int get_bool_from_DynamicField(const openxc_VehicleMessage& v_msg, bool* ret)
+{
+       if(v_msg.has_simple_message && v_msg.simple_message.has_value && v_msg.simple_message.value.has_boolean_value)
+       {
+               *ret = v_msg.simple_message.value.boolean_value;
+               return 0;
+       }
+
+       return -1;
+}
+
+double get_numerical_from_DynamicField(const openxc_VehicleMessage& v_msg)
+{
+       return (v_msg.has_simple_message && v_msg.simple_message.has_value && v_msg.simple_message.value.has_numeric_value) ?
+               v_msg.simple_message.value.numeric_value : -1.0;
+}
+
+const std::string get_string_from_DynamicField(const openxc_VehicleMessage& v_msg)
+{
+return (v_msg.has_simple_message && v_msg.simple_message.has_value && v_msg.simple_message.value.has_string_value) ?
+               v_msg.simple_message.value.string_value : "";
+}
+
 ///
 /// @brief Extract the simple message value from an openxc_VehicleMessage
 ///  and return it. If there isn't SimpleMessage in the VehicleMessage then