[DONE] Gestion envoi de données pour ctrlTerm

This commit is contained in:
xdrm-brackets 2017-04-28 16:37:29 +02:00
parent cc78418a53
commit a8a44d9941
1 changed files with 19 additions and 11 deletions

View File

@ -307,12 +307,14 @@ void* manageCtrlTerm(void* THREADABLE_ARGS){
/* 1. Initialisation des variables */ /* 1. Initialisation des variables */
struct sockaddr_in clientInfo; struct sockaddr_in clientInfo;
socklen_t len; socklen_t len;
char loop = 1, update = 0; size_t dataLen;
int count, last, sent, nb; // compteurs d'envoi char loop = 1, update = 0, fbk = 0;
int i, index = -1; // Compteurs globaux int count, last, sent, nb; // compteurs d'envoi
int pindex; // index of the current plane int i, index = -1; // Compteurs globaux
char buffer[MAX_BUF_LEN]; // Buffer d'envoi int pindex; // index of the current plane
struct term_req request; // Requête char buffer[MAX_BUF_LEN]; // Buffer d'envoi
char* dataBuffer = malloc(1);
struct term_req request; // Requête
/* 2. On récupère les arguments */ /* 2. On récupère les arguments */
struct handler_arg* arg = THREADABLE_ARGS; struct handler_arg* arg = THREADABLE_ARGS;
@ -371,7 +373,8 @@ void* manageCtrlTerm(void* THREADABLE_ARGS){
=========================================================*/ =========================================================*/
/* 1. On vérifie qu'il y a bien un update demandé (ou DATA) */ /* 1. On vérifie qu'il y a bien un update demandé (ou DATA) */
update = ( request.flags&TERMREQ_ALT || request.flags&TERMREQ_CAP || request.flags&TERMREQ_SPD ); update = ( request.flags&TERMREQ_ALT || request.flags&TERMREQ_CAP || request.flags&TERMREQ_SPD );
if( !( update || request.flags&TERMREQ_FBK ) ){ fbk = request.flags&TERMREQ_FBK;
if( !( update || fbk ) ){
send(arg->socket, "0", sizeof(char)*2, 0); send(arg->socket, "0", sizeof(char)*2, 0);
printf("{udp_cterm}{com}(%d) Invalid flag, passing\n", index); printf("{udp_cterm}{com}(%d) Invalid flag, passing\n", index);
continue; continue;
@ -435,20 +438,25 @@ void* manageCtrlTerm(void* THREADABLE_ARGS){
if( !(buffer[0]&TERMREQ_SPD) && request.flags&TERMREQ_SPD ) if( !(buffer[0]&TERMREQ_SPD) && request.flags&TERMREQ_SPD )
request.flags -= TERMREQ_SPD; request.flags -= TERMREQ_SPD;
}else{ }
if( fbk ){
/* [5] Données des avions /* [5] Données des avions
=========================================================*/ =========================================================*/
/* 1. Si TERMREQ_FBK, on récupère les données */ /* 1. On récupère les données */
getPlaneData(&dataBuffer, &dataLen, arg->sgca);
/* 2. Si update, on mixe les flags */
if( update )
dataBuffer[0] |= request.flags;
} }
/* [6] Réponse au terminal /* [6] Réponse au terminal
=========================================================*/ =========================================================*/
if( send(arg->socket, buffer, sizeof(char)*2, 0) < 0 ) if( send(arg->socket, dataBuffer, dataLen+1, 0) < 0 )
printf("{udp_cterm}{com}(%d) Cannot answer to terminal\n", index); printf("{udp_cterm}{com}(%d) Cannot answer to terminal\n", index);