X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=low-can-binding%2Fbinding%2Flow-can-cb.cpp;h=3037994a8348a9e334f03ebb6931e727cdd3e452;hb=04b7efcdd1a8dfdf461c78d083aabee5445e54bd;hp=afc9c3ebea8e376126fc2da245269e39eee033ae;hpb=7188915081966da4124a457da99354beefa7dbad;p=apps%2Fagl-service-can-low-level.git diff --git a/low-can-binding/binding/low-can-cb.cpp b/low-can-binding/binding/low-can-cb.cpp index afc9c3eb..3037994a 100644 --- a/low-can-binding/binding/low-can-cb.cpp +++ b/low-can-binding/binding/low-can-cb.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -64,6 +65,7 @@ int config_low_can(afb_api_t apiHandle, CtlSectionT *section, json_object *json_ application_t *application = (application_t*) ctrlConfig->external; int active_message_set; + json_object *dev_mapping = nullptr; const char *diagnotic_bus = nullptr; if(wrap_json_unpack(json_obj, "{si, ss}", @@ -73,6 +75,12 @@ int config_low_can(afb_api_t apiHandle, CtlSectionT *section, json_object *json_ application->set_active_message_set((uint8_t)active_message_set); + if(wrap_json_unpack(json_obj, "{so}", + "dev-mapping", &dev_mapping)) + return -1; + + application->get_can_bus_manager().set_can_devices(dev_mapping); + /// Initialize Diagnostic manager that will handle obd2 requests. /// We pass by default the first CAN bus device to its Initialization. if(! application_t::instance().get_diagnostic_manager().initialize(diagnotic_bus)) @@ -93,6 +101,10 @@ CtlSectionT ctlSections_[] = { .loadCB=PluginConfig, .handle=nullptr, .actions=nullptr}, + [2]={.key=nullptr , .uid=nullptr, .info=nullptr, + .loadCB=nullptr, + .handle=nullptr, + .actions=nullptr}, }; ///***************************************************************************** @@ -522,7 +534,7 @@ static int send_message(message_t *message, const std::string& bus_name, uint32_ cd[bus_name]->set_signal(signal); - if(flags&BCM_PROTOCOL) + if(flags&CAN_PROTOCOL) return low_can_subscription_t::tx_send(*cd[bus_name], message, bus_name); #ifdef USE_FEATURE_ISOTP else if(flags&ISOTP_PROTOCOL) @@ -548,12 +560,12 @@ static void write_raw_frame(afb_req_t request, const std::string& bus_name, mess if( !sf.signals.empty() ) { AFB_DEBUG("ID WRITE RAW : %d", sf.signals.front()->get_message()->get_id()); - if(flags & BCM_PROTOCOL) + if(flags & CAN_PROTOCOL) { if(sf.signals.front()->get_message()->is_fd()) { AFB_DEBUG("CANFD_MAX_DLEN"); - message->set_flags(CAN_FD_FRAME); + message->set_flags(CAN_PROTOCOL_WITH_FD_FRAME); message->set_maxdlen(CANFD_MAX_DLEN); } else @@ -587,7 +599,7 @@ static void write_raw_frame(afb_req_t request, const std::string& bus_name, mess } else { - if(flags&BCM_PROTOCOL) + if(flags&CAN_PROTOCOL) afb_req_fail(request, "Invalid", "Frame BCM"); else if(flags&J1939_PROTOCOL) afb_req_fail(request, "Invalid", "Frame J1939"); @@ -627,7 +639,7 @@ static void write_frame(afb_req_t request, const std::string& bus_name, json_obj "can_data", &can_data)) { message = new can_message_t(0, id, length, false, 0, data, 0); - write_raw_frame(request, bus_name, message, can_data, BCM_PROTOCOL, event_filter); + write_raw_frame(request, bus_name, message, can_data, CAN_PROTOCOL, event_filter); } #ifdef USE_FEATURE_J1939 else if(!wrap_json_unpack(json_value, "{si, si, so !}", @@ -684,7 +696,7 @@ static void write_signal(afb_req_t request, const std::string& name, json_object else if(sig->get_message()->is_isotp()) flags = ISOTP_PROTOCOL; else - flags = BCM_PROTOCOL; + flags = CAN_PROTOCOL; // cfd = encoder_t::build_frame(sig, value); message_t *message = encoder_t::build_message(sig, value, false, false); @@ -862,8 +874,6 @@ int init_binding(afb_api_t api) return -1; } - - can_bus_manager.set_can_devices(); can_bus_manager.start_threads(); utils::signals_manager_t& sm = utils::signals_manager_t::instance();