aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>1999-12-16 12:59:53 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>1999-12-16 12:59:53 +0000
commit70f08a7afb001c7c1608181fa4546c6460890e04 (patch)
treee614db06d2b873e45f533dc9e99478fd7089c3c0
parent78f58dab5c756549215dce42344a1fe0dd2da630 (diff)
Version 0.1.1 from FTP
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@138 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-xCHANGES12
-rwxr-xr-xdoc/channel.txt40
2 files changed, 52 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
new file mode 100755
index 000000000..7464c2d67
--- /dev/null
+++ b/CHANGES
@@ -0,0 +1,12 @@
+* Asterisk 0.1.1
+ -- Revised translator, fixed some general race conditions throughout *
+ -- Made dialer somewhat more aware of incompatible voice channels
+ -- Added Voice Modem driver and A/Open Modem Driver stub
+ -- Added MP3 decoder channel
+ -- Added Microsoft WAV49 support
+ -- Revised License -- Pure GPL, nothing else
+ -- Modified Copyright statement since code is still currently owned by author
+ -- Added RAW GSM headerless data format
+ -- Innumerable bug fixes
+* Asterisk 0.1.0
+ -- Initial Release
diff --git a/doc/channel.txt b/doc/channel.txt
new file mode 100755
index 000000000..4cef6a4c6
--- /dev/null
+++ b/doc/channel.txt
@@ -0,0 +1,40 @@
+Implementing a Channel
+======================
+
+* What is a channel?
+
+A channel is a unit which brings in a call to the Asterisk PBX. A channel
+could be connected to a real telephone (like the Internet Phone Jack) or
+to a logical call (like an Internet phone call). Asterisk makes no
+distinction between "FXO" and "FXS" style channels (that is, it doesn't
+distinguish between telephone lines and telephones).
+
+Every call is placed or received on a distinct channel. Asterisk uses a
+channel driver (typically named chan_xxx.so) to support each type of
+hardware.
+
+* What do I need to create a channel?
+
+In order to support a new piece of hardware you need to write a channel
+driver. The easiest way to do so is to look at an existing channel driver
+and model your own code after it.
+
+* What's the general architecture?
+
+Typically, a channel reads a configuration file on startup which tells it
+something about the hardware it's going to be servicing. Then, it
+launches a thread which monitors all the idle channels (See the chan_modem
+or the chan_ixj for an example of this). When a "RING" or equivalent is
+detected, the monitoring thread should allocate a channel structure and
+assign all the callbacks to it (see ixj_new, for example), and then call
+ast_pbx_start on that channel. ast_pbx_start will launch a new thread to
+handle the channel as long as the call is up, so once pbx_start has
+successfully been run, the monitor should no longer monitor that channel.
+The PBX thread will use the channel, reading, writing, calling, etc., and
+multiplexing that channel with others using select() on the channel's
+file descriptor (if your channel doesn't have an associated file
+descriptor, you'll need to emulate one somehow, perhaps along the lines of
+what the translator API does with its channel.
+
+When the PBX is finished with the line, it will hang up the line, at which
+point it the hardware should again be monitored by the monitoring thread.