Skip to content

Commit fb92976

Browse files
committed
Revert block-size values in devrelay to fixed 512 byte size
1 parent a6b59a0 commit fb92976

File tree

5 files changed

+20
-41
lines changed

5 files changed

+20
-41
lines changed

lib/devrelay/commands/ReadBlock.cpp

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,26 @@
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

77
std::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

1917
std::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

3432
const 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-
3834
void 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

4036
void 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

5248
std::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

6761
std::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

lib/devrelay/commands/ReadBlock.h

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,12 @@
1111
class ReadBlockRequest : public Request
1212
{
1313
public:
14-
ReadBlockRequest(uint8_t request_sequence_number, uint8_t device_id, uint16_t block_size);
14+
ReadBlockRequest(uint8_t request_sequence_number, uint8_t device_id);
1515
std::vector<uint8_t> serialize() const override;
1616
std::unique_ptr<Response> deserialize(const std::vector<uint8_t> &data) const override;
1717
const std::array<uint8_t, 3> &get_block_number() const;
1818
void set_block_number_from_ptr(const uint8_t *ptr, size_t offset);
1919
void set_block_number_from_bytes(uint8_t l, uint8_t m, uint8_t h);
20-
const uint16_t get_block_size() const;
2120

2221
void create_command(uint8_t *output_data) const override;
2322
void copy_payload(uint8_t *data) const override {}
@@ -26,21 +25,18 @@ class ReadBlockRequest : public Request
2625

2726
private:
2827
std::array<uint8_t, 3> block_number_;
29-
uint16_t block_size_;
3028
};
3129

3230

3331
class ReadBlockResponse : public Response
3432
{
3533
public:
36-
explicit ReadBlockResponse(uint8_t request_sequence_number, uint8_t status, uint16_t block_size);
34+
explicit ReadBlockResponse(uint8_t request_sequence_number, uint8_t status);
3735
std::vector<uint8_t> serialize() const override;
3836

3937
void set_block_data(std::vector<uint8_t>::const_iterator begin, std::vector<uint8_t>::const_iterator end);
40-
const std::vector<uint8_t>& get_block_data() const;
41-
const uint16_t get_block_size() const;
38+
const std::array<uint8_t, 512>& get_block_data() const;
4239

4340
private:
44-
std::vector<uint8_t> block_data_;
45-
uint16_t block_size_;
41+
std::array<uint8_t, 512> block_data_;
4642
};

lib/devrelay/commands/WriteBlock.cpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@
33
#include "WriteBlock.h"
44
#include <cstdint>
55

6-
WriteBlockRequest::WriteBlockRequest(const uint8_t request_sequence_number, const uint8_t device_id, const uint16_t block_size) : Request(request_sequence_number, CMD_WRITE_BLOCK, device_id), block_number_{}, block_data_{}, block_size_(block_size) {}
6+
WriteBlockRequest::WriteBlockRequest(const uint8_t request_sequence_number, const uint8_t device_id) : Request(request_sequence_number, CMD_WRITE_BLOCK, device_id), block_number_{}, block_data_{} {}
77

88
std::vector<uint8_t> WriteBlockRequest::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
request_data.insert(request_data.end(), block_data_.begin(), block_data_.end());
1816

@@ -32,9 +30,7 @@ std::unique_ptr<Response> WriteBlockRequest::deserialize(const std::vector<uint8
3230

3331
const std::array<uint8_t, 3> &WriteBlockRequest::get_block_number() const { return block_number_; }
3432

35-
const std::vector<uint8_t> &WriteBlockRequest::get_block_data() const { return block_data_; }
36-
37-
const uint16_t WriteBlockRequest::get_block_size() const { return block_size_; }
33+
const std::array<uint8_t, 512> &WriteBlockRequest::get_block_data() const { return block_data_; }
3834

3935
void WriteBlockRequest::set_block_number_from_ptr(const uint8_t *ptr, const size_t offset) { std::copy_n(ptr + offset, block_number_.size(), block_number_.begin()); }
4036

lib/devrelay/commands/WriteBlock.h

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,15 @@
1111
class WriteBlockRequest : public Request
1212
{
1313
public:
14-
WriteBlockRequest(uint8_t request_sequence_number, uint8_t device_id, uint16_t block_size);
14+
WriteBlockRequest(uint8_t request_sequence_number, uint8_t device_id);
1515
std::vector<uint8_t> serialize() const override;
1616
std::unique_ptr<Response> deserialize(const std::vector<uint8_t> &data) const override;
1717
const std::array<uint8_t, 3> &get_block_number() const;
1818
void set_block_number_from_ptr(const uint8_t *ptr, size_t offset);
1919

20-
const std::vector<uint8_t> &get_block_data() const;
20+
const std::array<uint8_t, 512> &get_block_data() const;
2121
void set_block_data_from_ptr(const uint8_t *ptr, size_t offset);
2222
void set_block_number_from_bytes(uint8_t l, uint8_t m, uint8_t h);
23-
const uint16_t get_block_size() const;
2423

2524
void create_command(uint8_t *output_data) const override;
2625
void copy_payload(uint8_t *data) const override;
@@ -29,8 +28,7 @@ class WriteBlockRequest : public Request
2928

3029
private:
3130
std::array<uint8_t, 3> block_number_;
32-
std::vector<uint8_t> block_data_;
33-
uint16_t block_size_;
31+
std::array<uint8_t, 512> block_data_;
3432
};
3533

3634
class WriteBlockResponse : public Response

lib/devrelay/types/Request.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,16 @@ std::unique_ptr<Request> Request::from_packet(const std::vector<uint8_t>& packet
4949
}
5050

5151
case CMD_READ_BLOCK: {
52-
auto bs = (packet[4] << 8) | packet[3];
53-
auto readBlockRequest = std::make_unique<ReadBlockRequest>(packet[0], packet[2], bs);
54-
readBlockRequest->set_block_number_from_ptr(packet.data(), 5);
52+
auto readBlockRequest = std::make_unique<ReadBlockRequest>(packet[0], packet[2]);
53+
readBlockRequest->set_block_number_from_ptr(packet.data(), 3);
5554
request = std::move(readBlockRequest);
5655
break;
5756
}
5857

5958
case CMD_WRITE_BLOCK: {
60-
auto bs = (packet[4] << 8) | packet[3];
61-
auto writeBlockRequest = std::make_unique<WriteBlockRequest>(packet[0], packet[2], bs);
62-
writeBlockRequest->set_block_number_from_ptr(packet.data(), 5);
63-
writeBlockRequest->set_block_data_from_ptr(packet.data(), 8);
59+
auto writeBlockRequest = std::make_unique<WriteBlockRequest>(packet[0], packet[2]);
60+
writeBlockRequest->set_block_number_from_ptr(packet.data(), 3);
61+
writeBlockRequest->set_block_data_from_ptr(packet.data(), 6);
6462
request = std::move(writeBlockRequest);
6563
break;
6664
}

0 commit comments

Comments
 (0)