Skip to content
Snippets Groups Projects
AstriPacketS22.cpp 3.94 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++) {
		AstriS22::PDM &pdm = pdms[i];
		pdm.pdmVal = (bool) this->operator [](std::string("pdm_Val").append("_#").append(std::to_string(i)));
		pdm.trgEnb = (bool) this->operator [](std::string("trg_enb").append("_#").append(std::to_string(i)));
		pdm.trgPdm = (bool) this->operator [](std::string("trg_pdm").append("_#").append(std::to_string(i)));
		pdm.pdm_id = (uint8_t) this->operator [](std::string("pdm_id").append("_#").append(std::to_string(i)));
		for (size_t j = 0; j < pdm.highGainPixels.size(); j++) {
		    pdm.highGainPixels[i] = (uint16_t) this->operator [](std::string("high_gain_pixel").append("_#").append(std::to_string(j)).append("_#").append(std::to_string(i)));
		}
		for (size_t j = 0; j < pdm.lowGainPixels.size(); j++) {
		    pdm.lowGainPixels[i] = (uint16_t) this->operator [](std::string("low_gain_pixel").append("_#").append(std::to_string(j)).append("_#").append(std::to_string(i)));
		}
		for (size_t j = 0; j < pdm.timeTriggerPixels.size(); j++) {
		    pdm.timeTriggerPixels[i] = (uint8_t) this->operator [](std::string("time_trigg_pixel").append("_#").append(std::to_string(j)).append("_#").append(std::to_string(i)));
		}
		pdm.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)));
		pdm.pixelTriggDiscrimThres = (uint16_t) this->operator [](std::string("pixel_trigg_disc_high_DA").append("_#").append(std::to_string(i)));
		pdm.pixelTriggLowDiscrimThres = (uint16_t) this->operator [](std::string("pixel_trigg_disc_low_DAC").append("_#").append(std::to_string(i)));
		pdm.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)));
		pdm.sipmTemp_1 = (uint16_t) this->operator [](std::string("SiPM_temp_1").append("_#").append(std::to_string(i)));
		pdm.sipmTemp_2 = (uint16_t) this->operator [](std::string("SiPM_temp_2").append("_#").append(std::to_string(i)));
		pdm.sipmTemp_3 = (uint16_t) this->operator [](std::string("SiPM_temp_3").append("_#").append(std::to_string(i)));
		pdm.sipmHighVolt = (uint16_t) this->operator [](std::string("SiPM_high_volt").append("_#").append(std::to_string(i)));
		pdm.sipmCurrent = (uint16_t) this->operator [](std::string("SiPM_current").append("_#").append(std::to_string(i)));
	}