hi,
I have tried to use the Timeout handling for the function
recvfrom_rt(...) in my code.
But, when I start the program the function is always blocked, and my
program doesn't stop. I'm working in user space.
my code is the next:
[...
// set time_out
TimeOut=500000000; //500ms
ioctl_rt(udpSocket,RTNET_RTIOC_TIMEOUT,&TimeOut);
// inizializzo il task real-time, tutti i metodi usati devono essere RT
task_rt = rt_task_init(4907,1,0,0); //Id_Task, priorità, ...
if (task_rt==NULL) // controllo che il task sia stato creato
{
close_rt(udpSocket); //chiudo il socket
printf("task non creato\n");
exit(1);
}
i=0; //i conta i segmenti
t_sum=0;
while (i<Npkt) //aspetto l'invio di 10 segmenti 1200000
{
*((long*)(&(Buffer[1])))=i;
rt_make_hard_real_time();
t_start=rt_get_time();
a=sendto_rt(udpSocket, Buffer, BufferLen,flags,
(sockaddr*)&slaveAdrs,(socklen_t) sizeof(sockaddr));
// ricevo il segmento e lo reinvio al mittente
for (i_slave=0; i_slave<SLAVE;) // I have 2 Slave
{
BufferLenRx=recvfrom_rt(udpSocket, BufferRx, sizeof(BufferRx),flags,
(sockaddr*)&slaveRx,&lenRx );
if (BufferLenRx==ETIMEDOUT)
{//Time Out
rt_make_soft_real_time();
rt_task_delete(task_rt);
close_rt(udpSocket);
printf("TimeOut %d\n",BufferLenRx);
exit(1);
}
//il confronto è tra due unsigned long
for(j_slave=0; j_slave<SLAVE; j_slave++)
{// controllo chi mi ha risposto
if (slaveRx.sin_addr.s_addr==slaveIP[j_slave])
{
if (i==(*((long*)(&(BufferRx[1])))))
{
i_slave++;
continue;
}
else
{
//errore uscita
rt_make_soft_real_time();
rt_task_delete(task_rt);
close_rt(udpSocket);
printf("dati errati\n");
exit(1);
}
}
}
}
t_stop=rt_get_time();
rt_make_soft_real_time();
t_sum+=((long)count2nano(t_stop-t_start)/1000);
i++;
}
...]
do you have any idea?
-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc. Get Certified Today
Register for a JBoss Training Course. Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_idv28&alloc_id845&op=click
_______________________________________________
RTnet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rtnet-users