home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C / Applications / Portable Patmos / usr / include / sys / cdio.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-08  |  3.4 KB  |  159 lines  |  [TEXT/R*ch]

  1. /*
  2.  *    $Id: cdio.h,v 1.5 1993/08/04 19:33:38 brezak Exp $
  3.  */
  4.  
  5. #ifndef _SYS_CDIO_H_
  6. #define _SYS_CDIO_H_
  7.  
  8. /* Shared between kernel & process */
  9.  
  10. struct cd_toc_entry {
  11.     u_char    :8;
  12.     u_char    control:4;
  13.     u_char    addr_type:4;
  14.     u_char  track;
  15.     u_char    :8;
  16.     u_char    addr[4];
  17. };
  18.  
  19. struct cd_sub_channel_header {
  20.     u_char    :8;   
  21.     u_char    audio_status; 
  22. #define CD_AS_AUDIO_INVALID        0x00
  23. #define CD_AS_PLAY_IN_PROGRESS     0x11
  24. #define CD_AS_PLAY_PAUSED          0x12
  25. #define CD_AS_PLAY_COMPLETED       0x13
  26. #define CD_AS_PLAY_ERROR           0x14
  27. #define CD_AS_NO_STATUS            0x15
  28.     u_char    data_len[2];
  29. };
  30.  
  31. struct cd_sub_channel_position_data {
  32.     u_char    data_format;
  33.     u_char    control:4;
  34.     u_char    addr_type:4;
  35.     u_char    track_number;
  36.     u_char    index_number;
  37.     u_char    absaddr[4];
  38.     u_char    reladdr[4];
  39. };
  40.  
  41. struct cd_sub_channel_media_catalog {
  42.         u_char  data_format;
  43.         u_char  :8;
  44.         u_char  :8;
  45.         u_char  :8;
  46.         u_char  :7;
  47.         u_char  mc_valid:1;
  48.         u_char  mc_number[15]; 
  49. };
  50.  
  51. struct cd_sub_channel_track_info {
  52.         u_char  data_format;
  53.         u_char  :8;
  54.         u_char  track_number;
  55.         u_char  :8;
  56.         u_char  :7;
  57.         u_char  ti_valid:1;   
  58.         u_char  ti_number[15]; 
  59. };
  60.  
  61. struct cd_sub_channel_info {
  62.     struct cd_sub_channel_header header;
  63.     union {
  64.         struct cd_sub_channel_position_data position;
  65.         struct cd_sub_channel_media_catalog media_catalog;
  66.         struct cd_sub_channel_track_info track_info;    
  67.     } what;
  68. };
  69.  
  70. /***************************************************************\
  71. * Ioctls for the CD drive                    *
  72. \***************************************************************/
  73. struct ioc_play_track
  74. {
  75.     u_char    start_track;
  76.     u_char    start_index;
  77.     u_char    end_track;
  78.     u_char    end_index;
  79. };
  80.  
  81. #define    CDIOCPLAYTRACKS    _IOW('c',1,struct ioc_play_track)
  82. struct ioc_play_blocks
  83. {
  84.     int    blk;
  85.     int    len;
  86. };
  87. #define    CDIOCPLAYBLOCKS    _IOW('c',2,struct ioc_play_blocks)
  88.  
  89. struct ioc_read_subchannel {
  90.     u_char address_format;
  91. #define CD_LBA_FORMAT    1
  92. #define CD_MSF_FORMAT    2
  93.     u_char data_format;
  94. #define CD_SUBQ_DATA        0
  95. #define CD_CURRENT_POSITION    1
  96. #define CD_MEDIA_CATALOG    2
  97. #define CD_TRACK_INFO        3
  98.     u_char track;
  99.     int    data_len;
  100.     struct  cd_sub_channel_info *data;
  101. };
  102. #define CDIOCREADSUBCHANNEL _IOWR('c', 3 , struct ioc_read_subchannel )
  103.  
  104.  
  105. struct ioc_toc_header {
  106.     u_short len;
  107.     u_char  starting_track;
  108.     u_char  ending_track;
  109. };
  110.  
  111. #define CDIOREADTOCHEADER _IOR('c',4,struct ioc_toc_header)
  112.  
  113. struct ioc_read_toc_entry {
  114.     u_char    address_format;
  115.     u_char    starting_track;
  116.     u_short    data_len;
  117.     struct  cd_toc_entry *data;
  118. };
  119. #define CDIOREADTOCENTRYS _IOWR('c',5,struct ioc_read_toc_entry)
  120.  
  121. struct    ioc_patch
  122. {
  123.     u_char    patch[4];    /* one for each channel */
  124. };
  125. #define    CDIOCSETPATCH    _IOW('c',9,struct ioc_patch)
  126. struct    ioc_vol
  127. {
  128.     u_char    vol[4];    /* one for each channel */
  129. };
  130. #define    CDIOCGETVOL    _IOR('c',10,struct ioc_vol)
  131. #define    CDIOCSETVOL    _IOW('c',11,struct ioc_vol)
  132. #define    CDIOCSETMONO    _IO('c',12)
  133. #define    CDIOCSETSTERIO    _IO('c',13)
  134. #define    CDIOCSETMUTE    _IO('c',14)
  135. #define    CDIOCSETLEFT    _IO('c',15)
  136. #define    CDIOCSETRIGHT    _IO('c',16)
  137. #define    CDIOCSETDEBUG    _IO('c',17)
  138. #define    CDIOCCLRDEBUG    _IO('c',18)
  139. #define    CDIOCPAUSE    _IO('c',19)
  140. #define    CDIOCRESUME    _IO('c',20)
  141. #define    CDIOCRESET    _IO('c',21)
  142. #define    CDIOCSTART    _IO('c',22)
  143. #define    CDIOCSTOP    _IO('c',23)
  144. #define    CDIOCEJECT    _IO('c',24)
  145.  
  146. struct ioc_play_msf
  147. {
  148.     u_char    start_m;
  149.     u_char    start_s;
  150.     u_char    start_f;
  151.     u_char    end_m;
  152.     u_char    end_s;
  153.     u_char    end_f;
  154. };
  155.  
  156. #define    CDIOCPLAYMSF    _IOW('c',25,struct ioc_play_msf)
  157.         
  158. #endif /* !_SYS_CDIO_H_ */
  159.