IXJ-HOWTO
上传用户:sy_wanhua
上传日期:2013-07-25
资源大小:3048k
文件大小:12k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

C/C++

  1. Linux Quicknet-Drivers-Howto
  2. Quicknet Technologies, Inc. (www.quicknet.net)
  3. Version 0.3.5  July 2, 1999
  4. 1.0  Introduction
  5. This is a Pre-Alpha release version of the Linux driver for
  6. the Quicknet Internet PhoneJACK and Internet LineJACK cards.  More
  7. information about these cards is available at www.quicknet.net.
  8. The driver version discussed in this document is 0.1.30.
  9. These cards offer nice telco style interfaces to use your standard
  10. telephone/key system/PBX as the user interface for VoIP applications.
  11. The Internet LineJACK also offers PSTN connectivity for a single line
  12. Internet to PSTN gateway.  Of course, you can add more than one card
  13. to a system to obtain multi-line functionality.  At this time, the
  14. driver supports the POTS port on both the Internet PhoneJACK and the
  15. Internet LineJACK, but the PSTN port on the latter card is not yet
  16. supported.
  17. This document, and the drivers for the cards, are intended for a
  18. limited audience that includes technically capable programmers who
  19. would like to experiment with Quicknet cards.  
  20. THE LINUX DRIVERS FOR QUICKNET CARDS ARE PRESENTLY IN A PRE-ALPHA
  21. STATE AND SHOULD NOT BE CONSIDERED AS READY FOR NORMAL WIDESPREAD USE.
  22. They are released early in the spirit of Internet development and to
  23. make this technology available to innovators who would benefit from
  24. early exposure.
  25. When we promote the device driver to "beta" level it will be
  26. considered ready for non-programmer, non-technical users.  Until then,
  27. please be aware that these drivers may not be stable and may affect
  28. the performance of your system.
  29. 1.1 Latest Additions/Improvements
  30. The 0.1.30 version of the driver added support for the Internet
  31. LineJACK cards POTS port and fixed several small bugs.  Refer to the
  32. CHANGES file for details.
  33. 1.2 Copyright, Trademarks, Disclaimer, & Credits 
  34. Copyright
  35. Copyright (c) 1999 Quicknet Technologies, Inc.  Permission is granted
  36. to freely copy and distribute this document provided you preserve it
  37. in its original form. For corrections and minor changes contact the
  38. maintainer at linux@quicknet.net.
  39. Trademarks
  40. Internet PhoneJACK and Internet LineJACK are registered trademarks of
  41. Quicknet Technologies, Inc.
  42. Disclaimer
  43. Much of the info in this HOWTO is early information released by
  44. Quicknet Technologies, Inc. for the express purpose of allowing early
  45. testing and use of the Linux drivers developed for their products.
  46. While every attempt has been made to be thorough, complete and
  47. accurate, the information contained here may be unreliable and there
  48. are likely a number of errors in this document. Please let the
  49. maintainer know about them. Since this is free documentation, it
  50. should be obvious that neither I nor previous authors can be held
  51. legally responsible for any errors.
  52. Credits
  53. This HOWTO was written by:
  54. Greg Herlein <gherlein@quicknet.net>
  55. Ed Okerson <eokerson@quicknet.net> 
  56. 1.3  Future Plans: You Can Help 
  57. Please let the maintainer know of any errors in facts, opinions,
  58. logic, spelling, grammar, clarity, links, etc.  But first, if the date
  59. is over a month old, check to see that you have the latest
  60. version. Please send any info that you think belongs in this document.
  61. You can also contribute code and/or bug-fixes for the sample
  62. applications.
  63. 1.4  Where to get things
  64. You can download the latest versions of the driver from:
  65. http://www.quicknet.net/develop.htm
  66. You can download the latest version of this document from:
  67. http://www.quicknet.net/develop.htm
  68. 1.5  Mailing List
  69. Quicknet operates a mailing list to provide a public forum on using
  70. these drivers.
  71. To subscribe to the linux-sdk mailing list, send an email to:
  72.    majordomo@linux.quicknet.net
  73. In the body of the email, type:
  74.    subscribe linux-sdk <your-email-address>
  75. Please delete any signature block that you would normally add to the
  76. bottom of your email - it tends to confuse majordomo.
  77. To send mail to the list, address your mail to 
  78.    linux-sdk@linux.quicknet.net
  79. Your message will go out to everyone on the list.
  80. To unsubscribe to the linux-sdk mailing list, send an email to:
  81.    majordomo@linux.quicknet.net
  82. In the body of the email, type:
  83.    unsubscribe linux-sdk <your-email-address>
  84. 2.0  Requirements
  85. 2.1  Quicknet Card(s)
  86. You will need at least two Internet PhoneJACK or Internet LineJACK
  87. cards (note that the present state of the driver supports only the
  88. POTS port on the Internet LineJACK).  These are ISA bus devices that
  89. use Plug-n-Play for configuration, and use no IRQs.  The driver will
  90. support up to 16 cards in any one system, of any mix between the two
  91. types.
  92. Note that you will need two cards to do any useful testing, since
  93. you will need a card on both ends of the connection.
  94. 2.2  ISAPNP
  95. Since the Quicknet cards are Plug-n-Play devices, you will need the
  96. isapnp tools package to configure the cards.  This package probably
  97. came with your Linux distribution.  Documentation on this package is
  98. available online at: 
  99. http://mailer.wiwi.uni-marburg.de/linux/LDP/HOWTO/Plug-and-Play-HOWTO.html
  100. 3.0  Card Configuration 
  101. The Internet PhoneJACK only has one configuration register that requires
  102. 16 IO ports.  The Internet LineJACK card has two configuration registers
  103. and isapnp reports that IO 0 requires 16 IO ports and IO 1 requires 8.
  104. The Quicknet driver assumes that these registers are configured to be
  105. contiguous, i.e. if IO 0 is set to 0x340 then IO 1 should be set to 0x350.
  106. Make sure that none of the cards overlap if you have multiple
  107. cards in the system.
  108. If you are new to the isapnp tools, you can jumpstart yourself by
  109. doing the following:
  110.    a.  run pnpdump to get a blank isapnp.conf file
  111. pnpdump > /etc/isapnp.conf
  112.    b.  edit the /etc/isapnp.conf file to set the register IO addresses.
  113.    c.  if you have multiple Quicknet cards, make sure that you do
  114. not have any overlaps.  Be especially careful if you are mixing Internet
  115. PhoneJACK and Internet LineJACK cards in the same system.
  116. 4.0 Driver and Test Software Installation
  117. To install and load the driver, perform the following:
  118.    a.  untar the distribution file.
  119.    b.  run the "ixj_dev_create" script to remove any stray device
  120. files left in the /dev directory, and to create the new officially
  121. designated device files.
  122.    c.  ensure that you have run the isapnp configuration utility to 
  123. properly configure the cards.
  124.    d.  copy the module to a common module directory.  We recommend
  125. that you copy the driver to /lib/modules/<kernel-rev>/misc.  Our
  126. current preferred location is /lib/modules/2.2.10/misc.
  127.    e.  if you are loading the module by hand, use insmod.  An example
  128. of this would look like this:
  129. insmod ixj io=0x300 ixjdebug=0
  130. Then verify the module loaded by running lsmod.
  131.    f.  if you are planning on using kerneld to automatically load the 
  132. module for you, then you need to edit /etc/conf.modules and add the 
  133. following lines:
  134. options ixj io=0x300 ixjdebug=0
  135. alias char-major-159 ixj
  136. If you do this, then when you execute an application that uses the
  137. module kerneld will load the module for you.  Note that to do this,
  138. you need to have your kernel set to support kerneld.  You can check
  139. for this by looking at /usr/src/linux/.config and you should see this:
  140. # Loadable module support
  141. #
  142. CONFIG_MODULES=y
  143. # CONFIG_MODVERSIONS is not set
  144. CONFIG_KMOD=y
  145.   g.  if you want non-root users to be able to read and write to the 
  146. ixj devices (this is a good idea!) you should do the following:
  147.      - decide upon a group name to use and create that group if 
  148.        needed.  Add the user names to that group that you wish to 
  149.        have access to the device.  For example, we typically will
  150.        create a group named "ixj" in /etc/group and add all users
  151.        to that group that we want to run software that can use the 
  152.        ixjX devices.
  153.      - change the permissions on the device files, like this:
  154.        chgrp ixj /dev/ixj*
  155.        chmod 660 /dev/ixj*
  156. Once this is done, then non-root users should be able to use the
  157. devices.  If you have enabled autoloading of modules, then the user
  158. should be able to open the device and have the module loaded
  159. automatically for them.
  160.  
  161. 5.0  Example Code
  162. There are several sample applications included with the driver to
  163. demonstrate its use.
  164. intercom.c - Demonstrates the drivers capability to pass audio between
  165. multiple cards without passing the audio data through user space.  The
  166. application only has to deal with telling which cards to talk to each
  167. other, the driver does the rest.
  168. inter2.c - Same concept as intercom.c, only passing the data through user
  169. space.  In this example the application has to deal with reading and
  170. writing to the device files to pass data between cards.
  171. tpjackd.c - This is the server side of a very basic IP Telephony app.  It
  172. simply waits on a TCP port for an incoming connection.  When it receives
  173. it the phone rings.  When the phone is lifted it starts passing UDP
  174. packets with audio data to the tpjack.c program.
  175. tpjack.c - This is the client side that goes with tpjackd.c
  176. dtmfread.c - This is sample code that shows how to use asynchronous
  177. notification and how to read detected DTMF digits.
  178. playtone.c - This is sample code that shows how to play DTMF tones.
  179. busytone.c - This is sample code that shows how to play both busy and
  180. ringback tones.
  181. ixjasync.c - This is sample code that shows how to use asyncronous
  182. notification.
  183. record.c - This is sample code that shows how to record sound from the
  184. phone handset.  The sound is recorded to a file that can be played
  185. back with plaback.c (below).
  186. playback.c - This is sample code that shows how to play back sound
  187. samples to the handset.
  188. jackopen.c - This is sample code that shows how to open the ixj device.
  189. led.c - This is sample code that shows how to blink the LEDs on the
  190. Internet LineJACK.
  191. 6.0  Use of the Driver
  192. Follow the directions above to use the "ixj_dev_create" script to
  193. create the necessary device files.  Modify the /etc/conf.modules file
  194. as described above, and use modprobe or insmod to load the driver.
  195. 6.1  Test Applications
  196. tpjackd - daemon application to listen for an incoming call
  197. Use:  tpjackd dev port
  198. dev - is the name of the device, usually "/dev/ixj0" - though if 
  199.       there are multiple cards in the system it might be /dev/ixj1, etc.
  200. port - the port that the daemon will listen to for an incoming ring
  201. The daemon application now runs as a true daemon - it disconnects from
  202. the controlling terminal upon startup and runs only in the background.
  203. It logs messages to syslog.  Typical use during development is to use
  204. an xterm window and put a "tail -f /var/log/messages" in use to watch
  205. the logging.
  206. tpjack - calling application
  207. Use:  tpjack dev host port
  208. dev - is the name of the device, usually "/dev/ixj0" - though if 
  209.       there are multiple cards in the system it might be /dev/ixj1, 
  210.       /dev/ixj2, etc.
  211. host - the name of the host that is running the daemon (name,
  212.       not ip address)  Note that the name of both hosts needs to be
  213.       resolvable, either by DNS or local hosts files. 
  214. port - the port that the daemon will listen to for an incoming ring
  215. 7.0  Known Limitations
  216. We cannot currently play "dial-tone" and listen for DTMF digits at the
  217. same time.  This is a bug in the DSP chip.  We have a work-around, but
  218. it's not done yet.  Until then, if you want dial-tone, you can always
  219. play a recorded dial-tone sound into the audio until you have gathered
  220. the DTMF digits.  Yes, it's lame, but it's the best we can do with a
  221. buggy DSP at this point.
  222. Currently, the driver does not support non-blocking IO.  It does
  223. support poll() and select() functionality though.  Other features will
  224. be available soon.
  225. You should not use various ioctl calls in the ixjuser.h file unless
  226. you see them used in the sample code distributed with the driver.  Not
  227. all the ioctls are implemented even though they are found in the
  228. header file.
  229. See the lates CHANGES files for other recent improvements or known
  230. limitations.