X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fcan_event_push.cpp;h=d3f4cbd6135a73050c60a8d1e21c1517a8ccc4e4;hb=c8a9ae83b95b3105717c58e390ba216567937772;hp=a59aba7508cd03f4c0326d728a3c4480940056d1;hpb=ec95cbf8d430f9616eff050f510268f9901944b6;p=apps%2Fagl-service-can-low-level.git diff --git a/src/can_event_push.cpp b/src/can_event_push.cpp index a59aba75..d3f4cbd6 100644 --- a/src/can_event_push.cpp +++ b/src/can_event_push.cpp @@ -23,13 +23,14 @@ #include #include "can-utils.h" +#include "openxc-utils.hpp" #include "openxc.pb.h" #include "json-c/json.h" -void can_event_push(can_bus_t *can_bus) +void can_event_push(can_bus_t& can_bus) { - openxc_VehicleMessage *v_message; - openxc_SimpleMessage *s_message; + openxc_VehicleMessage v_message; + openxc_SimpleMessage s_message; iterator it_event; while(true) @@ -37,45 +38,9 @@ void can_event_push(can_bus_t *can_bus) if(v_message = can_bus->next_vehicle_message()) { s_message = get_simple_message(v_msg); - it_event = event_map.find(s_msg->name); - afb_event_push(it_event->second, jsonify_simple(s_msg)); + const auto& it_event = subscribed_signals.find(s_message.name); + if(! it_event->end() && afb_event_is_valid(it_event->second)) + afb_event_push(it_event->second, jsonify_simple(s_message)); } } } - -void jsonify_DynamicField(openxc_DynamicField *field, 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(openxc_VehicleMessage *v_msg) -{ - if(v_msg->has_simple_message) - return v_msg->simple_message; - - return nullptr; -} - -json_object* jsonify_simple(openxc_SimpleMessage *s_msg) -{ - json_object *json; - json = json_object_new_object(); - - if(!s_msg->has_name) - return nullptr; - - 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