示例#1
0
文件: umidi.c 项目: bluhm/sys
int
umidi_output(void *addr, int d)
{
	struct umidi_mididev *mididev = addr;

	if (!mididev->out_jack || !mididev->opened)
		return 1;

	return out_jack_output(mididev->out_jack, d);
}
int
umidi_rtmsg(void *addr, int d)
{
	struct umidi_mididev *mididev = addr;
	u_char msg = d;

	if (!mididev->out_jack || !mididev->opened)
		return EIO;

	return out_jack_output(mididev->out_jack, &msg, 1, 0xf);
}
int
umidi_sysex(void *addr, u_char *msg, int len)
{
	struct umidi_mididev *mididev = addr;
	int cin;

	if (!mididev->out_jack || !mididev->opened)
		return EIO;

	switch ( len ) {
	case 1: cin = 5; break;
	case 2: cin = 6; break;
	case 3: cin = (msg[2] == 0xf7) ? 7 : 4; break;
	default: return EIO; /* or gcc warns of cin uninitialized */
	}
	
	return out_jack_output(mididev->out_jack, msg, len, cin);
}
int
umidi_commonmsg(void *addr, int status, u_char *msg, int len)
{
	struct umidi_mididev *mididev = addr;
	int cin;

	if (!mididev->out_jack || !mididev->opened)
		return EIO;

	switch ( len ) {
	case 1: cin = 5; break;
	case 2: cin = 2; break;
	case 3: cin = 3; break;
	default: return EIO; /* or gcc warns of cin uninitialized */
	}
	
	return out_jack_output(mididev->out_jack, msg, len, cin);
}