--- yoda/techmodel/CalibTrailerReader.cpp 2004/08/19 15:24:46 1.1 +++ yoda/techmodel/CalibTrailerReader.cpp 2006/02/07 10:36:43 5.2 @@ -1,35 +1,23 @@ +/** @file + * $Author: kusanagi $ + * $Date: 2006/02/04 12:37:44 $ + * $Revision: 5.1 $ + * + * Implementation of the CalibTrailerReader class. + */ -// Implementation of the CalibTrailerReader class. - - -#define UINT unsigned int -#define BYTE unsigned char -#include -#include -extern "C" { -#include -#include "CRC.h" -} - -#include -#include "stdio.h" #include "ReaderAlgorithms.h" -#include "event/CalibTrailerEvent.h" - -using namespace pamela; using namespace pamela::techmodel; -static log4cpp::Category& cat = log4cpp::Category::getInstance("pamela.techmodel.CalibTrailerReader"); +static log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(_T("pamela.techmodel.CalibTrk1Reader")); /** * Constructor. */ CalibTrailerReader::CalibTrailerReader(void): TechmodelAlgorithm(PacketType::CalibTrailer, "TechmodelCalibTrailerReader") { - cat << log4cpp::Priority::DEBUG - << "Constructor " - << "\n " << log4cpp::CategoryStream::ENDLINE; + logger->debug(_T("Constructor")); calibTrailer = new CalibTrailerEvent(); } @@ -38,7 +26,7 @@ */ std::string CalibTrailerReader::GetVersionInfo(void) const { return - "$Trailer: /home/cvsmanager/yoda/techmodel/CalibTrailerReader.cpp,v 1.1.1.1 2004/07/06 12:20:23 kusanagi Exp $\n"; + "$Trailer: /opt/cvsmanager/yoda/techmodel/CalibTrailerReader.cpp,v 1.1.1.1 2004/07/06 12:20:23 Maurizio Nagni Exp $\n"; } /** @@ -46,6 +34,7 @@ * event reader routines for all packet types. */ void CalibTrailerReader::Init(PamelaRun *run) { + logger->debug(_T("Initialize")); SetInputStream(run); run->WriteSubPacket(this, &calibTrailer, calibTrailer->Class()); } @@ -53,8 +42,16 @@ /** * Unpack the CalibTrailer event from an input file. */ -void CalibTrailerReader::RunEvent(int EventNumber, long int length) { - - +void CalibTrailerReader::RunEvent(int EventNumber, long int dataLength) throw (WrongCRCException){ + char subData[dataLength]; + UINT16 subCRC; //calculated CRC of the data + UINT16 readCRC; //CRC read from the end of the subpacket + long int length = dataLength - 2; //the block of data + + InputFile->read(subData, sizeof(subData)); + subCRC = CM_Compute_CRC16(0, (UINT8*)subData, length); + readCRC = (((UINT16)(subData[dataLength - 2]<<8))&0xFF00) + (((UINT16)subData[dataLength - 1])&0x00FF); + + if (subCRC != readCRC) throw WrongCRCException(" Wrong CRC for CalibTrailer Packet "); }