[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,11 +307,13 @@ void* manageCtrlTerm(void* THREADABLE_ARGS){
/* 1. Initialisation des variables */
struct sockaddr_in clientInfo;
socklen_t len;
char loop = 1, update = 0;
size_t dataLen;
char loop = 1, update = 0, fbk = 0;
int count, last, sent, nb; // compteurs d'envoi
int i, index = -1; // Compteurs globaux
int pindex; // index of the current plane
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 */
@ -371,7 +373,8 @@ void* manageCtrlTerm(void* THREADABLE_ARGS){
=========================================================*/
/* 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 );
if( !( update || request.flags&TERMREQ_FBK ) ){
fbk = request.flags&TERMREQ_FBK;
if( !( update || fbk ) ){
send(arg->socket, "0", sizeof(char)*2, 0);
printf("{udp_cterm}{com}(%d) Invalid flag, passing\n", index);
continue;
@ -435,20 +438,25 @@ void* manageCtrlTerm(void* THREADABLE_ARGS){
if( !(buffer[0]&TERMREQ_SPD) && request.flags&TERMREQ_SPD )
request.flags -= TERMREQ_SPD;
}else{
}
if( fbk ){
/* [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
=========================================================*/
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);