[fix] request switch management (plane thread let ctrlTerm use common socket)

This commit is contained in:
xdrm-brackets 2017-04-29 17:31:38 +02:00
parent 061893b35d
commit a31c97942b
2 changed files with 13 additions and 14 deletions

View File

@ -79,7 +79,7 @@ void* managePlane(void* THREADABLE_ARGS){
} }
/* 3. Si pas pour nous -> on attends puis on reboucle */ /* 3. Si pas pour nous -> on attends puis on reboucle */
if( buffer[0] != 0x55 ){ // '01010101'(2) '55'(16) if( buffer[0] == 0x55 ){ // '01010101'(2) '55'(16)
if( DEBUGMOD&BUF ) printf("{tcp_com}(%d) Let request to update routine\n", index); if( DEBUGMOD&BUF ) printf("{tcp_com}(%d) Let request to update routine\n", index);
sleep(0.5); sleep(0.5);
continue; continue;
@ -88,7 +88,7 @@ void* managePlane(void* THREADABLE_ARGS){
/* (2) Données /* (2) Données
---------------------------------------------------------*/ ---------------------------------------------------------*/
/* 1. On lit sur la socket */ /* 1. On lit sur la socket */
read = recv(SOCKET, buffer, MAX_BUF_LEN, 0); read = recv(SOCKET, buffer+1, MAX_BUF_LEN-1, 0);
/* 2.1. Si erreur reception (-1:erreur, 0:fermeture client propre) */ /* 2.1. Si erreur reception (-1:erreur, 0:fermeture client propre) */
if( read <= 0 ){ if( read <= 0 ){
@ -97,8 +97,8 @@ void* managePlane(void* THREADABLE_ARGS){
} }
/* 2.2. Si message trop court */ /* 2.2. Si message trop court */
if( read != PLANE_LEN ){ if( read != PLANE_LEN-1 ){
if( DEBUGMOD&BUF ) printf("{tcp_com}(%d) read: %d (expected: %d)\n", index, read, (int) PLANE_LEN); if( DEBUGMOD&BUF ) printf("{tcp_com}(%d) read: %d (expected: %d)\n", index, read+1, (int) PLANE_LEN);
continue; continue;
} }

View File

@ -142,15 +142,14 @@ void send_data(){
request.spd = htonl( ctrl.speed ); request.spd = htonl( ctrl.speed );
/* 3. Copie buffer */ /* 3. Copie buffer */
buffer[0] = 0x55; memcpy(buffer+sizeof(char)*0+sizeof(int)*0, &request.code, sizeof(char)*6 );
memcpy(buffer+sizeof(char)*1+sizeof(int)*0, &request.code, sizeof(char)*6 ); memcpy(buffer+sizeof(char)*6+sizeof(int)*0, &request.x, sizeof(int) );
memcpy(buffer+sizeof(char)*7+sizeof(int)*0, &request.x, sizeof(int) ); memcpy(buffer+sizeof(char)*6+sizeof(int)*1, &request.y, sizeof(int) );
memcpy(buffer+sizeof(char)*7+sizeof(int)*1, &request.y, sizeof(int) ); memcpy(buffer+sizeof(char)*6+sizeof(int)*2, &request.z, sizeof(int) );
memcpy(buffer+sizeof(char)*7+sizeof(int)*2, &request.z, sizeof(int) ); memcpy(buffer+sizeof(char)*6+sizeof(int)*3, &request.cap, sizeof(int) );
memcpy(buffer+sizeof(char)*7+sizeof(int)*3, &request.cap, sizeof(int) ); memcpy(buffer+sizeof(char)*6+sizeof(int)*4, &request.spd, sizeof(int) );
memcpy(buffer+sizeof(char)*7+sizeof(int)*4, &request.spd, sizeof(int) );
read = send(commu_socket, buffer, PLANE_DATA_LEN/sizeof(char) + 1, 0); read = send(commu_socket, buffer, PLANE_DATA_LEN/sizeof(char), 0);
if( read <= 0 ){ if( read <= 0 ){
printf("Cannot send\n"); printf("Cannot send\n");
@ -338,7 +337,7 @@ void update(){
/* [3] Gestion de la réponse /* [3] Gestion de la réponse
=========================================================*/ =========================================================*/
/* 1. On prépare la réponse */ /* 1. On prépare la réponse */
buffer[0] = 0; buffer[0] = 0x55;
buffer[1] = request.flags; buffer[1] = request.flags;
printf("Response flags : %d\n", request.flags); printf("Response flags : %d\n", request.flags);