- if( signal_ != nullptr)
- {ret = socket_->open(signal_->get_message()->get_bus_device_name());}
- else if (! diagnostic_message_ .empty())
- {ret = socket_->open(application_t::instance().get_diagnostic_manager().get_bus_device_name());}
- else if ( ! bus_name.empty())
- { ret = socket_->open(bus_name);}
- index_ = (int)socket_->socket();
+
+ #ifdef USE_FEATURE_J1939
+ if((subscription.signal_ != nullptr || !bus_name.empty()) && subscription.signal_->get_message()->is_j1939())
+ {
+ name_t name = J1939_NO_NAME;
+ pgn_t pgn = J1939_NO_PGN;
+ uint8_t addr = J1939_NO_ADDR;
+ pgn = subscription.signal_->get_message()->get_id();
+ if( subscription.signal_ != nullptr)
+ {
+ std::shared_ptr<utils::socketcan_j1939_t> socket = std::make_shared<utils::socketcan_j1939_t>();
+ ret = socket->open(subscription.signal_->get_message()->get_bus_device_name(), name, pgn, addr);
+ subscription.socket_ = socket;
+ }
+ else if ( !bus_name.empty())
+ {
+ std::shared_ptr<utils::socketcan_j1939_t> socket = std::make_shared<utils::socketcan_j1939_t>();
+ ret = socket->open(bus_name, name, pgn, addr);
+ subscription.socket_ = socket;
+ }
+ subscription.index_ = (int)subscription.socket_->socket();
+ }
+ else
+ {
+ #endif
+ if( subscription.signal_ != nullptr)
+ {
+ subscription.socket_ = std::make_shared<utils::socketcan_bcm_t>();
+ ret = subscription.socket_->open(subscription.signal_->get_message()->get_bus_device_name());
+ }
+ else if (! subscription.diagnostic_message_ .empty())
+ {
+ subscription.socket_ = std::make_shared<utils::socketcan_bcm_t>();
+ ret = subscription.socket_->open(application_t::instance().get_diagnostic_manager().get_bus_device_name());
+ }
+ else if ( !bus_name.empty())
+ {
+ subscription.socket_ = std::make_shared<utils::socketcan_bcm_t>();
+ ret = subscription.socket_->open(bus_name);
+ }
+ subscription.index_ = (int)subscription.socket_->socket();
+ #ifdef USE_FEATURE_J1939
+ }
+ #endif