/[PAMELA software]/yoda/techmodel/LogReader.cpp
ViewVC logotype

Contents of /yoda/techmodel/LogReader.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Tue Jul 6 12:20:23 2004 UTC (20 years, 5 months ago) by kusanagi
Branch: MAIN
Initial revision

1 /** @file
2 * $Source: /home/cvspamela/yoda/techmodel/LogReader.cpp,v $
3 * $Id: LogReader.cpp,v 1.2 2004/04/28 09:01:27 nagni Exp $
4 * $Author: nagni $
5 *
6 * Implementation of the LogReader class.
7 * ToBeDone:
8 * Control the CRC for the entire data Packet not just for single records
9 */
10
11 #define UINT unsigned int
12 #define BYTE unsigned char
13 #include <string>
14 #include <log4cpp/Category.hh>
15 extern "C" {
16 #include <sys/time.h>
17 #include "CRC.h"
18 }
19
20 #include <fstream>
21 #include "stdio.h"
22 #include "ReaderAlgorithms.h"
23
24 #include "event/log/LogRecord.h"
25
26 using namespace pamela;
27 using namespace pamela::techmodel;
28
29 static log4cpp::Category& cat = log4cpp::Category::getInstance("pamela.techmodel.LogReader");
30
31 /**
32 * Constructor.
33 */
34 LogReader::LogReader(void):
35 TechmodelAlgorithm(PacketType::Log, "TechmodelLogReader") {
36 cat << log4cpp::Priority::DEBUG
37 << "Constructor "
38 << "\n " << log4cpp::CategoryStream::ENDLINE;
39 Log = new LogEvent();
40 }
41
42 /**
43 * Get a string with the version info of the algorithm.
44 */
45 std::string LogReader::GetVersionInfo(void) const {
46 return
47 "$Header: /home/cvspamela/yoda/techmodel/LogReader.cpp,v 1.2 2004/04/28 09:01:27 nagni Exp $\n";
48 }
49
50 /**
51 * Initialize the algorithm with a special run. This will initialize the
52 * event reader routines for all packet types.
53 */
54 void LogReader::Init(PamelaRun *run) {
55 SetInputStream(run);
56 run->WriteSubPacket(this, &Log, Log->Class());
57 }
58
59 /**
60 * Unpack the Log event from an input file.
61 */
62 void LogReader::RunEvent(int EventNumber, long int length) {
63 int i, j;
64 char buff[9];
65 int numRecords = length/9;
66 TClonesArray &recs = *(Log->Records);
67 LogRecord* rec;
68
69 for(i = 0; i < numRecords; i++) {
70 InputFile->read(buff, sizeof(buff));
71 rec = new(recs[i]) LogRecord(); //aggiungo un nuovo TmtcRecord all'evento
72 rec->LG_RECORD_OBT = (((UINT32)buff[0]<<24)&0xFF000000) + (((UINT32)buff[1]<<16)&0x00FF0000) + (((UINT32)buff[2]<<8)&0x0000FF00) + (((UINT32)buff[3])&0x000000FF);
73 rec->LG_LINE = (((UINT16)buff[4]<<8)&0xFF00) + (((UINT16)buff[5])&0x00FF);
74 rec->LG_INFO = (((UINT16)buff[6]<<8)&0xFF00) + (((BYTE)buff[7])&0x00FF);
75 rec->LG_FILE_ID = ((UINT16)buff[8]);
76 }
77
78 /*for(i = 0; i < numRecords; i++) {
79 LogRecord *record = static_cast<LogRecord*>((recs).At(i));
80 cat << log4cpp::Priority::INFO
81 << "\n Record OBT: "
82 << record->LG_RECORD_OBT();
83 }*/
84 }
85

  ViewVC Help
Powered by ViewVC 1.1.23