* @brief Select CAN interface by index */
| 139 | * @brief Select CAN interface by index |
| 140 | */ |
| 141 | API::CommandResponse API::Handlers::CANBusHandler::setInterfaceIndex(const QString& id, |
| 142 | const QJsonObject& params) |
| 143 | { |
| 144 | if (!params.contains(QStringLiteral("interfaceIndex"))) { |
| 145 | return CommandResponse::makeError( |
| 146 | id, ErrorCode::MissingParam, QStringLiteral("Missing required parameter: interfaceIndex")); |
| 147 | } |
| 148 | |
| 149 | const int interfaceIndex = params.value(QStringLiteral("interfaceIndex")).toInt(); |
| 150 | auto* canbus = IO::ConnectionManager::instance().canBus(); |
| 151 | const auto& interfaceList = canbus->interfaceList(); |
| 152 | |
| 153 | if (interfaceIndex < 0 || interfaceIndex >= interfaceList.count()) { |
| 154 | return CommandResponse::makeError( |
| 155 | id, |
| 156 | ErrorCode::InvalidParam, |
| 157 | QStringLiteral("Invalid interfaceIndex: %1. Valid range: 0-%2") |
| 158 | .arg(interfaceIndex) |
| 159 | .arg(interfaceList.count() - 1)); |
| 160 | } |
| 161 | |
| 162 | canbus->setInterfaceIndex(static_cast<quint8>(interfaceIndex)); |
| 163 | |
| 164 | QJsonObject result; |
| 165 | result[QStringLiteral("interfaceIndex")] = interfaceIndex; |
| 166 | result[QStringLiteral("interfaceName")] = interfaceList.at(interfaceIndex); |
| 167 | return CommandResponse::makeSuccess(id, result); |
| 168 | } |
| 169 | |
| 170 | /** |
| 171 | * @brief Set CAN bitrate |
nothing calls this directly
no test coverage detected