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