dahdi-linux/drivers/dahdi/oct612x/include/oct6100api/oct6100_playout_buf_pub.h
Shaun Ruffell bf3fe05dfb wct4xxp: Moving the transmit short detection behind debug module param.
This needs some more testing before it's on by default.  If the card is
otherwise functioning, these messages may be confusing to the user.  If
the card is not functioning, the driver can be reloaded with debug to
check for this condition.

Signed-off-by: Shaun Ruffell <sruffell@digium.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9205 a0bf4364-ded3-4de4-8d8a-66a801d63aff
2010-08-27 21:59:27 +00:00

184 lines
7.4 KiB
C

/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\
File: oct6100_playout_buf_pub.h
Copyright (c) 2001-2007 Octasic Inc.
Description:
File containing all defines, macros, and structures pertaining to the file
oct6100_playout_buf.c. All elements defined in this file are for public
usage of the API. All private elements are defined in the
oct6100_playout_buf_priv.h file.
This file is part of the Octasic OCT6100 GPL API . The OCT6100 GPL API is
free software; you can redistribute it and/or modify it under the terms of
the GNU General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
The OCT6100 GPL API is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with the OCT6100 GPL API; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
$Octasic_Release: OCT612xAPI-01.00-PR49 $
$Octasic_Revision: 21 $
\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
#ifndef __OCT6100_PLAYOUT_BUF_PUB_H__
#define __OCT6100_PLAYOUT_BUF_PUB_H__
/***************************** INCLUDE FILES *******************************/
/***************************** DEFINES *************************************/
/***************************** TYPES ***************************************/
typedef struct _OCT6100_BUFFER_LOAD_
{
PUINT32 pulBufferIndex; /* Index identifying the buffer. */
PUINT32 pulPlayoutFreeMemSize; /* Amount of free memory available for other buffers. */
PUINT8 pbyBufferPattern; /* A byte pointer pointing to a valid buffer to be loaded into the chip's external memory. */
UINT32 ulBufferSize; /* Size of the buffer loaded into external memory. */
UINT32 ulBufferPcmLaw; /* Buffer PCM law. */
} tOCT6100_BUFFER_LOAD, *tPOCT6100_BUFFER_LOAD;
typedef struct _OCT6100_BUFFER_LOAD_BLOCK_INIT_
{
PUINT32 pulBufferIndex; /* Index identifying the buffer. */
PUINT32 pulPlayoutFreeMemSize; /* Amount of free memory available for other buffers. */
UINT32 ulBufferSize; /* Size of the buffer to be loaded in memory. This space will be reserved. */
UINT32 ulBufferPcmLaw; /* Buffer PCM law. */
} tOCT6100_BUFFER_LOAD_BLOCK_INIT, *tPOCT6100_BUFFER_LOAD_BLOCK_INIT;
typedef struct _OCT6100_BUFFER_LOAD_BLOCK_
{
UINT32 ulBufferIndex; /* Index identifying the buffer. */
/* Offset, in bytes, of the first byte in the block to be loaded. */
/* This offset is with respect to the beginning of the buffer. */
/* This value must be modulo 2 */
UINT32 ulBlockOffset;
/* Size of the block to be loaded into external memory. */
/* This value must be modulo 2. */
UINT32 ulBlockLength;
/* A pointer pointing to a valid buffer block to be loaded */
/* into the chip's external memory. This is a pointer to the entire */
/* buffer. The API uses the ulBlockOffset and ulBlockLength to index */
/* within this buffer and obtain the block to be loaded. */
PUINT8 pbyBufferPattern;
} tOCT6100_BUFFER_LOAD_BLOCK, *tPOCT6100_BUFFER_LOAD_BLOCK;
typedef struct _OCT6100_BUFFER_UNLOAD_
{
UINT32 ulBufferIndex; /* Index identifying the buffer. */
} tOCT6100_BUFFER_UNLOAD, *tPOCT6100_BUFFER_UNLOAD;
typedef struct _OCT6100_BUFFER_PLAYOUT_ADD_
{
UINT32 ulChannelHndl; /* Echo cancelling channel on which to play the buffer. */
UINT32 ulBufferIndex; /* Index identifying the buffer. */
UINT32 ulPlayoutPort; /* Selected channel port where to play to tone. */
UINT32 ulMixingMode; /* Weither or not the voice stream will be muted while playing the buffer. */
INT32 lGainDb; /* Gain applied to the buffer that will be played on the specified port. */
BOOL fRepeat; /* Use ulRepeatCount variable. */
UINT32 ulRepeatCount; /* Number of times to repeat playing the selected buffer. */
UINT32 ulDuration; /* Duration in millisecond that this buffer should play. Setting this overrides fRepeat. */
UINT32 ulBufferLength; /* Length of the buffer to play (starting at the beginning), AUTO_SELECT for all. */
} tOCT6100_BUFFER_PLAYOUT_ADD, *tPOCT6100_BUFFER_PLAYOUT_ADD;
typedef struct _OCT6100_BUFFER_PLAYOUT_START_
{
UINT32 ulChannelHndl; /* Echo cancelling channel on which to play the buffer. */
UINT32 ulPlayoutPort; /* Selected channel port where to play to tone. */
BOOL fNotifyOnPlayoutStop; /* Check if the buffers have finished playing on this channel/port. */
/* The events are queued in a soft buffer that the user must empty regularly. */
UINT32 ulUserEventId; /* Returned to the user when the playout is finished and the user has set the fNotifyOnPlayoutStop flag. */
BOOL fAllowStartWhileActive; /* Use this to add buffers to something that is already playing on the channel/port. */
} tOCT6100_BUFFER_PLAYOUT_START, *tPOCT6100_BUFFER_PLAYOUT_START;
typedef struct _OCT6100_BUFFER_PLAYOUT_STOP_
{
UINT32 ulChannelHndl; /* Echo cancelling channel on which to play the buffer. */
UINT32 ulPlayoutPort; /* Selected channel port where to play to tone. */
BOOL fStopCleanly; /* Whether or not the skip will be clean. */
PBOOL pfAlreadyStopped; /* Whether playout was already stopped or not. */
PBOOL pfNotifyOnPlayoutStop; /* Whether the user chosed to receive an event on playout stop. */
} tOCT6100_BUFFER_PLAYOUT_STOP, *tPOCT6100_BUFFER_PLAYOUT_STOP;
/************************** FUNCTION PROTOTYPES *****************************/
UINT32 Oct6100BufferPlayoutLoadDef(
OUT tPOCT6100_BUFFER_LOAD f_pBufferLoad );
UINT32 Oct6100BufferPlayoutLoad(
IN OUT tPOCT6100_INSTANCE_API f_pApiInstance,
IN OUT tPOCT6100_BUFFER_LOAD f_pBufferLoad );
UINT32 Oct6100BufferPlayoutLoadBlockInitDef(
OUT tPOCT6100_BUFFER_LOAD_BLOCK_INIT f_pBufferLoadBlockInit );
UINT32 Oct6100BufferPlayoutLoadBlockInit(
IN OUT tPOCT6100_INSTANCE_API f_pApiInstance,
IN OUT tPOCT6100_BUFFER_LOAD_BLOCK_INIT f_pBufferLoadBlockInit );
UINT32 Oct6100BufferPlayoutLoadBlockDef(
OUT tPOCT6100_BUFFER_LOAD_BLOCK f_pBufferLoadBlock );
UINT32 Oct6100BufferPlayoutLoadBlock(
IN OUT tPOCT6100_INSTANCE_API f_pApiInstance,
IN OUT tPOCT6100_BUFFER_LOAD_BLOCK f_pBufferLoadBlock );
UINT32 Oct6100BufferPlayoutUnloadDef(
OUT tPOCT6100_BUFFER_UNLOAD f_pBufferUnload );
UINT32 Oct6100BufferPlayoutUnload(
IN OUT tPOCT6100_INSTANCE_API f_pApiInstance,
IN OUT tPOCT6100_BUFFER_UNLOAD f_pBufferUnload );
UINT32 Oct6100BufferPlayoutAddDef(
OUT tPOCT6100_BUFFER_PLAYOUT_ADD f_pBufferPlayoutAdd );
UINT32 Oct6100BufferPlayoutAdd(
IN OUT tPOCT6100_INSTANCE_API f_pApiInstance,
IN OUT tPOCT6100_BUFFER_PLAYOUT_ADD f_pBufferPlayoutAdd );
UINT32 Oct6100BufferPlayoutStartDef(
OUT tPOCT6100_BUFFER_PLAYOUT_START f_pBufferPlayoutStart );
UINT32 Oct6100BufferPlayoutStart(
IN OUT tPOCT6100_INSTANCE_API f_pApiInstance,
IN OUT tPOCT6100_BUFFER_PLAYOUT_START f_pBufferPlayoutStart );
UINT32 Oct6100BufferPlayoutStopDef(
OUT tPOCT6100_BUFFER_PLAYOUT_STOP f_pBufferPlayoutStop );
UINT32 Oct6100BufferPlayoutStop(
IN OUT tPOCT6100_INSTANCE_API f_pApiInstance,
IN OUT tPOCT6100_BUFFER_PLAYOUT_STOP f_pBufferPlayoutStop );
#endif /* __OCT6100_PLAYOUT_BUF_PUB_H__ */