uniset-algorithms 0.2
AutomatMessages.h
00001 // -------------------------------------------------------------------------
00002 #ifndef AutomatMessages_H_
00003 #define AutomatMessages_H_
00004 // -------------------------------------------------------------------------
00005 #include "UniSetAlgorithmsMessages.h"
00006 // -------------------------------------------------------------------------
00008 class AutomatMessage:
00009     public UniSetAlgorithms::UniSetAlgorithmsMessage
00010 {
00011     public:
00012     
00013         static const int MessageTypeID = UniSetAlgorithms::UniSetAlgorithmsMessage::AutomatInfo;
00014     
00015         enum Events
00016         {
00017             Protection,     
00018             ChangeMode,     
00019             Command,
00020             CommandNotComplete 
00021         };
00022 
00023         enum AutomatMode
00024         {
00025             OffMode,
00026             OnMode,
00027             SleepMode,
00028             OffOnlyMode
00029         };
00030         
00031         enum Commands
00032         {
00033             OnSync,
00034             On,
00035             Off,
00036             Reset,
00037             OffControl,
00038             OnControl
00039         };
00040         
00041         AutomatMessage( UniSetTypes::ObjectId id, Events ev, int inf,
00042                         Message::Priority p = Message::Medium):
00043             evnt(ev),
00044             inf(inf),
00045             id(id),
00046             errcode(UniSetTypes::DefaultMessageCode)
00047         {
00048             type = AutomatMessage::MessageTypeID;
00049             priority = p;
00050         }
00051 
00052         AutomatMessage(const UniSetTypes::VoidMessage *msg)
00053         {
00054             memcpy(this,msg,sizeof(*this));
00055             assert(this->type == AutomatMessage::MessageTypeID );
00056         }
00057 
00058         inline UniSetTypes::TransportMessage transport_msg() const
00059         {
00060             return transport(*this);
00061         }
00062 
00063         Events evnt;
00064         int inf;
00065         UniSetTypes::ObjectId id;
00066         // в случае неудачного выполнения команды
00067         // здесь можно указать причину
00068         UniSetTypes::MessageCode errcode;
00069 };
00070 // -------------------------------------------------------------------------
00071 #endif // AutomatMessages_H_