|
uniset-algorithms 0.2
|
00001 #ifndef AutomatMode_H_ 00002 #define AutomatMode_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 "AutomatMessages.h" 00011 // ------------------------------------------------------------------------------------------ 00012 class Automat; 00013 00018 class AutomatMode 00019 { 00020 public: 00021 static AutomatMode* Instance(); 00022 void Destroy(); 00023 virtual ~AutomatMode(); 00024 00025 virtual void timerInfo( UniSetTypes::TimerMessage *tm, Automat* am ){} 00026 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, Automat* am ){} 00027 virtual void sysCommand( UniSetTypes::SystemMessage* sm, Automat* am ){} 00028 virtual void automatCommand( AutomatMessage* m, Automat* am ); 00029 virtual bool activate( Automat* am ){ return true; } 00030 virtual bool disactivate( Automat* am ){ return true; } 00031 virtual void step( Automat* am ); 00032 00033 virtual const string modeName(){ return "???Mode";} 00034 00035 protected: 00036 AutomatMode(); 00037 00038 void changeMode( AutomatMode* m, Automat* am ); 00039 // bool set( bool state, Automat* am ); 00040 00041 private: 00042 static AutomatMode* inst; 00043 }; 00044 // --------------------------------------------------------------------------- 00055 class AutomatOffMode: 00056 public AutomatMode 00057 { 00058 public: 00059 static AutomatOffMode* Instance(); 00060 void Destroy(); 00061 virtual ~AutomatOffMode(); 00062 00063 // -------- 00064 00065 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, Automat* am ); 00066 virtual void automatCommand( AutomatMessage* m, Automat* am ); 00067 00068 virtual bool activate( Automat* am ); 00069 virtual bool disactivate( Automat* am ); 00070 virtual const string modeName(){ return "AutomatOffMode"; } 00071 00072 protected: 00073 AutomatOffMode(); 00074 00075 private: 00076 static AutomatOffMode* inst; 00077 }; 00078 // --------------------------------------------------------------------------- 00097 class AutomatOnMode: 00098 public AutomatMode 00099 { 00100 public: 00101 static AutomatOnMode* Instance(); 00102 void Destroy(); 00103 virtual ~AutomatOnMode(); 00104 00105 // -------- 00106 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, Automat* am ); 00107 virtual void automatCommand( AutomatMessage* m, Automat* am ); 00108 00109 virtual bool activate( Automat* am ); 00110 // virtual bool disactivate(); 00111 virtual const string modeName(){ return "AutomatOnMode";} 00112 00113 protected: 00114 AutomatOnMode(); 00115 00116 private: 00117 static AutomatOnMode* inst; 00118 }; 00119 00120 // --------------------------------------------------------------------------- 00134 class AutomatProtectionMode: 00135 public AutomatMode 00136 { 00137 public: 00138 static AutomatProtectionMode* Instance(); 00139 void Destroy(); 00140 virtual ~AutomatProtectionMode(); 00141 00142 // -------- 00143 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, Automat* am ); 00144 virtual void timerInfo( UniSetTypes::TimerMessage *tm, Automat* am ); 00145 virtual bool activate( Automat* am ); 00146 virtual bool disactivate( Automat* am ); 00147 virtual void automatCommand( AutomatMessage* m, Automat* am ); 00148 virtual void step( Automat* am ); 00149 virtual const string modeName(){ return "AutomatProtectionMode";} 00150 00151 bool checkProtection( Automat* am ); 00152 00153 protected: 00154 AutomatProtectionMode(); 00155 00156 private: 00157 static AutomatProtectionMode* inst; 00158 }; 00159 00160 // --------------------------------------------------------------------------- 00161 00173 // --------------------------------------------------------------------------- 00178 class AutomatWaitingMode: 00179 public AutomatMode 00180 { 00181 public: 00182 00189 static AutomatWaitingMode* Instance( Automat* am, 00190 AutomatMessage::Commands to, 00191 AutomatMode* back=AutomatProtectionMode::Instance(), 00192 int atempt=0 ); 00193 00194 void Destroy(); 00195 virtual ~AutomatWaitingMode(); 00196 00197 // -------- 00198 00199 virtual void timerInfo( UniSetTypes::TimerMessage *tm, Automat* am ); 00200 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, Automat* am ); 00201 virtual void automatCommand( AutomatMessage* m, Automat* am ); 00202 00203 virtual bool activate( Automat* am ); 00204 virtual bool disactivate( Automat* am ); 00205 virtual const string modeName(){ return "AutomatWaitingMode";} 00206 00207 protected: 00208 AutomatWaitingMode(); 00209 void rollback( Automat* am ); 00210 00211 private: 00212 static AutomatWaitingMode* inst; 00213 }; 00214 // --------------------------------------------------------------------------- 00234 class AutomatInitMode: 00235 public AutomatMode 00236 { 00237 public: 00238 static AutomatInitMode* Instance(); 00239 void Destroy(); 00240 virtual ~AutomatInitMode(); 00241 00242 // -------- 00243 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, Automat* am ); 00244 virtual bool activate( Automat* am ); 00245 virtual const string modeName(){ return "AutomatInitMode";} 00246 00247 protected: 00248 AutomatInitMode(); 00249 00250 private: 00251 static AutomatInitMode* inst; 00252 }; 00253 00254 00255 // --------------------------------------------------------------------------- 00267 class AutomatSleepMode: 00268 public AutomatMode 00269 { 00270 public: 00271 static AutomatSleepMode* Instance(); 00272 void Destroy(); 00273 virtual ~AutomatSleepMode(); 00274 00275 // -------- 00276 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, Automat* am ); 00277 virtual void automatCommand( AutomatMessage* m, Automat* am ); 00278 virtual bool activate( Automat* am ); 00279 virtual const string modeName(){ return "AutomatSleepMode";} 00280 virtual void step( Automat* am ){}; 00281 00282 protected: 00283 AutomatSleepMode(); 00284 00285 private: 00286 static AutomatSleepMode* inst; 00287 }; 00288 00289 // --------------------------------------------------------------------------- 00290 // --------------------------------------------------------------------------- 00301 class AutomatOffOnlyMode: 00302 public AutomatMode 00303 { 00304 public: 00305 static AutomatOffOnlyMode* Instance(); 00306 void Destroy(); 00307 virtual ~AutomatOffOnlyMode(); 00308 00309 // -------- 00310 virtual void sensorInfo( UniSetTypes::SensorMessage *sm, Automat* am ); 00311 virtual void timerInfo( UniSetTypes::TimerMessage *tm, Automat* am ); 00312 virtual void automatCommand( AutomatMessage* m, Automat* am ); 00313 virtual bool activate( Automat* am ); 00314 virtual bool disactivate( Automat* am ); 00315 00316 virtual const string modeName(){ return "AutomatOffOnlyMode";} 00317 virtual void step( Automat* am ){}; 00318 00319 protected: 00320 AutomatOffOnlyMode(); 00321 00322 private: 00323 static AutomatOffOnlyMode* inst; 00324 }; 00325 00326 // --------------------------------------------------------------------------- 00327 #endif // AutomatMode_H_
1.7.4