PIKA Forum FAQ

Here you can find answers to questions about how the board works. Use the links or search box below to find your way around.

Some important things to consider when doing playback

There are some important things to consider when doing audio playback. 

* the most important is to be careful not to free buffers when they are still held in Montecarlo. 
(for example, for debugging purposes if you remove freeing your audio buffers will the seg fault 
occur? This would be a good determinate to see if freeing buffers is the problem. Obviously this 
will cause a memory leak but it is solely for debugging and the free's should be put back.) 
* if playing from file, it is usually recommended to place the whole file to be played into a buffer 
and send it down to Montecarlo in a single buffer 
* if playing audio in buffered chunks (in other words not putting a complete file in one buffer), 
the applicaiton should have more than one audio buffer to avoid UNDERFLOW events while the 
driver is passing data/events back and forth. 
* making sure the lastbuffer flag for the last buffer to be played is set in the TBufferHeader. 
If the file plays to completion then there is no need to call AUDIO_Stop in this scenario. 
* waiting until receiving IDLE event before starting another play/record. 
* trying to stick to using PK_AUDIO_OutputAddBuffer () instead of PK_AUDIO_OutputPassBuffer () 
and PK_AUDIO_OutputWrite () 
* if stopping a play setting a flag to ensure additional buffers are not re-passed into Montecarlo 
in the callback function/event handler 
* try to use a even multiple of the buffer size passed back by the function PK_AUDIO_GetBufferSize () 
* avoid dynamically creating audio buffers outside of the initialization of the application if possible. 

What is the difference between Timed Break Recall (the Recall button) and flashing the hook?

Conceptually Timed Break Recall (TBR) and Flash Hook are very similar; Flash Hook is used worldwide, TBR 
was invented by BT (GPT) for use in the UK. The difference is in the duration. TBR is 90ms, Flash Hook is 
anywhere between 200ms and a couple of seconds. 

On Pika you should be able to accomplish this through the PK_TRUNK_SetHookTimes () function. 

What is Earth Recall and how do I do it on Pika?

Earth recall is a signaling event on an analog telephone service. Normally a recall is used as a way of 
signaling to a PABX (or switch) that you would like to put the current caller on hold and get dial tone 
back so you can call another number, maybe you need to transfer the caller to someone else in your
organization for example. 

Earth Recall requires ground button. The InlineMM board (our 4 port analog board) has a Euro version 
which supports basic Ground Button functionality (however it will not do a complete Ground Start.) This 
functionality is available through the PK_TRUNK_GroundButton () API. The DaytonaMM has no such option and 
does not support this API call. 

Can you perform Audio Logging and make regular Trunk calls on the same DaytonaMM board?

Yes, This is a board level setting.  Performing logging AND termination on the same Pika Daytona-MM 
hardware is possible, however the user needs to be aware of a few points that are slightly different than 
if it was only logging OR termination on a DMM board.  

Option 1) Board has LC modules and set to 'DC Triggering': 

In this setting, the passive logging part of DMM will behave as documented in Technical Bulletin #100. DC 
Triggering and VOX (tone, dtmf, speech) triggering are all available to the user. On the other hand, the 
LC modules on the same DMM card allocated for normal termination will behave differently (ONLY in terms 
of event generation in the app) than if the board was set to 'Standard'. The difference would be 
manageable in the application once one knows the new sequence of the events. - Ringing would be detected 
normally, - When the line goes off-hook (to answer or to place a call), the app would see an LC_Term 
event for that line. This event wouldn't have happened if the board was set to Standard. This event 
should be ignored as part of "managing" the events. - Now, when the far-end goes on-hook, this will not 
be detected as an event. The app will need to rely on tone detection (i.e. call progress tone, the tone 
you hear a few seconds after the far end hangs up) to conclude that the far-end has gone on-hook. 

Option 2) Board has LC modules and set to 'Standard': 

In this setting the modules used for termination will behave normally with no exceptions. However, there 
won't be any DC triggering capability on the modules allocated for passive logging. The following applies 
to modules allocated for logging: - Ringing will be detected normally as if the card was set to 'DC 
Triggering'. - Off-hook or on-hook actions will not result in any event in the app. The app will have to 
rely on VOX triggering to conclude that the line is active/off-hook or not-active/disconnected/on-hook. 
Basically it comes down to keeping one side the normal way and managing the other side. The decision 
would be based on what event, or event sequence, is a must for the user's application/solution and then
work around the ones that don't have to behave the normal/standard way. 

What are the interface gains on the Daytona MM board?

The interface gains for the daytona MM are the following: 

LC module:
	Output Gain:	+2.5dB 
	Input Gain:	-5.0dB

SLIC module: 
	Output Gain:	+2.6dB
	Input Gain:	-8.0dB


When making a through connection, the end to end gain adjustments made by the Daytona would be:
	Phone to CO:	-8.0 + 2.5 = -5.5dB
	CO to phone:	-5.0 + 2.6 = -2.4dB

How do I perform call progress on AoB?

These call progress technics are for analog lines and some digital CAS lines that don't provide a 
signalling method (ie. loop start). 

There are 2 ways of detecting Call Progress (dialtone, ringback, busy and fast busy). 

1) Pattern Matching - As you can see our default ATD file has index 0 labeled as Call Progress. When one 
of the call progress signals are detected on the line we get an ATD event with index 0 as a parameter 
(that frequency was detected). From there you use the Pattern Matcher to determine what Call Progress 
signal it is, which is done by matching a cadence. See Pattern Matching in the api. 

2) Advanced Tone Detection - Identify each Call Progress signal with it's own specific set of tones in 
the ATD file. Using a program to analyze the signal, you can find out what these tones are. The set of 
tones for each signal need to be unique from each other so that the tone detector can identify one Call 
Progress signal from the other. You will need to make a new ATD table with the addition of these tones, 
see help on ATD. 

Example: North-American dialtone - frequency (350.1 and 440.0) North-American busy/fast-busy tone - 
frequency (480.0 and 620.1) North-American ringback - frequency (440.0 and 480.0) 

I am receiving a Resource Busy event - during audio play back

It's typical in IVR and PC-PBX appliations to stop and start audio playback to play different prompts and files. 

Since the PIKA API is asynchronous, it is important to wait for the IDLE event before starting the next audio play on the channel. 

How is caller ID done on your AoB analog boards?

Analog Caller ID is done through either Generic FSK support or DTMF.  In both cases the DSP provides raw data or DTMF digits to the application.  
The application is then responsible for collecting this data and interpreting this.  We provide sample code to help do this.

Do you support both CLASS and CLIP?

We support both Custom Local Area Signaling Services (CLASS) and Calling Line Identity Presentation (CLIP).  
* CLASS (a Bellcore spec) is used in North America; it is generally transmitted between the first and second ring 
* CLIP (developed by BT) is used in Europe and Asia; it is general transmitted before the first ring. Typically loop reversal detection is required in this scenario that a special ECO Daytona board can support (FSB061). 

Search FAQ

Select this option if you would like your search to look in the text of FAQ items as well as their titles.

Select an option here to specify how you would like your search query to be treated. 'Any words' will return the most numerous but possibly least relevant results, while 'Complete phrase' will return only results that contain exactly what you are searching for.