| 1 | /** @file | /** @file | 
| 2 | * $Source: /home/cvsmanager/yoda/techmodel/TmtcReader.cpp,v $ | * $Source: /home/cvsmanager/yoda/techmodel/TmtcReader.cpp,v $ | 
| 3 | * $Id: TmtcReader.cpp,v 2.3 2004/12/17 12:46:20 kusanagi Exp $ | * $Id: TmtcReader.cpp,v 4.1 2005/03/07 16:29:55 kusanagi Exp $ | 
| 4 | * $Author: kusanagi $ | * $Author: kusanagi $ | 
| 5 | * | * | 
| 6 | * Implementation of the TmtcReader class. | * Implementation of the TmtcReader class. | 
| 40 | */ | */ | 
| 41 | std::string TmtcReader::GetVersionInfo(void) const { | std::string TmtcReader::GetVersionInfo(void) const { | 
| 42 | return | return | 
| 43 | "$Header: /home/cvsmanager/yoda/techmodel/TmtcReader.cpp,v 2.3 2004/12/17 12:46:20 kusanagi Exp $\n"; | "$Header: /home/cvsmanager/yoda/techmodel/TmtcReader.cpp,v 4.1 2005/03/07 16:29:55 kusanagi Exp $\n"; | 
| 44 | } | } | 
| 45 |  |  | 
| 46 | /** | /** | 
| 57 | */ | */ | 
| 58 | void TmtcReader::RunEvent(int EventNumber, long int length) throw (WrongCRCException){ | void TmtcReader::RunEvent(int EventNumber, long int length) throw (WrongCRCException){ | 
| 59 |  |  | 
|  | /* |  | 
|  | //Just to test crc |  | 
|  | char tempbuff[length]; |  | 
|  | InputFile->read(tempbuff, sizeof(tempbuff)); |  | 
|  | UINT16 subCRC = 0; |  | 
|  | for (int jj = 0; jj < length ; jj++){ |  | 
|  | subCRC = CM_Compute_CRC16(subCRC, (BYTE*)(tempbuff+jj), 1); |  | 
|  | } |  | 
|  | //Just to test crc |  | 
|  | */ |  | 
|  |  |  | 
| 60 | int i, j; | int i, j; | 
| 61 | char subData[TMTC_SUB_LENGTH]; | char subData[TMTC_SUB_LENGTH]; | 
| 62 | char CRCbuff[TMTC_SUBCRC_LENGTH]; | char CRCbuff[TMTC_SUBCRC_LENGTH]; | 
| 70 |  |  | 
| 71 | UINT16    partialCRC = 0; //partial CRC updated as mcmd packet is read (to compare with the last two bytes of this event) | UINT16    partialCRC = 0; //partial CRC updated as mcmd packet is read (to compare with the last two bytes of this event) | 
| 72 | UINT16    readCRC = 0;    //partial CRC updated as mcmd packet is read (to compare with the last two bytes of this event) | UINT16    readCRC = 0;    //partial CRC updated as mcmd packet is read (to compare with the last two bytes of this event) | 
| 73 |  | for(int i = 0; i < numRecords; i++) { | 
|  | /*    char tempData[length-TMTC_CRC_LENGTH]; |  | 
|  | InputFile->read(tempData, sizeof(tempData)); |  | 
|  | partialCRC = CM_Compute_CRC16(0, (UINT8*)tempData, (length-TMTC_CRC_LENGTH)); |  | 
|  | */ |  | 
|  |  |  | 
|  | for(i = 0; i < numRecords; i++) { |  | 
| 74 | start = InputFile->tellg(); | start = InputFile->tellg(); | 
| 75 | InputFile->read(subData, sizeof(subData)); | InputFile->read(subData, sizeof(subData)); | 
| 76 | InputFile->read(CRCbuff, sizeof(CRCbuff)); | InputFile->read(CRCbuff, sizeof(CRCbuff)); | 
| 77 |  |  | 
|  | /*    for (int jj = 0; jj < TMTC_SUB_LENGTH ; jj++){ |  | 
|  | partialCRC = CM_Compute_CRC16(0, (UINT8*)tempData, (length-TMTC_CRC_LENGTH)); |  | 
|  | } |  | 
|  | */ |  | 
|  |  |  | 
| 78 | partialCRC = CM_Compute_CRC16(partialCRC, (UINT8*)&subData, TMTC_SUB_LENGTH); | partialCRC = CM_Compute_CRC16(partialCRC, (UINT8*)&subData, TMTC_SUB_LENGTH); | 
| 79 | partialCRC = CM_Compute_CRC16(partialCRC, (UINT8*)&CRCbuff, TMTC_SUBCRC_LENGTH); | partialCRC = CM_Compute_CRC16(partialCRC, (UINT8*)&CRCbuff, TMTC_SUBCRC_LENGTH); | 
| 80 |  |  | 
| 83 | rec = new(recs[i]) TmtcRecord(); //add a new TmtcRecord | rec = new(recs[i]) TmtcRecord(); //add a new TmtcRecord | 
| 84 | rec->TM_RECORD_OBT            = (((UINT32)subData[0]<<24)&0xFF000000) + (((UINT32)subData[1]<<16)&0x00FF0000) +  (((UINT32)subData[2]<<8)&0x0000FF00) + (((UINT32)subData[3])&0x000000FF); | rec->TM_RECORD_OBT            = (((UINT32)subData[0]<<24)&0xFF000000) + (((UINT32)subData[1]<<16)&0x00FF0000) +  (((UINT32)subData[2]<<8)&0x0000FF00) + (((UINT32)subData[3])&0x000000FF); | 
| 85 | rec->TM_DIAG_AND_BILEVEL_ACQ  = (((UINT16)subData[4]<<8)&0x0000FF00) + (((UINT16)subData[5])&0x000000FF); | rec->TM_DIAG_AND_BILEVEL_ACQ  = (((UINT16)subData[4]<<8)&0x0000FF00) + (((UINT16)subData[5])&0x000000FF); | 
| 86 | for(j = 0; j < 12; j++) { |  | 
| 87 | rec->TM_TH_ANA[j]    = ((((UINT16)subData[6+j]<<8)&0xFF00) + (((UINT16)subData[7+j])&0x00FF)); //20 is the size of TM_DEA_ANA(16) + OBT(4) | for(int j = 0; j < 16; j++) { | 
| 88 |  | rec->TM_TH_ANA[j]    = ((((UINT16)subData[6 + 2*j]<<8)&0xFF00) + (((UINT16)subData[7 + 2*j])&0x00FF)); //20 is the size of TM_DEA_ANA(16) + OBT(4) | 
| 89 | } | } | 
| 90 |  |  | 
| 91 | for(j = 0; j < 6; j++) { | for(int j = 0; j < 6; j++) { | 
| 92 | rec->TM_DEA_ANA[j]   = subData[30+j]; | rec->TM_DEA_ANA[j]   = subData[30+j]; | 
| 93 | } | } | 
| 94 |  |  |