Skip to content
Snippets Groups Projects
Commit 95e47294 authored by Valerio Pastore's avatar Valerio Pastore
Browse files

removed S22 useless impl

parent b9ea634f
No related branches found
No related tags found
No related merge requests found
......@@ -9,7 +9,6 @@ set(SOURCES
src/PacketStructureTxt.cpp
src/PacketStructureJson.cpp
src/AstriPacketGeneric.cpp
src/AstriPacketS22.cpp
)
......
Subproject commit 4c957e6878373a2800411f4d1e9b0dda617dda9e
Subproject commit c7e2fa5b918c2c8597a6a074db01d45f248e1cd3
......@@ -8,7 +8,7 @@ namespace inaf::oasbo::Packets {
class AstriPacketGeneric : public inaf::oasbo::PacketLib::BasePacket {
public:
AstriPacketGeneric(inaf::oasbo::PacketLib::BasePacketStructure *structure) : BasePacket(structure){}
AstriPacketGeneric(inaf::oasbo::PacketLib::BasePacketStructure &structure) : BasePacket(structure){}
size_t getHeaderSize();
size_t getPayloadSize();
size_t getTailSize();
......
#ifndef INCLUDE_INAF_OAS_PACKETS_ASTRI_PACKET_S22_H_
#define INCLUDE_INAF_OAS_PACKETS_ASTRI_PACKET_S22_H_
#include <AstriPacketGeneric.h>
#include <array>
namespace inaf::oasbo::Packets::AstriS22 {
struct Header {
bool crc;
uint8_t telescopeId;
uint8_t type;
uint8_t subtype;
uint16_t ssc;
uint16_t length;
Header() :
crc(bool()), telescopeId(uint8_t()), type(
uint8_t()), subtype(uint8_t()), ssc(uint16_t()), length(uint16_t()){
}
};
struct PDM {
bool pdmVal;
bool trgEnb;
bool trgPdm;
uint8_t pdm_id;
std::array<uint16_t, 64> highGainPixels;
std::array<uint16_t, 64> lowGainPixels;
std::array<uint8_t, 64> timeTriggerPixels;
size_t hitReg;
uint16_t pixelTriggDiscrimThres;
uint16_t pixelTriggLowDiscrimThres;
size_t triggerMask;
uint16_t sipmTemp_1;
uint16_t sipmTemp_2;
uint16_t sipmTemp_3;
uint16_t sipmHighVolt;
uint16_t sipmCurrent;
PDM() :
pdmVal(bool()), trgEnb(bool()), trgPdm(bool()), pdm_id(int8_t()), highGainPixels(
std::array<uint16_t, 64>()), lowGainPixels(
std::array<uint16_t, 64>()), timeTriggerPixels(
std::array<uint8_t, 64>()), hitReg(size_t()), pixelTriggDiscrimThres(
uint16_t()), pixelTriggLowDiscrimThres(uint16_t()), triggerMask(
size_t()), sipmTemp_1(uint16_t()), sipmTemp_2(uint16_t()), sipmTemp_3(
uint16_t()), sipmHighVolt(uint16_t()), sipmCurrent(
uint16_t()) {
}
};
struct DataFieldHeader {
uint8_t year;
uint8_t month;
uint8_t day;
uint8_t hour;
uint8_t minutes;
uint8_t seconds;
bool vt;
uint32_t timetagNanosec;
DataFieldHeader() :
year(uint8_t()), month(uint8_t()), day(uint8_t()), hour(uint8_t()), minutes(
uint8_t()), seconds(uint8_t()), vt(bool()), timetagNanosec(
uint32_t()) {
}
};
struct DataFieldHeaderExtension {
uint16_t pixel_trigg_disc;
uint16_t pixel_trigg_low_disc;
bool trg_type;
uint8_t trigger_conf;
DataFieldHeaderExtension() :
pixel_trigg_disc(uint16_t()), pixel_trigg_low_disc(uint16_t()), trg_type(
bool()), trigger_conf(uint8_t()) {
}
};
}
namespace inaf::oasbo::Packets {
class AstriPacketS22: public inaf::oasbo::Packets::AstriPacketGeneric {
public:
AstriPacketS22(inaf::oasbo::PacketLib::BasePacketStructure *structure) :
AstriPacketGeneric(structure) {
readHeader();
readDataFieldHeader();
readDataFieldHeaderExtension();
readPDMs();
}
AstriS22::Header header = {};
AstriS22::DataFieldHeader dataHeader = {};
AstriS22::DataFieldHeaderExtension dataHeaderExt = {};
std::array<AstriS22::PDM, 37> pdms = {};
void readHeader();
void readDataFieldHeader();
void readDataFieldHeaderExtension();
void readPDMs();
};
}
#endif /* INCLUDE_INAF_OAS_PACKETS_ASTRI_PACKET_S22_H_ */
......@@ -23,7 +23,7 @@ private:
public:
std::vector<std::tuple<int, std::string, int>> readStructureFromSource(
std::string source);
std::string source) override;
PacketStructureJson(std::string source){
updateStructure(source);
}
......
......@@ -24,8 +24,8 @@ private:
public:
std::vector<std::tuple<int, std::string, int>> readStructureFromSource(
std::string source);
PacketStructureTxt(std::string source) {
std::string source) override;
PacketStructureTxt(std::string source){
updateStructure(source);
}
;
......
......@@ -14,7 +14,13 @@ size_t AstriPacketGeneric::getHeaderSize(){
}
size_t AstriPacketGeneric::getPayloadSize(){
return this->operator [](5)-1;
auto val = this->operator [](5);
if(val.has_value())
return val.value()-1;
else{
std::cerr << "Error: cannot access index 5 to get payload size." << std::endl;
exit(EXIT_FAILURE);
}
}
size_t AstriPacketGeneric::getTailSize(){
......
/*
* AstriPacketGeneric.cpp
*
* Created on: Jan 26, 2023
* Author: valerio
*/
#include <AstriPacketS22.h>
#include <algorithm>
using namespace inaf::oasbo::Packets;
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");
}
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");
}
void AstriPacketS22::readPDMs() {
for (size_t i = 0; i < pdms.size(); i++) {
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)));
}
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)));
}
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)));
}
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)));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment