11 static constexpr int header_offset =
sizeof(DataFrameHeader) / 4;
12 const GFrameHeader* header = frameRunData->
getHeader();
14 const std::vector<GIntegralPayload*>* intPayloadvec = frameRunData->
getIntegralPayload();
17 frame_data.resize(header_offset, 0);
21 std::vector<std::uint32_t>
const super_magic = {0xC0DA2019, 0XC0DA0001};
22 ofile->write(
reinterpret_cast<const char*
>(super_magic.data()),
sizeof(std::uint32_t) * 2);
26 DataFrameHeader& dataFrameHeader = *
reinterpret_cast<DataFrameHeader*
>(frame_data.data());
29 dataFrameHeader.
magic = 0xC0DA2019;
31 dataFrameHeader.
flags = 0;
33 dataFrameHeader.
ts_sec = llswap((frameID * 65536) /
static_cast<int>(1e9));
34 dataFrameHeader.
ts_nsec = llswap((frameID * 65536) %
static_cast<int>(1e9));
37 unsigned int crate = 0;
38 unsigned int slot, channel, charge, time;
39 unsigned int slots = 16;
41 frame_data.resize(header_offset);
42 frame_data.push_back(0x80000000);
43 frame_data.insert(frame_data.end(), slots, 0);
45 for (
unsigned int i = 0; i < slots; ++i) {
46 int starting_point = (int)frame_data.size() - header_offset;
47 frame_data.push_back(0x80008000 | (crate << 8) | i);
50 for (
unsigned int hit = 0; hit < intPayloadvec->size(); ++hit) {
51 GIntegralPayload* intpayload = intPayloadvec->at(hit);
52 std::vector<int> payload = intpayload->
getPayload();
60 frame_data.push_back(charge | (channel << 13) | ((time / 4) << 17));
66 if (hit_counter == 0) {
67 frame_data.pop_back();
73 frame_data[header_offset + 1 + i] =
74 ((hit_counter) << 16) | starting_point;
78 DataFrameHeader& dfh = *
reinterpret_cast<DataFrameHeader*
>(frame_data.data());
80 dfh.
payload_length = (uint32_t)frame_data.size() *
sizeof(
unsigned int) -
sizeof(DataFrameHeader);
88bool GstreamerJSROFactory::endStreamImpl([[maybe_unused]]
const GFrameDataCollection* frameRunData) {
std::shared_ptr< GLogger > log
const GFrameHeader * getHeader() const
const std::vector< GIntegralPayload * > * getIntegralPayload() const
Shared constants and error codes for the gstreamer module.
#define ERR_CANTOPENOUTPUT
Output medium could not be opened successfully.
JLAB SRO binary frame streamer declarations.
std::vector< int > getPayload() const