Func did for i2c#290
Conversation
There was a problem hiding this comment.
Strasznie dużo niespójności, kody błędów są losowe, czasami błędy zwracają brak błędu. Brak zachowanej konwencji plików .h .cpp ? i2c_mw_read ma .h i .cpp a i2c_mw_write ma tylko .h ??? Nie zaimplementowano wszystkich funkcjonalności oraz zepsuto funkcjonalność i2c_service. Dodatkowo jest konflikt repozytorium system_definitions
| } | ||
|
|
||
| } // namespace mw | ||
| } // namespace srp No newline at end of file |
There was a problem hiding this comment.
| } // namespace srp | |
| } // namespace srp | |
| ara::core::Result<ara::diag::OperationOutput> Read() noexcept override { | ||
| return ara::diag::MakeErrorCode(ara::diag::UdsDiagErrc::kRequestOutOfRange); | ||
| } |
There was a problem hiding this comment.
| ara::core::Result<ara::diag::OperationOutput> Read() noexcept override { | |
| return ara::diag::MakeErrorCode(ara::diag::UdsDiagErrc::kRequestOutOfRange); | |
| } | |
| ara::core::Result<ara::diag::OperationOutput> Read() noexcept override; |
| ara::core::Result<void> I2CMWREAD::Write(const std::vector<uint8_t> &payload) noexcept { | ||
| if (payload.size() < 3 || !payload.size()%2) { | ||
| ara::log::LogInfo() << "Wrong payload size: " << payload.size(); | ||
| return ara::diag::MakeErrorCode(ara::diag::UdsDiagErrc::kSubFunctionNotSupported); | ||
| } | ||
| if (this->i2c_->Ioctl(payload[0]) != core::ErrorCode::kOk) { | ||
| ara::log::LogInfo() << "Wrong Input for payload i2c read"; | ||
| return {}; | ||
| } | ||
|
|
||
| ara::log::LogInfo() << "Receive diag write req, calling I2CService::WriteRead"; | ||
| std::vector<uint8_t> vec(payload.begin() + 1, payload.end()); | ||
| auto result = i2c_service_->WriteRead(vec, nullptr); | ||
|
|
||
| if (result == std::nullopt) { | ||
| ara::log::LogInfo() << "Wrong Input for i2c WriteRead"; | ||
| return ara::diag::MakeErrorCode(ara::diag::UdsDiagErrc::kConditionsNotCorrect); | ||
| } | ||
|
|
||
| return {}; | ||
| } |
There was a problem hiding this comment.
I jak mam odczytać co zwróciła funkcja? chyba metoda read powinna zwracac wynik ostatniej operacji?
| ara::core::Result<void> I2CMWREAD::Write(const std::vector<uint8_t> &payload) noexcept { | ||
| if (payload.size() < 3 || !payload.size()%2) { | ||
| ara::log::LogInfo() << "Wrong payload size: " << payload.size(); | ||
| return ara::diag::MakeErrorCode(ara::diag::UdsDiagErrc::kSubFunctionNotSupported); |
There was a problem hiding this comment.
| return ara::diag::MakeErrorCode(ara::diag::UdsDiagErrc::kSubFunctionNotSupported); | |
| return ara::diag::MakeErrorCode(ara::diag::UdsDiagErrc::kInvalidMessageLengthFormat); |
| } | ||
| if (this->i2c_->Ioctl(payload[0]) != core::ErrorCode::kOk) { | ||
| ara::log::LogInfo() << "Wrong Input for payload i2c read"; | ||
| return {}; |
There was a problem hiding this comment.
| return {}; | |
| return ara::diag::MakeErrorCode(ara::diag::UdsDiagErrc::kRequestSequenceError); |
There was a problem hiding this comment.
ten błąd tyczy się sytułacji ze w zlej kolejnosci przysyłasz dane powinien być bład o długości zapytania jest takie
| if (this->i2c_->Write(vec) == core::ErrorCode::kOk) { | ||
| ara::log::LogInfo() << "Wrong Input for i2c Write"; | ||
| return ara::diag::MakeErrorCode( | ||
| ara::diag::UdsDiagErrc::kSubFunctionNotSupported); |
There was a problem hiding this comment.
?? CHATGPT PLS GIVE ME RANDOM ERROR CODE
There was a problem hiding this comment.
użyłem błędu z funkcji wyżej "by działało" co podałeś
| I2CService::I2CService(): | ||
| i2c_logger_(ara::log::LoggingMenager::GetInstance()->CreateLogger("i2c", "", ara::log::LogLevel::kInfo)) {} | ||
|
|
||
| i2c_logger_(ara::log::LoggingMenager::GetInstance()->CreateLogger("i2c", "", ara::log::LogLevel::kInfo)),did_instance("/srp/mw/i2cMWService/i2c_Write_did"), read_instance("/srp/mw/i2cMWService/i2c_Read_did") {} |
There was a problem hiding this comment.
| i2c_logger_(ara::log::LoggingMenager::GetInstance()->CreateLogger("i2c", "", ara::log::LogLevel::kInfo)),did_instance("/srp/mw/i2cMWService/i2c_Write_did"), read_instance("/srp/mw/i2cMWService/i2c_Read_did") {} | |
| i2c_logger_(ara::log::LoggingMenager::GetInstance()->CreateLogger("i2c", "", ara::log::LogLevel::kInfo)), did_instance(I2C_WRITE_DID_INSTANCE ), read_instance(I2C_READ_DID_INSTANCE) {} |
| @@ -22,8 +22,7 @@ namespace { | |||
| const constexpr char* I2C_IPC_ADDR = "SRP.I2C"; | |||
There was a problem hiding this comment.
| const constexpr char* I2C_IPC_ADDR = "SRP.I2C"; | |
| const constexpr char* I2C_IPC_ADDR = "SRP.I2C"; | |
| constexpr auto I2C_WRITE_DID_INSTANCE = "/srp/mw/i2cMWService/i2c_Write_did"; | |
| constexpr auto I2C_READ_DID_INSTANCE = "/srp/mw/i2cMWService/i2c_Read_did"; |
| return std::nullopt; | ||
| } | ||
| return i2c_->ReadWrite(payload[0], payload[1]); | ||
| return i2c_->ReadWrite(payload[0]); |
There was a problem hiding this comment.
czemu? psuje to chyba wszystkie drivery do i2c.
| return i2c_->ReadWrite(payload[0]); | |
| return i2c_->ReadWrite(payload[0], payload[1]); |
| const std::shared_ptr<srp::i2c::Header> headerPtr, | ||
| std::optional<std::vector<uint8_t>> payload); | ||
|
|
||
| friend class I2CMWREAD; |
There was a problem hiding this comment.
Nie prościej było używać i2c_controllera?
There was a problem hiding this comment.
możliwe, choć nie wiedziałem że jest taka opcja
d6bbd80 to
289281b
Compare
|
Dodatkowo jak widać już sam cpplint się wywala. |
|
| "//deployment/system_definition/diag/jobs/i2c_service/i2c_write:i2c_Write_job", | ||
| "//deployment/system_definition/diag/jobs/i2c_service/i2c_read:i2c_Read_job", |
There was a problem hiding this comment.
NIe żeby coś ale DiD natywnie wspiera write i read
funkcje did read, wirte dla zadania #214