Program Listing for File encoder.hpp
↰ Return to documentation for file (encoder.hpp
)
#ifndef FELIX_FROMHOST_ENCODER_H_
#define FELIX_FROMHOST_ENCODER_H_
#include "device.hpp"
class Encoder {
public:
Encoder() = default;
void set_data_format(int format);
void set_destination_parameters(uint8_t* dest_start, uint32_t dest_size);
[[nodiscard]] size_t compute_max_msg_occupancy(size_t size) const;
[[nodiscard]] int compute_full_blocks(size_t size) const;
[[nodiscard]] size_t compute_final_bytes(size_t size) const;
[[nodiscard]] size_t get_block_size() const {return m_block_bytes;};
[[nodiscard]] uint64_t encode_and_write_msg(uint64_t elink, const uint8_t *source, size_t size, uint32_t dest_offset);
private:
uint8_t* m_dest_start{nullptr};
uint32_t m_dest_size{0};
//Default: FROMHOST_FORMAT_HDR32_PACKET32_8B (rm- >=5.1 PCIe Gen3)
int m_header_size{4};
int m_block_bytes{32};
int m_payload_bytes{28};
int m_length_mask{TOFLX_LENGTH_MASK_HDR32_8B};
int m_elink_shift{TOFLX_ELINK_SHIFT_HDR32_8B};
};
#endif /* FELIX_FROMHOST_ENCODER_H_ */