#ifndef RCUCOMMANDCODER_H #define RCUCOMMANDCODER_H #include using namespace std; #include "../CentralHeaders/BitConstants.h" #include "../CentralHeaders/TpcException.h" //use when to compile on outdated slc #include #include #include class RCUCommandCoder { public: RCUCommandCoder(); ~RCUCommandCoder() { }; uint64_t sendAltroInstruction(uint64_t AltroInstruction); uint32_t sendAltroCommand(uint32_t AltroInstruction); uint64_t sendBoardControllerInstruction(uint64_t BoardControllerInstruction); uint32_t sendBoardControllerCommand(uint32_t BoardControllerInstruction); uint32_t sendReadInstruction(uint32_t AltroInstruction); uint32_t sendLoop(uint32_t numofLoops, uint32_t address); uint32_t sendWAIT(uint32_t numofCycles); uint32_t sendENDSEQ(); uint32_t sendEND(); uint32_t sendENDMEM(); uint32_t codeALTROIF(uint32_t err_check, uint32_t delay, uint32_t ratio, uint32_t samples); uint32_t codeALTROIF(uint32_t delay, uint32_t ratio, uint32_t samples); uint32_t codeTRGCONF(uint32_t source, uint32_t mode, uint32_t L2latency); uint32_t codeTRGCONF(uint32_t mode); uint32_t codeRDOMOD(uint32_t empty_channel_skip, uint32_t dis_check_chadd_msmtch, uint32_t dis_check_bl_msmtch, uint32_t dis_check_rdyrx, uint32_t sparse_rdo, uint32_t exec_seq, uint32_t meb_mode); uint32_t codeRDOMOD(uint32_t empty_channel_skip, uint32_t sparse, uint32_t mebmode); uint32_t codeALTROCFG1(uint32_t zs_cfg, uint32_t bc2_cfg, uint32_t bc1_cfg); uint32_t codeALTROCFG2(uint32_t pwsv, uint32_t flt_en, uint32_t nbuf, uint32_t ptrg); uint32_t codeRCUID(uint32_t side, uint32_t sector, uint32_t rcu); uint32_t codeTTC_CONTROL(uint32_t sbc_on, uint32_t dis_err_mask, uint32_t en_roi_dec, uint32_t l0_support, uint32_t l2a_fifo_mask, uint32_t l2r_fifo_mask, uint32_t l2_tout_mask, uint32_t l1_msg_mask, uint32_t bunch_cnt_ovflw, uint32_t run_active, uint32_t busy, uint32_t cdh_version); uint32_t codeTTC_L1_LATENCY(uint32_t latency, uint32_t window); uint32_t codeTTC_L1_MSG_LATENCY(uint32_t min, uint32_t max); uint32_t codeTTC_L1_MSG_LATENCY(); uint32_t codeTTC_L2_LATENCY(uint32_t min, uint32_t max); private: enum eTarget{ FEC_RD, FEC_CMD, FEC_WR, IS_CMD }; enum eRCUCommand{ NOTUSED00, LOOP, WAIT, NOTUSED03, NOTUSED04, NOTUSED05, NOTUSED06, NOTUSED07, ENDSEQ, NOTUSED09, NOTUSED10, NOTUSED11, NOTUSED12, NOTUSED13, NOTUSED14, ENDMEM }; uint32_t instruction(eTarget Target, uint32_t instruction); }; #endif // RCUCOMMANDCODER_H