.. _program_listing_file_encoder.hpp: Program Listing for File encoder.hpp ==================================== |exhale_lsh| :ref:`Return to documentation for file ` (``encoder.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #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_ */