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

TelemetryListModeManager.cpp

00001 // 00002 // Copyright 2004 P&P Software GmbH - All Rights Reserved 00003 // 00004 // TelemetryListModeManager.cpp 00005 // 00006 // Version 1.0 00007 // Date 24.01.04 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 "../Base/CC_RootObject.h" 00015 #include "../Base/ModeManager.h" 00016 #include "TelemetryListModeManager.h" 00017 00018 TelemetryListModeManager::TelemetryListModeManager(void) { 00019 counter = 0; 00020 list = pNULL; 00021 listLength = pNULL; 00022 iterationListIndex = 0; 00023 } 00024 00025 void TelemetryListModeManager::allocateMemory(TD_Mode numberOfModes) { 00026 assert( numberOfModes > 0); 00027 assert( list == pNULL ); 00028 00029 list = new TelemetryPacket**[numberOfModes]; 00030 for (TD_Mode i=0; i<numberOfModes; i++) 00031 list[i] = pNULL; 00032 00033 listLength = new unsigned int[numberOfModes]; 00034 for (TD_Mode i=0; i<numberOfModes; i++) 00035 listLength[i] = 0; 00036 } 00037 00038 void TelemetryListModeManager::setListLength(unsigned int n, unsigned int length) { 00039 assert( listLength != pNULL ); 00040 assert( list != pNULL ); 00041 assert( n<(unsigned int)getNumberOfModes() ); 00042 assert( length>0 ); 00043 00044 listLength[n] = length; 00045 list[n] = new TelemetryPacket*[length]; 00046 for (unsigned int i=0; i<length; i++) 00047 list[n][i] = pNULL; 00048 } 00049 00050 void TelemetryListModeManager::setListItem(unsigned int n, unsigned int pos, TelemetryPacket* pItem) { 00051 assert( n<(unsigned int)getNumberOfModes() ); 00052 assert( listLength != pNULL ); 00053 assert( listLength[n] > 0 ); 00054 assert( pos<listLength[n] ); 00055 assert( pItem != pNULL ); 00056 00057 if ( (pos<listLength[n]) && (n<(unsigned int)getNumberOfModes()) ) 00058 list[n][pos] = pItem; 00059 else 00060 CC_RootObject::getEventRepository()->create(this,EVT_ILLEGAL_MM); 00061 } 00062 00063 void TelemetryListModeManager::first(void) { 00064 assert( isObjectConfigured() ); 00065 counter = 0; 00066 iterationListIndex = getCurrentMode(); 00067 } 00068 00069 void TelemetryListModeManager::next(void) { 00070 assert( isObjectConfigured() ); 00071 counter++; 00072 } 00073 00074 bool TelemetryListModeManager::isIterationFinished(void) { 00075 assert( isObjectConfigured() ); 00076 return( counter == listLength[iterationListIndex] ); 00077 } 00078 00079 TelemetryPacket* TelemetryListModeManager::getIterationTelemetryPacket(void) { 00080 assert( isObjectConfigured() ); 00081 if (counter>=listLength[iterationListIndex]) 00082 counter = listLength[iterationListIndex]-1; 00083 return list[iterationListIndex][counter]; 00084 } 00085 00086 bool TelemetryListModeManager::isObjectConfigured(void) { 00087 if (!TelemetryModeManager::isObjectConfigured() || list==pNULL || listLength==pNULL) 00088 return NOT_CONFIGURED; 00089 00090 for (TD_Mode i=0; i<getNumberOfModes(); i++) { 00091 if ( listLength[i] == pNULL ) 00092 return NOT_CONFIGURED; 00093 } 00094 00095 for (TD_Mode i=0; i<getNumberOfModes(); i++) { 00096 for (unsigned int j=0; j<listLength[i]; j++) { 00097 if ( list[i][j] == pNULL ) 00098 return NOT_CONFIGURED; 00099 } 00100 } 00101 00102 return CONFIGURED; 00103 } 00104
Copyright 2003 P&P Software GmbH - All Rights Reserved