p_driver.h
Go to the documentation of this file.00001 #ifndef _STAGE_PLAYER_DRIVER_H 00002 #define _STAGE_PLAYER_DRIVER_H 00003 00004 #include <unistd.h> 00005 #include <string.h> 00006 #include <math.h> 00007 00008 #include <libplayercore/playercore.h> 00009 00010 #include "stage_internal.h" 00011 #include "stg_time.h" 00012 00013 #define DRIVER_ERROR(X) printf( "Stage driver error: %s\n", X ) 00014 00015 // foward declare; 00016 class Interface; 00017 00018 class StgDriver : public Driver 00019 { 00020 public: 00021 // Constructor; need that 00022 StgDriver(ConfigFile* cf, int section); 00023 00024 // Destructor 00025 ~StgDriver(void); 00026 00027 // Must implement the following methods. 00028 virtual int Setup(); 00029 virtual int Shutdown(); 00030 virtual int ProcessMessage(MessageQueue* resp_queue, 00031 player_msghdr * hdr, 00032 void * data); 00033 virtual int Subscribe(player_devaddr_t addr); 00034 virtual int Unsubscribe(player_devaddr_t addr); 00035 00038 virtual void Update(); 00039 00041 static stg_world_t* world; 00042 00044 Interface* LookupDevice( player_devaddr_t addr ); 00045 00046 stg_model_t* LocateModel( char* basename, 00047 player_devaddr_t* addr, 00048 stg_model_initializer_t init ); 00049 00050 protected: 00051 00053 GPtrArray* devices; 00054 }; 00055 00056 00057 class Interface 00058 { 00059 public: 00060 Interface(player_devaddr_t addr, 00061 StgDriver* driver, 00062 ConfigFile* cf, 00063 int section ); 00064 00065 virtual ~Interface( void ){ /* TODO: clean up*/ }; 00066 00067 player_devaddr_t addr; 00068 stg_model_t* mod; 00069 double last_publish_time; 00070 00071 StgDriver* driver; // the driver instance that created this device 00072 00073 virtual int ProcessMessage(MessageQueue* resp_queue, 00074 player_msghdr_t* hdr, 00075 void* data) { return(-1); } // empty implementation 00076 virtual void Publish( void ){}; // empty implementation 00077 }; 00078 00079 00080 class InterfaceSimulation : public Interface 00081 { 00082 public: 00083 InterfaceSimulation( player_devaddr_t addr, StgDriver* driver,ConfigFile* cf, int section ); 00084 virtual ~InterfaceSimulation( void ){ /* TODO: clean up*/ }; 00085 virtual int ProcessMessage(MessageQueue* resp_queue, 00086 player_msghdr_t* hdr, 00087 void* data); 00088 }; 00089 00090 00091 class InterfaceModel : public Interface 00092 { 00093 public: 00094 InterfaceModel( player_devaddr_t addr, 00095 StgDriver* driver, 00096 ConfigFile* cf, 00097 int section, 00098 stg_model_initializer_t init ); 00099 00100 virtual ~InterfaceModel( void ){ /* TODO: clean up*/ }; 00101 }; 00102 00103 class InterfacePosition : public InterfaceModel 00104 { 00105 public: 00106 InterfacePosition( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section ); 00107 virtual ~InterfacePosition( void ){ /* TODO: clean up*/ }; 00108 virtual void Publish( void ); 00109 virtual int ProcessMessage(MessageQueue* resp_queue, 00110 player_msghdr_t* hdr, 00111 void* data); 00112 }; 00113 00114 class InterfaceGripper : public InterfaceModel 00115 { 00116 public: 00117 InterfaceGripper( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section ); 00118 virtual ~InterfaceGripper( void ){ /* TODO: clean up*/ }; 00119 virtual int ProcessMessage(MessageQueue* resp_queue, 00120 player_msghdr_t* hdr, 00121 void* data); 00122 virtual void Publish( void ); 00123 }; 00124 00125 class InterfaceLaser : public InterfaceModel 00126 { 00127 private: 00128 int scan_id; 00129 public: 00130 InterfaceLaser( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section ); 00131 virtual ~InterfaceLaser( void ){ /* TODO: clean up*/ }; 00132 virtual int ProcessMessage(MessageQueue* resp_queue, 00133 player_msghdr_t* hdr, 00134 void* data); 00135 virtual void Publish( void ); 00136 }; 00137 00138 class InterfacePower : public InterfaceModel 00139 { 00140 public: 00141 InterfacePower( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section ); 00142 virtual ~InterfacePower( void ){ /* TODO: clean up*/ }; 00143 00144 virtual int ProcessMessage( MessageQueue* resp_queue, 00145 player_msghdr * hdr, 00146 void * data ); 00147 00148 virtual void Publish( void ); 00149 }; 00150 00151 class InterfaceFiducial : public InterfaceModel 00152 { 00153 public: 00154 InterfaceFiducial( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section ); 00155 virtual ~InterfaceFiducial( void ){ /* TODO: clean up*/ }; 00156 00157 virtual void Publish( void ); 00158 virtual int ProcessMessage(MessageQueue* resp_queue, 00159 player_msghdr_t* hdr, 00160 void* data); 00161 }; 00162 00163 00164 class InterfaceBlobfinder : public InterfaceModel 00165 { 00166 public: 00167 InterfaceBlobfinder( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section ); 00168 virtual ~InterfaceBlobfinder( void ){ /* TODO: clean up*/ }; 00169 00170 virtual int ProcessMessage( MessageQueue* resp_queue, 00171 player_msghdr * hdr, 00172 void * data ); 00173 virtual void Publish( void ); 00174 }; 00175 00176 class InterfacePtz : public InterfaceModel 00177 { 00178 public: 00179 InterfacePtz( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section ); 00180 virtual ~InterfacePtz( void ){ /* TODO: clean up*/ }; 00181 00182 virtual int ProcessMessage( MessageQueue* resp_queue, 00183 player_msghdr * hdr, 00184 void * data ); 00185 virtual void Publish( void ); 00186 }; 00187 00188 class InterfaceSonar : public InterfaceModel 00189 { 00190 public: 00191 InterfaceSonar( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section ); 00192 virtual ~InterfaceSonar( void ){ /* TODO: clean up*/ }; 00193 00194 virtual int ProcessMessage( MessageQueue* resp_queue, 00195 player_msghdr * hdr, 00196 void * data ); 00197 virtual void Publish( void ); 00198 }; 00199 00200 class InterfaceLocalize : public InterfaceModel 00201 { 00202 public: 00203 InterfaceLocalize( player_devaddr_t addr, 00204 StgDriver* driver, 00205 ConfigFile* cf, 00206 int section ); 00207 00208 virtual ~InterfaceLocalize( void ){ /* TODO: clean up*/ }; 00209 00210 virtual void Publish( void ); 00211 virtual int ProcessMessage(MessageQueue* resp_queue, 00212 player_msghdr_t* hdr, 00213 void* data); 00214 }; 00215 00216 class InterfaceMap : public InterfaceModel 00217 { 00218 public: 00219 InterfaceMap( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section ); 00220 virtual ~InterfaceMap( void ){ /* TODO: clean up*/ }; 00221 00222 virtual int ProcessMessage( MessageQueue* resp_queue, 00223 player_msghdr * hdr, 00224 void * data ); 00225 //virtual void Publish( void ); 00226 00227 // called by ProcessMessage to handle individual messages 00228 00229 int HandleMsgReqInfo( MessageQueue* resp_queue, 00230 player_msghdr * hdr, 00231 void * data ); 00232 int HandleMsgReqData( MessageQueue* resp_queue, 00233 player_msghdr * hdr, 00234 void * data ); 00235 }; 00236 00237 class InterfaceGraphics2d : public InterfaceModel 00238 { 00239 public: 00240 InterfaceGraphics2d( player_devaddr_t addr, StgDriver* driver, ConfigFile* cf, int section ); 00241 virtual ~InterfaceGraphics2d( void ); 00242 00243 virtual int ProcessMessage( MessageQueue* resp_queue, 00244 player_msghdr * hdr, 00245 void * data ); 00246 private: 00247 stg_rtk_fig_t* fig; // a figure we can draw in 00248 }; 00249 00250 00251 00252 #endif
Generated on Mon Feb 27 23:30:51 2006 for Stage by
