home *** CD-ROM | disk | FTP | other *** search
/ AMIGA PD 1 / AMIGA-PD-1.iso / Aminet / Tools / Useful / AmiCDROM / src / cdrom.h < prev    next >
C/C++ Source or Header  |  1994-09-25  |  3KB  |  105 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.  
  12. #ifdef DEBUG
  13. void __stdargs kprintf(STRPTR str,...);
  14. #define D(x) x
  15. #else
  16. #define D(x)
  17. #endif
  18.  
  19.  
  20. #define SCSI_BUFSIZE 2048
  21.  
  22. typedef enum model {
  23.   MODEL_ANY,
  24.   MODEL_TOSHIBA_3401,
  25.   MODEL_CDU_8002,
  26. } t_model;
  27.  
  28. typedef struct CDROM {
  29.   unsigned char     *buffer;
  30.   unsigned char        **buffers;
  31.   unsigned char     *buffer_data;
  32.   unsigned char        sense[20];
  33.   short                        scsi_compliance; /* 1 or 2 */
  34.   t_model              model;
  35.   long          startoffset;
  36.   short            use_trackdisk;
  37.   short            lun;
  38.   short            std_buffers;
  39.   short            file_buffers;
  40.   unsigned long        t_changeint;
  41.   unsigned long        t_changeint2;
  42.   long             *current_sectors;
  43.   unsigned long        *last_used;
  44.   unsigned long        tick;
  45.   struct MsgPort     *port;
  46.   struct IOStdReq    *scsireq;
  47.   struct SCSICmd    cmd;
  48.   unsigned short    block_length;
  49.   unsigned short    blocking_factor;
  50.   short            device_open;
  51.   short    motor;
  52. } CDROM;
  53.  
  54. typedef struct inquiry_data {
  55.   char        peripheral_type;
  56.   char        modifier;
  57.   char        version;
  58.   char        flags1;
  59.   char        additional_length;
  60.   char        reserved[2];
  61.   char        flags2;
  62.   char        vendor[8];
  63.   char        product[16];
  64.   char        revision[4];
  65. } t_inquiry_data;
  66.  
  67. typedef struct toc_header {
  68.   unsigned short length;
  69.   unsigned char  first_track;
  70.   unsigned char  last_track;
  71. } t_toc_header;
  72.  
  73. typedef struct toc_data {
  74.   char        reserved1;
  75.   unsigned char flags;
  76.   unsigned char    track_number;
  77.   char        reserved2;
  78.   unsigned long address;
  79. } t_toc_data;
  80.  
  81. CDROM *Open_CDROM (char *p_device, int p_scsi_id, int p_flags,
  82.             long p_startoffset,
  83.             int p_use_trackdisk,
  84.            unsigned long p_memory_type, int p_std_buffers,
  85.            int p_file_buffers,BOOL addchangeint);
  86. int Read_Sector (CDROM *p_cd, long p_sector);
  87. int Read_Contiguous_Sectors (CDROM *p_cd, long p_sector, long p_last_sector);
  88. void Cleanup_CDROM (CDROM *p_cd);
  89. int Test_Unit_Ready (CDROM *p_cd);
  90. int Mode_Select (CDROM *p_cd, int p_on, int p_block_length);
  91. int Inquire (CDROM *p_cd, t_inquiry_data *p_data);
  92. VOID Motor_Off(CDROM *p_cd);
  93. int Is_XA_Mode_Disk (CDROM *p_cd);
  94. t_toc_data *Read_TOC (CDROM *p_cd, t_toc_header *p_toc_header);
  95. int Has_Audio_Tracks (CDROM *p_cd);
  96. int Data_Tracks (CDROM *p_cd, unsigned long** p_buf);
  97. int Start_Play_Audio (CDROM *p_cd);
  98. int Stop_Play_Audio (CDROM *p_cd);
  99. int Block_Length (CDROM *p_cd);
  100. void Clear_Sector_Buffers (CDROM *p_cd);
  101. int Find_Last_Session (CDROM *p_cd, unsigned long *p_result);
  102.  
  103.  
  104. #endif /* _CDROM_H_ */
  105.