[openbeos-midi] Re: How work ioctl?
- From: "Philippe Houdoin" <philippe.houdoin@xxxxxxx>
- To: openbeos-midi@xxxxxxxxxxxxx
- Date: Fri, 10 Jan 2003 09:45:24 +0100 (added by postmaster@wanadoo.fr)
Jerome wrote:
> I'm writing the milestone 3, but I have never use ioctl function.
>
> that what I write:
>
> FILE *fichier =3D fopen("/dev/midi/ymf754/1", "rw");
> int file =3D fileno(fichier); //result is 3 seems to be OK
I hope you mean here:
int fd =3D fileno(fichier);
Or, much simpler:
int fd =3D open("/dev/midi/ymf754/1", O=5FRDWR | O=5FEXCL);
> uchar *data =3D [0x90 0x39 0x64];
> midi=5Ftimed=5Fdata DataToSend;
> DataToSend.when =3D time;
> DataToSend.size =3D length;
> DataToSend.data =3D data;
> int i =3D ioctl(fd, B=5FMIDI=5FTIMED=5FWRITE, &DataToSend,
> sizeof(midi=5Ftimed=5Fdata));
>
> Like this in midi=5Fdriver.h
>
> But I have always i =3D=3D -1 that means an error appear
>
> If you have an idea
Most probably, the timed read and write API is not supported by current
BeOS midi drivers.
Since midi2 and his midi=5Fserver, the midi events read & write timing is
not done anymore (if
it was ever!!!) by /dev/midi/* drivers but by the midi=5Fserver and
BMidiConsumers/Producers.
I'm not sure, but I guess if you try to simply write(fd, data, 3); it
would works better.
When I worked on a usb=5Fmidi kernel driver, the midi=5Fserver seems to
never call ioctl(B=5FMIDI=5FTIMED=5F*) on it but simply do loop on read()
and, eventually, write() to it when an midi event raise.
You may want to ask Oliver about his YMP754 driver MIDI API support,
too...
-Philippe
--
Fortune Cookie Says:
Mandrell: "You know what I think?"
Doctor: "Ah, ah that's a catch question. With a brain your size you
don't think, right?"
-- Dr. Who
- Follow-Ups:
- [openbeos-midi] Re: How work ioctl?
- From: Matthijs Hollemans
Other related posts:
- » [openbeos-midi] How work ioctl?
- » [openbeos-midi] Re: How work ioctl?
- » [openbeos-midi] Re: How work ioctl?
- [openbeos-midi] Re: How work ioctl?
- From: Matthijs Hollemans