13 unsigned int max_block_no = 0;
15 max_block_no = (size - 1023) / 4096;
17 if (block != max_block_no)
35 }
else if (block == 0) {
53 return (size - 1023) / 4096 + 1;
71 unsigned int board_id,
76 (
uint64_t(user & User_mask) << User_shift)) {}
82 bool Trailer::check(
unsigned int crc,
unsigned int lv1_id,
unsigned int size,
bool mtf7_mode)
const {
85 <<
"\n\tLV1 ID " <<
getLV1ID() <<
", size " <<
getSize() <<
", CRC " << std::hex
86 << std::setw(8) << std::setfill(
'0') <<
getCRC() <<
std::dec <<
"\nBut expected:" 87 <<
"\n\tLV1 ID " << (lv1_id &
LV1ID_mask) <<
", size " << size <<
", CRC " << std::hex
88 << std::setw(8) << std::setfill(
'0') << crc;
95 std::string dstring(reinterpret_cast<const char *>(start), reinterpret_cast<const char *>(end) + 4);
106 const std::vector<uint64_t> &
load,
108 : block_header_(amc, board, load.
size() + 3),
109 header_(amc, lv1id, bx, load.
size() + 3, orbit, board, user),
110 trailer_(0, lv1id, load.
size() + 3) {
150 payload_.begin() + (
id + 1) * split_block_size);
157 for (
unsigned int i = 0;
i <
payload_.size() - 3; ++
i)
unsigned int getLV1ID() const
static const unsigned int CRC_mask
unsigned int getSize() const
static void writeCRC(const uint64_t *start, uint64_t *end)
unsigned int getCRC() const
BlockHeader block_header_
std::vector< uint64_t > block(unsigned int id) const
static const unsigned int CRC_shift
void addPayload(const uint64_t *, unsigned int)
void finalize(unsigned int lv1, unsigned int bx, bool legacy_mc=false, bool mtf7_mode=false)
static const unsigned int split_block_size
unsigned int size() const
static const unsigned int LV1ID_mask
unsigned long long uint64_t
std::unique_ptr< uint64_t[]> data()
bool check(unsigned int crc, unsigned int lv1_id, unsigned int size, bool mtf7_mode=false) const
Packet(const uint64_t *d)
std::vector< uint64_t > payload_