00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00020 #ifndef CBMIEC_H
00021 #define CBMIEC_H
00022
00023 typedef
00024 enum iec_cabletype
00025 {
00026 IEC_CABLETYPE_AUTO = -1, IEC_CABLETYPE_XM = 0, IEC_CABLETYPE_XA = 1
00027 } IEC_CABLETYPE;
00028
00029 typedef
00030 enum iec_checkdevice
00031 {
00032 IEC_CHECKDEVICE_BUSFREE = 0,
00033 IEC_CHECKDEVICE_NODEVICE = 1,
00034 IEC_CHECKDEVICE_BUSBUSY = 2
00035 } IEC_CHECKDEVICE;
00036
00037 extern NTSTATUS
00038 cbmiec_reset(IN PDEVICE_EXTENSION Pdx);
00039
00040 extern BOOLEAN
00041 cbmiec_send_byte(IN PDEVICE_EXTENSION Pdx, IN UCHAR Byte);
00042
00043 extern VOID
00044 cbmiec_wait_for_listener(IN PDEVICE_EXTENSION Pdx, IN BOOLEAN SendEoi);
00045
00046 extern VOID
00047 cbmiec_release_bus(IN PDEVICE_EXTENSION Pdx);
00048
00049 extern NTSTATUS
00050 cbmiec_untalk(IN PDEVICE_EXTENSION Pdx);
00051
00052 extern NTSTATUS
00053 cbmiec_unlisten(IN PDEVICE_EXTENSION Pdx);
00054
00055 extern NTSTATUS
00056 cbmiec_listen(IN PDEVICE_EXTENSION Pdx, IN UCHAR DeviceAddress, IN UCHAR SecondaryAddress);
00057
00058 extern NTSTATUS
00059 cbmiec_talk(IN PDEVICE_EXTENSION Pdx, IN UCHAR DeviceAddress, IN UCHAR SecondaryAddress);
00060
00061 extern NTSTATUS
00062 cbmiec_open(IN PDEVICE_EXTENSION Pdx, IN UCHAR DeviceAddress, IN UCHAR SecondaryAddress);
00063
00064 extern NTSTATUS
00065 cbmiec_close(IN PDEVICE_EXTENSION Pdx, IN UCHAR DeviceAddress, IN UCHAR SecondaryAddress);
00066
00067 extern NTSTATUS
00068 cbmiec_get_eoi(IN PDEVICE_EXTENSION Pdx, OUT PBOOLEAN Result);
00069
00070 extern NTSTATUS
00071 cbmiec_clear_eoi(IN PDEVICE_EXTENSION Pdx);
00072
00073 extern NTSTATUS
00074 cbmiec_iec_wait(IN PDEVICE_EXTENSION Pdx, IN UCHAR Line, IN UCHAR State, OUT PUCHAR Result);
00075
00076 extern NTSTATUS
00077 cbmiec_iec_poll(IN PDEVICE_EXTENSION Pdx, OUT PUCHAR Result);
00078
00079 extern NTSTATUS
00080 cbmiec_iec_set(IN PDEVICE_EXTENSION Pdx, IN USHORT Line);
00081
00082 extern NTSTATUS
00083 cbmiec_iec_release(IN PDEVICE_EXTENSION Pdx, IN USHORT Line);
00084
00085 extern NTSTATUS
00086 cbmiec_iec_setrelease(IN PDEVICE_EXTENSION Pdx, IN USHORT Set, IN USHORT Release);
00087
00088 extern NTSTATUS
00089 cbmiec_pp_read(IN PDEVICE_EXTENSION Pdx, OUT UCHAR *Byte);
00090
00091 extern NTSTATUS
00092 cbmiec_pp_write(IN PDEVICE_EXTENSION Pdx, IN UCHAR Byte);
00093
00094 extern BOOLEAN
00095 cbmiec_interrupt(IN PDEVICE_EXTENSION Pdx);
00096
00097 extern NTSTATUS
00098 cbmiec_cleanup(IN PDEVICE_EXTENSION Pdx);
00099
00100 extern NTSTATUS
00101 cbmiec_init(IN PDEVICE_EXTENSION Pdx);
00102
00103 extern NTSTATUS
00104 cbmiec_global_init(IN PHANDLE HKey);
00105
00106 extern NTSTATUS
00107 cbmiec_raw_write(IN PDEVICE_EXTENSION Pdx, IN const PUCHAR Buffer, IN ULONG BufferLength, OUT ULONG* Written);
00108
00109 extern NTSTATUS
00110 cbmiec_raw_read(IN PDEVICE_EXTENSION Pdx, OUT PUCHAR Buffer, IN ULONG BufferLength, OUT ULONG* Read);
00111
00112 extern NTSTATUS
00113 cbmiec_set_cabletype(IN PDEVICE_EXTENSION Pdx, IN IEC_CABLETYPE CableType);
00114
00115 extern NTSTATUS
00116 cbmiec_check_device(IN PDEVICE_EXTENSION Pdx, OUT IEC_CHECKDEVICE *CheckDevice);
00117
00118 extern NTSTATUS
00119 cbmiec_parallel_burst_read(IN PDEVICE_EXTENSION Pdx, OUT UCHAR* Byte);
00120
00121 extern NTSTATUS
00122 cbmiec_parallel_burst_write(IN PDEVICE_EXTENSION Pdx, IN UCHAR Byte);
00123
00124 extern NTSTATUS
00125 cbmiec_parallel_burst_read_track(IN PDEVICE_EXTENSION Pdx, OUT UCHAR* Buffer, IN ULONG BufferLength);
00126
00127 extern NTSTATUS
00128 cbmiec_parallel_burst_write_track(IN PDEVICE_EXTENSION Pdx, IN UCHAR* Buffer, IN ULONG BufferLength);
00129
00130 #endif