int selectInterrupt(global tabla){ if(mtexto)printf("INTERRUPCION.I--%s\n",tabla.cabecera->name); int i=0,respuesta,status=1,fdmax=*(tabla.maxfd); char mensaje[128],mensajeError[64],numero[16],data[8]; answer aux; fd_set readfds; readfds=*(tabla.original->original); if(selectGRID_planificador(fdmax,&readfds)>0){ while ((!FD_ISSET(i,&readfds))&&(i<=fdmax)){ i++; } log_trace(tabla.logging.trace,"\t\t\t------INTERRUPT------\t\t\t","TRACE"); strcpy(mensaje,"Nº:I"); itoa(i,numero,10); strcat(mensaje,"--Socket:(Esp./Recv.)-Msj:(Esp./Recv.)-(Msj/Cont/Dat/Sym)--Duenio: --(N/"); strcat(mensaje,numero); strcat(mensaje,")--("); if (i>fdmax){ if(mtexto)puts("--ERROR:No se encontro candidato para selectear!!--"); strcpy(mensajeError,"Nº:I"); strcat(mensajeError,"-ERROR:No se encontro candidato para selectear!!"); log_info(tabla.logging.info,mensaje,"ERROR"); exit(1); }else{ if(mtexto)printf("INTERRUPCION.MID.I--%s\n",tabla.cabecera->name); respuesta=recvAnswer(&aux,i); if(mtexto)printf("INTERRUPCION.MID.F--%s\n",tabla.cabecera->name); strcat(mensaje,"ALL/"); itoa((int)aux.msg,numero,10); strcat(mensaje,numero); strcat(mensaje,")--("); strcat(mensaje,numero); itoa((int)aux.cont,numero,10); strcat(mensaje,"/"); strcat(mensaje,numero); strcat(mensaje,"/"); data[0]=aux.data; data[1]='\0'; strcat(mensaje,data); strcat(mensaje,"/"); data[0]=aux.symbol; data[1]='\0'; strcat(mensaje,data); strcat(mensaje,")--Duenio:"); if(i==tabla.cabecera->nid) strcat(mensaje,tabla.cabecera->name); else { data[0]=buscarSimbolo(i,tabla); data[1]='\0'; strcat(mensaje,data); } strcat(mensaje,"."); log_trace(tabla.logging.trace,mensaje,"TRACE"); status=interrupcion(i,respuesta,&aux,tabla); log_trace(tabla.logging.trace,"\t\t\t------INTERRUPT------\t\t\t","TRACE"); } } if(mtexto)printf("INTERRUPCION.F--%s\n",tabla.cabecera->name); //}while(muerto); return status; }
//-------------------------------------------------------------------------------------------------- void Nextion::send(const char* command) { recvAnswer(); // вычитываем ответ от Nextion if(!stream) return; stream->write(command,strlen(command)); }
//-------------------------------------------------------------------------------------------------- void Nextion::sendEndOfPacket() { recvAnswer(); // вычитываем ответ от Nextion if(!stream) return; uint8_t packet_end[3] = {0xFF,0xFF,0xFF}; stream->write(packet_end,sizeof(packet_end)); }
void inicializar(nodoNivel*raiz,global*general){ int estado; answer tempo; FD_SET(raiz->nid,general->original->original); if(raiz->nid>*(general->maxfd))*(general->maxfd)=raiz->nid; do{ if(!mpantalla)puts("\nPidiendo algoritmo."); sendAnswer(6,0,' ',' ',(short)raiz->nid); enviarLog(raiz->nid,*general,6,0,' ',' '); estado=recvAnswer(&tempo,(short)raiz->nid); recibirLog(*general,raiz->nid,tempo); if(estado!=6) puts("El nivel flasheo cualquiera!"); }while(estado!=6); modificarAlgoritmo(tempo,*general); do{ if(!mpantalla)puts("\nPidiendo retardo entre turnos."); sendAnswer(4,0,' ',' ',(short)raiz->nid); enviarLog(raiz->nid,*general,4,0,' ',' '); estado=recvAnswer(&tempo,(short)raiz->nid); recibirLog(*general,raiz->nid,tempo); if(estado!=4) puts("El nivel flasheo cualquiera!"); }while(estado!=4); modificarRetardo(tempo,*general); }
int tr_trackerPulse( tr_tracker_t * tc ) { tr_torrent_t * tor = tc->tor; tr_info_t * inf = &tor->info; uint64_t now = tr_date(); if( ( tc->status & TC_STATUS_IDLE ) && shouldConnect( tc ) ) { tc->resolve = tr_netResolveInit( inf->trackerAddress ); tr_inf( "Tracker: connecting to %s:%d (%s)", inf->trackerAddress, inf->trackerPort, tc->started ? "sending 'started'" : ( tc->completed ? "sending 'completed'" : ( tc->stopped ? "sending 'stopped'" : ( 0 < tc->newPort ? "sending 'stopped' to change port" : "getting peers" ) ) ) ); tc->status = TC_STATUS_RESOLVE; tc->dateTry = tr_date(); } if( tc->status & TC_STATUS_RESOLVE ) { int ret; struct in_addr addr; ret = tr_netResolvePulse( tc->resolve, &addr ); if( ret == TR_RESOLVE_WAIT ) { return 0; } else { tr_netResolveClose( tc->resolve ); } if( ret == TR_RESOLVE_ERROR ) { tc->status = TC_STATUS_IDLE; return 0; } if( tr_fdSocketWillCreate( tor->fdlimit, 1 ) ) { tc->status = TC_STATUS_IDLE; return 0; } tc->socket = tr_netOpen( addr, htons( inf->trackerPort ) ); if( tc->socket < 0 ) { tr_fdSocketClosed( tor->fdlimit, 1 ); tc->status = TC_STATUS_IDLE; return 0; } tc->status = TC_STATUS_CONNECT; } if( tc->status & TC_STATUS_CONNECT ) { /* We are connecting to the tracker. Try to send the query */ sendQuery( tc ); } if( tc->status & TC_STATUS_RECV ) { /* Try to get something */ recvAnswer( tc ); } if( tc->status > TC_STATUS_IDLE && now > tc->dateTry + 60000 ) { /* Give up if the request wasn't successful within 60 seconds */ tr_inf( "Tracker: timeout reached (60 s)" ); tr_netClose( tc->socket ); tr_fdSocketClosed( tor->fdlimit, 1 ); tc->status = TC_STATUS_IDLE; tc->dateTry = tr_date(); } return 0; }
//-------------------------------------------------------------------------------------------------- void Nextion::update() { recvAnswer(); // вычитываем ответ от Nextion }