|
uniset-algorithms 0.2
|
00001 #ifndef SEESMode_H_ 00002 #define SEESMode_H_ 00003 // ----------------------------------------------------------------------------- 00004 #include <string> 00005 #include <sstream> 00006 #include <UniSetObject.h> 00007 #include <ObjectsManager.h> 00008 #include <UniversalInterface.h> 00009 #include <MessageType.h> 00010 #include "ObjectMode.h" 00011 #include "SEESMessages.h" 00012 #include "AutomatMessages.h" 00013 #include "QG/QG.h" 00014 #include "Diesel/Diesel.h" 00015 #include "Generator/Generator.h" 00016 #include "SEESTypes.h" 00017 // ----------------------------------------------------------------------------- 00018 class SEES; 00019 class SEESControl; 00020 00025 class SEESMode 00026 { 00027 public: 00028 static SEESMode* Instance(); 00029 virtual ~SEESMode(); 00030 void Destroy(); 00031 00032 virtual void step( SEES* sc ){} 00033 00034 virtual void timerInfo( UniSetTypes::TimerMessage *tm, SEES* sc){} 00035 virtual void sysCommand( UniSetTypes::SystemMessage* sm, SEES* sc){} 00036 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, SEES* sc); 00037 virtual void seesInfo( SEESMessage *sm, SEES* sc ){} 00038 00039 virtual bool activate( SEES* sc){ return true; } 00040 virtual bool disactivate( SEES* sc){ return true; } 00041 00042 virtual const string modeName(){ return "???Mode";} 00043 virtual std::ostringstream& modeInfo( std::ostringstream& os){ return os;} 00044 00045 virtual SEESMessage::SEESMode getMode(){ return SEESMessage::InitMode; } 00046 00047 void protection(); 00048 00049 protected: 00050 SEESMode(); 00051 void changeMode( SEESMode* m, SEES* sc ); 00052 00053 void askTimer( SEES* sc, short timerid, long timeMS, short ticks=-1 ); 00054 void resetModeTimer( SEES* sc ); 00055 void setMyControlMode( SEES* sc, unsigned int control_mode ); 00056 void updateReservNeeded( SEES* sc ); 00057 00058 private: 00059 static SEESMode* inst; 00060 }; 00061 // --------------------------------------------------------------------------- 00072 class SEESOffMode: 00073 public SEESMode 00074 { 00075 public: 00076 static SEESOffMode* Instance(); 00077 void Destroy(); 00078 virtual ~SEESOffMode(); 00079 00080 // -------- 00081 00082 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, SEES* sc); 00083 virtual void sysCommand( UniSetTypes::SystemMessage* sm, SEES* sc); 00084 // virtual void timerInfo( UniSetTypes::TimerMessage *tm, SEES* sc); 00085 00086 virtual bool activate(SEES* sc); 00087 virtual const string modeName(){ return "SEESOffMode";} 00088 virtual SEESMessage::SEESMode getMode(){ return SEESMessage::OffMode; } 00089 // virtual std::ostringstream& modeInfo( std::ostringstream& os); 00090 00091 00092 protected: 00093 SEESOffMode(); 00094 00095 private: 00096 static SEESOffMode* inst; 00097 }; 00098 // --------------------------------------------------------------------------- 00112 // --------------------------------------------------------------------------- 00117 class SEESOnMode: 00118 public SEESMode 00119 { 00120 public: 00121 static SEESOnMode* Instance(); 00122 void Destroy(); 00123 virtual ~SEESOnMode(); 00124 00125 // -------- 00126 00127 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, SEES* sc); 00128 virtual void sysCommand( UniSetTypes::SystemMessage* sm, SEES* sc); 00129 00130 virtual bool activate( SEES* sc ); 00131 virtual const string modeName(){ return "SEESOnMode";} 00132 virtual SEESMessage::SEESMode getMode(){ return SEESMessage::OnMode; } 00133 00134 protected: 00135 SEESOnMode(); 00136 void init( SEES* sc ); 00137 00138 private: 00139 static SEESOnMode* inst; 00140 }; 00141 // --------------------------------------------------------------------------- 00146 class SEESRunningMode: 00147 public SEESMode 00148 { 00149 public: 00150 static SEESRunningMode* Instance(); 00151 void Destroy(); 00152 virtual ~SEESRunningMode(); 00153 00154 // -------- 00155 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, SEES* sc); 00156 virtual bool activate( SEES* sc ); 00157 virtual const string modeName(){ return "SEESRunningMode";} 00158 virtual SEESMessage::SEESMode getMode(){ return SEESMessage::RunningMode; } 00159 00160 protected: 00161 SEESRunningMode(); 00162 00163 private: 00164 static SEESRunningMode* inst; 00165 }; 00166 00167 // --------------------------------------------------------------------------- 00180 class SEESOnReservMode: 00181 public SEESOnMode 00182 { 00183 public: 00184 static SEESOnReservMode* Instance(); 00185 void Destroy(); 00186 virtual ~SEESOnReservMode(); 00187 00188 // -------- 00189 virtual bool activate( SEES* sc ); 00190 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, SEES* sc); 00191 virtual const string modeName(){ return "SEESOnReservMode";} 00192 virtual SEESMessage::SEESMode getMode(){ return SEESMessage::ReservMode; } 00193 00194 protected: 00195 SEESOnReservMode(); 00196 00197 00198 private: 00199 static SEESOnReservMode* inst; 00200 }; 00201 // --------------------------------------------------------------------------- 00210 class SEESOnAutoMode: 00211 public SEESOnReservMode 00212 { 00213 public: 00214 static SEESOnAutoMode* Instance(); 00215 void Destroy(); 00216 virtual ~SEESOnAutoMode(); 00217 00218 // -------- 00219 virtual bool activate( SEES* sc ); 00220 virtual bool disactivate( SEES* sc ); 00221 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, SEES* sc); 00222 virtual void timerInfo( UniSetTypes::TimerMessage *tm, SEES* sc); 00223 00224 virtual const string modeName(){ return "SEESOnAutoMode";} 00225 virtual SEESMessage::SEESMode getMode(){ return SEESMessage::AutoMode; } 00226 00227 protected: 00228 SEESOnAutoMode(); 00229 00230 00231 private: 00232 static SEESOnAutoMode* inst; 00233 }; 00234 00235 00236 // --------------------------------------------------------------------------- 00250 class SEESReservMode: 00251 public SEESMode 00252 { 00253 public: 00254 static SEESReservMode* Instance(); 00255 void Destroy(); 00256 virtual ~SEESReservMode(); 00257 00258 // -------- 00259 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, SEES* sc); 00260 virtual void timerInfo( UniSetTypes::TimerMessage *tm, SEES* sc); 00261 00262 virtual bool activate(SEES* sc); 00263 virtual bool disactivate(SEES* sc); 00264 virtual const string modeName(){ return "SEESReservMode";} 00265 00266 virtual SEESMessage::SEESMode getMode(){ return SEESMessage::ReservMode; } 00267 00268 protected: 00269 SEESReservMode(); 00270 00271 00272 private: 00273 static SEESReservMode* inst; 00274 }; 00275 00276 // --------------------------------------------------------------------------- 00285 class SEESAutoMode: 00286 public SEESReservMode 00287 { 00288 public: 00289 static SEESAutoMode* Instance(); 00290 void Destroy(); 00291 virtual ~SEESAutoMode(); 00292 00293 // -------- 00294 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, SEES* sc); 00295 virtual void timerInfo( UniSetTypes::TimerMessage *tm, SEES* sc ); 00296 00297 virtual bool activate(SEES* sc); 00298 virtual bool disactivate(SEES* sc); 00299 virtual const string modeName(){ return "SEESAutoMode"; } 00300 00301 virtual SEESMessage::SEESMode getMode(){ return SEESMessage::AutoMode; } 00302 00303 protected: 00304 SEESAutoMode(); 00305 00306 00307 private: 00308 static SEESAutoMode* inst; 00309 }; 00310 00311 00312 // --------------------------------------------------------------------------- 00326 class SEESProtectionMode: 00327 public SEESMode 00328 { 00329 public: 00330 static SEESProtectionMode* Instance(); 00331 void Destroy(); 00332 virtual ~SEESProtectionMode(); 00333 00334 // -------- 00335 00336 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, SEES* sc); 00337 virtual void sysCommand( UniSetTypes::SystemMessage* sm, SEES* sc); 00338 virtual void timerInfo( UniSetTypes::TimerMessage *tm, SEES* sc); 00339 00340 virtual bool activate(SEES* sc); 00341 virtual bool disactivate(SEES* sc); 00342 virtual const string modeName(){ return "SEESProtectionMode"; } 00343 virtual SEESMessage::SEESMode getMode(){ return SEESMessage::ProtectionMode; } 00344 00345 protected: 00346 SEESProtectionMode(); 00347 bool updateLamp( SEES* sc ); 00348 00349 00350 private: 00351 static SEESProtectionMode* inst; 00352 }; 00353 00354 // --------------------------------------------------------------------------- 00372 class SEESInitMode: 00373 public SEESMode 00374 { 00375 public: 00376 static SEESInitMode* Instance(); 00377 void Destroy(); 00378 virtual ~SEESInitMode(); 00379 00380 // -------- 00381 00382 virtual bool activate(SEES* sc); 00383 virtual const string modeName(){ return "SEESInitMode"; } 00384 virtual SEESMessage::SEESMode getMode(){ return SEESMessage::InitMode; } 00385 00386 bool checkMode( SEES* sc ); 00387 00388 protected: 00389 SEESInitMode(); 00390 00391 private: 00392 static SEESInitMode* inst; 00393 }; 00394 00395 // --------------------------------------------------------------------------- 00411 class SEESWaitingMode: 00412 public SEESMode 00413 { 00414 public: 00415 00422 static SEESWaitingMode* Instance( SEES* sc, 00423 SEESMessage::SEESMode to, 00424 SEESMode* back=SEESProtectionMode::Instance(), 00425 int atempt=0 ); 00426 00427 void Destroy(); 00428 virtual ~SEESWaitingMode(); 00429 00430 // -------- 00431 00432 virtual void timerInfo( UniSetTypes::TimerMessage *tm, SEES* sc); 00433 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, SEES* sc ); 00434 virtual void seesInfo( SEESMessage *sm, SEES* sc ); 00435 00436 virtual bool activate( SEES* sc); 00437 virtual bool disactivate( SEES* sc); 00438 virtual const string modeName(){ return "SEESWaitingMode";} 00439 virtual SEESMessage::SEESMode getMode(){ return SEESMessage::WaitingMode; } 00440 00441 protected: 00442 SEESWaitingMode(); 00443 void rollback( SEES* sc ); 00444 void commandFailed( SEES* sc ); 00445 00446 private: 00447 static SEESWaitingMode* inst; 00448 }; 00449 // --------------------------------------------------------------------------- 00465 class SEESAutoWaitingMode: 00466 public SEESMode 00467 { 00468 public: 00469 00476 static SEESAutoWaitingMode* Instance( SEES* sc, 00477 SEESMessage::SEESMode to, 00478 SEESMode* back=SEESProtectionMode::Instance(), 00479 int atempt=0 ); 00480 00481 void Destroy(); 00482 virtual ~SEESAutoWaitingMode(); 00483 00484 // -------- 00485 00486 virtual void timerInfo( UniSetTypes::TimerMessage *tm, SEES* sc); 00487 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, SEES* sc ); 00488 00489 virtual bool activate( SEES* sc); 00490 virtual bool disactivate( SEES* sc); 00491 virtual const string modeName(){ return "SEESAutoWaitingMode";} 00492 virtual SEESMessage::SEESMode getMode(){ return SEESMessage::AutoWaitingMode; } 00493 00494 protected: 00495 SEESAutoWaitingMode(); 00496 void rollback( SEES* sc ); 00497 00498 private: 00499 static SEESAutoWaitingMode* inst; 00500 }; 00501 // --------------------------------------------------------------------------- 00502 00515 class SEESSleepMode: 00516 public SEESMode 00517 { 00518 public: 00519 static SEESSleepMode* Instance(); 00520 void Destroy(); 00521 virtual ~SEESSleepMode(); 00522 00523 // -------- 00524 virtual void sensorInfo( UniSetTypes::SensorMessage* sm, SEES* sc); 00525 virtual void timerInfo( UniSetTypes::TimerMessage *tm, SEES* sc); 00526 virtual bool activate(SEES* sc); 00527 virtual bool disactivate( SEES* sc); 00528 00529 virtual const string modeName(){ return "SEESSleepMode";} 00530 virtual SEESMessage::SEESMode getMode(){ return SEESMessage::SleepMode; } 00531 00532 protected: 00533 SEESSleepMode(); 00534 void checkState( SEES* sc ); 00535 00536 private: 00537 static SEESSleepMode* inst; 00538 }; 00539 // --------------------------------------------------------------------------- 00546 class SEESUndefinedMode: 00547 public SEESMode 00548 { 00549 public: 00550 static SEESUndefinedMode* Instance(); 00551 void Destroy(); 00552 virtual ~SEESUndefinedMode(); 00553 00554 // -------- 00555 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, SEES* sc); 00556 virtual bool activate(SEES* sc); 00557 virtual const string modeName(){ return "SEESUndefinedMode";} 00558 virtual SEESMessage::SEESMode getMode(){ return SEESMessage::UdefinedMode; } 00559 00560 00561 protected: 00562 SEESUndefinedMode(); 00563 00564 private: 00565 static SEESUndefinedMode* inst; 00566 }; 00567 // --------------------------------------------------------------------------- 00568 #endif // SEESMode_H_
1.7.4