I suppose that you are blocked on select. As I’ve already written, this is
a
primitive resourse manager. It uses select service provided by resourse
manager library . So there is no coordination between events comming from
the touch screen and select function response. Actually this is a couple
of
lines in code, but we just not implemented it. On the other hand, do you
really need it? I think you can just be read-blocked. Or your thread
process
several devices?
“Charlie Surface” <> charlie_surface@oti.com> > wrote in message
news:a978pi$t2v$> 1@inn.qnx.com> …
Below you will find 2 snippets. The first is the select() loop to wait
on
the device. The second is the device reading. Thanks for looking at
this.
Sorry about the formatting. I hate Outlook Express >
Charlie
//---------------------------
//select() loop
//---------------------------
FD_ZERO(&fdSet);
FD_SET(userData->pointerFd, &fdSet);
timeout.tv_sec = 1;
timeout.tv_usec = 0;
whiile (userData->pointerDeviceRunning) {
switch (select(userData->pointerFd + 1, &fdSet, 0, 0, &timeout)) {
case -1:
// error
break;
case 0:
// timeout
break;
default:
if(FD_ISSET(userData->pointerFd, &fdSet)) {
// this method handles the reading and dispatching of the events
pointerEventDispatch(bmgEnv, userData->pointerFd, devg, &calibMx);
}
FD_ZERO(&fdSet);
FD_SET(userData->pointerFd, &fdSet);
}
//---------------------------
// device reading
//---------------------------
static void pointerEventDispatch(/* … */) {
struct _touch1_packet touchPacket;
struct _pointer_packet_hdr* hdr;
read(fd, &touchPacket, sizeof(touchPacket));
hdr = &touchPacket.hdr;
// do something with touchPacket.x and y, etc.
}
“Alex Chapiro” <> achapiro@qnx.com> > wrote in message
news:a9759e$qiu$> 1@inn.qnx.com> …
On one side we know that as a driver devi-rpxlite works well (our guys
tested it).
The fact that you could read touch screen packets on another screen
aproves
it. On the other hand, all touch screen drivers share code that is
responsibe for resource manager interface. You have already tested it
using
another touch screen. It worked well. So basically there is no reason
for
bad result for devi-rpxlite. I’ll try to borrow ppc box and play with
it.
Could you please send me a fragment of source you are using for
reading?
“Charlie Surface” <> charlie_surface@oti.com> > wrote in message
news:a96pt6$iig$> 1@inn.qnx.com> …
Alex,
Actually I made a mistake in my earlier post. I am in fact using
_touch1_packet. I just misspelled it in my post.
Charlie
“Alex Chapiro” <> achapiro@qnx.com> > wrote in message
news:a94v2n$82t$> 1@inn.qnx.com> …
Oh, I see what’s that. If you would look up to the resourse
manager
code
(actually you shouldn’t do, this has to be documented ; e hasn’t
done
it
because as far as I know, almost nobody used this mode, but of
course
this
is a bad excuse), you would realize that read operation works only
if
you
read number of bytes exatly the same as a size of data package.
All
data
transfer packages a defined in /usr/include/sys/dcmd_input.h. For
touch
screen this is struct _touch1_packet. This is all the secret. Let
me
know
if
it doesn’t work.
“Charlie Surface” <> charlie_surface@oti.com> > wrote in message
news:a943ru$ikv$> 1@inn.qnx.com> …
Yes, I’ve seen that as well. My problem is that when I try to
read
the
device from my application, the events are not available until
the
release.
It’s possible that this debugging output is not related to the
events
which
are actually available for reading.
I’m using select() in a loop to wait on the device. When it’s
available,
I
read a _touch_packet. I’ve tried another touchscreen device on
a
different
platform, using the same non-Photon resource manager interface,
and
I
am
able to read the events as they occur. So it seems that
devi-rpxlite
is
inconsistent. Or maybe this has to do with a thread priority
issue?
I
believe the device is usually running with 10.
thanks
Charlie
“Hardware Support Account” <> hw@qnx.com> > wrote in message
news:a91ibs$f43$> 1@nntp.qnx.com> …
Hi Charlie,
We tried this here, and we saw output when we would press and
drag
on
the screen. Try using the following command line to start the
driver.
devi-rpxlite -vvvv -Pr RPX
Regards,
Erick.
Charlie Surface <> charlie_surface@oti.com> > wrote:
Any word on this yet?
thanks
Charlie
“Hardware Support Account” <> hw@qnx.com> > wrote in message
news:a8d0i2$1gb$> 1@nntp.qnx.com> …
Hi Charlie,
I am going to check with the input developer on this and
see
what
he has to say.
Regards,
Erick.
Charlie Surface <> charlie_surface@oti.com> > wrote:
I’ve been working with devi-rpxlite and noticed some
behavior
which
is
not
consistent with other touchscreens I’ve worked with.
When
I
perform
a
press, drag, and release, the events are not returned
until
the
release
occurs. I am expecting the events to be returned as they
occur.
Is
there
any rationale for this behavior, or is it a bug? My
configuration
details
are below. Note that I’m using the device in non-Photon,
resource
manager
mode.
devi-rpxlite file size 87,837 bytes
command to start “devi-rpxlite -Pr RPX”
thanks
Charlie
\