README.VTCore
=============

Last updated: 15 Jan 2007


Introduction
------------

With the introduction of our new OpenPCI card we have started a new kernel 
driver design. It is a modular design where the user space programs speak to 
the cards via the "vtcore" module. The hardware specific modules then plug
into the vtcore module. This provides a unified interface to the vpb-library
as well as offering better board interoperability (eg voice bridging). 
We plan of having a number of helper modules including:
	host echo canceller
	dtmf/tone detector
	dtmf/tone generator


Host DSP and configuration
--------------------------

With the new kernel modules there is now a new "host dsp", based along the
lines as the original hostdsp.cpp for the vpbhp (OpenSwitch) driver. The new
host dsp will actually support all of vtcore based cards. The new host dsp will
only be using the one config file for all the cards. This means that you will
still have the "vpb.conf" config file, and the new "vtcore.conf" config file.
The new file is very similar to the old "openswitch.conf" type config files.
Here is an example of a vtcore.conf file using an OpenPci and an OpenSwitch:

[general]
name  = vtcore
cards = 2

[card0]
type = openswitch
bal1 = 0xf0
bal2 = 0x5d
bal3 = 0x78
chan = 8
chan = 9
chan = 10
chan = 11

[card1]
type = openpci

hwplaygain   = 12
hwrecordgain = 12
chan = 0

hwplaygain   = -12
hwrecordgain = -12
chan = 1

The [general] section is basically the same as other config files. The [cardN]
sections can be broken down to two parts, the first part telling the library
what the card is, and the second part telling it extra configuration options.
The first part needs the "type" parameter and any options that apply to all
ports on the card, such as:

	dtmfms => set the duration for generated dtmf
	cutthrough => gain reduction while recording

The rest is a "fall through" configuration section.  This means the options
that are set will apply to all chan's that follow them.  They may be specified
multiple times if different settings are desired for individual ports or for
groups of ports.  Currently these options include:

    OpenSwitch
    ----------
	bal1, bal2, bal3 => Codec Hybrid balance registers
	hwplaygain, hwrecordgain => Codec gain values
	playgain, recordgain => software gain values
	country => override the global setting for individual ports
	logging => port is used for logging, not two-way comms.
	
    OpenPCI
    -------
	hwplaygain, hwrecordgain => Codec gain values
	playgain, recordgain => software gain values
	country => override the global setting for individual ports
	logging => port is used for logging, not two-way comms.
	fxs_impedance => override the country default impedance for fxs ports.
	fxo_impedance => override the country default impedance for fxo ports.

The "vpb.conf" file for this would look like this:

[general]
name      = general
country   = 61
verbosity = 0

[configs]
vtcore = /etc/vpb/vtcore.conf

[cards]
0 = openswitch:0
1 = openpci:1
