WriteBuffer.hpp
Go to the documentation of this file.
1 // Copyright (C) 2021 COGIP Robotics association <cogip35@gmail.com>
2 // This file is subject to the terms and conditions of the GNU Lesser
3 // General Public License v2.1. See the file LICENSE in the top level
4 // directory for more details.
5 
12 
13 #pragma once
14 
15 #include <cstdint>
16 #include "canpb.hpp"
17 #include "WriteBufferInterface.h"
18 
20 #define CANPB_BASE64_ENCODE_BUFFER_SIZE (CANPB_OUTPUT_MESSAGE_LENGTH_MAX * 2)
21 
22 namespace cogip {
23 
24 namespace canpb {
25 
27 class WriteBuffer : public EmbeddedProto::WriteBufferInterface
28 {
29 public:
31  WriteBuffer() = default;
32 
33  ~WriteBuffer() override = default;
34 
35  virtual void clear() override;
36 
37  virtual uint32_t get_size() const override;
38 
39  virtual uint32_t get_max_size() const override;
40 
41  virtual uint32_t get_available_size() const override;
42 
43  virtual bool push(const uint8_t byte) override;
44 
45  virtual bool push(const uint8_t *bytes, const uint32_t length) override;
46 
48  uint8_t * get_data();
49 
52  size_t base64_encode();
53 
55  inline uint8_t * get_base64_data()
56  {
57  return base64_data_;
58  }
59 
60 
61 private:
63  uint8_t data_[CANPB_OUTPUT_MESSAGE_LENGTH_MAX];
65  uint8_t base64_data_[CANPB_BASE64_ENCODE_BUFFER_SIZE];
67  uint32_t write_index_;
68 };
69 
70 } // namespace canpb
71 
72 } // namespace cogip
CANPB_OUTPUT_MESSAGE_LENGTH_MAX
#define CANPB_OUTPUT_MESSAGE_LENGTH_MAX
max outgoing message length
Definition: canpb.hpp:29
cogip::canpb::WriteBuffer::base64_encode
size_t base64_encode()
Encode the data buffer in base64 before transmission over CAN.
cogip::canpb::WriteBuffer
WriteBuffer class used to encode Protobuf messages.
Definition: WriteBuffer.hpp:27
cogip
Differential drive controller.
Definition: Coords.hpp:16
canpb.hpp
cogip::canpb::WriteBuffer::get_base64_data
uint8_t * get_base64_data()
Return a pointer to the data array.
Definition: WriteBuffer.hpp:55
cogip::canpb::WriteBuffer::get_data
uint8_t * get_data()
Return a pointer to the data array.
cogip::canpb::WriteBuffer::WriteBuffer
WriteBuffer()=default
Class constructor.
CANPB_BASE64_ENCODE_BUFFER_SIZE
#define CANPB_BASE64_ENCODE_BUFFER_SIZE
Size of the base64 encoding buffer.
Definition: WriteBuffer.hpp:20