No I cannot post my code as it is confidential.
I can tell you that the same basic flow has been maintained as the standard
driver but because I am implementing a 5th generation UART, I am able to
move up to 64 bytes of data to it at a time and querry how many characters
are currently in the TX (and RX for that matter) FIFOs.
My Kick code returns a 1 if it did something and a 0 if it decided not to
actually kick the Tx Data Stream.
The tto code returns the hardware pid if the output buffer threshold has
been reached. Very simular to the standard driver.
I have used trace messages to get the flow of the the driver on one port.
The following is a decoded version of it so you can see the normal flow:
Allan
— start of my trace buffer ----
Sep 19 10:13:07.238 tto entered
Sep 19 10:13:07.238 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.238 tto exit: pid returned=00000000h obuf->size=3C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.248 tto entered
Sep 19 10:13:07.248 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.248 tto exit: pid returned=00000000h, obuf->size=380, 40h
chars on UART FIFO
Sep 19 10:13:07.248 tto entered
Sep 19 10:13:07.248 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.248 tto exit: pid returned=00000000h, obuf->size=340, 3Fh
chars on UART FIFO
Sep 19 10:13:07.248 tto entered
Sep 19 10:13:07.248 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.248 tto exit: pid returned=00000000h, obuf->size=300, 3Fh
chars on UART FIFO
Sep 19 10:13:07.248 tto entered
Sep 19 10:13:07.248 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.248 tto exit: pid returned=00000000h obuf->size=2C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.248 tto entered
Sep 19 10:13:07.248 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.248 tto exit: pid returned=00000000h, obuf->size=280, 3Fh
chars on UART FIFO
Sep 19 10:13:07.248 tto entered
Sep 19 10:13:07.248 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.248 tto exit: pid returned=00000000h, obuf->size=24,0 3Fh
chars on UART FIFO
Sep 19 10:13:07.258 tto entered
Sep 19 10:13:07.258 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.258 tto exit: pid returned=00000000h, obuf->size=200, 3Fh
chars on UART FIFO
Sep 19 10:13:07.258 tto entered
Sep 19 10:13:07.258 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.258 tto exit: pid returned=00000000h, obuf->size=1C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.258 tto entered
Sep 19 10:13:07.258 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.258 tto exit: pid returned=00000000h, obuf->size=180, 40h
chars on UART FIFO
Sep 19 10:13:07.258 tto entered
Sep 19 10:13:07.258 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.258 tto exit: pid returned=00000000h, obuf->size=140, 3Fh
chars on UART FIFO
Sep 19 10:13:07.258 tto entered
Sep 19 10:13:07.258 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.258 tto exit: pid returned=00000000h, obuf->size=100, 40h
chars on UART FIFO
Sep 19 10:13:07.258 tto entered
Sep 19 10:13:07.258 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.258 tto exit: pid returned=00000000h, obuf->size=0C0, 40h
chars on UART FIFO
Sep 19 10:13:07.258 tto entered
Sep 19 10:13:07.258 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.258 tto exit: pid returned=00000000h, obuf->size=080, 3Fh
chars on UART FIFO
Sep 19 10:13:07.268 tto entered
Sep 19 10:13:07.268 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.268 tto exit: pid returned=00000000h, obuf->size=040h, 40h
chars on UART FIFO
Sep 19 10:13:07.268 tto entered
Sep 19 10:13:07.268 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.268 tto exit: pid returned=00000000h, obuf->size=000h, 40h
chars on UART FIFO
Sep 19 10:13:07.268 tto entered
Sep 19 10:13:07.268 tto exit: pid returned=00000012h, obuf->size=000h, 00h
chars on UART FIFO
Sep 19 10:13:07.268 Kick was called
Sep 19 10:13:07.268 Kick, Kicked the output data stream
Sep 19 10:13:07.268 tto entered
Sep 19 10:13:07.268 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.268 tto exit: pid returned=00000000h, obuf->size=3C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.268 tto entered
Sep 19 10:13:07.268 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.268 tto exit: pid returned=00000000h, obuf->size=380, 3Fh
chars on UART FIFO
Sep 19 10:13:07.268 tto entered
Sep 19 10:13:07.268 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.268 tto exit: pid returned=00000000h, obuf->size=340, 3Fh
chars on UART FIFO
Sep 19 10:13:07.268 tto entered
Sep 19 10:13:07.268 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.268 tto exit: pid returned=00000000h, obuf->size=300, 3Fh
chars on UART FIFO
Sep 19 10:13:07.278 tto entered
Sep 19 10:13:07.278 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.278 tto exit: pid returned=00000000h, obuf->size=2C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.278 tto entered
Sep 19 10:13:07.278 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.278 tto exit: pid returned=00000000h, obuf->size=280, 3Fh
chars on UART FIFO
Sep 19 10:13:07.278 tto entered
Sep 19 10:13:07.278 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.278 tto exit: pid returned=00000000h, obuf->size=240, 3Fh
chars on UART FIFO
Sep 19 10:13:07.278 tto entered
Sep 19 10:13:07.278 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.278 tto exit: pid returned=00000000h, obuf->size=200, 3Fh
chars on UART FIFO
Sep 19 10:13:07.278 tto entered
Sep 19 10:13:07.278 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.278 tto exit: pid returned=00000000h, obuf->size=1C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.278 tto entered
Sep 19 10:13:07.278 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.278 tto exit: pid returned=00000000h, obuf->size=180, 40h
chars on UART FIFO
Sep 19 10:13:07.288 tto entered
Sep 19 10:13:07.288 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.288 tto exit: pid returned=00000000h, obuf->size=140, 40h
chars on UART FIFO
Sep 19 10:13:07.288 tto entered
Sep 19 10:13:07.288 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.288 tto exit: pid returned=00000000h, obuf->size=100, 40h
chars on UART FIFO
Sep 19 10:13:07.288 tto entered
Sep 19 10:13:07.288 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.288 tto exit: pid returned=00000000h, obuf->size=0C0, 40h
chars on UART FIFO
Sep 19 10:13:07.288 tto entered
Sep 19 10:13:07.288 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.288 tto exit: pid returned=00000000h, obuf->size=080, 40h
chars on UART FIFO
Sep 19 10:13:07.288 tto entered
Sep 19 10:13:07.288 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.288 tto exit: pid returned=00000000h, obuf->size=040h, 40h
chars on UART FIFO
Sep 19 10:13:07.288 tto entered
Sep 19 10:13:07.288 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.288 tto exit: pid returned=00000000h, obuf->size=000h, 40h
chars on UART FIFO
Sep 19 10:13:07.288 tto entered
Sep 19 10:13:07.288 tto exit: pid returned=00000012, obuf->size=000h, 00h
chars on UART FIFO
Sep 19 10:13:07.298 Kick was called
Sep 19 10:13:07.298 Kick, Kicked the output data stream
Sep 19 10:13:07.298 tto entered
Sep 19 10:13:07.298 transfer to UART FIFOs 40h chars, 3Fh chars on UART FIFO
Sep 19 10:13:07.298 tto exit: pid returned=00000000h, obuf->size=3C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.298 tto entered
Sep 19 10:13:07.298 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.298 tto exit: pid returned=00000000h, obuf->size=380, 3Fh
chars on UART FIFO
Sep 19 10:13:07.298 tto entered
Sep 19 10:13:07.298 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.298 tto exit: pid returned=00000000h, obuf->size=340, 3Fh
chars on UART FIFO
Sep 19 10:13:07.298 tto entered
Sep 19 10:13:07.298 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.298 tto exit: pid returned=00000000h, obuf->size=300, 3Fh
chars on UART FIFO
Sep 19 10:13:07.298 tto entered
Sep 19 10:13:07.298 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.298 tto exit: pid returned=00000000h, obuf->size=2C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.298 tto entered
Sep 19 10:13:07.298 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.298 tto exit: pid returned=00000000h, obuf->size=280, 3Fh
chars on UART FIFO
Sep 19 10:13:07.308 tto entered
Sep 19 10:13:07.308 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.308 tto exit: pid returned=00000000h, obuf->size=240, 3Fh
chars on UART FIFO
Sep 19 10:13:07.308 tto entered
Sep 19 10:13:07.308 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.308 tto exit: pid returned=00000000h, obuf->size=200, 3Fh
chars on UART FIFO
Sep 19 10:13:07.308 tto entered
Sep 19 10:13:07.308 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.308 tto exit: pid returned=00000000h, obuf->size=1C0, 3Fh
chars on UART FIFO
Sep 19 10:13:07.308 tto entered
Sep 19 10:13:07.308 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.308 tto exit: pid returned=00000000h, obuf->size=180, 3Fh
chars on UART FIFO
Sep 19 10:13:07.308 tto entered
Sep 19 10:13:07.308 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.308 tto exit: pid returned=00000000h, obuf->size=140, 3Fh
chars on UART FIFO
Sep 19 10:13:07.308 tto entered
Sep 19 10:13:07.308 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.308 tto exit: pid returned=00000000h, obuf->size=100, 40h
chars on UART FIFO
Sep 19 10:13:07.318 tto entered
Sep 19 10:13:07.318 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.318 tto exit: pid returned=00000000h, obuf->size=0C0, 40h
chars on UART FIFO
Sep 19 10:13:07.318 tto entered
Sep 19 10:13:07.318 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.318 tto exit: pid returned=00000000h, obuf->size=080, 3Fh
chars on UART FIFO
Sep 19 10:13:07.318 tto entered
Sep 19 10:13:07.318 transfer to UART FIFOs 40h chars, 40h chars on UART FIFO
Sep 19 10:13:07.318 tto exit: pid returned=00000000h, obuf->size=040h, 3Fh
chars on UART FIFO
Sep 19 10:13:07.318 tto entered
Sep 19 10:13:07.318 transfer to UART FIFOs 40h, 3Fh chars on UART FIFO
Sep 19 10:13:07.318 tto exit: pid returned=00000000h, obuf->size=000h, 3Fh
chars on UART FIFO
Sep 19 10:13:07.318 tto entered
Sep 19 10:13:07.318 tto exit: pid returned=00000012, obuf->size=000h, 00h
chars on UART FIFO
nothing more happens because Kick did not get called
---- end of my trace buffer ----
“Mario Charest” postmaster@127.0.0.1 wrote in message
news:bkden0$ejb$1@inn.qnx.com…
“Allan Smith” <> aes@connecttech.com> > wrote in message
news:bkd1a0$5ug$> 1@inn.qnx.com> …
“action” is a member of QNX4’s output buffer structure.
Kick is a function (a standard call back in pretty much any driver set
by
the dev_drvr_register command) and Dev calls it when a change has
occurred
in the output buffer.
Ah, you are making references to a Dev type of driver > > It didn’t
occured
to me that’s what you meant by “device driver” >
Well there can be lots of thing that could cause this problem. Hard to
give
a list here, can you post code of you int handler, tto and kick fct?