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
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef __USE_JAVA_CONTROLLER_H
00042 #define __USE_JAVA_CONTROLLER_H
00043
00044
00045 #include "abstractcontroller.h"
00046
00047
00048
00049 #include <string.h>
00050 #include <stdlib.h>
00051 #include <sys/types.h>
00052 #include <sys/socket.h>
00053 #include <netdb.h>
00054 #include <netinet/in.h>
00055 #include <arpa/inet.h>
00056 #include <unistd.h>
00057 #include <fcntl.h>
00058 #include <exception>
00059
00060
00061 #define BUFFER_SIZE 1024
00062 #define MAX_CONFIG_PARAM 50
00063 #define MAX_INTERNAL_PARAM 50
00064
00065
00066 double atof ( const char * );
00067 int ctoi ( const char * );
00068
00069
00070 using namespace std;
00071
00072
00073
00074
00075
00076
00077 class use_java_controller : public AbstractController
00078 {
00079
00080
00081
00082
00083
00084
00085 public:
00086
00087 static int anzahl_Java_controller;
00088
00089
00090 use_java_controller ( const char* port_controller = "4444", const char* port_internalParams = NULL, const char* name = "defaultRobot" );
00091
00092
00093 static void addController(){use_java_controller::anzahl_Java_controller++;}
00094
00095
00096 virtual ~use_java_controller();
00097
00098
00099
00100
00101 virtual void init ( int sensornumber, int motornumber, RandGen* randgen = 0);
00102
00103
00104
00105 virtual int getSensorNumber() const {return number_sensors;}
00106
00107
00108
00109
00110 virtual int getMotorNumber() const {return number_motors;}
00111
00112
00113
00114
00115
00116
00117
00118
00119 virtual void step ( const sensor* sensors, int sensornumber,
00120 motor* motors, int motornumber );
00121
00122
00123
00124 virtual void stepNoLearning ( const sensor* , int number_sensors,
00125 motor* , int number_motors );
00126
00127
00128
00129
00130 void sendToJava ( const char* message,bool abbruch, const char* meldung="Fehler beim Senden der Daten zum Java-Controller\n" );
00131
00132 void closeJavaController();
00133
00134
00135
00136
00137
00138
00139 virtual std::list<iparamkey> getInternalParamNames() const;
00140
00141
00142
00143
00144
00145 virtual std::list<iparamval> getInternalParams() const;
00146
00147
00148 virtual paramval getParam ( const paramkey& key ) const;
00149 virtual bool setParam ( const paramkey& key, paramval val );
00150 virtual paramlist getParamList() const ;
00151
00152
00153
00154 virtual bool store ( FILE* f ) const { return true;};
00155 virtual bool restore ( FILE* f ) { return true;};
00156
00157
00158 protected:
00159
00160 int t;
00161 const char* name;
00162 int number_sensors;
00163 int number_motors;
00164 int number_controlled;
00165
00166 bool serverOK;
00167
00168 int server_controller;
00169 int server_internalParams;
00170 int client_controller;
00171 int client_internalParams;
00172
00173 socklen_t client_controller_size;
00174 socklen_t client_internalParams_size;
00175
00176 struct sockaddr_in server_controller_addr;
00177 struct sockaddr_in server_internalParams_addr;
00178 struct sockaddr_in client_controller_addr;
00179 struct sockaddr_in client_internalParams_addr;
00180
00181
00182 paramlist config_param_list;
00183 int anz_config_param;
00184
00185 iparamkeylist internal_keylist;
00186 iparamvallist internal_vallist;
00187 iparamvallist internal_vallist_alt;
00188 int anz_internal_param;
00189
00190 bool can_send;
00191 bool isFirst;
00192 bool isClosed;
00193 bool server_guilogger_isClosed;
00194 bool server_controller_isClosed;
00195
00196 int anzahl_closed_Server;
00197
00198 double *motor_values_alt;
00199
00200 };
00201
00202
00203
00204 #endif