ixjuser.h
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:11k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. /******************************************************************************
  2. $Id: ixjuser.h,v 1.1.1.1 1999/08/05 21:17:32 luan Exp $
  3. $Log: ixjuser.h,v $
  4. Revision 1.1.1.1  1999/08/05 21:17:32  luan
  5. new quicknet v0.1.39 drivers
  6. Revision 1.21  1999/08/04 22:53:43  root
  7. Added levels to AEC
  8. Revision 1.20  1999/07/28 20:32:23  root
  9. Added non-blocking rings
  10. Added ring cadence
  11. Revision 1.19  1999/07/14 21:08:10  root
  12. fixed rcsid
  13. Revision 1.18  1999/07/14 21:03:33  root
  14. added rcsid
  15. Revision 1.17  1999/07/12 20:20:00  root
  16. Continuing work on 20ms and 10ms linear modes.
  17. Revision 1.16  1999/07/09 19:13:50  root
  18. Added IXJCTL_RATE to set the rate the DSP is polled.
  19. Added 20ms and 10ms linear modes for LineJack and PhoneJack Lite.
  20. Revision 1.15  1999/07/08 02:21:20  root
  21. Async Notification on hookswitch changes.
  22. Added IXJ_EXCEPTION bitfield structure for select exception sets
  23. Added IXJCTL_DTMFASCII ioctl
  24. Revision 1.14  1999/07/06 23:20:52  root
  25. *** empty log message ***
  26. Revision 1.14  1999/07/06 21:48:38  root
  27. Fixed lockups in linear modes during write.
  28. Revision 1.13  1999/06/28 18:30:44  root
  29. Added buffer depth commands to reduce latency in compressed modes.
  30. Revision 1.12  1999/06/25 21:03:18  root
  31. Close device properly.
  32. Started Mixer code for LineJack
  33. Revision 1.11  1999/06/24 21:51:21  root
  34. bug fixes
  35. Revision 1.10  1999/06/17 18:23:16  root
  36. Added tone generation.
  37. Fixed LineJack hookswitch again.
  38. Revision 1.9  1999/06/09 14:18:15  root
  39. Fixed duplicate IOCTL numbers
  40. Revision 1.8  1999/06/09 14:13:29  root
  41. Added DTMF Recognition with Async Notification
  42. Revision 1.7  1999/06/03 16:50:43  root
  43. Added IXJCTL_HZ to allow changing the HZ value the driver uses.
  44. Revision 1.6  1999/05/31 17:56:07  root
  45. All linear modes now work properly.
  46. Revision 1.5  1999/05/25 14:05:44  root
  47. Added multiple codec selections.
  48. Revision 1.4  1999/04/28 03:43:52  root
  49. More work on echo cancellation
  50. Revision 1.3  1999/04/27 17:17:12  root
  51. added AEC
  52. Revision 1.2  1999/04/22 11:43:52  root
  53. Fixed stability problems
  54. Revision 1.1  1999/03/25 21:52:42  root
  55. Initial revision
  56. *
  57. * IOCTL's used for the Quicknet Cards
  58. *
  59. * If you use the IXJCTL_TESTRAM command, the card must be power cycled to
  60. * reset the SRAM values before futher use.
  61. *
  62. ******************************************************************************/
  63. static char ixjuser_h_rcsid[] = "$Id: ixjuser.h,v 1.1.1.1 1999/08/05 21:17:32 luan Exp $";
  64. #define IXJCTL_DSP_RESET  _IO  ('q', 0x00)
  65. #define IXJCTL_DSP_SYNC                 _IO  ('q', 0x01)
  66. #define IXJCTL_RING                     _IO  ('q', 0x02)
  67. #define IXJCTL_HOOKSTATE                _IO  ('q', 0x03)
  68. #define IXJCTL_MAXRINGS _IOW ('q', 0x04, char)
  69. #define IXJCTL_RING_CADENCE _IOW ('q', 0x05, int)
  70. #define IXJCTL_RING_START _IOW ('q', 0x06, int)
  71. #define IXJCTL_RING_STOP _IO  ('q', 0x07)
  72. #define IXJCTL_DSP_TYPE                 _IOR ('q', 0x0C, int)
  73. #define IXJCTL_DSP_VERSION              _IOR ('q', 0x0D, int)
  74. #define IXJCTL_DSP_IDLE _IO  ('q', 0x0E)
  75. #define IXJCTL_TESTRAM _IO  ('q', 0x0F)
  76. /******************************************************************************
  77. *
  78. * This group of IOCTLs deal with the record settings of the DSP
  79. *
  80. * The IXJCTL_REC_DEPTH command sets the internal buffer depth of the DSP.
  81. * Setting a lower depth reduces latency, but increases the demand of the
  82. * application to service the driver without frame loss.  The DSP has 480
  83. * bytes of physical buffer memory for the record channel so the true
  84. * maximum limit is determined by how many frames will fit in the buffer.
  85. *
  86. * 1 uncompressed (480 byte) 16-bit linear frame.
  87. * 2 uncompressed (240 byte) 8-bit A-law/mu-law frames.
  88. * 15 TrueSpeech 8.5 frames.
  89. * 20 TrueSpeech 6.3,5.3,4.8 or 4.1 frames.
  90. *
  91. * The default in the driver is currently set to 2 frames.
  92. *
  93. ******************************************************************************/
  94. #define IXJCTL_REC_CODEC                _IOW ('q', 0x10, int)
  95. #define IXJCTL_REC_SYNC                 _IOW ('q', 0x11, int)
  96. #define IXJCTL_REC_START                _IO  ('q', 0x12)
  97. #define IXJCTL_REC_STOP                 _IO  ('q', 0x13)
  98. #define IXJCTL_REC_DEPTH _IOW ('q', 0x14, int)
  99. #define IXJCTL_FRAME _IOW ('q', 0x15, int)
  100. /******************************************************************************
  101. *
  102. * This group of IOCTLs deal with the playback settings of the DSP
  103. *
  104. ******************************************************************************/
  105. #define IXJCTL_PLAY_CODEC               _IOW ('q', 0x20, int)
  106. #define IXJCTL_PLAY_SYNC                _IOW ('q', 0x21, int)
  107. #define IXJCTL_PLAY_START               _IO  ('q', 0x22)
  108. #define IXJCTL_PLAY_STOP                _IO  ('q', 0x23)
  109. #define IXJCTL_PLAY_DEPTH _IOW ('q', 0x24, int)
  110. /******************************************************************************
  111. *
  112. * This group of IOCTLs deal with the Acoustic Echo Cancellation settings
  113. * of the DSP
  114. *
  115. ******************************************************************************/
  116. #define IXJCTL_AEC_START _IOW ('q', 0x34, int)
  117. #define IXJCTL_AEC_STOP _IO  ('q', 0x35)
  118. #define AEC_LOW   1
  119. #define AEC_MED   2
  120. #define AEC_HIGH  3
  121. /******************************************************************************
  122. *
  123. * Call Progress Tones, DTMF, etc.
  124. * Tone on and off times are in 250 microsecond intervals so
  125. * ioctl(ixj1, IXJCTL_SET_TONE_ON_TIME, 360);
  126. * will set the tone on time of board ixj1 to 360 * 250us = 90ms
  127. * the default values of tone on and off times is 840 or 210ms
  128. ******************************************************************************/
  129. #define IXJCTL_DTMF_READY _IOR ('q', 0x40, int)
  130. #define IXJCTL_GET_DTMF                 _IOR ('q', 0x41, int)
  131. #define IXJCTL_GET_DTMF_ASCII           _IOR ('q', 0x42, int)
  132. #define IXJCTL_GET_DTMFSYNCMODE _IOR ('q', 0x43, int)
  133. #define IXJCTL_EXCEPTION _IOR ('q', 0x44, int)
  134. #define IXJCTL_GET_TONESYNCMODE _IOR ('q', 0x45, int)
  135. #define IXJCTL_PLAY_TONE _IOW ('q', 0x46, char)
  136. #define IXJCTL_SET_TONE_ON_TIME _IOW ('q', 0x47, int)
  137. #define IXJCTL_SET_TONE_OFF_TIME _IOW ('q', 0x48, int)
  138. #define IXJCTL_GET_TONE_ON_TIME _IO  ('q', 0x49)
  139. #define IXJCTL_GET_TONE_OFF_TIME _IO  ('q', 0x4A)
  140. #define IXJCTL_GET_TONE_STATE _IO  ('q', 0x4B)
  141. #define IXJCTL_BUSY _IO  ('q', 0x4C)
  142. #define IXJCTL_RINGBACK _IO  ('q', 0x4D)
  143. #define IXJCTL_DIALTONE _IO  ('q', 0x4E)
  144. // This IOCTL replaced both IXJCTL_BUSY_STOP and IXJCTL_RINGBACK_STOP and
  145. // should be used from now on to stop all Call Progress Tones.  It will
  146. // actually abort any tone, regardless of time left in the tone_on_time
  147. // and tone_off_time counters.
  148. #define IXJCTL_CPT_STOP _IO  ('q', 0x4F)
  149. /******************************************************************************
  150. * LineJack specific IOCTLs
  151. *
  152. * The lsb 4 bits of the LED argument represent the state of each of the 4
  153. * LED's on the LineJack
  154. ******************************************************************************/
  155. #define IXJCTL_SET_LED _IOW ('q', 0x50, int)
  156. #define IXJCTL_MIXER _IOW ('q', 0x51, int) //Do not use yet
  157. /******************************************************************************
  158. *
  159. * IOCTLs added by request.
  160. *
  161. * IXJCTL_HZ sets the value your Linux kernel uses for HZ as defined in
  162. *           /usr/include/asm/param.h, this determines the fundamental
  163. *           frequency of the clock ticks on your Linux system.  The kernel
  164. *           must be rebuilt if you change this value, also all modules you
  165. *           use (except this one) must be recompiled.  The default value
  166. *           is 100, and you only need to use this IOCTL if you use some
  167. *           other value.
  168. *
  169. *
  170. * IXJCTL_RATE sets the number of times per second that the driver polls
  171. *             the DSP.  This value cannot be larger than HZ.  By
  172. *             increasing both of these values, you may be able to reduce
  173. *             latency because the max hang time that can exist between the
  174. *             driver and the DSP will be reduced.
  175. *
  176. ******************************************************************************/
  177. #define IXJCTL_HZ                       _IOW ('q', 0xE0, int)
  178. #define IXJCTL_RATE                     _IOW ('q', 0xE1, int)
  179. /******************************************************************************
  180. *
  181. * The defined CODECs that can be used with the IXJCTL_REC_RATE and
  182. * IXJ_PLAY_RATE IOCTLs.
  183. *
  184. * PCM uLaw mode is a "pass through" mode.
  185. *
  186. * 16 bit linear data is signed integer (2's complement form), positive
  187. * full scale is 7FFFH, negative full scale is 8000H, zero is 0000H
  188. *
  189. * 8 bit linear data is signed byte (2's complement form), positive
  190. * full scale is 7FH, negative full scale is 80H, zero is 00H
  191. *
  192. * 8 bit linear WSS data is unsigned byte, positive full scale is FFH,
  193. * negative full scale is 00H, zero is 80H.  This is the format used for
  194. * 8-bit WAVE format data (Windows Sound System).  Data can be converted
  195. * between the two 8-bit formats by simply inverting the ms bit. 
  196. *
  197. *
  198. ******************************************************************************/
  199. // Bytes per 30ms audio frame
  200. #define G723_63 1 // 24
  201. #define G723_53 2  // 20
  202. #define TS85 3 // 32 Does not currently work on LineJack
  203. #define TS48 4 // 18
  204. #define TS41 5 // 16
  205. #define G728 6 // 96 not implemented DO NOT USE!
  206. #define G729 7 // 36 not implemented DO NOT USE!
  207. #define ULAW 8 // 240
  208. #define ALAW 9 // 240 not implemented DO NOT USE!
  209. #define LINEAR16 10 // 480
  210. #define LINEAR8 11 // 240
  211. #define WSS 12 // 240
  212. /******************************************************************************
  213. *
  214. * The intercom IOCTL's short the output from one card to the input of the
  215. * other and vice versa (actually done in the DSP read function).  It is only
  216. * necessary to execute the IOCTL on one card, but it is necessary to have
  217. * both devices open to be able to detect hook switch changes.  The record
  218. * codec and rate of each card must match the playback codec and rate of
  219. * the other card for this to work properly.
  220. *
  221. ******************************************************************************/
  222. #define IXJCTL_INTERCOM_START _IOW ('q', 0xEE, int)
  223. #define IXJCTL_INTERCOM_STOP  _IOW ('q', 0xEF, int) 
  224. /******************************************************************************
  225. *
  226. * This IOCTL will decrement the module usage counter so you can force
  227. * the module to unload after a program bombs.
  228. *
  229. ******************************************************************************/
  230. #define IXJCTL_MODRESET         _IO  ('q', 0xFF)
  231. /******************************************************************************
  232. *
  233. * Various Defines used for the Quicknet Cards
  234. *
  235. ******************************************************************************/
  236. #define SYNC_MODE_CODEC         0
  237. #define SYNC_MODE_DATA          1
  238. #define SYNC_MODE_POLL          2
  239. #define SYNC_MODE_HOST          3
  240. #define RECORD_SYNC_MODE        0x5100
  241. #define PLAYBACK_SYNC_MODE      0x5200
  242. #define USA_RING_CADENCE 0xC0C0
  243. typedef struct
  244. {
  245.   unsigned int dtmf_ready:1;
  246.   unsigned int hookstate:1;
  247.   unsigned int reserved:30;
  248. }IXJ_EXCEPT;
  249. typedef union
  250. {
  251.   IXJ_EXCEPT bits;
  252.   unsigned int bytes;
  253. }IXJ_EXCEPTION;