X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fcan_event_push.cpp;h=07ae8d3c5e84f54c54dd89ae97c390373bf40cfa;hb=cddc9c28e3e1a242e55f68c9971d0710ada30e9f;hp=3964f97cc2d572d507cb12893a4e7597ecdee00c;hpb=f97e5f6d0b15df8fe8c7a4621e40c6a23bbac137;p=apps%2Fagl-service-can-low-level.git diff --git a/src/can_event_push.cpp b/src/can_event_push.cpp index 3964f97c..07ae8d3c 100644 --- a/src/can_event_push.cpp +++ b/src/can_event_push.cpp @@ -16,64 +16,19 @@ * limitations under the License. */ -#include -#include -#include - -#include - -#include "can-utils.h" -#include "openxc.pb.h" -#include "json-c/json.h" +#include "can_event_push.hpp" void can_event_push(can_bus_t& can_bus) { openxc_VehicleMessage v_message; openxc_SimpleMessage s_message; - iterator it_event; - - while(true) + + while(can_bus.has_vehicle_message()) { - if(v_message = can_bus->next_vehicle_message()) - { - s_message = get_simple_message(v_msg); - const auto& it_event = subscribed_signals.find(s_msg.name); - if(! it_event->end() && afb_event_is_valid(it_event->second)) - afb_event_push(it_event->second, jsonify_simple(s_msg)); - } + v_message = can_bus.next_vehicle_message(); + s_message = get_simple_message(v_message); + 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)); } } - -void jsonify_DynamicField(const openxc_DynamicField& field, const json_object& value) -{ - if(field.has_numeric_value) - json_object_object_add(value, "value", json_object_new_double(field.numeric_value)); - else if(field.has_boolean_value) - 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; -} - -/* Extract the simple message value from an openxc_VehicleMessage - * and return it, or null if there isn't. - */ -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) -{ - json_object *json; - json = nullptr; - - 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); - } - return json; -} \ No newline at end of file