diff --git a/PacketLib.xcodeproj/project.pbxproj b/PacketLib.xcodeproj/project.pbxproj index fc591a4c1f7b12d11d42174bcc0a5ca4f2857734..9ea928ad345389300da4fd00356093b37f2b95dc 100644 --- a/PacketLib.xcodeproj/project.pbxproj +++ b/PacketLib.xcodeproj/project.pbxproj @@ -150,6 +150,7 @@ DD8A42121A95C11700565702 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; }; DD8A42131A95C11700565702 /* TODO */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TODO; sourceTree = "<group>"; }; DD8A42151A95C11700565702 /* packetlib_example.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = packetlib_example.cpp; sourceTree = "<group>"; }; + DD8A42161A95CE4500565702 /* rta_fadc_all.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = rta_fadc_all.xml; sourceTree = "<group>"; }; DDB3B86B18CA2F8700918955 /* ByteStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ByteStream.h; sourceTree = "<group>"; }; DDB3B86C18CA2F8700918955 /* ConfigurationFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConfigurationFile.h; sourceTree = "<group>"; }; DDB3B86D18CA2F8700918955 /* DataFieldHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DataFieldHeader.h; sourceTree = "<group>"; }; @@ -317,6 +318,7 @@ DD8A42141A95C11700565702 /* xml */ = { isa = PBXGroup; children = ( + DD8A42161A95CE4500565702 /* rta_fadc_all.xml */, DD8A42151A95C11700565702 /* packetlib_example.cpp */, ); path = xml; diff --git a/PacketLib.xcodeproj/project.xcworkspace/xcuserdata/bulgarelli.xcuserdatad/UserInterfaceState.xcuserstate b/PacketLib.xcodeproj/project.xcworkspace/xcuserdata/bulgarelli.xcuserdatad/UserInterfaceState.xcuserstate index 4e0cc302b41156a28f35e8ab4d5952c4598afad2..ce3ea1fcf54cb648d3c7f320a1ee1e1ec40ea1ba 100644 Binary files a/PacketLib.xcodeproj/project.xcworkspace/xcuserdata/bulgarelli.xcuserdatad/UserInterfaceState.xcuserstate and b/PacketLib.xcodeproj/project.xcworkspace/xcuserdata/bulgarelli.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/examples/xml/packetlib_example.cpp b/examples/xml/packetlib_example.cpp index 2894d19151b975a9416cb459a76a9189b187ec08..fe5d3da285c4c6db74dc1322561e947c21b2bf63 100644 --- a/examples/xml/packetlib_example.cpp +++ b/examples/xml/packetlib_example.cpp @@ -36,12 +36,12 @@ int main(int argc, char* argv[]) try { packetType = ps.getPacketType("triggered_telescope1_30GEN"); - PacketLib::Field* apid = packetType->getPacketHeader()->getField("APID"); + PacketLib::Field* apid = packetType->pheader()->getField("APID"); std::cout << apid->getType() << std::endl; //assert(apid->getType() == PacketLib::LogicalFieldDataType::UINT11); //assert(apid->getName().compare("APID") == 0); - PacketLib::Field* arrayID = packetType->getPacketDataFieldHeader()->getField("ArrayID"); + PacketLib::Field* arrayID = packetType->dfheader()->getField("ArrayID"); //assert(arrayID->getType() == PacketLib::LogicalFieldDataType::UINT16); //assert(arrayID->getName().compare("ArrayID") == 0); @@ -59,23 +59,24 @@ int main(int argc, char* argv[]) PacketLib::ByteStreamPtr rawPacket = rawPackets.getNext(); PacketLib::Packet* packet = ps.getPacket(rawPacket); - //PacketLib::Field* blockfield = packet->getPacketSourceDataField()->getBlock(0)->getField("FADC00"); + //PacketLib::Field* blockfield = packet->sdf()->getBlock(0)->getField("FADC00"); //assert(blockfield->getType() == PacketLib::LogicalFieldDataType::UINT16); // use reflection interface to read content - uint16_t apid = packet->getPacketHeader()->getFieldValue("APID"); - uint16_t arrayID = packet->getPacketDataFieldHeader()->getFieldValue("ArrayID"); - uint16_t npixels = packet->getPacketSourceDataField()->getFieldValue("Number of pixels"); - uint16_t nsamples = packet->getPacketSourceDataField()->getFieldValue("Number of samples"); + uint16_t apid = packet->pheader()->getFieldValue("APID"); + uint16_t arrayID = packet->dfheader()->getFieldValue("ArrayID"); + uint16_t npixels = packet->sdf()->getFieldValue("Number of pixels"); + uint16_t nsamples = packet->sdf()->getFieldValue("Number of samples"); std::cout << apid << " " << arrayID << " " << npixels << " " << nsamples << std::endl; //get each single pixel as a 1-dimensional array + for(unsigned int j=0; j<npixels; j++) { - uint16_t* pix = (uint16_t*) packet->getPacketSourceDataField()->getBlock(j)->getByteStream()->getStream(); + uint16_t* pix = (uint16_t*) packet->sdf()->getBlock(j)->getBytes(); for(uint16_t sample=0; sample<nsamples; sample++) cout << pix[sample] << " "; cout << endl; @@ -85,7 +86,7 @@ int main(int argc, char* argv[]) //access to each single sample for(uint16_t pixel=0; pixel<npixels; pixel++) { for(uint16_t sample=0; sample<nsamples; sample++) { - cout << packet->getPacketSourceDataField()->getBlock(pixel)->getFieldValue(sample) << " "; + cout << packet->sdf()->getBlock(pixel)->getFieldValue(sample) << " "; } cout << endl; } diff --git a/include/Packet.h b/include/Packet.h index 973ba0790a66448681478cb42e0329e14279749b..a736ddb099577557aedbb3980c63830b68451c9f 100644 --- a/include/Packet.h +++ b/include/Packet.h @@ -135,15 +135,27 @@ public: ///Get the header PacketHeader* getPacketHeader(); + ///Get the header + PacketHeader* pheader(); + ///Get the data field header DataFieldHeader* getPacketDataFieldHeader(); + ///Get the data field header + DataFieldHeader* dfheader(); + ///Get the source data field SourceDataField* getPacketSourceDataField(); + ///Get the source data field + SourceDataField* sdf(); + ///Get the tail PartOfPacket* getPacketTail(); + ///Get the tail + PartOfPacket* tail(); + /// Gets the dimension in byte of the current packet (header + datafield (data field header + sdf + tail) dword size(); diff --git a/include/PartOfPacket.h b/include/PartOfPacket.h index 27f6423384746c6afcffbb54d5f2c1e614b9a648..7155719c9ceeb506a7ab930b66ccfdb9e6438d68 100644 --- a/include/PartOfPacket.h +++ b/include/PartOfPacket.h @@ -338,6 +338,12 @@ public: { return stream; } + + /// Get the current array of bytes from ByteStream + virtual byte* getBytes() + { + return stream->getStream(); + } virtual void memByteStream(ByteStreamPtr stream); diff --git a/src/Packet.cpp b/src/Packet.cpp index aa317f0bd43dda2975f290e90c6911cce4832641..33bcd71e45fc096ef0d6b313b32efd94d5e8ea20 100644 --- a/src/Packet.cpp +++ b/src/Packet.cpp @@ -1166,6 +1166,10 @@ PacketHeader* Packet::getPacketHeader() { } return header; } + +PacketHeader* Packet::pheader() { + return getPacketHeader(); +} DataFieldHeader* Packet::getPacketDataFieldHeader() { @@ -1176,6 +1180,9 @@ DataFieldHeader* Packet::getPacketDataFieldHeader() { return dataField->getPacketDataFieldHeader(); } +DataFieldHeader* Packet::dfheader() { + return getPacketDataFieldHeader(); +} SourceDataField* Packet::getPacketSourceDataField() { @@ -1185,6 +1192,10 @@ SourceDataField* Packet::getPacketSourceDataField() { } return dataField->getPacketSourceDataField(); } + +SourceDataField* Packet::sdf() { + return getPacketSourceDataField(); +} PartOfPacket* Packet::getPacketTail() { @@ -1194,6 +1205,10 @@ PartOfPacket* Packet::getPacketTail() { } return dataField->getPacketTail(); } + +PartOfPacket* Packet::tail() { + return getPacketTail(); +} ByteStreamPtr Packet::getData() { //ALGORITHM FOR AUTOMATIC DECOMPRESSION: NOT IMPLEMENTED NOW. TODO