home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / new / disk / cdrom / amicdrom / cdrom.h < prev    next >
C/C++ Source or Header  |  1994-05-22  |  3KB  |  107 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 "CDROM-Handler 1.11 (22.05.94)"
  16.  
  17. #define SCSI_BUFSIZE 2048
  18.  
  19. typedef enum model {
  20.   MODEL_ANY,
  21.   MODEL_TOSHIBA_3401,
  22.   MODEL_CDU_8002,
  23. } t_model;
  24.  
  25. typedef struct CDROM {
  26.   unsigned char     *buffer;
  27.   unsigned char        **buffers;
  28.   unsigned char     *buffer_data;
  29.   unsigned char        sense[20];
  30.   short            scsi_compliance; /* 1 or 2 */
  31.   t_model        model;
  32.   short            use_trackdisk;
  33.   short            lun;
  34.   short            std_buffers;
  35.   short            file_buffers;
  36.   unsigned long        t_changeint;
  37.   unsigned long        t_changeint2;
  38.   long             *current_sectors;
  39.   unsigned long        *last_used;
  40.   unsigned long        tick;
  41.   struct MsgPort     *port;
  42.   struct IOStdReq    *scsireq;
  43.   struct SCSICmd    cmd;
  44.   unsigned short    block_length;
  45.   unsigned short    blocking_factor;
  46.   short            device_open;
  47. } CDROM;
  48.  
  49. typedef __unaligned struct inquiry_data {
  50.   char        peripheral_type;
  51.   char        modifier;
  52.   char        version;
  53.   char        flags1;
  54.   char        additional_length;
  55.   char        reserved[2];
  56.   char        flags2;
  57.   char        vendor[8];
  58.   char        product[16];
  59.   char        revision[4];
  60. } t_inquiry_data;
  61.  
  62. typedef __unaligned struct toc_header {
  63.   unsigned short length;
  64.   unsigned char  first_track;
  65.   unsigned char  last_track;
  66. } t_toc_header;
  67.  
  68. typedef __unaligned struct toc_data {
  69.   char        reserved1;
  70.   unsigned char flags;
  71.   unsigned char    track_number;
  72.   char        reserved2;
  73.   unsigned long address;
  74. } t_toc_data;
  75.  
  76. CDROM *Open_CDROM (char *p_device, int p_scsi_id, int p_use_trackdisk,
  77.            unsigned long p_memory_type, int p_std_buffers,
  78.            int p_file_buffers);
  79. int Read_Sector (CDROM *p_cd, long p_sector);
  80. int Read_Contiguous_Sectors (CDROM *p_cd, long p_sector, long p_last_sector);
  81. void Cleanup_CDROM (CDROM *p_cd);
  82. int Test_Unit_Ready (CDROM *p_cd);
  83. int Mode_Select (CDROM *p_cd, int p_on, int p_block_length);
  84. int Inquire (CDROM *p_cd, t_inquiry_data *p_data);
  85. int Is_XA_Mode_Disk (CDROM *p_cd);
  86. t_toc_data *Read_TOC (CDROM *p_cd, t_toc_header *p_toc_header);
  87. int Has_Audio_Tracks (CDROM *p_cd);
  88. int Data_Tracks (CDROM *p_cd, unsigned long** p_buf);
  89. int Start_Play_Audio (CDROM *p_cd);
  90. int Stop_Play_Audio (CDROM *p_cd);
  91. int Block_Length (CDROM *p_cd);
  92. void Clear_Sector_Buffers (CDROM *p_cd);
  93.  
  94. extern int g_cdrom_errno;
  95. extern int g_ignore_blocklength;
  96.  
  97. enum {
  98.   CDROMERR_OK = 0,    /* no error            */
  99.   CDROMERR_NO_MEMORY,    /* out of memory        */
  100.   CDROMERR_MSGPORT,    /* cannot create message port    */
  101.   CDROMERR_IOREQ,    /* cannot create I/O request    */
  102.   CDROMERR_DEVICE,    /* cannot open scsi device    */
  103.   CDROMERR_BLOCKSIZE    /* illegal blocksize        */
  104. };
  105.  
  106. #endif /* _CDROM_H_ */
  107.