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

DC_ByteArrayTelemetryStream.cpp

00001 // 00002 // Copyright 2004 P&P Software GmbH - All Rights Reserved 00003 // 00004 // DC_ByteArrayTelemetryStream.cpp 00005 // 00006 // Version 1.0 00007 // Date 04.03.03 (Version 1.0) 00008 // Author A. Pasetti (P&P Software) 00009 00010 #include "../GeneralInclude/CompilerSwitches.h" 00011 #include "../GeneralInclude/DebugSupport.h" 00012 #include "../GeneralInclude/ClassId.h" 00013 #include "../GeneralInclude/Constants.h" 00014 #include "../Telemetry/TelemetryPacket.h" 00015 #include "DC_ByteArrayTelemetryStream.h" 00016 00017 DC_ByteArrayTelemetryStream::DC_ByteArrayTelemetryStream(void) { 00018 size = 0; 00019 tmData = pNULL; 00020 writeCounter = 0; 00021 setClassId(ID_BYTEARRAYTELEMETRYSTREAM); 00022 } 00023 00024 void DC_ByteArrayTelemetryStream::reset(void) { 00025 assert(size>0 && tmData!=pNULL); 00026 writeCounter = 0; 00027 } 00028 00029 void DC_ByteArrayTelemetryStream::flush(void) { 00030 reset(); 00031 } 00032 00033 unsigned int DC_ByteArrayTelemetryStream::getCapacity(void) { 00034 assert( size > 0 ); 00035 return size; 00036 } 00037 00038 void DC_ByteArrayTelemetryStream::setCapacity(unsigned int n) { 00039 assert( n > 0 ); 00040 size = n; 00041 } 00042 00043 void DC_ByteArrayTelemetryStream::setStartingAddress(unsigned char* pAddress) { 00044 assert( pAddress != pNULL ); 00045 tmData = pAddress; 00046 } 00047 00048 unsigned char* DC_ByteArrayTelemetryStream::getStartingAddress(void) const { 00049 assert( tmData != pNULL ); 00050 return tmData; 00051 } 00052 00053 bool DC_ByteArrayTelemetryStream::doesPacketFit(TelemetryPacket* pItem) { 00054 assert( isObjectConfigured() ); 00055 return (pItem->getNumberOfBytes() <= (size-writeCounter) ); 00056 } 00057 00058 void DC_ByteArrayTelemetryStream::write(TelemetryPacket* pItem) { 00059 assert( isObjectConfigured() ); 00060 unsigned int base = writeCounter; 00061 for (unsigned int i=0; i<pItem->getNumberOfBytes(); i++) { 00062 if ( (i+base)>=size ) 00063 break; 00064 tmData[base+i] = pItem->getUnsignedByte(i); 00065 writeCounter++; 00066 } 00067 } 00068 00069 bool DC_ByteArrayTelemetryStream::isObjectConfigured(void) { 00070 return (TelemetryStream::isObjectConfigured() && size>0 && tmData!=pNULL); 00071 } 00072
Copyright 2003 P&P Software GmbH - All Rights Reserved