.. _program_listing_file_l0id_decoder.hpp: Program Listing for File l0id_decoder.hpp ========================================= |exhale_lsh| :ref:`Return to documentation for file ` (``l0id_decoder.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef L0ID_DECODER_H_ #define L0ID_DECODER_H_ #include "block.hpp" #include #include #include #include "felix/felix_fid.h" inline bool is_ttc2h_elink(uint64_t fid) { uint32_t elink = get_elink(fid); #if REGMAP_VERSION < 0x0500 if (elink == 315 || elink == 827 || elink == 1537 || elink == 0x600){ #else if (elink == 0x600){ #endif return true; } else { return false; } } enum L0ID_FMT { TTC2H = 1, LATOME = 2, FMEMU = 3, FELIG = 4, NSW_VMM = 5, NSW_TP = 6 }; class L0Decoder { public: L0Decoder(int format, uint64_t fid); std::function check_sequence_error; bool check_tohost_chunk(std::vector const &data); xl1id_t get_last(){return m_last;} uint32_t get_ec_mask(){return m_ec_mask;} private: uint64_t m_fid; xl1id_t m_last; uint32_t m_required_bytes; uint32_t m_ec_mask; bool compare(xl1id_t current, xl1id_t expected); bool check_sequence_ttc2h( const uint8_t* data, size_t len); bool check_sequence_latome( const uint8_t* data, size_t len); bool check_sequence_fmemu( const uint8_t* data, size_t len); bool check_sequence_felig( const uint8_t* data, size_t len); bool check_sequence_nsw_vmm(const uint8_t* data, size_t len); bool check_sequence_nsw_tp( const uint8_t* data, size_t len); }; #endif /* L0ID_DECODER_H_ */