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 ARSIMPLECONNECTOR_H
00028 #define ARSIMPLECONNECTOR_H
00029
00030 #include "ariaTypedefs.h"
00031 #include "ArSerialConnection.h"
00032 #include "ArTcpConnection.h"
00033 #include "ArArgumentBuilder.h"
00034 #include "ArArgumentParser.h"
00035 #include "ariaUtil.h"
00036 #include "ArSick.h"
00037
00038 class ArRobot;
00039
00040
00041
00043
00060 class ArSimpleConnector
00061 {
00062 public:
00064 ArSimpleConnector(int *argc, char **argv);
00066 ArSimpleConnector(ArArgumentBuilder *arguments);
00068 ArSimpleConnector(ArArgumentParser *parser);
00070 ~ArSimpleConnector(void);
00072 bool setupRobot(ArRobot *robot);
00074 bool connectRobot(ArRobot *robot);
00076 bool setupLaser(ArSick *sick);
00078 bool setupSecondLaser(ArSick *sick);
00080 bool setupLaserArbitrary(ArSick *sick, int laserNumber);
00082 bool connectLaser(ArSick *sick);
00084 bool connectSecondLaser(ArSick *sick);
00086 bool connectLaserArbitrary(ArSick *sick, int laserNumber);
00088 bool parseArgs(void);
00090 bool parseArgs(ArArgumentParser *parser);
00092 void logOptions(void) const;
00094 void setMaxNumLasers(int maxNumLasers = 1);
00095 protected:
00097 class LaserData
00098 {
00099 public:
00100 LaserData(int number)
00101 { myNumber = number; myConnect = false; myPort = NULL;
00102 myRemoteTcpPort = 0; myFlipped = false; myFlippedReallySet = false;
00103 myPowerControlled = true; myPowerControlledReallySet = false;
00104 myDegrees = NULL; mySickDegrees = ArSick::DEGREES180; myIncrement = NULL;
00105 mySickIncrement = ArSick::INCREMENT_ONE; }
00106 virtual ~LaserData() {}
00107 int myNumber;
00108
00109 bool myConnect;
00110
00111 const char *myPort;
00112
00113 int myRemoteTcpPort;
00114
00115 bool myFlipped;
00116
00117 bool myFlippedReallySet;
00118
00119 bool myPowerControlled;
00120
00121 bool myPowerControlledReallySet;
00122
00123 const char *myDegrees;
00124
00125 ArSick::Degrees mySickDegrees;
00126
00127 const char *myIncrement;
00128
00129 ArSick::Increment mySickIncrement;
00130
00131 ArTcpConnection myTcpConn;
00132
00133 ArSerialConnection mySerConn;
00134 };
00135 int myMaxNumLasers;
00136 std::list<LaserData *> myLasers;
00137
00139 bool parseLaserArgs(ArArgumentParser *parser, int laserNumber);
00141 void logLaserOptions(unsigned int laserNumber) const;
00142 void reset(void);
00143
00144 ArRobot *myRobot;
00145
00146 bool myUsingSim;
00147
00148 const char *myRemoteHost;
00149
00150
00151 const char *myRobotPort;
00152
00153 int myRobotBaud;
00154
00155 int myRemoteRobotTcpPort;
00156
00157
00158
00159 bool myRemoteIsSim;
00160
00161 ArArgumentParser *myParser;
00162 bool myOwnParser;
00163
00164
00165
00166 ArTcpConnection myRobotTcpConn;
00167 ArSerialConnection myRobotSerConn;
00168
00169 ArTcpConnection myLaserTcpConn;
00170 ArSerialConnection myLaserSerConn;
00171
00172 ArTcpConnection myLaserTcpConn2;
00173 ArSerialConnection myLaserSerConn2;
00174 };
00175
00176 #endif // ARSIMPLECONNECTOR_H