00001 #ifndef CPanelMode_H_
00002 #define CPanelMode_H_
00003
00004 #include <string>
00005 #include <sstream>
00006 #include <MessageType.h>
00007
00008 class CPanel;
00009
00010 class CPanelMode
00011 {
00012 public:
00013 static CPanelMode* Instance();
00014 void Destroy();
00015 virtual ~CPanelMode();
00016
00017 virtual void timerInfo( UniSetTypes::TimerMessage *tm, CPanel* cp){}
00018 virtual void sensorInfo(UniSetTypes::SensorMessage *sm, CPanel* cp){}
00019 virtual bool activate( CPanel* cp){ return true; }
00020 virtual bool disactivate( CPanel* cp){ return true; }
00021 virtual void step(CPanel* cp){}
00022
00023 virtual const std::string modeName(){ return "???Mode"; }
00024 virtual std::ostringstream& modeInfo( std::ostringstream& os ){ return os; }
00025
00026 protected:
00027 CPanelMode();
00028 void changeMode( CPanelMode* m, CPanel* cp );
00029 void allLamp( UniSetTypes::LampCommand l, CPanel* cp );
00030 void setLamp( UniSetTypes::LampCommand l, CPanel* cp );
00031 void setCtlON( bool state, CPanel* cp );
00032 void askTimer( CPanel* cp, short timerid, long timeMS, short ticks=-1 );
00033
00034 private:
00035 static CPanelMode* inst;
00036 };
00037
00038 class CPanelOffMode:
00039 public CPanelMode
00040 {
00041 public:
00042 static CPanelOffMode* Instance();
00043 void Destroy();
00044 virtual ~CPanelOffMode();
00045
00046
00047 void step(CPanel* cp);
00048 virtual bool activate(CPanel* cp);
00049
00050 virtual const std::string modeName(){ return "CPanelOffMode";}
00051
00052 protected:
00053 CPanelOffMode();
00054
00055 private:
00056 static CPanelOffMode* inst;
00057 };
00058
00059 class CPanelOnMode:
00060 public CPanelMode
00061 {
00062 public:
00063 static CPanelOnMode* Instance();
00064 void Destroy();
00065 virtual ~CPanelOnMode();
00066
00067
00068 virtual void step(CPanel* cp);
00069 virtual bool activate( CPanel* cp );
00070 virtual bool disactivate(CPanel* cp);
00071 virtual void timerInfo( UniSetTypes::TimerMessage *tm, CPanel* cp);
00072 virtual void sensorInfo(UniSetTypes::SensorMessage *sm, CPanel* cp);
00073 virtual const std::string modeName(){ return "CPanelOnMode";}
00074
00075 protected:
00076 CPanelOnMode();
00077
00078
00079 private:
00080 static CPanelOnMode* inst;
00081 };
00082
00083
00084 class CPanelUnknownMode:
00085 public CPanelMode
00086 {
00087 public:
00088 static CPanelUnknownMode* Instance();
00089 void Destroy();
00090 virtual ~CPanelUnknownMode();
00091
00092
00093 void step(CPanel* cp);
00094 virtual bool activate(CPanel* cp);
00095 virtual const std::string modeName(){ return "CPanelUnknownMode"; }
00096
00097 protected:
00098 CPanelUnknownMode();
00099
00100 private:
00101 static CPanelUnknownMode* inst;
00102 };
00103
00104 class CPanelFailedMode:
00105 public CPanelMode
00106 {
00107 public:
00108 static CPanelFailedMode* Instance();
00109 void Destroy();
00110 virtual ~CPanelFailedMode();
00111
00112
00113 void step(CPanel* cp);
00114 virtual bool activate(CPanel* cp);
00115 virtual bool disactivate(CPanel* cp);
00116 virtual const std::string modeName(){ return "CPanelFailedMode"; }
00117
00118 protected:
00119 CPanelFailedMode();
00120
00121 private:
00122 static CPanelFailedMode* inst;
00123 };
00124
00125
00126 #endif // CPanelMode_H_
00127