Commit f9df562b authored by jpbl's avatar jpbl

merging sflphoned and sflphone

parent 56ca7a5d
Jean-Philippe Barrette-LaPierre
(jean-philippe dot barrette-lapierre at savoirfairelinux dot com)
- Autotools support and portions of code
Laurielle LEA (laurielle dot lea at savoirfairelinux dot com)
_ Implementation of SFLphone
Jerome Oufella (jerome dot oufella at savoirfairelinux dot com)
- Many portions of code and bug fixes
Sherry Yang (syangs04 at yahoo dot com)
Imran Akbar (imr at stanford dot edu)
- Working on Win32 port
Yan Morin
(yan dot morin at savoifairelinux dot com)
- zeroconf integration
- sflphoned deamon
- add and improve sip core feature
- tests and debugging
Contributors:
Mikael Magnusson
SFLphoned/SFLphone (0.6) / 2005-11-04
* improve sip protocol
* can now receive text message
* accept reinvite call
* cleaning headers
* improving bash launcher script
* select audio input and output device
* installation review
SFLphoned/SFLphone (0.5a) / 2005-10-17
* sflphoned
* bug fixes
* sflphone-qt
* client/server protocol
SFLphone (0.4.1-pre2) / 2005-09-30
* rearranged utilspp use
* Bug fix when trying to use more than 6 lines.
* Now, we send a final response to reINVITEs
(thanks to Mikael Magnusson)
* We can build in different build directories.
(thanks to Mikael Magnusson)
* We actualy check if portaudio and eXosip2 libs
are installed
* zeroconf integration start
SFLphone (0.4.1-pre1) / 2005-08-11
* Use libeXosip2
* Add blink notification for voice-message
* Add scrolling text
SFLphone (0.4) / 2005-07-06
* Cleanup code
* Add autotools support
* Handle CANCEL method
* PortAudio replace OSS and ALSA devices choice
* Add PortAudioCpp to make easy use of RingBuffer object for audio callback
* Add PortAudio library to make easy sound portability
* Fix a few memory leak
* Reorganisation of SFLphone architecture
* Handle error messages on screen
* Handle "refused call"
* Notification of remote RINGING event added
* Call management updated
SFLphone (0.3) / 2005-04-05
* ALSA driver support added
* GSM audio codec support added
* Ringtones support (just ulaw format) added
* Notification incoming call added
* Apply skin feature added
* Volume control added
* Registration manually added
* Config-file in home directory changed to ".sflphone"
SFLphone (0.2) / 2005-01-18
* Lines management updated
* Blocking bug fixed
* Configuration tree, made from a config file, added for setup
* Dial tone updated
* Timer call updated
* Apply feature updated
* Non-network or request failure cases updated
SFLphone (0.1a) / 2004-12-22
* First release
This diff is collapsed.
Jean-Philippe Barette-LaPierre (30 April 2005) version 0.4.1-pre1
- Changed the order of initialization of modules, in order to
removed a race condition.
- We can build in different build directories.
(thanks to Mikael Magnusson)
- We actualy check if portaudio and eXosip2 libs
are installed. (thanks to Mikael Magnusson)
- zeroconf integration start
Jean-Philippe Barette-LaPierre (30 April 2005) version 0.4.1-pre1
- Now, we send a final response to reINVITEs
(thanks to Mikael Magnusson)
Jean-Philippe Barette-LaPierre (29 April 2005) version 0.4.1-pre1
- Bug fix when trying to use more than 6 lines.
Jean-Philippe Barette-LaPierre (20 August 2005) version 0.4.1-pre1
- Manager has now a LifetimeLibrary policy.
- Utilspp has been rearranged.
Laurielle LEA (10 August 2005) version 0.4
- Add blink notification for voice-message
- Cleanup code
Laurielle LEA (1st August 2005) version 0.4
- Add comments in header files
Laurielle LEA (29 July 2005) version 0.4
- Add scrolling message
Laurielle LEA (27 July 2005) version 0.4
- Migrate from libeXoSIP 0.9.0 to libeXosip2-1.9.1-pre15
(http://www.antisip.com/download/)
Laurielle LEA (21 July 2005) version 0.4
- Change README.
Laurielle LEA (20 July 2005) version 0.4
- Fix mute feature.
- Fix many bugs about line management.
- Add "Compose" item in trayicon menu.
Jean-Philippe Barette-LaPierre (18 July 2005) version 0.4
- Bug fix if error was raised before setGUI.
Laurielle LEA (18 July 2005) version 0.4
- Fix incoming call sound notification.
- Fix transfer if no busy line.
Laurielle LEA (15 July 2005) version 0.4
- Fix configuration init.
Jerome OUFELLA (13 July 2005) version 0.4
- Fix tone.
Jean-Philippe Barette-LaPierre (13 July 2005) version 0.4
- Change "Manager" to a singleton.
Laurielle LEA (13 July 2005) version 0.4
- Fix bug if network is not available.
- Fix apply skin feature.
Laurielle LEA (11 July 2005) version 0.4
- Check functions return.
- Remove unused mute functions.
Laurielle LEA (8 July 2005) version 0.4
- Stop program when error opening skin file.
- Divide toggle() of qtguimainwindow.cpp in small functions.
- Add return test.
Laurielle LEA (7 July 2005) version 0.4
- Cleanup audiortp.cpp.
- Replace #define by global variable in codecDescriptor.cpp.
- Set mutex of ringbuffer in the functions of RingBuffer object.
- Divide run() of audiortp.cpp in 3 small functions.
- Changed device static function in Manager for configurationpanel.ui.h.
- Updated README.
Jean-Philippe Barrette-LaPierre (6 July 2005) version 0.4
- Fixed all autotools problems.
- Updated all autotools scripts to use PortAudioCpp.
Jean-Philippe Barrette-LaPierre (9 June 2005) version 0.4
- Added the autotools support.
Common C++ 2 1.3.20: http://sourceforge.net/projects/cplusplus/
ccRTP 1.3.5: http://sourceforge.net/projects/cplusplus/
libosip 2.2.1: http://savannah.gnu.org/projects/osip/
if you want zeroconf:
mDNSResponder87: http://developer.apple.com/darwin/projects/bonjour/
See tools/config.sh for more details
- sflphoned don't return any result at the second time getcallstatus is called.
- sflphoned don't return a 206 on getcallstatus when one call is ringing.
- unhold should not return an error if it's not holded
Installation Instructions
*************************
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
==================
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. (Caching is
disabled by default to prevent problems with accidental use of stale
cache files.)
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You only need
`configure.ac' if you want to change it or regenerate `configure' using
a newer version of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
4. Type `make install' to install the programs and any data files and
documentation.
5. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that the
`configure' script does not know about. Run `./configure --help' for
details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
If you have to use a `make' that does not support the `VPATH'
variable, you have to compile the package for one architecture at a
time in the source code directory. After you have installed the
package for one architecture, use `make distclean' before reconfiguring
for another architecture.
Installation Names
==================
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PREFIX'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PREFIX', the package will
use PREFIX as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Specifying the System Type
==========================
There may be some features `configure' cannot figure out automatically,
but needs to determine by the type of machine the package will run on.
Usually, assuming the package is built to be run on the _same_
architectures, `configure' can figure that out, but if it prints a
message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
OS KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the `--target=TYPE' option to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share, you
can create a site shell script called `config.site' that gives default
values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script). Here is a another example:
/bin/bash ./configure CONFIG_SHELL=/bin/bash
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
configuration-related scripts to be executed by `/bin/bash'.
`configure' Invocation
======================
`configure' recognizes the following options to control how it operates.
`--help'
`-h'
Print a summary of the options to `configure', and exit.
`--version'
`-V'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
`--config-cache'
`-C'
Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.
This diff is collapsed.
SUBDIRS = eXosip2 portaudio utilspp stund src ringtones m4
EXTRA_DIST = tools/*.sh
ACLOCAL_FLAGS=-I$(top_srcdir)/m4
all: autotools
autotools:
./autogen.sh
qt:
cd src/gui/qt && qmake
This is SFLPhoned-0.6 release.
You need ccrtp-1.3.5 which needs commoncpp2>=1.3.20
Note that commoncpp2 needs libxml2, libxml2-devel and pkgconfig to compile.
libeXosip2-1.9.1-pre17 needs libosip2-2.2.1
You also need PortAudio_v19
See http://www.sflphone.org/#downloads to download required libraries.
Dependencies build instructions:
--------------------------------
You can use the builds script in tools directory.
1. Change the default configuration in config.sh (~/sflphone) is the prefix
2. ./download.sh
3. ./install.sh
You can also compile each dependencies, one by one:
1/ For commoncpp2-1.3.21
./configure [option]
make
make install
2/ For ccrtp-1.3.5
./configure [option]
make
make install
3/ For libosip2-2.2.1
./configure [option]
make
make install
How to compile SFLphoned ?
-------------------------
./configure [option]
make
make install (as root)
( Be sure you have the correct permissions).
How to use it ?
---------------
If you have the sflphone 0.3 or 0.4 release, copy the file sflphonerc to sflphonedrc
cp ~/.sflphone/sflphonerc ~/.sflphone/sflphonedrc
If you have an older version, remove your sflphonerc file located in $HOME/.sflphone
1. Install a GUI like sflphone-qt
2. Lauch sflphone interface, a setup window appears.
3. If you do have a SIP account, fill the SIP stuff where related. You can use
STUN too.
4. Save your settings, restart it. You're done.
A user's guide will be available on:
http://www.sflphone.org/doc/
Why does it not compile ?
-------------------------
- You don't have the same library versions as we do.
See http://www.sflphone.org in section Downloads.
- You don't have the same compiler (some libraries dislike
some compilers). We are using gcc 4.0.1 on
Fedora Core 4 Linux.
- If error occured while loading shared libraries,
you have to export LD_LIBRARY_PATH with your lib directory.
( example: export LD_LIBRARY_PATH=/opt/lib:${LD_LIBRARY_PATH} )
- If you don't install dependencies in classic install directories,
you have to export CXXFLAGS.
( example: export CXXFLAGS="-I/opt/include" )
Short description of content of source tree:
-------------------------------------------
- ringtones/ contains the different ringtones.
- stund/ is an implementation of the protocol STUN used when there is a NAT.
- utilspp/ allows to implement a singleton.
- src/ is the core of SFLphone. It contains the main.cpp, managerimpl.cpp files,
audio and gui directories, and files about signalisation SIP.
Later, it should be better, when IAX will be implemented, that a directory
groups these protocols.
The ManagerImpl class is the intermediaire between all the layer in the tree.
- src/audio/ is the audio layer. It contains all about tones, dtmf, audiodriver,
rtp layer, audio codec ulaw, alaw and gsm.
- src/audio/gsm/ contains the implementation of gsm audiocodec library.
- src/audio/pacpp/ implements PortAudioCpp, a native C++ binding of
PortAudio V19.
- src/gui/ is the old directory that contains all about different user interface.
- src/gui/server is the directory that talk (tcp socket on port 3999)
to sflphone client. The slfphone client can be a console program or a graphical interface
How is structured SFLphone (>=0.5)
----------------------------------
+------------+
|TCPSessionIO|
+------------+
|
+------------+
| SessionIO |
+------------+
|
+------------+