Line data Source code
1 : // Copyright 2024 Accenture. 2 : 3 : #include "uds/jobs/ReadIdentifierFromMemory.h" 4 : 5 : #include "uds/connection/IncomingDiagConnection.h" 6 : 7 : namespace uds 8 : { 9 2 : ReadIdentifierFromMemory::ReadIdentifierFromMemory( 10 : uint16_t const identifier, 11 : uint8_t const* const responseData, 12 : uint16_t const responseLength, 13 2 : DiagSessionMask const sessionMask) 14 : : ReadIdentifierFromMemory( 15 2 : identifier, ::etl::span<uint8_t const>(responseData, responseLength), sessionMask) 16 2 : {} 17 : 18 5 : ReadIdentifierFromMemory::ReadIdentifierFromMemory( 19 : uint16_t const identifier, 20 : ::etl::span<uint8_t const> const& responseData, 21 5 : DiagSessionMask const sessionMask) 22 5 : : DataIdentifierJob(_implementedRequest, sessionMask), _responseSlice(responseData) 23 : { 24 5 : _implementedRequest[0] = 0x22U; 25 5 : _implementedRequest[1] = (identifier >> 8) & 0xFFU; 26 5 : _implementedRequest[2] = identifier & 0xFFU; 27 5 : } 28 : 29 2 : DiagReturnCode::Type ReadIdentifierFromMemory::process( 30 : IncomingDiagConnection& connection, 31 : uint8_t const* const /* request */, 32 : uint16_t const /* requestLength */) 33 : { 34 2 : PositiveResponse& response = connection.releaseRequestGetResponse(); 35 2 : (void)response.appendData(_responseSlice.data(), static_cast<uint16_t>(_responseSlice.size())); 36 2 : (void)connection.sendPositiveResponseInternal(response.getLength(), *this); 37 : 38 2 : return DiagReturnCode::OK; 39 : } 40 : 41 : } // namespace uds