X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fopenxc-utils.cpp;h=bbea968d105b6385386c5a3cbaeee6646bc5ee87;hb=5c0c41e87ed5d1a2de7d336465c3beb3987a299f;hp=b53a5eb38ea7167f9f6beaa69c688b933b7d9f7e;hpb=c8a9ae83b95b3105717c58e390ba216567937772;p=apps%2Fagl-service-can-low-level.git diff --git a/src/openxc-utils.cpp b/src/openxc-utils.cpp index b53a5eb3..bbea968d 100644 --- a/src/openxc-utils.cpp +++ b/src/openxc-utils.cpp @@ -16,20 +16,21 @@ * limitations under the License. */ -openxc_VehicleMessage build_VehicleMessage_with_SimpleMessage(openxc_DynamicField_Type type, - const openxc_SimpleMessage& message) +#include "openxc-utils.hpp" + +openxc_VehicleMessage build_VehicleMessage_with_SimpleMessage(openxc_DynamicField_Type type, const openxc_SimpleMessage& message) { struct timeb t_msec; long long int timestamp_msec; - openxc_VehicleMessage v = {0}; + openxc_VehicleMessage v; - if(!ftime(&t_msec)) + if(!::ftime(&t_msec)) { timestamp_msec = ((long long int) t_msec.time) * 1000ll + (long long int) t_msec.millitm; - v.has_type = true: + v.has_type = true; v.type = openxc_VehicleMessage_Type::openxc_VehicleMessage_Type_SIMPLE; v.has_simple_message = true; v.simple_message = message; @@ -49,7 +50,7 @@ openxc_VehicleMessage build_VehicleMessage_with_SimpleMessage(openxc_DynamicFiel openxc_SimpleMessage build_SimpleMessage(const std::string& name, const openxc_DynamicField& value) { - openxc_SimpleMessage s = {0}; + openxc_SimpleMessage s; s.has_name = true; ::strncpy(s.name, name.c_str(), 100); @@ -61,41 +62,50 @@ openxc_SimpleMessage build_SimpleMessage(const std::string& name, const openxc_D openxc_DynamicField build_DynamicField(const std::string& value) { - openxc_DynamicField d = {0} + openxc_DynamicField d; d.has_type = true; d.type = openxc_DynamicField_Type_STRING; d.has_string_value = true; - ::strncpy(d.string_value, value.c_tr(), 100); + ::strncpy(d.string_value, value.c_str(), 100); return d; } openxc_DynamicField build_DynamicField(double value) { - openxc_DynamicField d = {0} + openxc_DynamicField d; d.has_type = true; d.type = openxc_DynamicField_Type_NUM; d.has_numeric_value = true; - d.numeric_value = field; + d.numeric_value = value; return d; } openxc_DynamicField build_DynamicField(bool value) { - openxc_DynamicField d = {0} + openxc_DynamicField d; d.has_type = true; d.type = openxc_DynamicField_Type_BOOL; d.has_boolean_value = true; - d.boolean_value = field; + d.boolean_value = value; return d; } -void jsonify_DynamicField(const openxc_DynamicField& field, const json_object& value) +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 = { false, "", false, build_DynamicField(false), false, build_DynamicField(false)}; + return s_msg; +} + +void jsonify_DynamicField(const openxc_DynamicField& field, json_object* value) { if(field.has_numeric_value) json_object_object_add(value, "value", json_object_new_double(field.numeric_value)); @@ -103,25 +113,17 @@ void jsonify_DynamicField(const openxc_DynamicField& field, const json_object& v json_object_object_add(value, "value", json_object_new_boolean(field.boolean_value)); else if(field.has_string_value) json_object_object_add(value, "value", json_object_new_string(field.string_value)); - - return value; -} - -openxc_SimpleMessage get_simple_message(const openxc_VehicleMessage& v_msg) -{ - return v_msg.has_simple_message ? v_msg.simple_message : {0}; } -json_object jsonify_simple(const openxc_SimpleMessage& s_msg) +bool jsonify_simple(const openxc_SimpleMessage& s_msg, json_object* json) { - json_object *json; - json = nullptr; - - if(s_msg->has_name) + if(s_msg.has_name) { json = json_object_new_object(); - json_object_object_add(json, "name", json_object_new_string(s_msg->name)); - jsonify_DynamicField(&s_msg->value, json); + json_object_object_add(json, "name", json_object_new_string(s_msg.name)); + jsonify_DynamicField(s_msg.value, json); + return true; } - return json; + json_object_object_add(json, "error", json_object_new_string("openxc_SimpleMessage doesn't have name'")); + return false; } \ No newline at end of file