uniset-algorithms 0.2
CPanelMode.h
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 //      virtual bool disactivate();
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 // ---------------------------------------------------------------------------