On 04/02/2012 10:25 AM, Minh GIANG wrote:
> hello,
> 
> i don't know how call the function rt_dev_ioctl() after the timeout
> happened, this function is called in the begining of "while" loop
> (cross-link program).
> I get the value of struct  rtser_status,
> line status = 96
> modem status = 176
> to be honest, i don't know why cross-line program works without the
> function  rt_dev_ioctl() with  RTSER_RTIOC_WAIT_EVENT in  option.
> 
> main : write-file opened
> main : write-config written
> main : read-file opened
> main : read-config written
> main : write-task created
> main : read-task created
> main : starting write-task
> main : starting read-task
>  Nr |   write->irq    |    irq->read    |   write->read   |
> -----------------------------------------------------------
>   0 |17113389816533987823 |1333354257183912191 |         8348398
>   1 |17113389815533997483 |1333354258183885264 |         8331131
>   2 |17113389814533998100 |1333354259183882033 |         8328517
>   3 |17113389813534000420 |1333354260183884535 |         8333339
>   4 |17113389812533998430 |1333354261183888665 |         8335479
> ......
> 
> i tried to send a character table, and it also worked.

Hm, maybe you receive something, but the numbers are bogous. To
understand better what's going on, coud you please apply the attached
patch to your Xenomai tree, rebuild the kernel and send the dmesg output
while running cross-link.

BTW: what Xenomai version are you using?

Wolfgang.

> On Fri, Mar 30, 2012 at 4:48 PM, Wolfgang Grandegger 
> <w...@grandegger.com>wrote:
> 
>> On 03/30/2012 04:34 PM, Minh GIANG wrote:
>>> hi,
>>>
>>> with option RTSER_RTIOC_WAIT_EVENT in rt_dev_ioctl(), this function
>> returns
>>> un number -110 (Connection timed out)
>>> with option RTSER_RTIOC_GET_STATUS in rt_dev_ioctl(), this function
>> returns
>>> un number 0 (not message)
>>
>> You should call this function *after* the timeout happened. What does
>> the "struct rtser_status"  contain? Especially the "line_status" is of
>> interest.
>>
>>>
>>> Anyway, currently it works without  rt_dev_ioctl(), i can see
>> rt_dev_read()
>>> wait data event (with debug mode) while giving the period of write
>>> task,  for exemple  = two seconds.
>>>
>>> so can i remove the funtion rt_dev_ioctl?
>>
>> The rt_dev_ioctl should work. You can remove it, but the problem will
>> remain. To debug the problem you could also add some printk's here:
>>
>>
>> http://www.rts.uni-hannover.de/xenomai/lxr/source/ksrc/drivers/serial/16550A.c#223
>>
>> Especially the value of "iir" might be interesting.
>>
>> Wolfgang.
>>
> 

diff --git a/ksrc/drivers/serial/16550A.c b/ksrc/drivers/serial/16550A.c
index 3672539..392c4f7 100644
--- a/ksrc/drivers/serial/16550A.c
+++ b/ksrc/drivers/serial/16550A.c
@@ -240,6 +240,7 @@ static int rt_16550_interrupt(rtdm_irq_t * irq_context)
 
 	while (1) {
 		iir = rt_16550_reg_in(mode, base, IIR) & IIR_MASK;
+		printk("base=%#lx iir=%#x\n", base, iir);
 		if (testbits(iir, IIR_PIRQ))
 			break;
 
@@ -258,6 +259,7 @@ static int rt_16550_interrupt(rtdm_irq_t * irq_context)
 				events |= RTSER_EVENT_MODEMLO;
 		}
 
+		printk("base=%#lx status=%#x\n", base, ctx->status);
 		ret = RTDM_IRQ_HANDLED;
 	}
 
_______________________________________________
Xenomai-help mailing list
Xenomai-help@gna.org
https://mail.gna.org/listinfo/xenomai-help

Reply via email to