dahdi-linux/drivers/dahdi/voicebus/GpakApi.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

628 lines
25 KiB
C

/*
* Copyright (c) 2005 , Adaptive Digital Technologies, Inc.
*
* File Name: GpakApi.h
*
* Description:
* This file contains the function prototypes and data types for the user
* API functions that communicate with DSPs executing G.PAK software. The
* file is used by application software in the host processor connected to
* C55X G.PAK DSPs via a Host Port Interface.
*
* Version: 1.0
*
* Revision History:
* 06/15/05 - Initial release.
* 11/15/2006 - 24 TDM-TDM Channels EC release
*/
#ifndef _GPAKAPI_H /* prevent multiple inclusion */
#define _GPAKAPI_H
#include "gpakErrs.h"
#include "gpakenum.h"
// Bit masks to select which algorithm's parameters to update: Or-together the
// desired masks into the UpdateBits function parameter.
#define DTMF_UPDATE_MASK 0x0010 // update DTMF params, MinLevel, SNRFlag and Freq
#define DTMF_TWIST_UPDATE_MASK 0x0020 // update DTMF TWIST system params
#define DTMF_VALID_MASK 0x0080 // update DTMF ValidMask params
#define DSP_DEBUG_BUFF_SIZE 42 // units of 16-bit words
/* Definition of an Asynchronous Event Data Structure */
typedef union
{
struct
{
GpakToneCodes_t ToneCode; // detected tone code
unsigned short int ToneDuration; // tone duration
GpakTdmDirection Direction; // detected on A r B side
short int DebugToneStatus;// reserved for debug info
} toneEvent;
} GpakAsyncEventData_t;
/* Definition of an Echo Canceller Parameters information structure. */
typedef struct GpakEcanParms
{
short int EcanTapLength; // Echo Can Num Taps (tail length)
short int EcanNlpType; // Echo Can NLP Type
short int EcanAdaptEnable; // Echo Can Adapt Enable flag
short int EcanG165DetEnable; // Echo Can G165 Detect Enable flag
short int EcanDblTalkThresh; // Echo Can Double Talk threshold
short int EcanMaxDoubleTalkThres; // Maximum double-talk threshold
short int EcanNlpThreshold; // Echo Can NLP threshold
short int EcanNlpConv; // Dynamic NLP control, NLP limit when EC about to converged
short int EcanNlpUnConv;// Dynamic NLP control, NLP limit when EC not converged yet
short int EcanNlpMaxSuppress; // suppression level for NLP_SUPP mode
short int EcanCngThreshold; // Echo Can CNG Noise threshold
short int EcanAdaptLimit; // Echo Can Max Adapts per frame
short int EcanCrossCorrLimit; // Echo Can Cross Correlation limit
short int EcanNumFirSegments; // Echo Can Num FIR Segments
short int EcanFirSegmentLen; // Echo Can FIR Segment Length
short int EcanTandemOperationEnable; //Enable tandem operation
short int EcanMixedFourWireMode; // Handle possible 4-wire (echo-free) lines
short int EcanReconvergenceCheckEnable; // Handle possible 4-wire (echo-free) lines
short int EcanSaturationLevel; /* Far end input level above which significant saturation/nonlinearity may be expected. */
short int EcanNLPSaturationThreshold; /* NLP threshold under conditions of possible saturation */
} GpakEcanParms_t;
/* Definition of a Channel Configuration information structure. */
typedef struct GpakChannelConfig
{
GpakSerialPort_t PcmInPortA; // A side PCM Input Serial Port Id
unsigned short int PcmInSlotA; // A side PCM Input Time Slot
GpakSerialPort_t PcmOutPortA; // A side PCM Output Serial Port Id
unsigned short int PcmOutSlotA; // A side PCM Output Time Slot
GpakSerialPort_t PcmInPortB; // B side PCM Input Serial Port Id
unsigned short int PcmInSlotB; // B side PCM Input Time Slot
GpakSerialPort_t PcmOutPortB; // B side PCM Output Serial Port Id
unsigned short int PcmOutSlotB; // B side PCM Output Time Slot
GpakToneTypes ToneTypesA; // A side Tone Detect Types
GpakToneTypes ToneTypesB; // B side Tone Detect Types
GpakActivation EcanEnableA; // Echo Cancel A Enabled
GpakActivation EcanEnableB; // Echo Cancel B Enabled
GpakEcanParms_t EcanParametersA; // Echo Cancel parameters
GpakEcanParms_t EcanParametersB; // Echo Cancel parameters
GpakCompandModes SoftwareCompand; // software companding
GpakRate_t FrameRate; // Gpak Frame Rate
GpakActivation MuteToneA; // A side mute DTMF Enabled
GpakActivation MuteToneB; // B side mute DTMF Enabled
GpakActivation FaxCngDetA; // A side FaxCng Tone Detector Enabled
GpakActivation FaxCngDetB; // B side FaxCng Tone Detector Enabled
unsigned short int ChannelId_tobe_Debug; /* Channel Id of the channel that we'd like to debug */
/* (0 to MaxChannels-1), only used for tdmToTdmDebug */
} GpakChannelConfig_t;
/* Definition of a Serial Port Configuration Structure */
typedef struct GpakPortConfig
{
GpakSlotCfg_t SlotsSelect1; // port 1 Slot selection
unsigned short int FirstBlockNum1; // port 1 first group Block Number
unsigned short int FirstSlotMask1; // port 1 first group Slot Mask
unsigned short int SecBlockNum1; // port 1 second group Block Number
unsigned short int SecSlotMask1; // port 1 second group Slot Mask
GpakSerWordSize_t SerialWordSize1; // port 1 serial word size
GpakCompandModes CompandingMode1; // port 1 companding mode
GpakSerFrameSyncPol_t TxFrameSyncPolarity1; // port 1 Tx Frame Sync Polarity
GpakSerFrameSyncPol_t RxFrameSyncPolarity1; // port 1 Rx Frame Sync Polarity
GpakSerClockPol_t TxClockPolarity1; // port 1 Tx Clock Polarity
GpakSerClockPol_t RxClockPolarity1; // port 1 Rx Clock Polarity
GpakSerDataDelay_t TxDataDelay1; // port 1 Tx data delay
GpakSerDataDelay_t RxDataDelay1; // port 1 Rx data delay
GpakActivation DxDelay1; // port 1 DX Delay
unsigned short int ThirdSlotMask1; // port 1 3rd group Slot Mask
unsigned short int FouthSlotMask1; // port 1 4th group Slot Mask
unsigned short int FifthSlotMask1; // port 1 5th group Slot Mask
unsigned short int SixthSlotMask1; // port 1 6th group Slot Mask
unsigned short int SevenSlotMask1; // port 1 7th group Slot Mask
unsigned short int EightSlotMask1; // port 1 8th group Slot Mask
GpakSlotCfg_t SlotsSelect2; // port 2 Slot selection
unsigned short int FirstBlockNum2; // port 2 first group Block Number
unsigned short int FirstSlotMask2; // port 2 first group Slot Mask
unsigned short int SecBlockNum2; // port 2 second group Block Number
unsigned short int SecSlotMask2; // port 2 second group Slot Mask
GpakSerWordSize_t SerialWordSize2; // port 2 serial word size
GpakCompandModes CompandingMode2; // port 2 companding mode
GpakSerFrameSyncPol_t TxFrameSyncPolarity2; // port 2 Tx Frame Sync Polarity
GpakSerFrameSyncPol_t RxFrameSyncPolarity2; // port 2 Rx Frame Sync Polarity
GpakSerClockPol_t TxClockPolarity2; // port 2 Tx Clock Polarity
GpakSerClockPol_t RxClockPolarity2; // port 2 Rx Clock Polarity
GpakSerDataDelay_t TxDataDelay2; // port 2 Tx data delay
GpakSerDataDelay_t RxDataDelay2; // port 2 Rx data delay
GpakActivation DxDelay2; // port 2 DX Delay
unsigned short int ThirdSlotMask2; // port 2 3rd group Slot Mask
unsigned short int FouthSlotMask2; // port 2 4th group Slot Mask
unsigned short int FifthSlotMask2; // port 2 5th group Slot Mask
unsigned short int SixthSlotMask2; // port 2 6th group Slot Mask
unsigned short int SevenSlotMask2; // port 2 7th group Slot Mask
unsigned short int EightSlotMask2; // port 2 8th group Slot Mask
GpakSlotCfg_t SlotsSelect3; // port 3 Slot selection
unsigned short int FirstBlockNum3; // port 3 first group Block Number
unsigned short int FirstSlotMask3; // port 3 first group Slot Mask
unsigned short int SecBlockNum3; // port 3 second group Block Number
unsigned short int SecSlotMask3; // port 3 second group Slot Mask
GpakSerWordSize_t SerialWordSize3; // port 3 serial word size
GpakCompandModes CompandingMode3; // port 3 companding mode
GpakSerFrameSyncPol_t TxFrameSyncPolarity3; // port 3 Tx Frame Sync Polarity
GpakSerFrameSyncPol_t RxFrameSyncPolarity3; // port 3 Rx Frame Sync Polarity
GpakSerClockPol_t TxClockPolarity3; // port 3 Tx Clock Polarity
GpakSerClockPol_t RxClockPolarity3; // port 3 Rx Clock Polarity
GpakSerDataDelay_t TxDataDelay3; // port 3 Tx data delay
GpakSerDataDelay_t RxDataDelay3; // port 3 Rx data delay
GpakActivation DxDelay3; // port 3 DX Delay
unsigned short int ThirdSlotMask3; // port 3 3rd group Slot Mask
unsigned short int FouthSlotMask3; // port 3 4th group Slot Mask
unsigned short int FifthSlotMask3; // port 3 5th group Slot Mask
unsigned short int SixthSlotMask3; // port 3 6th group Slot Mask
unsigned short int SevenSlotMask3; // port 3 7th group Slot Mask
unsigned short int EightSlotMask3; // port 3 8th group Slot Mask
} GpakPortConfig_t;
/* Definition of a Tone Generation Parameter Structure */
/*
typedef struct
{
GpakToneGenType_t ToneType; // Tone Type
unsigned short int Frequency[4]; // Frequency (Hz)
short int Level[4]; // Frequency's Level (1 dBm)
unsigned short int OnTime[4]; // On Times (msecs)
unsigned short int OffTime[4]; // Off Times (msecs)
} GpakToneGenParms_t;
*/
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* gpakConfigureChannel return status. */
typedef enum
{
CcsSuccess = 0, /* Channel Configured successfully */
CcsParmError = 1, /* Channel Config Parameter error */
CcsInvalidChannel = 2, /* invalid channel */
CcsInvalidDsp = 3, /* invalid DSP */
CcsDspCommFailure = 4 /* failed to communicate with DSP */
} gpakConfigChanStatus_t;
/*
* gpakConfigureChannel - Configure a DSP's Channel.
*
* FUNCTION
* This function configures a DSP's Channel.
*
* RETURNS
* Status code indicating success or a specific error.
*
*/
extern gpakConfigChanStatus_t gpakConfigureChannel(
unsigned short int DspId, // DSP identifier
unsigned short int ChannelId, // channel identifier
GpakChanType ChannelType, // channel type
GpakChannelConfig_t *pChanConfig, // pointer to channel config info
GPAK_ChannelConfigStat_t *pStatus // pointer to Channel Config Status
);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* gpakTearDownChannel return status. */
typedef enum
{
TdsSuccess = 0, /* Channel Tear Down successful */
TdsError = 1, /* Channel Tear Down error */
TdsInvalidChannel = 2, /* invalid channel */
TdsInvalidDsp = 3, /* invalid DSP */
TdsDspCommFailure = 4 /* failed to communicate with DSP */
} gpakTearDownStatus_t;
/*
* gpakTearDownChannel - Tear Down a DSP's Channel.
*
* FUNCTION
* This function tears down a DSP's Channel.
*
* RETURNS
* Status code indicating success or a specific error.
*
*/
extern gpakTearDownStatus_t gpakTearDownChannel(
unsigned short int DspId, // DSP identifier
unsigned short int ChannelId, // channel identifier
GPAK_TearDownChanStat_t *pStatus // pointer to Tear Down Status
);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* gpakAlgControl return status. */
typedef enum
{
AcSuccess = 0, /* control successful */
AcInvalidChannel = 1, /* invalid channel identifier */
AcInvalidDsp = 2, /* invalid DSP */
AcParmError = 3, /* invalid control parameter */
AcDspCommFailure = 4 /* failed to communicate with DSP */
} gpakAlgControlStat_t;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* gpakAlgControl - Control an Algorithm.
*
* FUNCTION
* This function controls an Algorithm
*
* RETURNS
* Status code indicating success or a specific error.
*
*/
extern gpakAlgControlStat_t gpakAlgControl(
unsigned short int DspId, // DSP identifier
unsigned short int ChannelId, // channel identifier
GpakAlgCtrl_t ControlCode, // algorithm control code
GPAK_AlgControlStat_t *pStatus // pointer to return status
);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* gpakConfigurePorts return status. */
typedef enum
{
CpsSuccess = 0, /* Serial Ports configured successfully */
CpsParmError = 1, /* Configure Ports Parameter error */
CpsInvalidDsp = 2, /* invalid DSP */
CpsDspCommFailure = 3 /* failed to communicate with DSP */
} gpakConfigPortStatus_t;
/*
* gpakConfigurePorts - Configure a DSP's serial ports.
*
* FUNCTION
* This function configures a DSP's serial ports.
*
* RETURNS
* Status code indicating success or a specific error.
*
*/
extern gpakConfigPortStatus_t gpakConfigurePorts(
unsigned short int DspId, // DSP identifier
const GpakPortConfig_t *pPortConfig, // pointer to Port Config info
GPAK_PortConfigStat_t *pStatus // pointer to Port Config Status
);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* gpakDownloadDsp return status. */
typedef enum
{
GdlSuccess = 0, /* DSP download successful */
GdlFileReadError = 1, /* error reading Download file */
GdlInvalidFile = 2, /* invalid Download file content */
GdlInvalidDsp = 3 /* invalid DSP */
} gpakDownloadStatus_t;
/*
* gpakDownloadDsp - Download a DSP's Program and initialized Data memory.
*
* FUNCTION
* This function reads a DSP's Program and Data memory image from the
* specified file and writes the image to the DSP's memory.
*
* RETURNS
* Status code indicating success or a specific error.
*
*/
extern gpakDownloadStatus_t gpakDownloadDsp(
unsigned short int DspId, // DSP identifier
GPAK_FILE_ID FileId // G.PAK download file identifier
);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* gpakReadEventFIFOMessage return status */
typedef enum
{
RefEventAvail = 0, /* an event was successfully read from the fifo */
RefNoEventAvail = 1, /* no event was in the fifo */
RefInvalidDsp = 2, /* invalid DSP identifier */
RefInvalidEvent = 3, /* invalid event */
RefDspCommFailure = 4 /* error communicating with DSP */
} gpakReadEventFIFOMessageStat_t;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* gpakReadEventFIFOMessage - read from the event fifo
*
* FUNCTION
* This function reads a single event from the event fifo if one is available
*
* RETURNS
* Status code indicating success or a specific error.
*
* Note: This function should be called in a loop until the return status
* indicates that the fifo is empty.
*/
extern gpakReadEventFIFOMessageStat_t gpakReadEventFIFOMessage(
unsigned short int DspId, // DSP identifier
unsigned short int *pChannelId, // pointer to channel identifier
GpakAsyncEventCode_t *pEventCode, // pointer to Event Code
GpakAsyncEventData_t *pEventData // pointer to Event Data Struct
);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
/* gpakPingDsp return status values */
typedef enum
{
PngSuccess = 0, /* DSP responded successfully */
PngInvalidDsp = 1, /* invalid DSP identifier */
PngDspCommFailure = 2 /* error communicating with DSP */
} gpakPingDspStat_t;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* gpakPingDsp - ping the DSP to see if it's alive
*
* FUNCTION
* This function checks if the DSP is still communicating with the host
*
* RETURNS
* Status code indicating success or a specific error.
*/
extern gpakPingDspStat_t gpakPingDsp(
unsigned short int DspId, // DSP identifier
unsigned short int *pDspSwVersion // DSP software version
);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
/* gpakSerialTxFixedValue return status values */
typedef enum
{
TfvSuccess = 0, /* operation successful */
TfvInvalidChannel = 1, /* invalid channel identifier */
TfvInvalidDsp = 2, /* invalid DSP identifier */
TfvDspCommFailure = 3 /* failed to communicate with DSP */
} gpakSerialTxFixedValueStat_t;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* gpakSerialTxFixedValue - transmit a fixed value on a timeslot
*
* FUNCTION
* This function controls transmission of a fixed value out onto a serial
* port's timeslot.
*
* RETURNS
* Status code indicating success or a specific error.
*/
extern gpakSerialTxFixedValueStat_t gpakSerialTxFixedValue(
unsigned short int DspId, // DSP identifier
unsigned short int ChannelId, // channel identifier
GpakSerialPort_t PcmOutPort, // PCM Output Serial Port Id
unsigned short int PcmOutSlot, // PCM Output Time Slot
unsigned short int Value, // 16-bit value
GpakActivation State // activation state
);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
/* gpakControlTdmLoopBack return status values */
typedef enum
{
ClbSuccess = 0, /* operation successful */
ClbSerPortInactive = 1, /* serial port is inactive */
ClbInvalidDsp = 2, /* invalid DSP identifier */
ClbDspCommFailure = 3 /* failed to communicate with DSP */
} gpakControlTdmLoopBackStat_t;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* gpakControlTdmLoopBack - control a serial port's loopback state
*
* FUNCTION
* This function enables/disables the tdm input to output looback mode on a
* serial port
*
* RETURNS
* Status code indicating success or a specific error.
*/
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
gpakControlTdmLoopBackStat_t gpakControlTdmLoopBack(
unsigned short int DspId, // DSP identifier
GpakSerialPort_t SerialPort, // Serial Port Id
GpakActivation LoopBackState // Loopback State
);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
/* gpakReadCpuUsage return status values */
typedef enum
{
RcuSuccess = 0, /* operation successful */
RcuInvalidDsp = 1, /* invalid DSP identifier */
RcuDspCommFailure = 2 /* communication failure */
} gpakReadCpuUsageStat_t;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* gpakReadCpuUsage - read the cpu usage statistics
*
* FUNCTION
* This function reads cpu utilization from the DSP.
*
* RETURNS
* Status code indicating success or a specific error.
*/
extern gpakReadCpuUsageStat_t gpakReadCpuUsage(
unsigned short int DspId, // DSP identifier
unsigned short int *pPeakUsage, // pointer to peak usage variable
unsigned short int *pPrev1SecPeakUsage // peak usage over previous 1 second
);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
/* gpakResetCpuUsageStats return status values */
typedef enum
{
RstcSuccess = 0, /* operation successful */
RstcInvalidDsp = 1, /* invalid DSP identifier */
RstcDspCommFailure = 2 /* communication failure */
} gpakResetCpuUsageStat_t;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* gpakResetCpuUsageStats - reset the cpu usage statistics
*
* FUNCTION
* This function resets the cpu utilization statistics
*
* RETURNS
* Status code indicating success or a specific error.
*/
extern gpakResetCpuUsageStat_t gpakResetCpuUsageStats(
unsigned short int DspId // DSP identifier
);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
/* gpakReadFramingStats return status values */
typedef enum
{
RfsSuccess = 0, /* operation successful */
RfsInvalidDsp = 1, /* invalid DSP identifier */
RfsDspCommFailure = 2 /* communication failure */
} gpakReadFramingStatsStatus_t;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* gpakReadFramingStats
*
* FUNCTION
* This function reads a DSP's framing interrupt statistics
*
* RETURNS
* Status code indicating success or a specific error.
*/
extern gpakReadFramingStatsStatus_t gpakReadFramingStats(
unsigned short int DspId, // DSP identifier
unsigned short int *pFramingError1Count, // port 1 Framing error count
unsigned short int *pFramingError2Count, // port 2 Framing error count
unsigned short int *pFramingError3Count, // port 3 Framing error count
unsigned short int *pDmaStopErrorCount, // DMA-stoppage error count
unsigned short int *pDmaSlipStatsBuffer // DMA slips count
);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
/* gpakResetFramingStats return values */
typedef enum
{
RstfSuccess = 0, /* operation successful */
RstfInvalidDsp = 1, /* invalid DSP identifier */
RstfDspCommFailure = 2 /* communication failure */
} gpakResetFramingStatsStatus_t;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* gpakResetFramingStats - reset a DSP's framing interrupt statistics
*
* FUNCTION
* This function resets a DSP's framing interrupt statistics
*
* RETURNS
* Status code indicating success or a specific error.
*/
extern gpakResetFramingStatsStatus_t gpakResetFramingStats(
unsigned short int DspId // DSP identifier
);
typedef enum
{
RmmSuccess =0,
RmmInvalidDsp = 1,
RmmSizeTooBig = 2,
RmmFailure = 3,
RmmInvalidAddress = 4
} gpakReadDSPMemoryStat_t;
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* gpakResetFramingStats - read a section of DSP memory
* to get access DSP registers, since 0x00--0x60 not HPI-accessable
*
* FUNCTION
* This function resets a DSP's framing interrupt statistics
*
* RETURNS
* Status code indicating success or a specific error.
*/
extern gpakReadDSPMemoryStat_t gpakReadDSPMemoryMap(
unsigned short int DspId, // Dsp Identifier
unsigned short int *pDest, // Buffer on host to hold DSP memory map
DSP_ADDRESS BufrBaseAddress, // DSP memory users want to read out
unsigned short int MemoryLength_Word16 // Length of memory section read out, unit is 16-bit word
);
typedef enum
{
GPIOSuccess =0,
GPIOInvalidDsp = 1,
GPIODspCommFailure = 2
}gpakAccessGPIOStat_t;
extern gpakAccessGPIOStat_t gpakAccessGPIO(
unsigned short int DspId, // DSP identifier
GpakGPIOCotrol_t gpakControlGPIO,// select oeration, changeDIR/write/read
unsigned short int *pGPIOValue // pointer for the read/write value or DIR mask
);
/* gpakWriteSystemParms return status. */
typedef enum
{
WspSuccess = 0, /* System Parameters written successfully */
WspParmError = 1, /* Write System Parms's Parameter error */
WspInvalidDsp = 2, /* invalid DSP */
WspDspCommFailure = 3 /* failed to communicate with DSP */
} gpakWriteSysParmsStatus_t;
/* Definition of a System Parameters information structure. */
typedef struct
{
/* DTMF Parameters */
short int MinSigLevel; /* 0 = Disabled, Min Sig Power Level for detection */
short int SNRFlag; /* 0 = Disabled, relax SNR tolerances */
short int FreqDeviation; /* 0 = Disabled, X Percent Deviation times 10 (e.g. 1.7% is entered as 17) */
short int DtmfFwdTwist; /* 0 to 8 db */
short int DtmfRevTwist; /* 0 to 8 db */
short int DtmfValidityMask; /* This flag allows users to relax the trailing conditions of the tone */
} GpakSystemParms_t;
/* gpakReadSystemParms return status. */
typedef enum
{
RspSuccess = 0, /* System Parameters read successfully */
RspInvalidDsp = 1, /* invalid DSP */
RspDspCommFailure = 2 /* failed to communicate with DSP */
} gpakReadSysParmsStatus_t;
extern gpakReadSysParmsStatus_t gpakReadSystemParms(
unsigned short int DspId, // DSP identifier
GpakSystemParms_t *pSysParms /* pointer to System Parms info var */
);
extern gpakWriteSysParmsStatus_t gpakWriteSystemParms(
unsigned short int DspId, // DSP identifier
GpakSystemParms_t *pSysParms, /* pointer to System Parms info var */
unsigned short int UpdateBits, /* input: flags indicating which parms to update */
GPAK_SysParmsStat_t *pStatus /* pointer to Write System Parms Status */
);
#endif // end multiple inclusion