X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=CAN-binder%2Flow-can-binding%2Fbinding%2Flow-can-cb.cpp;h=8141c3d3c4c33c3073942f556f05d553bb0193ee;hb=eafde4cec4fc026444501ed3a096a12e6eb8fc90;hp=9aa234063bf064e127cd5bb434fdfa294caeaeb7;hpb=c3c61544e91bf456ffbda96df4f5fff45d1bc12f;p=apps%2Flow-level-can-service.git diff --git a/CAN-binder/low-can-binding/binding/low-can-cb.cpp b/CAN-binder/low-can-binding/binding/low-can-cb.cpp index 9aa2340..8141c3d 100644 --- a/CAN-binder/low-can-binding/binding/low-can-cb.cpp +++ b/CAN-binder/low-can-binding/binding/low-can-cb.cpp @@ -27,7 +27,7 @@ #include #include "openxc.pb.h" -#include "configuration.hpp" +#include "application.hpp" #include "../can/can-bus.hpp" #include "../can/can-signals.hpp" #include "../can/can-message.hpp" @@ -50,9 +50,11 @@ void on_no_clients(std::string message) if( adr != nullptr) configuration_t::instance().get_diagnostic_manager().cleanup_request(adr, true); } + delete diag_req; + diag_req = nullptr; } -static void push_n_notify(const can_message_t cm) +static void push_n_notify(const can_message_t& cm) { can_bus_t& cbm = configuration_t::instance().get_can_bus_manager(); std::lock_guard can_message_lock(cbm.get_can_message_mutex()); @@ -181,14 +183,15 @@ static int subscribe_unsubscribe_signal(struct afb_req request, bool subscribe, /// static int subscribe_unsubscribe_signals(struct afb_req request, bool subscribe, const struct utils::signals_found& signals) { - int ret, rets = 0; + int rets = 0; //TODO: Implement way to dynamically call the right function no matter // how much signals types we have. - configuration_t& conf = configuration_t::instance(); + application_t& conf = application_t::instance(); for(const auto& sig : signals.diagnostic_messages) { + int ret = 0; diagnostic_manager_t& diag_m = conf.get_diagnostic_manager(); DiagnosticRequest* diag_req = conf.get_request_from_diagnostic_message(sig->get_name()); @@ -206,6 +209,8 @@ static int subscribe_unsubscribe_signals(struct afb_req request, bool subscribe, diag_m.cleanup_request( diag_m.find_recurring_request(diag_req), true); WARNING(binder_interface, "%s: signal: %s isn't supported. Canceling operation.", __FUNCTION__, sig->get_name().c_str()); + delete diag_req; + diag_req = nullptr; return -1; } @@ -295,6 +300,8 @@ static const std::map parse_args_from_reques args = afb_req_json(request); if (args == NULL || !json_object_object_get_ex(args, "event", &event)) { + event = json_object_new_string("*"); + parse_filter(event, &event_filter); ret["*"] = event_filter; } else if (json_object_get_type(event) != json_type_array)