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 #ifndef ARSIMPLECONNECTOR_H
00027 #define ARSIMPLECONNECTOR_H
00028
00029 #include "ariaTypedefs.h"
00030 #include "ArSerialConnection.h"
00031 #include "ArTcpConnection.h"
00032 #include "ArArgumentBuilder.h"
00033 #include "ArArgumentParser.h"
00034 #include "ariaUtil.h"
00035 #include "ArSick.h"
00036
00037 class ArRobot;
00038
00039
00040
00042
00082 class ArSimpleConnector
00083 {
00084 public:
00086 AREXPORT ArSimpleConnector(int *argc, char **argv);
00088 AREXPORT ArSimpleConnector(ArArgumentBuilder *arguments);
00090 AREXPORT ArSimpleConnector(ArArgumentParser *parser);
00092 AREXPORT ~ArSimpleConnector(void);
00094 AREXPORT bool setupRobot(ArRobot *robot);
00096 AREXPORT bool connectRobot(ArRobot *robot);
00098 AREXPORT bool setupLaser(ArSick *sick);
00100 AREXPORT bool setupSecondLaser(ArSick *sick);
00102 AREXPORT bool setupLaserArbitrary(ArSick *sick, int laserNumber);
00104 AREXPORT bool connectLaser(ArSick *sick);
00106 AREXPORT bool connectSecondLaser(ArSick *sick);
00108 AREXPORT bool connectLaserArbitrary(ArSick *sick, int laserNumber);
00110 AREXPORT bool parseArgs(void);
00112 AREXPORT bool parseArgs(ArArgumentParser *parser);
00114 AREXPORT void logOptions(void) const;
00116 AREXPORT void setMaxNumLasers(int maxNumLasers = 1);
00117 protected:
00119 class LaserData
00120 {
00121 public:
00122 LaserData(int number)
00123 { myNumber = number; myConnect = false; myPort = NULL;
00124 myRemoteTcpPort = 0; myFlipped = false; myFlippedReallySet = false;
00125 myPowerControlled = true; myPowerControlledReallySet = false;
00126 myDegrees = NULL; mySickDegrees = ArSick::DEGREES180; myIncrement = NULL;
00127 mySickIncrement = ArSick::INCREMENT_ONE; myUnits = NULL;
00128 mySickUnits = ArSick::UNITS_1MM; myBits = NULL;
00129 mySickBits = ArSick::BITS_1REFLECTOR; }
00130 virtual ~LaserData() {}
00131 int myNumber;
00132
00133 bool myConnect;
00134
00135 const char *myPort;
00136
00137 int myRemoteTcpPort;
00138
00139 bool myFlipped;
00140
00141 bool myFlippedReallySet;
00142
00143 bool myPowerControlled;
00144
00145 bool myPowerControlledReallySet;
00146
00147 const char *myDegrees;
00148
00149 ArSick::Degrees mySickDegrees;
00150
00151 const char *myIncrement;
00152
00153 ArSick::Increment mySickIncrement;
00155 const char *myUnits;
00156
00157 ArSick::Units mySickUnits;
00159 const char *myBits;
00160
00161 ArSick::Bits mySickBits;
00162
00163 ArTcpConnection myTcpConn;
00164
00165 ArSerialConnection mySerConn;
00166 };
00167 int myMaxNumLasers;
00168 std::list<LaserData *> myLasers;
00169
00171 AREXPORT bool parseLaserArgs(ArArgumentParser *parser, int laserNumber);
00173 AREXPORT void logLaserOptions(unsigned int laserNumber) const;
00174 void reset(void);
00175
00176 ArRobot *myRobot;
00177
00178 bool myUsingSim;
00179
00180 const char *myRemoteHost;
00181
00182
00183 const char *myRobotPort;
00184
00185 int myRobotBaud;
00186
00187 int myRemoteRobotTcpPort;
00188
00189
00190
00191 bool myRemoteIsSim;
00192
00193 ArArgumentParser *myParser;
00194 bool myOwnParser;
00195
00196
00197
00198 ArTcpConnection myRobotTcpConn;
00199 ArSerialConnection myRobotSerConn;
00200
00201 ArTcpConnection myLaserTcpConn;
00202 ArSerialConnection myLaserSerConn;
00203
00204 ArTcpConnection myLaserTcpConn2;
00205 ArSerialConnection myLaserSerConn2;
00206
00207 ArRetFunctorC<bool, ArSimpleConnector> myParseArgsCB;
00208 ArConstFunctorC<ArSimpleConnector> myLogOptionsCB;
00209 };
00210
00211 #endif // ARSIMPLECONNECTOR_H