MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / setupCanbusConnection

Method setupCanbusConnection

app/src/Misc/CLI.cpp:1061–1108  ·  view source on GitHub ↗

* @brief Configures and connects a CAN bus from CLI options. */

Source from the content-addressed store, hash-verified

1059 * @brief Configures and connects a CAN bus from CLI options.
1060 */
1061void CLI::setupCanbusConnection()
1062{
1063 const QStringList parts = m_parser.value(m_opts.canbusOpt).split(':');
1064 if (parts.size() != 2) {
1065 qWarning() << "Invalid CAN bus format. Expected: plugin:interface";
1066 return;
1067 }
1068
1069 const QString plugin = parts[0].toLower();
1070 const QString interfaceName = parts[1];
1071
1072 IO::ConnectionManager::instance().setBusType(SerialStudio::BusType::CanBus);
1073
1074 const QStringList availablePlugins = IO::ConnectionManager::instance().canBus()->pluginList();
1075 const int pluginIndex = availablePlugins.indexOf(plugin);
1076 if (pluginIndex < 0) {
1077 qWarning() << "CAN plugin" << plugin << "not found";
1078 qWarning() << "Available plugins:" << availablePlugins.join(", ");
1079 return;
1080 }
1081
1082 IO::ConnectionManager::instance().canBus()->setPluginIndex(pluginIndex);
1083 const QStringList availableInterfaces =
1084 IO::ConnectionManager::instance().canBus()->interfaceList();
1085 const int interfaceIndex = availableInterfaces.indexOf(interfaceName);
1086
1087 if (interfaceIndex < 0) {
1088 qWarning() << "CAN interface" << interfaceName << "not found for plugin" << plugin;
1089 qWarning() << "Available interfaces:" << availableInterfaces.join(", ");
1090 return;
1091 }
1092
1093 IO::ConnectionManager::instance().canBus()->setInterfaceIndex(interfaceIndex);
1094
1095 if (m_parser.isSet(m_opts.canbusBitrateOpt)) {
1096 bool ok;
1097 quint32 bitrate = m_parser.value(m_opts.canbusBitrateOpt).toUInt(&ok);
1098 if (ok && bitrate > 0)
1099 IO::ConnectionManager::instance().canBus()->setBitrate(bitrate);
1100 else
1101 qWarning() << "Invalid CAN bus bitrate:" << m_parser.value(m_opts.canbusBitrateOpt);
1102 }
1103
1104 if (m_parser.isSet(m_opts.canbusFdOpt))
1105 IO::ConnectionManager::instance().canBus()->setCanFD(true);
1106
1107 IO::ConnectionManager::instance().connectDevice();
1108}
1109
1110#else
1111

Callers

nothing calls this directly

Calls 12

pluginListMethod · 0.80
canBusMethod · 0.80
interfaceListMethod · 0.80
connectDeviceMethod · 0.80
valueMethod · 0.45
sizeMethod · 0.45
setBusTypeMethod · 0.45
indexOfMethod · 0.45
setPluginIndexMethod · 0.45
setInterfaceIndexMethod · 0.45
setBitrateMethod · 0.45
setCanFDMethod · 0.45

Tested by

no test coverage detected