11#ifdef DEV_RELAY_SLIP
22
3- #include < iostream>
43#include " ReadBlock.h"
4+ #include < iostream>
55
6- 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) {}
6+ ReadBlockRequest::ReadBlockRequest (const uint8_t request_sequence_number, const uint8_t device_id) : Request(request_sequence_number, CMD_READ_BLOCK, device_id), block_number_{} {}
77
88std::vector<uint8_t > ReadBlockRequest::serialize () const
99{
1010 std::vector<uint8_t > request_data;
1111 request_data.push_back (this ->get_request_sequence_number ());
1212 request_data.push_back (this ->get_command_number ());
1313 request_data.push_back (this ->get_device_id ());
14- request_data.push_back (this ->get_block_size () & 0xFF );
15- request_data.push_back ((this ->get_block_size () >> 8 ) & 0xFF );
1614 request_data.insert (request_data.end (), block_number_.begin (), block_number_.end ());
1715 return request_data;
1816}
1917
2018std::unique_ptr<Response> ReadBlockRequest::deserialize (const std::vector<uint8_t > &data) const
2119{
22- if (data.size () != (block_size_ + 2 ))
20+ if (data.size () != (512 + 2 )) // 2 additional bytes are added to the block
2321 {
2422 std::cerr << " Not enough data to deserialize ReadBlockResponse" << std::endl;
2523 return nullptr ;
2624 }
2725
28- auto response = std::make_unique<ReadBlockResponse>(data[0 ], data[1 ], block_size_ );
26+ auto response = std::make_unique<ReadBlockResponse>(data[0 ], data[1 ]);
2927 if (response->get_status () == 0 )
3028 {
3129 response->set_block_data (data.begin () + 2 , data.end ());
@@ -35,8 +33,6 @@ std::unique_ptr<Response> ReadBlockRequest::deserialize(const std::vector<uint8_
3533
3634const std::array<uint8_t , 3 > &ReadBlockRequest::get_block_number () const { return block_number_; }
3735
38- const uint16_t ReadBlockRequest::get_block_size () const { return block_size_; }
39-
4036void 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 ()); }
4137
4238void ReadBlockRequest::set_block_number_from_bytes (uint8_t l, uint8_t m, uint8_t h)
@@ -52,7 +48,7 @@ void ReadBlockRequest::create_command(uint8_t *cmd_data) const {
5248}
5349
5450std::unique_ptr<Response> ReadBlockRequest::create_response (uint8_t source, uint8_t status, const uint8_t *data, uint16_t num) const {
55- std::unique_ptr<ReadBlockResponse> response = std::make_unique<ReadBlockResponse>(get_request_sequence_number (), status, num );
51+ std::unique_ptr<ReadBlockResponse> response = std::make_unique<ReadBlockResponse>(get_request_sequence_number (), status);
5652 // Copy the return data if the status is OK
5753 if (status == 0 ) {
5854 std::vector<uint8_t > data_vector (data, data + num);
@@ -62,9 +58,7 @@ std::unique_ptr<Response> ReadBlockRequest::create_response(uint8_t source, uint
6258}
6359
6460
65- 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) {
66- block_data_.resize (block_size_);
67- }
61+ ReadBlockResponse::ReadBlockResponse (const uint8_t request_sequence_number, const uint8_t status) : Response(request_sequence_number, status), block_data_{} {}
6862
6963std::vector<uint8_t > ReadBlockResponse::serialize () const
7064{
@@ -80,11 +74,8 @@ void ReadBlockResponse::set_block_data(std::vector<uint8_t>::const_iterator begi
8074 std::copy (begin, end, block_data_.begin ()); // NOLINT(performance-unnecessary-value-param)
8175}
8276
83- const std::vector <uint8_t >& ReadBlockResponse::get_block_data () const {
77+ const std::array <uint8_t , 512 >& ReadBlockResponse::get_block_data () const {
8478 return block_data_;
8579}
8680
87- const uint16_t ReadBlockResponse::get_block_size () const { return block_size_; }
88-
89-
9081#endif
0 commit comments