Main Page | Modules | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

DC_PUSMemoryDumpAbsolute.cpp

00001 // 00002 // Copyright 2004 P&P Software GmbH - All Rights Reserved 00003 // 00004 // DC_PUSMemoryDumpAbsolute.cpp 00005 // 00006 // Version 1.0 00007 // Date 04.04.03 00008 // Author A. Pasetti (P&P Software) 00009 00010 #include "../GeneralInclude/CompilerSwitches.h" 00011 #include "../GeneralInclude/TestConstants.h" 00012 #include "../GeneralInclude/ClassId.h" 00013 #include "../GeneralInclude/Constants.h" 00014 #include "../Base/CC_RootObject.h" 00015 #include "../Utilities/Checksum.h" 00016 #include "../Telecommand/PUSTelecommand.h" 00017 #include "../Telemetry/PUSTelemetryPacket.h" 00018 #include "../Telemetry/DC_PUSMemoryDumpAbsolute.h" 00019 00020 #include <string.h> 00021 00022 DC_PUSMemoryDumpAbsolute::DC_PUSMemoryDumpAbsolute(void) { 00023 setClassId(ID_PUSMEMORYDUMPABSOLUTE); 00024 setSubType(PUS_ST_TM_DMP_ABS); 00025 } 00026 00027 void DC_PUSMemoryDumpAbsolute::update(void) { 00028 assert( memId!=0 ); 00029 assert( isObjectConfigured() ); 00030 00031 unsigned int offset = 0; 00032 memcpy(data+offset,&memId,sizeof(TD_PUSMemId)); 00033 offset = offset + sizeof(TD_PUSMemId); 00034 memcpy(data+offset,&numberBlocks,sizeof(TD_PUSNumberMemBlocks)); 00035 offset = offset + sizeof(TD_PUSNumberMemBlocks); 00036 00037 assert( numberBlocks<maxNumberBlocks ); 00038 00039 for (TD_PUSNumberMemBlocks i=0; i<numberBlocks; i++) { 00040 memcpy(data+offset,&block[i].startAddress,sizeof(TD_PUSMemData*)); 00041 offset = offset + sizeof(TD_PUSMemData*); 00042 memcpy(data+offset,&block[i].length,sizeof(TD_PUSMemLength)); 00043 offset = offset + sizeof(TD_PUSMemLength); 00044 00045 unsigned char* start = (unsigned char*)(block[i].startAddress); 00046 unsigned int nBytes = (block[i].length)*sizeof(TD_PUSMemData); 00047 memcpy(data+offset,start,nBytes); 00048 offset = offset + nBytes; 00049 00050 unsigned short checksum; 00051 if ( isChecksumFlagSet() ) 00052 checksum = doChecksum(start,nBytes); 00053 else 00054 checksum = 0; 00055 memcpy(data+offset,&checksum,sizeof(unsigned short)); 00056 offset = offset+sizeof(unsigned short); 00057 assert(sizeof(unsigned short)==2); 00058 } 00059 }
Copyright 2003 P&P Software GmbH - All Rights Reserved