+ return low_can_subscription_t::isotp_send(*cd[bus_name], message, bus_name);
+ }
+#endif
+#ifdef USE_FEATURE_J1939
+ else if(flags&J1939_PROTOCOL)
+ {
+ return low_can_subscription_t::j1939_send(*cd[bus_name], message, bus_name);
+ }
+#endif
+ else
+ {
+ return -1;
+ }
+}
+
+
+static void write_raw_frame(afb_req_t request, const std::string& bus_name, message_t *message,
+ struct json_object *can_data, uint32_t flags, event_filter_t &event_filter)
+{
+
+ struct utils::signals_found sf;
+
+ utils::signals_manager_t::instance().lookup_signals_by_id(message->get_id(), application_t::instance().get_all_signals(), sf.signals);
+
+ if( !sf.signals.empty() )
+ {
+ AFB_DEBUG("ID WRITE RAW : %d",sf.signals.front()->get_message()->get_id());
+ if(flags & BCM_PROTOCOL)
+ {
+ if(sf.signals.front()->get_message()->is_fd())
+ {
+ AFB_DEBUG("CANFD_MAX_DLEN");
+ message->set_flags(CAN_FD_FRAME);
+ message->set_maxdlen(CANFD_MAX_DLEN);
+ }
+ else
+ {
+ AFB_DEBUG("CAN_MAX_DLEN");
+ message->set_maxdlen(CAN_MAX_DLEN);
+ }
+
+ if(sf.signals.front()->get_message()->is_isotp())
+ {
+ flags = ISOTP_PROTOCOL;
+ message->set_maxdlen(MAX_ISOTP_FRAMES * message->get_maxdlen());
+ }
+ }
+
+#ifdef USE_FEATURE_J1939
+ if(flags&J1939_PROTOCOL)