22
33#include " ReadBlock.h"
44
5- ReadBlockRequest::ReadBlockRequest (const uint8_t request_sequence_number, const uint8_t device_id, uint16_t block_size ) : Request(request_sequence_number, CMD_READ_BLOCK, device_id), block_number_{}, block_size_(block_size) {}
5+ ReadBlockRequest::ReadBlockRequest (const uint8_t request_sequence_number, const uint8_t device_id) : Request(request_sequence_number, CMD_READ_BLOCK, device_id), block_number_{} {}
66
77std::vector<uint8_t > ReadBlockRequest::serialize () const
88{
99 std::vector<uint8_t > request_data;
1010 request_data.push_back (this ->get_request_sequence_number ());
1111 request_data.push_back (this ->get_command_number ());
1212 request_data.push_back (this ->get_device_id ());
13- request_data.push_back (this ->get_block_size () & 0xFF );
14- request_data.push_back ((this ->get_block_size () >> 8 ) & 0xFF );
1513 request_data.insert (request_data.end (), block_number_.begin (), block_number_.end ());
1614 return request_data;
1715}
1816
1917std::unique_ptr<Response> ReadBlockRequest::deserialize (const std::vector<uint8_t > &data) const
2018{
21- if (data.size () != (block_size_ + 2 ))
19+ if (data.size () != (512 + 2 )) // 2 additional bytes are added to the block
2220 {
2321 throw std::runtime_error (" Not enough data to deserialize ReadBlockResponse" );
2422 }
2523
26- auto response = std::make_unique<ReadBlockResponse>(data[0 ], data[1 ], block_size_ );
24+ auto response = std::make_unique<ReadBlockResponse>(data[0 ], data[1 ]);
2725 if (response->get_status () == 0 )
2826 {
2927 response->set_block_data (data.begin () + 2 , data.end ());
@@ -33,8 +31,6 @@ std::unique_ptr<Response> ReadBlockRequest::deserialize(const std::vector<uint8_
3331
3432const std::array<uint8_t , 3 > &ReadBlockRequest::get_block_number () const { return block_number_; }
3533
36- const uint16_t ReadBlockRequest::get_block_size () const { return block_size_; }
37-
3834void ReadBlockRequest::set_block_number_from_ptr (const uint8_t *ptr, const size_t offset) { std::copy_n (ptr + offset, block_number_.size (), block_number_.begin ()); }
3935
4036void ReadBlockRequest::set_block_number_from_bytes (uint8_t l, uint8_t m, uint8_t h)
@@ -50,7 +46,7 @@ void ReadBlockRequest::create_command(uint8_t *cmd_data) const {
5046}
5147
5248std::unique_ptr<Response> ReadBlockRequest::create_response (uint8_t source, uint8_t status, const uint8_t *data, uint16_t num) const {
53- std::unique_ptr<ReadBlockResponse> response = std::make_unique<ReadBlockResponse>(get_request_sequence_number (), status, num );
49+ std::unique_ptr<ReadBlockResponse> response = std::make_unique<ReadBlockResponse>(get_request_sequence_number (), status);
5450 // Copy the return data if the status is OK
5551 if (status == 0 ) {
5652 std::vector<uint8_t > data_vector (data, data + num);
@@ -60,9 +56,7 @@ std::unique_ptr<Response> ReadBlockRequest::create_response(uint8_t source, uint
6056}
6157
6258
63- ReadBlockResponse::ReadBlockResponse (const uint8_t request_sequence_number, const uint8_t status, uint16_t block_size) : Response(request_sequence_number, status), block_size_(block_size) {
64- block_data_.resize (block_size_);
65- }
59+ ReadBlockResponse::ReadBlockResponse (const uint8_t request_sequence_number, const uint8_t status) : Response(request_sequence_number, status), block_data_{} {}
6660
6761std::vector<uint8_t > ReadBlockResponse::serialize () const
6862{
@@ -78,11 +72,8 @@ void ReadBlockResponse::set_block_data(std::vector<uint8_t>::const_iterator begi
7872 std::copy (begin, end, block_data_.begin ()); // NOLINT(performance-unnecessary-value-param)
7973}
8074
81- const std::vector <uint8_t >& ReadBlockResponse::get_block_data () const {
75+ const std::array <uint8_t , 512 >& ReadBlockResponse::get_block_data () const {
8276 return block_data_;
8377}
8478
85- const uint16_t ReadBlockResponse::get_block_size () const { return block_size_; }
86-
87-
8879#endif
0 commit comments