diff --git a/src/boards/LimeSDR_XTRX/LimeSDR_XTRX.cpp b/src/boards/LimeSDR_XTRX/LimeSDR_XTRX.cpp index bc273eb2..c6fed519 100644 --- a/src/boards/LimeSDR_XTRX/LimeSDR_XTRX.cpp +++ b/src/boards/LimeSDR_XTRX/LimeSDR_XTRX.cpp @@ -363,7 +363,8 @@ OpStatus LimeSDR_XTRX::Init() // CustomParameterWrite(¶mId,&dacVal,1,""); OpStatus status = LMS64CProtocol::DeviceReset(*mSerialPort, 0); - if (status != OpStatus::Success) + // XTRX on X8 board don't have Reset command, returns Unknown + if (status != OpStatus::Success && status != OpStatus::NotImplemented) return status; const bool skipTune = true; diff --git a/src/protocols/LMS64CProtocol.cpp b/src/protocols/LMS64CProtocol.cpp index 4e777b5f..27517dd7 100644 --- a/src/protocols/LMS64CProtocol.cpp +++ b/src/protocols/LMS64CProtocol.cpp @@ -159,10 +159,26 @@ static OpStatus RunControlCommand(ISerialPort& port, uint8_t* request, uint8_t* if (status != OpStatus::Success) return status; - if (reinterpret_cast(response)->status != CommandStatus::Completed) - return OpStatus::IOFailure; - - return OpStatus::Success; + switch (reinterpret_cast(response)->status) + { + case CommandStatus::Completed: + return OpStatus::Success; + case CommandStatus::Busy: + return OpStatus::Busy; + case CommandStatus::Unknown: + return OpStatus::NotImplemented; + case CommandStatus::TooManyBlocks: + return OpStatus::OutOfRange; + case CommandStatus::Error: + return OpStatus::Error; + case CommandStatus::WrongOrder: + return OpStatus::InvalidValue; + case CommandStatus::ResourceDenied: + return OpStatus::PermissionDenied; + case CommandStatus::Undefined: + default: + return OpStatus::Error; + } } static OpStatus RunControlCommand(ISerialPort& port, uint8_t* data, size_t length, int timeout_ms = 100)