X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fcan_event_push.cpp;h=2842c63083a2b54d58d32133ebcdc770957d214c;hb=836feaecd602e86ea6d954ae018a2d7bbc04aa7a;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..2842c630 100644 --- a/src/can_event_push.cpp +++ b/src/can_event_push.cpp @@ -16,66 +16,25 @@ * limitations under the License. */ -#include -#include -#include +#include "can_event_push.hpp" -#include - -#include "can-utils.h" -#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; - iterator it_event; - - while(true) + openxc_VehicleMessage v_message; + openxc_SimpleMessage s_message; + json_object* jo; + + while(can_bus.has_vehicle_message()) { - if(v_message = can_bus->next_vehicle_message()) + v_message = can_bus.next_vehicle_message(); + s_message = get_simple_message(v_message); + std::map subscribed_signals = get_subscribed_signals(); + const auto& it_event = subscribed_signals.find(s_message.name); + if(it_event != subscribed_signals.end() && afb_event_is_valid(it_event->second)) { - 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)); + jo = json_object_new_object(); + jsonify_simple(s_message, jo); + afb_event_push(it_event->second, jo); } } -} - -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