1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
Major changes in the shtoom suite. In reverse chronological order.
0.3:
- gnome ui now has an icon in the notification area (system tray) in
the panel. Closing the main window simply hides it to the systray.
systray icon has a right-click context menu.
- gnome, tk and text UIs now optionally support dbus for IPC. New
scripts/shtoomclient uses dbus to talk to a running shtoom.
- register refresh got a healthy dose of sanity added.
- the playing of ringing sounds when making or receiving a call works
much more sanely now.
- new network option 'nat' - can be set to both, upnp, stun or none.
- new scripts/upnpclient.py - a small command line client for adding,
removing and listing UPnP mappings.
- Gnome, Tk, and Qt UIs have a decent authentication dialog, hooked up
to the credentials cache.
- Text UI gets new 'auth' command to add auth credentials
- New code for saving credentials - death to register_auth* options!
- Conferencing code has had a fair bit of TLC.
- New shtoom.schema module added as base class for Options code, with
far saner API.
- doug statemachine change: a state can return a deferred. Events
during this deferred are queued up to be triggered after the deferred
is finished.
- refactoring the call setup code to suck much less
- Universal Plug n Play support. This works with Microsoft Internet
Connection Sharing and many off-the-shelf firewalls.
- Much better STUN support.
- Handle Record-Route in a simplistic way.
- address book support (CW)
- textui's logging is saner - shtoomphone got a --logfile option
- another playout algorithm, with a better buffering strategy (CW)
- native ALSA support (Casper Wilstrup)
- doug's connectLegs() primitive now works, and connects an
inbound and an outbound leg together.
- doug has had most of the voiceapp body moved out to the Leg
object, where it belongs.
- scripts/shreadder.py now takes an optional codec argument, e.g.
PT_GSM, PT_SPEEX. The audio will be roundtripped through that
codec. Good for testing.
- Support for the speex codec added. This requires an optional
install - David McNab's pySpeex package.
- Audio interfaces have been refactored to be a little more sane.
- A simple playout buffer has been created. This should hopefully
help with the creeping delay problem.
- massive changes to RTP and SDP handling, to fix a lot of the ugliness
under the hood. Amongst other things, we now handle dynamic payload
types correctly. Plus, we can do more intelligent things with the RTP
we receive. Finally, it sucks much, much less.
- even under ALSA, some audio devices used by ossaudiodev can only do
stereo. Handle these broken/idiotic/annoying drivers.
- -p0 means 'listen on any random port', not 'default port'. Useful for
clients where you don't care about the port (for instance, if you're
running many many clients from the command line)
- shtam, shecho and shmessage have been rewritten as doug applications.
shtam now sends the voicemail as an email when it's collected. The old
shtoom.app.* modules have been removed from the codebase.
- OSX audio hooked up, using audio code from Donovan Preston.
- the main phone application is now called shtoomphone. Too many import
horrors with 'import shtoom' getting the script, rather than the
package in site-packages.
- A simple tftp client is checked in
- Scripts now live in the 'scripts' directory
- The Gtk UI now has an debug log. You can hide and reveal it by clicking on
the '+' button.
- The Gtk UI now has a preferences dialog.
- A conference server is in. There's a script 'shtoomcu' that will run
it. More work to be done, including enter/leave sounds and the like.
- There's a new test harness for testing the phone's inbound and
outbound call. See DEBUGGING.txt for more.
- There's now some rough code in doug for detecting inband DTMF
(aka the little beepy noises). Thank you _very_ much cisco for
not generating oob dtmf events.
- doug can detect DTMF, play, record, and make outbound calls
- wx UI is now in a separate thread to the twisted event loop
- Large amounts of refactoring to call control to make it unit testable.
- Doug: Call setup in doug is now a two-stage process - a CallStarted
event is triggered first, the application then calls 'answerCall' or
'rejectCall' on the leg in the event. A CallAnswered event then follows
when the call is setup.
- After prodding from Jamey Hicks, I've reworked the handling of
the from: and to: lines in SIP, so that we can keep a dialog
up correctly. This has been extended so that BYE also works. We
can now handle calls both to and from a cisco running IOS 12.3, from
setup through to teardown.
- Outbound proxy support is done (thanks to Jamey Hicks)
- RTCP decoding is done. RTCP encoding is mostly done. As yet, nothing
uses the decoded packets or generates RTCP packets, but it's nice to
see what you're being sent.
Firewall issues mean that it's unlikely that two-way RTCP comms will
work.
- doug is alive.
- DTMF sending is hooked up, and works in the tk, qt and gnome UIs
DTMF sending works when talking to Doug and also talking to ciscos.
Right now, though, there's a hardcoded assumption that it's RTP PT 101.
This will be fixed before 0.3
- A major refactoring of SIP internals and the handling of local and
remote addresses mean it should be a bit saner and easier to
understand.
- A wxWidgets UI was checked in. Thanks to Andy Hird for writing this.
- The fastaudio driver, used on windows, received some TLC and should
work on a lot more systems.
- The return of RTP's ConnectedDatagramProtocol, after it was removed
from the 0.2 release. This means that if a remote machine abruptly
"goes away", we don't keep spamming them with RTP packets for the
rest of time.
- A major refactoring of the use of deferreds mean that things actually
work a lot more sanely. I'm chaining deferreds and using them to
return data in a more orderly fashion.
0.2:
- RTP now uses a ConnectedDatagramProtocol. This allows for the
detection of the other end going away abruptly. Still needs more
testing for random weirdness. This change was backed out for 0.2,
but will be in 0.3.
- GSM codec works. (Needs optional pygsm package installed).
- gnome UI cleanup, tk UI cleanup
- New 'Register' button to register (after you edit registration
settings).
- You can hang up a call that's in progress or failed
- Additional (non-phone) applications available - shmessage, shtam
- Tk interface more featureful - has most of the same stuff as the
Qt interface.
- DTMF detection in the non-phone apps. They don't do anything with
it yet, but the hooks are there.
- Works against XTen now. Slight mistake in RTP headers. Oh well.
- Auth against old/broken servers that send challenges without a qop
header (for instance, Asterisk) works.
- Can now prompt for user and password when needed (Tk only, for now)
- Options now supports short options
- suppress the config file being used with --no-config-file
- Config file (.shtoomrc) added. This will save off any command
line arguments that are supplied, as well as any set via the
preferences dialog.
- Preferences dialog added (to Tk and Qt only, so far)
- Many bugfixes to the SIP handling code. Placing and receiving
calls via a proxy now works.
- Digest Auth support is done. This authenticates both INVITE
and REGISTRATIONs. At the moment the auth has to be supplied
via a preference - this will be fixed, soon.
- SIP REGISTRATION is done - this allows you to register with a
SIP Proxy (for instance, divmod.com)
- The 'guts' of Shtoom are now in shtoom.app - the new Application
object controls most of the behaviour of the phone. It creates
SIP, RTP and UI objects and handles the communication between them.
- Major refactoring of the UI selection code
- UPnP discovery is working, but not hooked up (not much point until
the UPnP-using code is done).
0.1: RELEASED 2004-01-11.
- Initial basic calling UI done, for Tk, Gnome, Qt/KDE and command
line
- Audio using either ossaudiodev or portaudio/fastaudio
- Can make and receive calls
- Supports firewall traversal via STUN
- Uses either PCMU (8KHz ULAW, default) or GSM 06.10 (if optional
pygsm module is installed).
|