Skip to content
Snippets Groups Projects
AstriPacketS22.cpp 3.98 KiB
Newer Older
Valerio Pastore's avatar
Valerio Pastore committed
/*
 * AstriPacketGeneric.cpp
 *
 *  Created on: Jan 26, 2023
 *      Author: valerio
 */

#include <AstriPacketS22.h>
Valerio Pastore's avatar
Valerio Pastore committed
#include <algorithm>
Valerio Pastore's avatar
Valerio Pastore committed

using namespace inaf::oasbo::Packets;

Valerio Pastore's avatar
Valerio Pastore committed
void AstriPacketS22::readHeader() {
	header.crc = (bool) this->operator []("crc_flag");
	header.telescopeId = (uint8_t) this->operator []("telescopeid");
	header.type = (uint8_t) this->operator []("type");
	header.subtype = (uint8_t) this->operator []("subtype");
	header.ssc = (uint16_t) this->operator []("ssc");
	header.length = (uint16_t) this->operator []("length");
}

Valerio Pastore's avatar
Valerio Pastore committed

Valerio Pastore's avatar
Valerio Pastore committed
void AstriPacketS22::readDataFieldHeader() {
	dataHeader.year = (uint8_t) this->operator []("year");
	dataHeader.month = (uint8_t) this->operator []("month");
	dataHeader.day = (uint8_t) this->operator []("day");
	dataHeader.hour = (uint8_t) (this->operator []("hh_msb") << 4)
			+ this->operator []("hh_lsb");
	dataHeader.minutes = (uint8_t) this->operator []("minutes");
	dataHeader.seconds = (uint8_t) this->operator []("seconds");
	dataHeader.vt = (bool) this->operator []("vt");
	dataHeader.timetagNanosec = (uint32_t) this->operator []("timetag_nanosec");
}

void AstriPacketS22::readDataFieldHeaderExtension() {
	dataHeaderExt.pixel_trigg_disc = (uint16_t) this->operator [](
			"pixel_trigg_disc_high_pe");
	dataHeaderExt.pixel_trigg_low_disc = (uint16_t) this->operator [](
			"pixel_trigg_disc_low_pe");
	dataHeaderExt.trg_type = (bool) this->operator []("trg_type");
	dataHeaderExt.trigger_conf = (uint8_t) this->operator []("trigger_config");
}
Valerio Pastore's avatar
Valerio Pastore committed

Valerio Pastore's avatar
Valerio Pastore committed
void AstriPacketS22::readPDMs() {
	for (size_t i = 0; i < pdms.size(); i++) {
Valerio Pastore's avatar
Valerio Pastore committed
		pdms[i].pdmVal = (bool) this->operator [](std::string("pdm_val").append("_#").append(std::to_string(i)));
		pdms[i].trgEnb = (bool) this->operator [](std::string("trg_enb").append("_#").append(std::to_string(i)));
		pdms[i].trgPdm = (bool) this->operator [](std::string("trg_pdm").append("_#").append(std::to_string(i)));
		pdms[i].pdm_id = (uint8_t) this->operator [](std::string("pdm_id").append("_#").append(std::to_string(i)));
		for (size_t j = 0; j < pdms[i].highGainPixels.size(); j++) {
			pdms[i].highGainPixels[i] = (uint16_t) this->operator [](std::string("high_gain_pixel").append("_#").append(std::to_string(j)).append("_#").append(std::to_string(i)));
Valerio Pastore's avatar
Valerio Pastore committed
		}
Valerio Pastore's avatar
Valerio Pastore committed
		for (size_t j = 0; j < pdms[i].lowGainPixels.size(); j++) {
			pdms[i].lowGainPixels[i] = (uint16_t) this->operator [](std::string("low_gain_pixel").append("_#").append(std::to_string(j)).append("_#").append(std::to_string(i)));
Valerio Pastore's avatar
Valerio Pastore committed
		}
Valerio Pastore's avatar
Valerio Pastore committed
		for (size_t j = 0; j < pdms[i].timeTriggerPixels.size(); j++) {
			pdms[i].timeTriggerPixels[i] = (uint8_t) this->operator [](std::string("time_trigg_pixel").append("_#").append(std::to_string(j)).append("_#").append(std::to_string(i)));
Valerio Pastore's avatar
Valerio Pastore committed
		}
Valerio Pastore's avatar
Valerio Pastore committed
		pdms[i].hitReg = (size_t) (this->operator [](std::string("hit_reg_1").append("_#").append(std::to_string(i))) << 32) + this->operator [](std::string("hit_reg_2").append("_#").append(std::to_string(i)));
		pdms[i].pixelTriggDiscrimThres = (uint16_t) this->operator [](std::string("pixel_trigg_disc_high_dac").append("_#").append(std::to_string(i)));
		pdms[i].pixelTriggLowDiscrimThres = (uint16_t) this->operator [](std::string("pixel_trigg_disc_low_dac").append("_#").append(std::to_string(i)));
		pdms[i].triggerMask = (size_t) (this->operator [](std::string("trigger_mask_1").append("_#").append(std::to_string(i))) << 32) + this->operator [](std::string("trigger_mask_2").append("_#").append(std::to_string(i)));
		pdms[i].sipmTemp_1 = (uint16_t) this->operator [](std::string("sipm_temp_1").append("_#").append(std::to_string(i)));
		pdms[i].sipmTemp_2 = (uint16_t) this->operator [](std::string("sipm_temp_2").append("_#").append(std::to_string(i)));
		pdms[i].sipmTemp_3 = (uint16_t) this->operator [](std::string("sipm_temp_3").append("_#").append(std::to_string(i)));
		pdms[i].sipmHighVolt = (uint16_t) this->operator [](std::string("sipm_high_volt").append("_#").append(std::to_string(i)));
		pdms[i].sipmCurrent = (uint16_t) this->operator [](std::string("sipm_current").append("_#").append(std::to_string(i)));
Valerio Pastore's avatar
Valerio Pastore committed
	}