[DONE] Gestion envoi de données pour ctrlTerm
This commit is contained in:
parent
cc78418a53
commit
a8a44d9941
|
@ -307,11 +307,13 @@ 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;
|
||||||
|
char loop = 1, update = 0, fbk = 0;
|
||||||
int count, last, sent, nb; // compteurs d'envoi
|
int count, last, sent, nb; // compteurs d'envoi
|
||||||
int i, index = -1; // Compteurs globaux
|
int i, index = -1; // Compteurs globaux
|
||||||
int pindex; // index of the current plane
|
int pindex; // index of the current plane
|
||||||
char buffer[MAX_BUF_LEN]; // Buffer d'envoi
|
char buffer[MAX_BUF_LEN]; // Buffer d'envoi
|
||||||
|
char* dataBuffer = malloc(1);
|
||||||
struct term_req request; // Requête
|
struct term_req request; // Requête
|
||||||
|
|
||||||
/* 2. On récupère les arguments */
|
/* 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) */
|
/* 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);
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue