22 py::class_<WIB2Frame>(m,
"WIB2Frame", py::buffer_protocol())
24 .def(py::init([](py::capsule capsule) {
25 auto wfp = *
static_cast<WIB2Frame*
>(capsule.get_pointer());
28 .def(py::init([](py::bytes bytes){
29 py::buffer_info info(py::buffer(bytes).request());
30 auto wfp = *
static_cast<WIB2Frame*
>(info.ptr);
38 .def_static(
"sizeof", [](){
return sizeof(
WIB2Frame); })
41 return py::bytes(
reinterpret_cast<char*
>(fr),
sizeof(
WIB2Frame));
46 py::class_<WIB2Frame::Header>(m,
"WIB2Header")
47 .def_property_readonly(
"version", [](
WIB2Frame::Header& self) -> uint32_t {
return self.version;})
48 .def_property_readonly(
"detector_id", [](
WIB2Frame::Header& self) -> uint32_t {
return self.detector_id;})
49 .def_property_readonly(
"crate", [](
WIB2Frame::Header& self) -> uint32_t {
return self.crate;})
50 .def_property_readonly(
"slot", [](
WIB2Frame::Header& self) -> uint32_t {
return self.slot;})
51 .def_property_readonly(
"link", [](
WIB2Frame::Header& self) -> uint32_t {
return self.link;})
52 .def_property_readonly(
"timestamp_1", [](
WIB2Frame::Header& self) -> uint32_t {
return self.timestamp_1;})
53 .def_property_readonly(
"timestamp_2", [](
WIB2Frame::Header& self) -> uint32_t {
return self.timestamp_2;})
54 .def_property_readonly(
"colddata_timestamp_id", [](
WIB2Frame::Header& self) -> uint32_t {
return self.colddata_timestamp_id;})
55 .def_property_readonly(
"femb_valid", [](
WIB2Frame::Header& self) -> uint32_t {
return self.femb_valid;})
56 .def_property_readonly(
"link_mask", [](
WIB2Frame::Header& self) -> uint32_t {
return self.link_mask;})
57 .def_property_readonly(
"lock_output_status", [](
WIB2Frame::Header& self) -> uint32_t {
return self.lock_output_status;})
58 .def_property_readonly(
"femb_pulser_frame_bits", [](
WIB2Frame::Header& self) -> uint32_t {
return self.femb_pulser_frame_bits;})
59 .def_property_readonly(
"femb_sync_flags", [](
WIB2Frame::Header& self) -> uint32_t {
return self.femb_sync_flags;})
60 .def_property_readonly(
"colddata_timestamp", [](
WIB2Frame::Header& self) -> uint32_t {
return self.colddata_timestamp;})
63 py::class_<WIB2Frame::Trailer>(m,
"WIB2Trailer")
64 .def_property_readonly(
"flex_bits", [](
WIB2Frame::Trailer& self) -> uint32_t {
return self.flex_bits;})
65 .def_property_readonly(
"ws", [](
WIB2Frame::Trailer& self) -> uint32_t {
return self.ws;})
66 .def_property_readonly(
"psr_cal", [](
WIB2Frame::Trailer& self) -> uint32_t {
return self.psr_cal;})
67 .def_property_readonly(
"ready", [](
WIB2Frame::Trailer& self) -> uint32_t {
return self.ready;})
68 .def_property_readonly(
"context_code", [](
WIB2Frame::Trailer& self) -> uint32_t {
return self.context_code;})