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