[DONE] Gestion envoi de données pour ctrlTerm
This commit is contained in:
parent
cc78418a53
commit
a8a44d9941
|
@ -307,12 +307,14 @@ void* manageCtrlTerm(void* THREADABLE_ARGS){
|
|||
/* 1. Initialisation des variables */
|
||||
struct sockaddr_in clientInfo;
|
||||
socklen_t len;
|
||||
char loop = 1, update = 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
|
||||
struct term_req request; // Requête
|
||||
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 */
|
||||
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) */
|
||||
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);
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue