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

CC_TelemetryPacketFactory.cpp

00001 00002 // 00003 // Copyright 2003 P&P Software GmbH - All Rights Reserved 00004 // 00005 // CC_TelemetryPacketFactory.cpp 00006 // 00007 // This file was automatically generated by an XSL program 00008 // 00009 00010 #include "../GeneralInclude/CompilerSwitches.h" 00011 #include "../GeneralInclude/DebugSupport.h" 00012 #include "../GeneralInclude/BasicTypes.h" 00013 #include "../GeneralInclude/ClassId.h" 00014 #include "../GeneralInclude/Constants.h" 00015 #include "../Telemetry/DC_DummyPUSTelemetryPacket.h" 00016 #include "../Telemetry/DC_PUSDataReportingPacket.h" 00017 #include "../Telemetry/DC_PUSMemoryDumpAbsolute.h" 00018 #include "../Telemetry/DC_PUSMemoryDumpOffset.h" 00019 #include "../Telemetry/DC_PUSTcVerificationPacket.h" 00020 #include "../Base/CC_RootObject.h" 00021 #include "CC_TelemetryPacketFactory.h" 00022 00023 CC_TelemetryPacketFactory* CC_TelemetryPacketFactory::pInstance = pNULL; 00024 00025 CC_TelemetryPacketFactory::CC_TelemetryPacketFactory(void) { 00026 setClassId(ID_TELECOMMANDFACTORY); 00027 00028 00029 sizeDummyPUSTelemetryPacket = 2; 00030 poolDummyPUSTelemetryPacket = new DC_DummyPUSTelemetryPacket*[sizeDummyPUSTelemetryPacket]; 00031 for (unsigned int i=0; i<sizeDummyPUSTelemetryPacket; i++) 00032 poolDummyPUSTelemetryPacket[i] = pNULL; 00033 00034 sizePUSDataReportingPacket = 2; 00035 poolPUSDataReportingPacket = new DC_PUSDataReportingPacket*[sizePUSDataReportingPacket]; 00036 for (unsigned int i=0; i<sizePUSDataReportingPacket; i++) 00037 poolPUSDataReportingPacket[i] = pNULL; 00038 00039 sizePUSMemoryDumpAbsolute = 1; 00040 poolPUSMemoryDumpAbsolute = new DC_PUSMemoryDumpAbsolute*[sizePUSMemoryDumpAbsolute]; 00041 for (unsigned int i=0; i<sizePUSMemoryDumpAbsolute; i++) 00042 poolPUSMemoryDumpAbsolute[i] = pNULL; 00043 00044 sizePUSMemoryDumpOffset = 1; 00045 poolPUSMemoryDumpOffset = new DC_PUSMemoryDumpOffset*[sizePUSMemoryDumpOffset]; 00046 for (unsigned int i=0; i<sizePUSMemoryDumpOffset; i++) 00047 poolPUSMemoryDumpOffset[i] = pNULL; 00048 00049 sizePUSTcVerificationPacket = 1; 00050 poolPUSTcVerificationPacket = new DC_PUSTcVerificationPacket*[sizePUSTcVerificationPacket]; 00051 for (unsigned int i=0; i<sizePUSTcVerificationPacket; i++) 00052 poolPUSTcVerificationPacket[i] = pNULL; 00053 00054 } 00055 00056 bool CC_TelemetryPacketFactory::isObjectConfigured(void) { 00057 00058 if ( !CC_RootObject::isObjectConfigured() ) 00059 return false; 00060 00061 if ( poolDummyPUSTelemetryPacket==pNULL ) 00062 return false; 00063 00064 for (unsigned int i=0; i<sizeDummyPUSTelemetryPacket; i++) 00065 if ( poolDummyPUSTelemetryPacket[i]==pNULL ) 00066 return false; 00067 00068 if ( poolPUSDataReportingPacket==pNULL ) 00069 return false; 00070 00071 for (unsigned int i=0; i<sizePUSDataReportingPacket; i++) 00072 if ( poolPUSDataReportingPacket[i]==pNULL ) 00073 return false; 00074 00075 if ( poolPUSMemoryDumpAbsolute==pNULL ) 00076 return false; 00077 00078 for (unsigned int i=0; i<sizePUSMemoryDumpAbsolute; i++) 00079 if ( poolPUSMemoryDumpAbsolute[i]==pNULL ) 00080 return false; 00081 00082 if ( poolPUSMemoryDumpOffset==pNULL ) 00083 return false; 00084 00085 for (unsigned int i=0; i<sizePUSMemoryDumpOffset; i++) 00086 if ( poolPUSMemoryDumpOffset[i]==pNULL ) 00087 return false; 00088 00089 if ( poolPUSTcVerificationPacket==pNULL ) 00090 return false; 00091 00092 for (unsigned int i=0; i<sizePUSTcVerificationPacket; i++) 00093 if ( poolPUSTcVerificationPacket[i]==pNULL ) 00094 return false; 00095 00096 00097 return true; 00098 } 00099 00100 CC_TelemetryPacketFactory* CC_TelemetryPacketFactory::getInstance(void) { 00101 if (pInstance==pNULL) 00102 pInstance = new CC_TelemetryPacketFactory(); 00103 return pInstance; 00104 } 00105 00106 00107 void CC_TelemetryPacketFactory::setTelemetryPacket(unsigned int i, DC_DummyPUSTelemetryPacket* pItem) { 00108 assert(i<sizeDummyPUSTelemetryPacket); 00109 assert(pItem!=pNULL); 00110 poolDummyPUSTelemetryPacket[i] = pItem; 00111 poolDummyPUSTelemetryPacket[i]->setInUse(false); 00112 } 00113 00114 unsigned int CC_TelemetryPacketFactory::getNumberDummyPUSTelemetryPacket(void) { 00115 unsigned int counter = 0; 00116 for (unsigned int i=0; i<sizeDummyPUSTelemetryPacket; i++) 00117 if ( poolDummyPUSTelemetryPacket[i]->isInUse() ) 00118 counter++; 00119 return counter; 00120 } 00121 00122 unsigned int CC_TelemetryPacketFactory::getCapacityDummyPUSTelemetryPacket(void) { 00123 return sizeDummyPUSTelemetryPacket; 00124 } 00125 00126 00127 DC_DummyPUSTelemetryPacket* CC_TelemetryPacketFactory::allocateDummyPUSTelemetryPacket() { 00128 assert( isObjectConfigured() ); 00129 for (unsigned int i=0; i<sizeDummyPUSTelemetryPacket; i++) 00130 if (!poolDummyPUSTelemetryPacket[i]->isInUse() ) { 00131 poolDummyPUSTelemetryPacket[i]->setInUse(true); 00132 return poolDummyPUSTelemetryPacket[i]; 00133 } 00134 return pNULL; 00135 } 00136 00137 bool CC_TelemetryPacketFactory::isFreeDummyPUSTelemetryPacket() { 00138 for (unsigned int i=0; i<sizeDummyPUSTelemetryPacket; i++) 00139 if ( !poolDummyPUSTelemetryPacket[i]->isInUse() ) 00140 return true; 00141 00142 return false; 00143 } 00144 00145 00146 00147 void CC_TelemetryPacketFactory::setTelemetryPacket(unsigned int i, DC_PUSDataReportingPacket* pItem) { 00148 assert(i<sizePUSDataReportingPacket); 00149 assert(pItem!=pNULL); 00150 poolPUSDataReportingPacket[i] = pItem; 00151 poolPUSDataReportingPacket[i]->setInUse(false); 00152 } 00153 00154 unsigned int CC_TelemetryPacketFactory::getNumberPUSDataReportingPacket(void) { 00155 unsigned int counter = 0; 00156 for (unsigned int i=0; i<sizePUSDataReportingPacket; i++) 00157 if ( poolPUSDataReportingPacket[i]->isInUse() ) 00158 counter++; 00159 return counter; 00160 } 00161 00162 unsigned int CC_TelemetryPacketFactory::getCapacityPUSDataReportingPacket(void) { 00163 return sizePUSDataReportingPacket; 00164 } 00165 00166 00167 DC_PUSDataReportingPacket* CC_TelemetryPacketFactory::allocatePUSDataReportingPacket(unsigned int DefinitionBufferSize, unsigned int ValueBufferSize, unsigned int MaxNumberFA) { 00168 assert( isObjectConfigured() ); 00169 for (unsigned int i=0; i<sizePUSDataReportingPacket; i++) 00170 if (poolPUSDataReportingPacket[i]->getDefinitionBufferSize()>=DefinitionBufferSize && 00171 poolPUSDataReportingPacket[i]->getValueBufferSize()>=ValueBufferSize && 00172 poolPUSDataReportingPacket[i]->getMaxNumberFA()>=MaxNumberFA && 00173 !poolPUSDataReportingPacket[i]->isInUse() ) { 00174 poolPUSDataReportingPacket[i]->setInUse(true); 00175 return poolPUSDataReportingPacket[i]; 00176 } 00177 return pNULL; 00178 } 00179 00180 bool CC_TelemetryPacketFactory::isFreePUSDataReportingPacket(unsigned int DefinitionBufferSize, unsigned int ValueBufferSize, unsigned int MaxNumberFA) { 00181 for (unsigned int i=0; i<sizePUSDataReportingPacket; i++) 00182 if ( poolPUSDataReportingPacket[i]->getDefinitionBufferSize()>=DefinitionBufferSize && 00183 poolPUSDataReportingPacket[i]->getValueBufferSize()>=ValueBufferSize && 00184 poolPUSDataReportingPacket[i]->getMaxNumberFA()>=MaxNumberFA && 00185 !poolPUSDataReportingPacket[i]->isInUse() ) 00186 return true; 00187 00188 return false; 00189 } 00190 00191 00192 DC_PUSDataReportingPacket* CC_TelemetryPacketFactory::getPUSDataReportingPacket(TD_SID sid) { 00193 assert( isObjectConfigured() ); 00194 assert( sid>0 ); 00195 00196 for (unsigned int i=0; i<sizePUSDataReportingPacket; i++) 00197 if ( ( poolPUSDataReportingPacket[i]->getSID() == sid ) && 00198 ( poolPUSDataReportingPacket[i]->isInUse() ) ) { 00199 return poolPUSDataReportingPacket[i]; 00200 } 00201 return pNULL; 00202 } 00203 00204 void CC_TelemetryPacketFactory::setTelemetryPacket(unsigned int i, DC_PUSMemoryDumpAbsolute* pItem) { 00205 assert(i<sizePUSMemoryDumpAbsolute); 00206 assert(pItem!=pNULL); 00207 poolPUSMemoryDumpAbsolute[i] = pItem; 00208 poolPUSMemoryDumpAbsolute[i]->setInUse(false); 00209 } 00210 00211 unsigned int CC_TelemetryPacketFactory::getNumberPUSMemoryDumpAbsolute(void) { 00212 unsigned int counter = 0; 00213 for (unsigned int i=0; i<sizePUSMemoryDumpAbsolute; i++) 00214 if ( poolPUSMemoryDumpAbsolute[i]->isInUse() ) 00215 counter++; 00216 return counter; 00217 } 00218 00219 unsigned int CC_TelemetryPacketFactory::getCapacityPUSMemoryDumpAbsolute(void) { 00220 return sizePUSMemoryDumpAbsolute; 00221 } 00222 00223 00224 DC_PUSMemoryDumpAbsolute* CC_TelemetryPacketFactory::allocatePUSMemoryDumpAbsolute(unsigned int MaxNumberBlocks, unsigned int DumpBufferSize) { 00225 assert( isObjectConfigured() ); 00226 for (unsigned int i=0; i<sizePUSMemoryDumpAbsolute; i++) 00227 if (poolPUSMemoryDumpAbsolute[i]->getMaxNumberBlocks()>=MaxNumberBlocks && 00228 poolPUSMemoryDumpAbsolute[i]->getDumpBufferSize()>=DumpBufferSize && 00229 !poolPUSMemoryDumpAbsolute[i]->isInUse() ) { 00230 poolPUSMemoryDumpAbsolute[i]->setInUse(true); 00231 return poolPUSMemoryDumpAbsolute[i]; 00232 } 00233 return pNULL; 00234 } 00235 00236 bool CC_TelemetryPacketFactory::isFreePUSMemoryDumpAbsolute(unsigned int MaxNumberBlocks, unsigned int DumpBufferSize) { 00237 for (unsigned int i=0; i<sizePUSMemoryDumpAbsolute; i++) 00238 if ( poolPUSMemoryDumpAbsolute[i]->getMaxNumberBlocks()>=MaxNumberBlocks && 00239 poolPUSMemoryDumpAbsolute[i]->getDumpBufferSize()>=DumpBufferSize && 00240 !poolPUSMemoryDumpAbsolute[i]->isInUse() ) 00241 return true; 00242 00243 return false; 00244 } 00245 00246 00247 00248 void CC_TelemetryPacketFactory::setTelemetryPacket(unsigned int i, DC_PUSMemoryDumpOffset* pItem) { 00249 assert(i<sizePUSMemoryDumpOffset); 00250 assert(pItem!=pNULL); 00251 poolPUSMemoryDumpOffset[i] = pItem; 00252 poolPUSMemoryDumpOffset[i]->setInUse(false); 00253 } 00254 00255 unsigned int CC_TelemetryPacketFactory::getNumberPUSMemoryDumpOffset(void) { 00256 unsigned int counter = 0; 00257 for (unsigned int i=0; i<sizePUSMemoryDumpOffset; i++) 00258 if ( poolPUSMemoryDumpOffset[i]->isInUse() ) 00259 counter++; 00260 return counter; 00261 } 00262 00263 unsigned int CC_TelemetryPacketFactory::getCapacityPUSMemoryDumpOffset(void) { 00264 return sizePUSMemoryDumpOffset; 00265 } 00266 00267 00268 DC_PUSMemoryDumpOffset* CC_TelemetryPacketFactory::allocatePUSMemoryDumpOffset(unsigned int MaxNumberBlocks, unsigned int DumpBufferSize) { 00269 assert( isObjectConfigured() ); 00270 for (unsigned int i=0; i<sizePUSMemoryDumpOffset; i++) 00271 if (poolPUSMemoryDumpOffset[i]->getMaxNumberBlocks()>=MaxNumberBlocks && 00272 poolPUSMemoryDumpOffset[i]->getDumpBufferSize()>=DumpBufferSize && 00273 !poolPUSMemoryDumpOffset[i]->isInUse() ) { 00274 poolPUSMemoryDumpOffset[i]->setInUse(true); 00275 return poolPUSMemoryDumpOffset[i]; 00276 } 00277 return pNULL; 00278 } 00279 00280 bool CC_TelemetryPacketFactory::isFreePUSMemoryDumpOffset(unsigned int MaxNumberBlocks, unsigned int DumpBufferSize) { 00281 for (unsigned int i=0; i<sizePUSMemoryDumpOffset; i++) 00282 if ( poolPUSMemoryDumpOffset[i]->getMaxNumberBlocks()>=MaxNumberBlocks && 00283 poolPUSMemoryDumpOffset[i]->getDumpBufferSize()>=DumpBufferSize && 00284 !poolPUSMemoryDumpOffset[i]->isInUse() ) 00285 return true; 00286 00287 return false; 00288 } 00289 00290 00291 00292 void CC_TelemetryPacketFactory::setTelemetryPacket(unsigned int i, DC_PUSTcVerificationPacket* pItem) { 00293 assert(i<sizePUSTcVerificationPacket); 00294 assert(pItem!=pNULL); 00295 poolPUSTcVerificationPacket[i] = pItem; 00296 poolPUSTcVerificationPacket[i]->setInUse(false); 00297 } 00298 00299 unsigned int CC_TelemetryPacketFactory::getNumberPUSTcVerificationPacket(void) { 00300 unsigned int counter = 0; 00301 for (unsigned int i=0; i<sizePUSTcVerificationPacket; i++) 00302 if ( poolPUSTcVerificationPacket[i]->isInUse() ) 00303 counter++; 00304 return counter; 00305 } 00306 00307 unsigned int CC_TelemetryPacketFactory::getCapacityPUSTcVerificationPacket(void) { 00308 return sizePUSTcVerificationPacket; 00309 } 00310 00311 00312 DC_PUSTcVerificationPacket* CC_TelemetryPacketFactory::allocatePUSTcVerificationPacket() { 00313 assert( isObjectConfigured() ); 00314 for (unsigned int i=0; i<sizePUSTcVerificationPacket; i++) 00315 if (!poolPUSTcVerificationPacket[i]->isInUse() ) { 00316 poolPUSTcVerificationPacket[i]->setInUse(true); 00317 return poolPUSTcVerificationPacket[i]; 00318 } 00319 return pNULL; 00320 } 00321 00322 bool CC_TelemetryPacketFactory::isFreePUSTcVerificationPacket() { 00323 for (unsigned int i=0; i<sizePUSTcVerificationPacket; i++) 00324 if ( !poolPUSTcVerificationPacket[i]->isInUse() ) 00325 return true; 00326 00327 return false; 00328 } 00329 00330 00331
Copyright 2003 P&P Software GmbH - All Rights Reserved