Tux Droid Software Architecture
Overview
Tux Droid services are in background running processes interfacing applications and the Tux Droid system through TCP/IP
connections. The Tux Droid Daemon is the core of these services. It
enables applications sending and receiving Tux control data trough
TCP/IP messaging. Services also provide the applications with Tux Droid
software resources such as Text-To-Speech or Speech Recognition: these
resources are viewed as extra features by applications.
Tux Droid Daemon Service
The Tux Droid Daemon provides a high level access to Tux Droid control data:
- It splits high level commands into low level "raw" commands send by libusb calls on the USB link
- It merges "raw status" coming from Tux Droid into a full Tux status
The daemon guarantees appropriate timing required by the Tux Droid hardware and makes polling functions transparent for the application.
Applications communicate with the daemon through a TCP/IP
client-server protocol. They connect to the daemon as clients. On the
daemon side, the server is listening for connections on a common port.
By extension we use the term "applications channel" to refer to these
data exchanges.
- managing multiple clients requests
- routing answers to a client
- ensuring that a client request is always finished

Using TCP/IP for Tux Droid daemon communication provides an easy access to Tux through the network. If authorized, a remote application is able to control a remote Droid through its local daemon.
To emphasize on this network connectivity, a TCP/IP client has been
added as a mirror of data transfer through libusb in such a way that
the Tux Droid daemon is able to drive a "Virtual Tux Droid" running a
TCP/IP server: you may imagine to create a 3D Virtual Tux controlled by
the daemon. We use the term "Tux Channel" to refer to these data
exchanges.
Tux Droid Resource Daemons
Applications may also access service resources by sending requests to the Tux Droid Daemon. Resources provide applications with extra Tux Droid features. For example, the tuxsetup includes the BabTTS resource daemon. This one enables the use of high end Text-To-Speech (TTS) functions by sending TCP/IP requests to the resource daemon.

The first goal of the TTS resource service was to feature Tux Droid with voice
alerts about your favorite E-bay bids or new incoming messages. Use of
TTS has been extended to mail reading. Currently you can build powerful
audio based man-machine interfaces thanks to this resource.
By extension data exchanges with the TCP/IP resource servers are referred to as "resource channel". Various kinds of resources can be created as simple as noise level detection or as complex as Speech Recognition. Developers have access to the Tux Droid Daemon source code to create their own resource service.
Tux Droid Interface as Man to Machine Interface
One may forecast that the use of Tux Droid will range from just funny up to very useful Man to Machine Interfaces (MMI). This is the reason why the Tux Droid Daemon is designed to interact with software resources such as Text to Speech or Speech Recognition. These resources are available as "resources daemons" and are connected to Tux Droid through TCP/IP sockets ("Resources Socket"). When an application needs to ask a question through Tux Droid, it sends to the Tux Droid Daemon a speech synthesis request and a string. The daemon translates the request to the "TTS resource daemon" which outputs the synthesized audio to Tux Droid.
Tux Droid is currently featured
with a license for ACAPELA TTS, one of the best available TTS there is. The software and language is made available in the download section.