diff options
Diffstat (limited to 'CAN-binder/low-can-binding/utils')
-rw-r--r-- | CAN-binder/low-can-binding/utils/openxc-utils.cpp | 20 | ||||
-rw-r--r-- | CAN-binder/low-can-binding/utils/openxc-utils.hpp | 3 |
2 files changed, 23 insertions, 0 deletions
diff --git a/CAN-binder/low-can-binding/utils/openxc-utils.cpp b/CAN-binder/low-can-binding/utils/openxc-utils.cpp index 08f1c8ab..1d3cd795 100644 --- a/CAN-binder/low-can-binding/utils/openxc-utils.cpp +++ b/CAN-binder/low-can-binding/utils/openxc-utils.cpp @@ -269,6 +269,26 @@ 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;} + else + {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 diff --git a/CAN-binder/low-can-binding/utils/openxc-utils.hpp b/CAN-binder/low-can-binding/utils/openxc-utils.hpp index 34ac3eb3..83d63797 100644 --- a/CAN-binder/low-can-binding/utils/openxc-utils.hpp +++ b/CAN-binder/low-can-binding/utils/openxc-utils.hpp @@ -37,6 +37,9 @@ const openxc_DynamicField build_DynamicField(const std::string& value); const openxc_DynamicField build_DynamicField(double value); const openxc_DynamicField build_DynamicField(bool value); +int get_bool_from_DynamicField(const openxc_VehicleMessage& v_msg, bool& ret); +double get_numerical_from_DynamicField(const openxc_VehicleMessage& v_msg); +const std::string get_string_from_DynamicField(const openxc_VehicleMessage& v_msg); const openxc_SimpleMessage get_simple_message(const openxc_VehicleMessage& v_msg); void jsonify_DynamicField(const openxc_DynamicField& field, json_object* value); |