From c18209545cab7cc660158c66373b2aa3c21e57f8 Mon Sep 17 00:00:00 2001 From: Florian Taillard Date: Tue, 3 May 2011 14:34:35 +0200 Subject: [PATCH] [ARDrone] Fix compilation warning Add pthread_exit(NULL_value). Delete variable inused and labview socket. --- owlps-ardrone/owlps-drone.c | 115 +++++++++++++++++------------------- owlps-ardrone/owlps-drone.h | 4 +- 2 files changed, 54 insertions(+), 65 deletions(-) diff --git a/owlps-ardrone/owlps-drone.c b/owlps-ardrone/owlps-drone.c index 3159b1d..e9f06a3 100644 --- a/owlps-ardrone/owlps-drone.c +++ b/owlps-ardrone/owlps-drone.c @@ -22,6 +22,8 @@ #define SEPARATOR ',' #define EOL '$' +#define TYPE "GPS" + /* Options */ @@ -74,23 +76,37 @@ int main(int argc, char *argv[]) program_name = argv[0] ; parse_command_line(argc, argv) ; - create_socket() ; - pthread_t send ; - pthread_create(&send, NULL, thread_send, NULL) ; // Thread communication TCP OwlSIG pthread_t control ; pthread_create(&control, NULL, thread_control, NULL) ; - pthread_t gps ; - pthread_create(&gps, NULL, thread_gps, NULL) ; - while(1) + + if(!strcmp(TYPE,"WIFI")) { + pthread_t send ; + pthread_t receive ; + create_socket() ; + pthread_create(&send, NULL, thread_send, NULL) ; if (options.listening_port > 0) - receive_position() ; - else usleep(1000); + pthread_create(&receive, NULL, receive_position, NULL) ; } + else if(!strcmp(TYPE,"GPS")) + { + pthread_t gps ; + pthread_create(&gps, NULL, thread_gps, NULL) ; + } + else + { + printf("TYPE is not correct, change value of TYPE\n"); + return -1; + } + + + + + (void) close(socksendfd) ; (void) close(sockreceivefd) ; - //(void) close(socksendlvfd) ; //Use for close labview socket ; for next use + return 0 ; } @@ -99,22 +115,24 @@ int main(int argc, char *argv[]) void parse_command_line(int argc, char **argv) { parse_main_options(argc, argv) ; - check_destination_ip() ; - parse_calibration_data(argc, argv) ; - check_configuration() ; + if(!strcmp(TYPE,"WIFI")) + { + check_destination_ip() ; + parse_calibration_data(argc, argv) ; + check_configuration() ; + #ifdef DEBUG - print_configuration() ; + print_configuration() ; #endif // DEBUG + } } -void traficGPS(int gps) -{ - int offset=0, c=1, i=0, l; - char buffer[4096], chtime[1024]; - char *utc, *latitude, *longitude, *chv, *cmd, *ch; - float vitesse; +void traficGPS(int gps) { + int offset=0, c=1, i=0; + char buffer[4096]; + do { c=read(gps, buffer, 4096); @@ -203,40 +221,22 @@ void traficGPS(int gps) share_lon=datagps.longitude; printf("lat %s lon %s\n",data[3], data[5]); printf("Time : %f | State : %c | Latitude : %.10f%c | Longitude %.10f%c | Speed : %f km/h | Cap : %f° | Date : %d | DecMagn : %f maps %.10f %.10f\n",datagps.time, datagps.state, datagps.latitude, datagps.orilat, datagps.longitude, datagps.orilon, datagps.speed, datagps.cap, datagps.date, datagps.decmag, share_lat, share_lon); - - - /* printf("Taille : %d | Message : %s\n",strlen(buffer+i),buffer+i); - cmd=strtok(buffer+i,","); - utc=strtok(NULL,","); - ch=strtok(NULL,","); - latitude=strtok(NULL,","); - ch=strtok(NULL,","); - longitude=strtok(NULL,","); - ch=strtok(NULL,","); - chv=strtok(NULL,","); - //printf("h %s lt %s lg %s v %s\n",utc, latitude, longitude,chv); - vitesse=atof(chv)*1.852; - share_lat=atof(strndup(latitude,2))+atof(strndup(latitude+2,strlen(latitude)-2))/60.0; - share_lon=atof(strndup(longitude,3))+atof(strndup(longitude+3,strlen(longitude)-3))/60.0; - printf("h %s lt %s lg %s v %f km/h share lat lon %f %f\n",utc, latitude, longitude,vitesse, share_lat, share_lon); - */ } } } -void* thread_gps(void* data) +void* thread_gps(void* NULL_value) { - int c=0; char buffer[1024]; int gps_fd = open("/dev/ttyPA0",O_RDONLY); read(gps_fd, buffer, 80); - //printf("%sxxx\n",buffer); traficGPS(gps_fd); + pthread_exit(NULL_value); } -void* thread_send(void* data) +void* thread_send(void* NULL_value) { while(1) { @@ -244,11 +244,11 @@ void* thread_send(void* data) send_request() ; sleep(1) ; } - return NULL; + pthread_exit(NULL_value); } // TCP Server OwlSIG -void* thread_control(void* data) +void* thread_control(void* NULL_value) { int sockfd, newsockfd, portno=8080; socklen_t clilen; @@ -322,7 +322,7 @@ void* thread_control(void* data) // } } close(sockfd); - return NULL; + pthread_exit(NULL_value); } void parse_main_options(int argc, char **argv) @@ -523,16 +523,9 @@ void print_configuration() void create_socket() { - char *ip_labview = "192.168.3.2" ; - int port_labview = 50000 ; socksendfd = owlclient_create_trx_socket(options.dest_ip, options.dest_port, &server, options.iface) ; - - //socksendlvfd = - //owlclient_create_trx_socket(ip_labview, port_labview, - // &server, options.iface) ; - sockreceivefd = owl_create_udp_listening_socket(options.listening_port) ; } @@ -602,15 +595,20 @@ void send_request() -void receive_position() +void* receive_position(void* NULL_value) { // Position of the mobile as computed by the infrastructure: char timestampXYZ[128] ; char *data_cpy ; - recvfrom(sockreceivefd, ×tampXYZ, 128, 0, NULL, NULL) ; - //send_labview(timestampXYZ) ; // Use for future - data_cpy = strdup(timestampXYZ) ; - string2data(data_cpy) ; + while(1) + { + recvfrom(sockreceivefd, ×tampXYZ, 128, 0, NULL, NULL) ; + //send_labview(timestampXYZ) ; // Use for future + data_cpy = strdup(timestampXYZ) ; + string2data(data_cpy) ; + usleep(100000); + } + pthread_exit(NULL_value); } void string2data(char* string_data) @@ -752,13 +750,6 @@ void string2data(char* string_data) } } -void send_labview(char* string_data) -{ - //owlclient_send_request(socksendlvfd, &server, string_data, strlen(string_data), - //1, 0) ; - //printf("Send to labView : %s", string_data) ; -} - void print_error(char* merror) { if(!strcmp(merror,"trame")) printf("Impossible à lire la trame : Abandon") ; diff --git a/owlps-ardrone/owlps-drone.h b/owlps-ardrone/owlps-drone.h index 244fa35..1ae94be 100644 --- a/owlps-ardrone/owlps-drone.h +++ b/owlps-ardrone/owlps-drone.h @@ -31,12 +31,10 @@ void print_configuration(void) ; void create_socket(void) ; void make_packet(void) ; void send_request(void) ; -void receive_position(void) ; +void* receive_position(void*) ; void print_usage(void) ; -void send_labview(char*) ; void string2data(char*) ; void traficGPS(int); -static int isWaiting(int); void* thread_gps(void*) ; void* thread_send(void*) ; void* thread_control(void*) ;