1/* 2 * Copyright 2009, Haiku Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _MIDI_DRIVER_H 6#define _MIDI_DRIVER_H 7 8 9#include <Drivers.h> 10#include <module.h> 11 12 13/* deprecated interface */ 14enum { 15 B_MIDI_GET_READ_TIMEOUT = B_MIDI_DRIVER_BASE, 16 B_MIDI_SET_READ_TIMEOUT, 17 B_MIDI_TIMED_READ, 18 B_MIDI_TIMED_WRITE, 19 B_MIDI_WRITE_SYNC, 20 B_MIDI_WRITE_CLEAR, 21 B_MIDI_GET_READ_TIMEOUT_OLD = B_DEVICE_OP_CODES_END + 1, 22 B_MIDI_SET_READ_TIMEOUT_OLD 23}; 24 25 26#define B_MIDI_DEFAULT_TIMEOUT 1000000000000000LL 27 28typedef struct { 29 bigtime_t when; 30 size_t size; 31 uint8* data; 32} midi_timed_data; 33 34 35#define B_MIDI_PARSER_MODULE_NAME "media/midiparser/v1" 36 37typedef struct _midi_parser_module_info { 38 module_info minfo; 39 int (*parse)(uint32* state, uchar byte, size_t maxSize); 40 int _reserved_; 41} midi_parser_module_info; 42 43 44#define B_MPU_401_MODULE_NAME "generic/mpu401/v1" 45 46enum { 47 B_MPU_401_ENABLE_CARD_INT = 1, 48 B_MPU_401_DISABLE_CARD_INT 49}; 50 51typedef struct _generic_mpu401_module { 52 module_info minfo; 53 status_t (*create_device)(int port, void** _handle, uint32 workArounds, 54 void (*interruptOp)(int32 op, void* card), void* card); 55 status_t (*delete_device)(void* handle); 56 status_t (*open_hook)(void* storage, uint32 flags, void** _cookie); 57 status_t (*close_hook)(void* cookie); 58 status_t (*free_hook)(void* cookie); 59 status_t (*control_hook)(void* cookie, uint32 op, void* data, 60 size_t length); 61 status_t (*read_hook)(void* cookie, off_t pos, void* data, 62 size_t* _length); 63 status_t (*write_hook)(void* cookie, off_t pos, const void* data, 64 size_t* _length); 65 bool (*interrupt_hook)(void* cookie); 66 int _reserved_; 67} generic_mpu401_module; 68 69 70#endif /* _MIDI_DRIVER_H */ 71