home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 2: PC / frozenfish_august_1995.bin / bbs / d09xx / d0935.lha / AmiCDROM / cdrom.h < prev    next >
C/C++ Source or Header  |  1993-12-20  |  2KB  |  95 lines

  1. /* cdrom.h: */
  2.  
  3. #ifndef _CDROM_H_
  4. #define _CDROM_H_
  5.  
  6. #include <exec/types.h>
  7. #include <exec/memory.h>
  8. #include <exec/io.h>
  9. #include <devices/scsidisk.h>
  10.  
  11. #ifndef _DCC
  12. #define __unaligned /* empty */
  13. #endif
  14.  
  15. #define VERSION "1.7 (06.12.93)"
  16.  
  17. #define SCSI_BUFSIZE 2048
  18.  
  19. typedef enum drive_type {
  20.   DRIVE_ANY,
  21.   DRIVE_TOSHIBA_3401,
  22.   DRIVE_SCSI_2
  23. } t_drive_type;
  24.  
  25. typedef struct CDROM {
  26.   unsigned char     *buffer;
  27.   unsigned char        **buffers;
  28.   unsigned char     *buffer_data;
  29.   unsigned char        sense[20];
  30.   t_drive_type        drive_type;
  31.   short            use_trackdisk;
  32.   short            lun;
  33.   short            std_buffers;
  34.   short            file_buffers;
  35.   long             *current_sectors;
  36.   unsigned long        *last_used;
  37.   unsigned long        tick;
  38.   struct MsgPort     *port;
  39.   struct IOStdReq    *scsireq;
  40.   struct SCSICmd    cmd;
  41. } CDROM;
  42.  
  43. typedef __unaligned struct inquiry_data {
  44.   char        peripheral_type;
  45.   char        modifier;
  46.   char        version;
  47.   char        flags1;
  48.   char        additional_length;
  49.   char        reserved[2];
  50.   char        flags2;
  51.   char        vendor[8];
  52.   char        product[16];
  53.   char        revision[4];
  54. } t_inquiry_data;
  55.  
  56. typedef __unaligned struct toc_header {
  57.   unsigned short length;
  58.   unsigned char  first_track;
  59.   unsigned char  last_track;
  60. } t_toc_header;
  61.  
  62. typedef __unaligned struct toc_data {
  63.   char        reserved1;
  64.   unsigned char flags;
  65.   unsigned char    track_number;
  66.   char        reserved2;
  67.   unsigned long address;
  68. } t_toc_data;
  69.  
  70. CDROM *Open_CDROM (char *p_device, int p_scsi_id, int p_use_trackdisk,
  71.            int p_use_fast_mem, int p_std_buffers, int p_file_buffers);
  72. int Read_Sector (CDROM *p_cd, long p_sector);
  73. int Read_Contiguous_Sectors (CDROM *p_cd, long p_sector, long p_last_sector);
  74. void Cleanup_CDROM (CDROM *p_cd);
  75. int Test_Unit_Ready (CDROM *p_cd);
  76. int Select_XA_Mode (CDROM *p_cd, int p_on);
  77. int Inquire (CDROM *p_cd, t_inquiry_data *p_data);
  78. int Is_XA_Mode_Disk (CDROM *p_cd);
  79. t_toc_data *Read_TOC (CDROM *p_cd, t_toc_header *p_toc_header);
  80. int Has_Audio_Tracks (CDROM *p_cd);
  81. int Start_Play_Audio (CDROM *p_cd);
  82. int Stop_Play_Audio (CDROM *p_cd);
  83.  
  84. extern int g_cdrom_errno;
  85.  
  86. enum {
  87.   CDROMERR_OK = 0,    /* no error            */
  88.   CDROMERR_NO_MEMORY,    /* out of memory        */
  89.   CDROMERR_MSGPORT,    /* cannot create message port    */
  90.   CDROMERR_IOREQ,    /* cannot create I/O request    */
  91.   CDROMERR_DEVICE,    /* cannot open scsi device    */
  92. };
  93.  
  94. #endif /* _CDROM_H_ */
  95.