00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef WIFI_HH
00028 #define WIFI_HH
00029
00030 #define MAX_MODELS 10
00031
00032 #include "gazebo.h"
00033 #include "World.hh"
00034 #include "WorldFile.hh"
00035 #include "RayGeom.hh"
00036 #include "Sensor.hh"
00037
00038
00039 class Wifi : public Sensor
00040 {
00041
00042 public: Wifi( World *world );
00043 public: virtual ~Wifi();
00044
00045
00046 public: virtual int Load( WorldFile *file, WorldFileNode *node );
00047
00048
00049 public: virtual int Init( WorldFile *file, WorldFileNode *node );
00050
00051
00052 public: virtual int Fini();
00053
00054
00055 public: virtual void Update( double step );
00056
00057
00058 public: virtual Body *GetBody() {return NULL;}
00059
00060
00061 private: int IfaceInit();
00062
00063
00064 private: int IfaceFini();
00065
00066
00067 private: bool IfaceGetCmd(GzVector *pos, GzQuatern *rot);
00068
00069
00070 private: void IfacePutData();
00071 private: int RayInit();
00072 private: static void UpdateCallback( void *data, dGeomID o1, dGeomID o2 );
00073 private: bool first_run;
00074 private: int totalnodes;
00075
00076
00077 private: RayGeom *ray,*ray1;
00078
00079
00080 private: dSpaceID superSpaceId;
00081 private: dSpaceID raySpaceId;
00082 private: WorldModel wifi_models[MAX_MODELS];
00083
00084
00085 private: const char *id;
00086 private: gz_wifi_t *wifi_iface;
00087 private: gz_wifi_link_t links[GAZEBO_WIFI_MAX_LINKS];
00088
00089 private: int link_count;
00090 private: const char *ip;
00091 private: double m;
00092
00093
00094 };
00095
00096
00097 #endif