Autopilot-CVS: downlink/ground/src Makefile,1.7,1.7.2.1 gui.fl,1.19,1.19.2.1 main.cpp,1.20,1.20.2.1
Status: Alpha
Brought to you by:
tramm
From: Trammell H. <tr...@us...> - 2003-03-19 14:46:59
|
Update of /cvsroot/autopilot/downlink/ground/src In directory sc8-pr-cvs1:/tmp/cvs-serv8740/src Modified Files: Tag: nvision Makefile gui.fl main.cpp Log Message: Version flashed onto nvision hardware Index: Makefile =================================================================== RCS file: /cvsroot/autopilot/downlink/ground/src/Makefile,v retrieving revision 1.7 retrieving revision 1.7.2.1 diff -u -d -r1.7 -r1.7.2.1 --- Makefile 8 Mar 2003 05:38:19 -0000 1.7 +++ Makefile 19 Mar 2003 14:46:54 -0000 1.7.2.1 @@ -55,6 +55,7 @@ -L$(sim.root)/lib \ -lstate \ -ljoystick \ + -lgetoptions \ $(gl.ldflags) \ Index: gui.fl =================================================================== RCS file: /cvsroot/autopilot/downlink/ground/src/gui.fl,v retrieving revision 1.19 retrieving revision 1.19.2.1 diff -u -d -r1.19 -r1.19.2.1 --- gui.fl 8 Mar 2003 05:39:00 -0000 1.19 +++ gui.fl 19 Mar 2003 14:46:55 -0000 1.19.2.1 @@ -1,5 +1,5 @@ # data file for the Fltk User Interface Designer (fluid) -version 1.0102 +version 1.0100 header_name {.h} code_name {.cpp} class UserInterface {open @@ -8,13 +8,13 @@ } { Fl_Window {} { label {Ground station} open - xywh {531 142 400 338} visible + xywh {404 147 400 370} visible } { Fl_Tabs {} {open - xywh {10 10 375 290} + xywh {10 10 380 290} } { Fl_Group {} { - label Attitude open selected + label Attitude open xywh {10 35 375 265} } { Fl_Box horizon { @@ -374,22 +374,59 @@ xywh {330 185 25 25} } } + Fl_Group {} { + label GPS open + xywh {10 35 375 265} hide + } { + Fl_Value_Output gps_time { + label Time + xywh {90 80 110 25} + } + Fl_Value_Output gps_long { + label Longitude + xywh {90 105 110 25} minimum -180 maximum 180 step 0.0001 + } + Fl_Value_Output gps_lat { + label Latitude + xywh {90 130 110 25} minimum -90 maximum 90 step 0.0001 + } + Fl_Value_Output gps_heading { + label Heading + xywh {90 155 110 25} maximum 360 step 0.01 + } + Fl_Value_Output gps_speed { + label Speed + xywh {90 180 110 25} maximum 1000 step 0.01 + } + Fl_Value_Output gps_alt { + label Altitude + xywh {90 205 110 25} minimum -100 maximum 10000 step 0.01 + } + } } Fl_Button {} { label Exit callback {std::exit( 0 );} - xywh {265 305 120 25} + xywh {265 335 120 25} code0 {\#include <cstdlib>} } Fl_Light_Button connected { label Reconnect - callback { reconnect_server(); } + callback {reconnect_server();} xywh {155 305 100 25} code0 {\#include "Ground.h"} } Fl_Value_Output packets { label Packets xywh {60 305 80 25} + } + Fl_Value_Input trigger_freq { + label Trigger selected + xywh {60 335 80 25} minimum 0.5 maximum 60 step 0.25 value 4 + } + Fl_Light_Button trigger { + label Trigger + xywh {155 335 100 25} when 0 } } } Index: main.cpp =================================================================== RCS file: /cvsroot/autopilot/downlink/ground/src/main.cpp,v retrieving revision 1.20 retrieving revision 1.20.2.1 diff -u -d -r1.20 -r1.20.2.1 --- main.cpp 8 Mar 2003 05:40:21 -0000 1.20 +++ main.cpp 19 Mar 2003 14:46:55 -0000 1.20.2.1 @@ -37,7 +37,7 @@ #include "Ground.h" #include "Joystick.h" -#include "state/commands.h" +#include <getoptions/getoptions.h> #include "state/Server.h" #include "mat/Conversions.h" #include "mat/Constants.h" @@ -49,7 +49,7 @@ UserInterface * gui = 0; -const char * server_hostname = "127.0.0.1"; +const char * server_host = "127.0.0.1"; int server_port = 2002; int udp_fd = -1; static Server * server; @@ -172,6 +172,48 @@ } #endif +/* + * Handler called when there is GPS state data available + */ +static void +gps_state( + void * UNUSED( priv ), + const host_t * UNUSED( src ), + int UNUSED( type ), + const struct timeval * UNUSED( when ), + const void * data, + size_t len +) +{ + char * buf = (char*) data; + buf[len+1] = '\0'; + + cout << "GPS state: " << buf << endl; + + int time; + double lat; + double longitude; + double alt; + double heading; + double speed; + + sscanf( buf, "%d %lf %lf %lf %lf %lf", + &time, + &lat, + &longitude, + &alt, + &heading, + &speed + ); + + gui->gps_time->value( time ); + gui->gps_lat->value( lat ); + gui->gps_long->value( longitude ); + gui->gps_alt->value( alt ); + gui->gps_heading->value( heading ); + gui->gps_speed->value( speed ); +} + /* * Handler called when there is AHRS state data available @@ -179,13 +221,14 @@ static void ahrs_state( void * UNUSED( priv ), - const host_t * src, + const host_t * UNUSED( src ), int UNUSED( type ), const struct timeval * UNUSED( when ), const void * data, size_t len ) { +#ifdef BINARY_AHRS const state_t * state = (state_t*) data; if( len != sizeof( *state ) ) @@ -199,6 +242,20 @@ << endl; return; } +#else + state_t state_buf; + state_t * state = &state_buf; + + ((char*)data)[len+1] = 0; + + memset( (void*) state, 0, sizeof(state_t) ); + state->z = -5; + sscanf( (char*) data, "%lf %lf %lf", + &state->phi, + &state->theta, + &state->psi + ); +#endif double a = 6378137.0; double lat; @@ -263,6 +320,26 @@ } +/* + * Trigger timer + */ +void +trigger( + void * priv +) +{ + Server * server = (Server*) priv; + + if( gui->trigger->value() ) + { + cout << "Trigger: gps time: " << gui->gps_time->value() << endl; + server->send_command( CAMERA_TRIGGER ); + } + + Fl::add_timeout( gui->trigger_freq->value(), trigger, priv ); +} + + /** * Called by main at startup and by the reconnect button */ @@ -270,12 +347,12 @@ reconnect_server() { cout << "Contacting " - << server_hostname + << server_host << ":" << server_port << endl; - server->connect( server_hostname, server_port ); + server->connect( server_host, server_port ); } @@ -306,15 +383,45 @@ gui->yawAxes->value(3); } + +static int +help( void ) +{ + cerr << +"Usage: ground [options]\n" +"\n" +" -h | --help This help\n" +" -s | --server server Server hostname\n" +" -p | --port port Server port number\n" +"\n" + << endl; + + return -10; +} + + int main( int argc, char ** argv ) { - server = new Server; + int rc = getoptions( &argc, &argv, + "h|?|help&", help, + "s|server=s", &server_host, + "p|port=i", &server_port, + 0 + ); + + if( rc == -10 ) + return EXIT_FAILURE; + if( rc < 0 ) + return help(); + + server = new Server( server_host, server_port ); server->handle( AHRS_STATE, ahrs_state, (void*) server ); + server->handle( GPS_STATE, gps_state, (void*) server ); server->handle( COMMAND_ACK, set_connected_led, 0 ); Fl::add_fd( @@ -325,14 +432,19 @@ ); + Fl::gl_visual( FL_RGB ); gui = new UserInterface(); - gui->make_window()->show( argc, argv ); + gui->make_window()->show(); + init_gui(); reconnect_server(); reconnect_joy(); + + trigger( (void*) server ); + //Fl::add_timeout( gui->trigger_freq->value(), trigger, (void*) &server ); return Fl::run(); } |