Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 29 Oct 2002 11:17:16 -0500
From:      Joe Sunday <sunday@csh.rit.edu>
To:        ticso@cicely.de
Cc:        David Nicholas Kayal <davek@saturn5.com>, freebsd-hackers@FreeBSD.ORG
Subject:   Re: i am looking for a 5 volt signal
Message-ID:  <20021029161715.GB11104@csh.rit.edu>
In-Reply-To: <20021029160844.GA16922@cicely8.cicely.de>
References:  <Pine.BSF.4.44.0210270911490.329-100000@blackbox.yayproductions.com> <20021028135635.GA28293@csh.rit.edu> <20021029160844.GA16922@cicely8.cicely.de>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Oct 29, 2002 at 05:08:45PM +0100, Bernd Walter wrote:

> On Mon, Oct 28, 2002 at 08:56:35AM -0500, Joe Sunday wrote:
> > On Sun, Oct 27, 2002 at 09:12:33AM -0800, David Nicholas Kayal wrote:
> > 
> > > I'm looking for a 5 volt signal.
> > > 
> > > I have wires plugged into pins 2 and 25 of the parallel port.
> > > 
> > > I have written a small program:
> > > 
> > > #include <stdio.h>
> > > #include <dev/ppbus/ppi.h>
> > > #include <dev/ppbus/ppbconf.h>
> > > 
> > > int main()
> > > {
> > >   int fd;
> > >   while(1)
> > >     {
> > >       ioctl(fd, PPISDATA, 255);
> > >     }
> > > }
> > 
> > PPISDATA actually takes an int* argument. (The man page may be a tad
> > confusing here.)
> 
> No it takes an u_int8_t* exactly as written in the manpage.
> Using an int doesn't work in all cases.
> I have no idea what part of the manpage is confusing.
> 
> > Try
> > int main() {
> >     int fd;
> >     int d = 255;
> u_int8_t d = 255;
> 
> >     fd = open( "/dev/ppi0", O_RDWR );
> > 
> >     ioctl( fd, PPISDATA, &d );
> > 
> >     return 0;
> > }

My bad. Yeah, it takes a u_int8_t* argument, not an int* (Serves me right for
doing it off the top of my head instead of looking at my code). However, 
the original poster had it simply taking some integer value  rather than 
a pointer.

The man page says this:
 Each command takes a single u_int8_t argument, transferring one 
   byte of data.

Which, to me at first glance, can read as a u_int8_t argument, rather
than a u_int8_t* argument if you're new to using ioctls.  The example 
further down the man page has it properly taking an pointer.

--Joe

-- 
Joe Sunday <sunday@csh.rit.edu>  http://www.csh.rit.edu/~sunday/
Computer Science House, Rochester Inst. Of Technology

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021029161715.GB11104>