11#ifndef FDDETDATAFORMATS_INCLUDE_FDDETDATAFORMATS_CRTGRENOBLEFRAME_HPP_
12#define FDDETDATAFORMATS_INCLUDE_FDDETDATAFORMATS_CRTGRENOBLEFRAME_HPP_
45 unsigned int day : 16;
60#warning "CRTGrenobleFrame::STChannel has padding inserted"
77#warning "CRTGrenobleFrame::STEvent has padding inserted"
88 throw std::out_of_range(
"ADC channel index out of range");
90 return event.channels[i_ch].qTot;
94 void set_adc(
const int i_ch,
const int val)
97 throw std::out_of_range(
"ADC channel index out of range");
99 event.channels[i_ch].qTot = val;
109#warning "CRTGrenobleFrame has padding inserted"
112static_assert(std::endian::native == std::endian::little,
113 "The CRTGrenobleFrame bitfield layout assumes little-endian architecture");
114static_assert(std::is_trivially_copyable_v<CRTGrenobleFrame>,
115 "CRTGrenobleFrame isn't trivially copyable and can't be safely std::memcpy'd");
116static_assert(std::is_standard_layout_v<CRTGrenobleFrame>,
117 "CRTGrenobleFrame isn't standard layout; reinterpret_cast and offsetof can't safely be used with it");