UniSet  1.4.0
UObject_SK.h
00001 // -----------------------------------------------------------------------------
00002 #ifndef UObject_SK_H_
00003 #define UObject_SK_H_
00004 // -----------------------------------------------------------------------------
00005 #include "UniSetObject.h"
00006 #include "LT_Object.h"
00007 #include "UniXML.h"
00008 #include "Trigger.h"
00009 #include "SMInterface.h"
00010 // -----------------------------------------------------------------------------
00011 class UObject_SK:
00012     public UniSetObject,
00013     public LT_Object
00014 {
00015     public:
00016         UObject_SK( UniSetTypes::ObjectId id, xmlNode* node=UniSetTypes::conf->getNode("UObject"),
00017                      UniSetTypes::ObjectId shmID = UniSetTypes::DefaultObjectId );
00018         UObject_SK();
00019         virtual ~UObject_SK();
00020 
00021         
00022 
00023         bool alarm( UniSetTypes::ObjectId sid, bool state );
00024         bool getState( UniSetTypes::ObjectId sid );
00025         void setValue( UniSetTypes::ObjectId sid, long value );
00026         void setState( UniSetTypes::ObjectId sid, bool state );
00027         void askState( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand );
00028         void askValue( UniSetTypes::ObjectId sid, UniversalIO::UIOCommand );
00029         void askThreshold ( UniSetTypes::ObjectId sensorId, UniSetTypes::ThresholdId tid,
00030                             UniversalIO::UIOCommand cmd,
00031                             CORBA::Long lowLimit, CORBA::Long hiLimit, CORBA::Long sensibility,
00032                             UniSetTypes::ObjectId backid = UniSetTypes::DefaultObjectId );
00033 
00034         void updateValues();
00035         void setInfo( UniSetTypes::ObjectId code, bool state );     
00036 
00037     protected:
00038         
00039         virtual void callback();
00040         virtual void processingMessage( UniSetTypes::VoidMessage* msg );
00041         virtual void sysCommand( UniSetTypes::SystemMessage* sm );
00042         virtual void askSensors( UniversalIO::UIOCommand cmd );
00043         virtual void sensorInfo( UniSetTypes::SensorMessage* sm ){};
00044         virtual void timerInfo( UniSetTypes::TimerMessage* tm ){};
00045         virtual void sigterm( int signo );
00046         virtual bool activateObject();
00047         virtual void testMode( bool state );
00048         void updatePreviousValues();
00049         void checkSensors();
00050         void updateOutputs( bool force );
00051         bool checkTestMode();
00052         void preSensorInfo( UniSetTypes::SensorMessage* sm );
00053         void preTimerInfo( UniSetTypes::TimerMessage* tm );
00054         void waitSM( int wait_msec );
00055 
00056         void resetMsg();
00057         Trigger trResetMsg;
00058         PassiveTimer ptResetMsg;
00059         int resetMsgTime;
00060 
00061         // Выполнение очередного шага программы
00062         virtual void step()=0;
00063 
00064         int sleep_msec; 
00065         bool active;
00066         bool isTestMode;
00067         Trigger trTestMode;
00068         UniSetTypes::ObjectId idTestMode_S;         
00069         UniSetTypes::ObjectId idLocalTestMode_S;    
00070         bool in_TestMode_S;
00071         bool in_LocalTestMode_S;
00072         
00073         xmlNode* confnode;
00074         SMInterface shm;
00075         int smReadyTimeout;     
00076         bool activated;
00077         int activateTimeout;    
00078         PassiveTimer ptStartUpTimeout;  
00081     private:
00082         
00083         IOController_i::SensorInfo si;
00084 };
00085 
00086 // -----------------------------------------------------------------------------
00087 #endif // UObject_SK_H_