blob: 4110212b0dc2998de4ea1b0881aa0bd7d086c1fb [file] [log] [blame]
/*
** Copyright (c) 2008-2010 by Silicon Laboratories
**
** $Id: vdaa.h 2357 2010-10-20 18:16:55Z cdp $
**
** Vdaa.h
** Vdaa VoiceDAA interface header file
**
** Author(s):
** naqamar, laj
**
** Distributed by:
** Silicon Laboratories, Inc
**
** This file contains proprietary information.
** No dissemination allowed without prior written permission from
** Silicon Laboratories, Inc.
**
** File Description:
** This is the header file for the main VoiceDAA API and is used
** in the VoiceDAA demonstration code.
**
** Dependancies:
** Customer Drivers
**
*/
#ifndef VDAA_INTF_H
#define VDAA_INTF_H
#include "si_voice_datatypes.h"
#include "si_voice.h"
/*****************************************************************************/
/** @defgroup VDAA_API VDAA API
* This section covers APIs and definitions related to the VDAA/FXO.
* @{
*/
/*
** Constants
*/
#define BROADCAST 0xff
#define LCS_SCALE_NUM 33 /* Line Current Status Scale */
#define LCS_SCALE_DEN 10 /* Line Current Status Scale */
/*
**
** VDAA Initialization/Configuration Parameter Options
**
*/
/*
** This defines names for the PCM Data Format
*/
typedef enum {
A_LAW = 0, /**< 00 = A-Law. Signed magnitude data format */
U_LAW = 1, /**< 01 = u-Law. Signed magnitude data format */
LINEAR_16_BIT = 3 /**< 11 = 16-bit linear (2s complement data format) */
}tPcmFormat;
/*
** This defines names for the phcf bits
*/
typedef enum {
PCLK_1_PER_BIT = 0,
PCLK_2_PER_BIT = 1
}tPHCF;
/*
** This defines names for the tri bit
*/
typedef enum {
TRI_POS_EDGE = 0,
TRI_NEG_EDGE = 1
}tTRI;
/**
** This defines names for the AC impedance range
*/
typedef enum {
AC_600, /**< 600 Ohms */
AC_900, /**< 900 O */
AC_270__750_150, /**< 270 O + (750 O || 150 nF) and 275 O + (780 O || 150 nF) */
AC_220__820_120, /**< 220 O + (820 O || 120 nF) and 220 O + (820 O || 115 nF) */
AC_370__620_310, /**< 370 O + (620 O || 310 nF) */
AC_320__1050_230, /**< 320 O + (1050 O || 230 nF) */
AC_370__820_110, /**< 370 O + (820 O || 110 nF) */
AC_275__780_115, /**< 275 O + (780 O || 115 nF) */
AC_120__820_110, /**< 120 O + (820 O || 110 nF) */
AC_350__1000_210, /**< 350 O + (1000 O || 210 nF) */
AC_200__680_100, /**< 200 O + (680 O || 100 nF) */
AC_600__2160, /**< 600 O + 2.16 uF */
AC_900__1000, /**< 900 O + 1 uF */
AC_900__2160, /**< 900 O + 2.16 uF */
AC_600__1000, /**< 600 O + 1 uF */
AC_Global_impedance /**< Global impedance */
}tAC_Z;
/**
** This defines names for the DC impedance range
*/
typedef enum {
DC_50, /**< 50 Ohms dc termination is selected */
DC_800 /**< 800 Ohms dc termination is selected */
}tDC_Z;
/**
** This defines names for the ringer impedance range
*/
typedef enum {
RZ_MAX = 0,
RZ_SYNTH = 1
}tRZ;
/**
** This defines names for the dc voltage adjust
*/
typedef enum {
DCV3_1 = 0,
DCV3_2 = 1,
DCV3_35 = 2,
DCV3_5 = 3
}tDCV;
/**
** This defines names for the minimum loop current
*/
typedef enum {
MINI_10MA = 0,
MINI_12MA = 1,
MINI_14MA = 2,
MINI_16MA = 3
}tMINI;
/**
** This defines names for the current limiting enable bit
*/
typedef enum {
ILIM_DISABLED = 0,
ILIM_ENABLED = 1
}tILIM;
/**
** This defines names for the ring detect interupt mode
*/
typedef enum {
RDI_BEG_BURST = 0,
RDI_BEG_END_BURST = 1
}tRDI;
/**
** This defines names for the on hook speed / spark quenching
*/
typedef enum {
OHS_LESS_THAN_0_5MS = 0,
OHS_3MS = 1,
OHS_26MS = 0xE
}tOHS;
/**
** This defines names for the hbe bit
*/
typedef enum {
HYBRID_DISABLED = 0,
HYBRID_ENABLED = 1
}tHBE;
/**
** Gain/Attenuation Select
*/
typedef enum {
XGA_GAIN,
XGA_ATTEN
}tXGA;
/**
** MUTE Control Options
*/
typedef enum {
MUTE_DISABLE_ALL,
MUTE_DISABLE_RX,
MUTE_DISABLE_TX,
MUTE_ENABLE_RX,
MUTE_ENABLE_TX,
MUTE_ENABLE_ALL
}tMUTE;
/**
** This defines names for the ring delay setting
*/
typedef enum {
RDLY_0MS = 0,
RDLY_256MS = 1,
RDLY_512MS = 2,
RDLY_768MS = 3,
RDLY_1024MS = 4,
RDLY_1280MS = 5,
RDLY_1536MS = 6,
RDLY_1792MS = 7
}tRDLY;
/**
** This defines names for the ring timeouts
*/
typedef enum {
RTO_128MS = 1,
RTO_256MS = 2,
RTO_384MS = 3,
RTO_512MS = 4,
RTO_640MS = 5,
RTO_768MS = 6,
RTO_896MS = 7,
RTO_1024MS = 8,
RTO_1152MS = 9,
RTO_1280MS = 10,
RTO_1408MS = 11,
RTO_1536MS = 12,
RTO_1664MS = 13,
RTO_1792MS = 14,
RTO_1920MS = 15
}tRTO;
/**
** This defines names for the ring timeouts
*/
typedef enum {
RCC_100MS = 0,
RCC_150MS = 1,
RCC_200MS = 2,
RCC_256MS = 3,
RCC_384MS = 4,
RCC_512MS = 5,
RCC_640MS = 6,
RCC_1024MS = 7
}tRCC;
/**
** This defines names for the ring validation modes
*/
typedef enum {
RNGV_DISABLED = 0,
RNGV_ENABLED = 1
}tRNGV;
/**
** This defines names for the rfwe bit
*/
typedef enum {
RFWE_HALF_WAVE = 0,
RFWE_FULL_WAVE = 1,
RFWE_RNGV_RING_ENV = 0,
RFWE_RNGV_THRESH_CROSS = 1
}tRFWE;
/**
** This defines names for the rt and rt2 bit
*/
typedef enum {
RT__13_5VRMS_16_5VRMS = 0,
RT__19_35VRMS_23_65VRMS = 1,
RT__40_5VRMS_49_5VRMS = 3
}tRT;
/**
** This defines names for the rt and rt2 bit
*/
typedef enum {
RGDT_ACTIVE_LOW = 0,
RGDT_ACTIVE_HI = 1
}tRPOL;
/**
** This defines names for the interrupts
*/
typedef enum {
POLI,
TGDI,
LCSOI,
DODI,
BTDI,
FTDI,
ROVI,
RDTI,
CVI /**< Current/Voltage Interrupt REGISTER#44 */
}vdaaInt;
/**
** Interrupt Bitmask Fields
*/
typedef enum {
POLM = 1,
TGDM = 2, /**< Si3050 Only */
LCSOM = 4,
DODM = 8,
BTDM = 16,
FDTM = 32,
ROVM = 64,
RDTM = 128
}vdaaIntMask;
/**
** This defines names for the idl bit (obsolete)
*/
typedef enum {
IDL_DISABLED = 0,
IDL_ENABLED = 1
}tIDL;
/**
** This defines names for the ddl bit (obsolete)
*/
typedef enum {
DDL_NORMAL_OPERATION = 0,
DDL_PCM_LOOPBACK = 1
}tDDL;
/**
** Loopback Modes
*/
typedef enum {
LPBK_NONE = 0,
LPBK_IDL = 1,
LPBK_DDL = 2,
LPBK_PCML = 3
}tLpbkMode;
/**
** Loopback Status
*/
typedef enum {
LPBK_DISABLED = 0,
LPBK_ENABLED = 1
}tLpbkStatus;
/**
** This defines names for the interrupt pin modes
*/
typedef enum {
INTE_DISABLED = 0,
INTE_ENABLED = 1
}tInte;
/**
** This defines names for the interrupt pin polarities
*/
typedef enum {
INTE_ACTIVE_LOW = 0,
INTE_ACTIVE_HIGH = 1
}tIntePol;
/**
** This defines names for the pwm settings
*/
typedef enum {
PWM_DELTA_SIGMA = 0,
PWM_CONVENTIONAL_16KHZ = 1,
PWM_CONVENTIONAL_32KHZ = 2
}tPwmMode;
/**
** PWME
*/
typedef enum {
PWM_DISABLED = 0,
PWM_ENABLED
}tPWME;
/**
** RCALD control
*/
typedef enum {
RES_CAL_ENABLED = 0,
RES_CAL_DISABLED
}tRCALD;
/**
** Voice DAA Hook states
*/
enum {
VDAA_DIG_LOOPBACK = 1,
VDAA_ONHOOK = 2,
VDAA_OFFHOOK = 3,
VDAA_ONHOOK_MONITOR = 4
};
/**
** FDT Monitoring Options
*/
enum {
FDT_MONITOR_OFF = 0,
FDT_MONITOR_ON
};
/**
** Offhook Speed Select
*/
typedef enum {
FOH_512,
FOH_128,
FOH_64,
FOH_8
}tFOH;
/**
** Sample Rate Control
*/
typedef enum {
FS_8KHZ,
FS_16KHZ
}tHSSM;
/**
** Line Voltage Force Disable
*/
typedef enum {
LVS_FORCE_ENABLED = 0,
LVS_FORCE_DISABLED
}tLVFD;
/**
** Current/Voltage Monitor Select
*/
typedef enum {
CVS_CURRENT,
CVS_VOLTAGE
}tCVS;
/**
** Current/Voltage Interrupt Polarity
*/
typedef enum {
CVP_BELOW,
CVP_ABOVE
}tCVP;
/**
** Guarded Clear
*/
typedef enum {
GCE_DISABLED = 0,
GCE_ENABLED
}tGCE;
/**
** SPI Mode (Si3050 Only)
*/
typedef enum {
SPIM_TRI_CS,
SPIM_TRI_SCLK
}tSPIM;
/**
** FILT
*/
typedef enum {
FILT_HPF_5HZ,
FILT_HPF_200HZ
}tFILT;
/**
** IIRE
*/
typedef enum {
IIR_DISABLED = 0,
IIR_ENABLED
}tIIRE;
/**
** FULL2
*/
typedef enum {
FULL2_DISABLED = 0,
FULL2_ENABLED
}tFULL2;
/**
** FULL
*/
typedef enum {
FULL_DISABLED = 0,
FULL_ENABLED
}tFULL;
/**
** RG1
*/
typedef enum {
RG1_DISABLED = 0,
RG1_ENABLED
}tRG1;
/**
** -----------------------------
** CONFIGURATION DATA STRUCTURES
** -----------------------------
*/
/**
** (Updated) Structure for General Parameters
*/
typedef struct {
tInte inte; /* INTE */
tIntePol intp; /* INTP */
tRCALD rcald; /* RCALD */
tHSSM hssm; /* HSSM */
tFOH foh; /* FOH */
tLVFD lvfd; /* LVFD */
tCVS cvs; /* CVS */
tCVP cvp; /* CVP */
tGCE gce; /* GCE */
tIIRE iire; /* IIRE */
tFULL2 full2; /* FULL2 */
tFULL full; /* FULL */
tFILT filt; /* FILT */
tRG1 rg1; /* RG1 */
tPwmMode pwmm; /* PWMM Si3050 Only */
tPWME pwmEnable; /* PWME Si3050 Only */
tSPIM spim; /* SPIM Si3050 Only */
} vdaa_General_Cfg;
/**
** (NEW) Structure for Country Presets
*/
typedef struct {
tRZ rz;
tDC_Z dcr;
tAC_Z acim;
tDCV dcv;
tMINI mini;
tILIM ilim;
tOHS ohs_sq;
tHBE hbe;
} vdaa_Country_Cfg;
/**
** (NEW) Structure for Hybrid Presets
*/
typedef struct {
uInt8 hyb1;
uInt8 hyb2;
uInt8 hyb3;
uInt8 hyb4;
uInt8 hyb5;
uInt8 hyb6;
uInt8 hyb7;
uInt8 hyb8;
} vdaa_Hybrid_Cfg;
/**
** Structure for PCM configuration presets
*/
typedef struct {
tPcmFormat pcmFormat;
tPHCF pcmHwy;
tTRI pcm_tri;
} vdaa_PCM_Cfg;
/**
** Defines structure for configuring impedence
** @deprecated: Replace with separate vdaa_Country_Cfg preset
** for country-specific settings and vdaa_Hybrid_Cfg
** presets for hybrid coefficients since it is likely
** that multiple hybrid coefficient sets will be used
** tried during echo training.
*/
typedef struct {
tRZ rz;
tDC_Z dcr;
tAC_Z acim;
uInt8 hyb1;
uInt8 hyb2;
uInt8 hyb3;
uInt8 hyb4;
uInt8 hyb5;
uInt8 hyb6;
uInt8 hyb7;
uInt8 hyb8;
tDCV dcv;
tMINI mini;
tILIM ilim;
tOHS ohs_sq;
tHBE hbe;
} vdaa_Impedance_Cfg;
/** @addtogroup VDAA_AUDIO
* @{
*/
/** @addtogroup VDAA_GAIN_CONTROL
* @{
*/
/*
** (Updated) Structure for Audio path gain preset
*/
typedef struct {
uInt8 mute;
tXGA xga2;
uInt8 acgain2;
tXGA xga3;
uInt8 acgain3;
uInt8 callProgress;
BOOLEAN cpEn;
} vdaa_audioGain_Cfg;
/** @} VDAA_GAIN_CONTROL*/
/** @} */
/*
** Structure for configuring ring detect config
*/
typedef struct {
tRDLY rdly;
tRT rt;
uInt8 rmx;
tRTO rto;
tRCC rcc;
tRNGV rngv;
uInt8 ras;
tRFWE rfwe;
tRDI rdi;
tRPOL rpol;
} vdaa_Ring_Detect_Cfg;
/*
** Defines structure of interrupt data
*/
typedef struct {
vdaaInt *irqs;
uInt8 number;
} vdaaIntType;
/*
** Defines structure for configuring Loop Back
*/
typedef struct {
tIDL isoDigLB;
tDDL digDataLB;
} vdaa_Loopback_Cfg;
/*
** Generic Flag
*/
typedef enum {
VDAA_BIT_SET = 1,
VDAA_BIT_CLEAR = 0
} tVdaaBit;
/*
** Defines structure for daa current status (ring detect/hook stat)
*/
typedef struct {
tVdaaBit ringDetectedNeg;
tVdaaBit ringDetectedPos;
tVdaaBit ringDetected;
tVdaaBit offhook;
tVdaaBit onhookLineMonitor;
} vdaaRingDetectStatusType;
typedef SiVoiceControlInterfaceType vdaaControlInterfaceType;
typedef SiVoiceDeviceType vdaaDeviceType;
typedef SiVoiceChanType vdaaChanType;
/*
** This is the main VoiceDAA interface object pointer
*/
typedef vdaaChanType *vdaaChanType_ptr;
/*
** Defines initialization data structures
*/
typedef struct {
uInt8 address;
uInt8 initValue;
} vdaaRegInit;
typedef enum {
PAR_HANDSET_NOT_DETECTED = 0,
PAR_HANDSET_DETECTED = 1
}vdaaPHDStatus;
/*
** Line In Use Configuration Structure
*/
typedef struct {
vdaaPHDStatus status;
int8 min_onhook_vloop;
int8 min_offhook_vloop;
int16 min_offhook_iloop;
int8 measured_vloop;
int16 measured_iloop;
}vdaa_LIU_Config;
/*
** Function Declarations
*/
/*****************************************************************************/
/** @defgroup VDAA_IF_CONFIG VDAA System control interface functions
* This group of functions is called for allocating memory and configuring
* the ProSLIC API to call specific control interfaces that the user implemented.
* @deprecated One should use the SiVoice equivalent functions. @ref SIVOICE_IF_CFG
* @{
*/
/*****************************************************************************/
/** @defgroup VDAA_MEM Memory allocation/deallocation
* @deprecated One should use the SiVoice equivalent functions located: @ref SIVOICE_MEMORY_IF
* @{
*/
/**
@brief
* Allocate memory and initialize the given structure.
*
* @param[in,out] pCtrlIntf - the structure to initialize
*
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref SiVoice_createControlInterface
*
*/
int Vdaa_createControlInterface (vdaaControlInterfaceType **pCtrlIntf);
/**
@brief
* Destroys the given structure and deallocates memory.
*
* @param[in,out] pCtrlIntf - the structure to destroy/deallocate
*
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref SiVoice_destroyControlInterface
*
*/
int Vdaa_destroyControlInterface (vdaaControlInterfaceType **pCtrlIntf);
/**
* @brief
* Allocate memory and initialize the given structure.
*
* @param[in,out] **pDev - the structure to initialize
*
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref SiVoice_createDevice
*/
int Vdaa_createDevice (vdaaDeviceType **pDev);
/**
* @brief
* Destroys the given structure and deallocates memory.
*
* @param[in,out] **pDev - the structure to initialize
*
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref SiVoice_destroyDevice
*/
int Vdaa_destroyDevice (vdaaDeviceType **pDev);
/**
* @brief
* Allocate memory and initialize the given structure.
*
* @param[in,out] pVdaa - the structure to initialize
*
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref SiVoice_createChannel
*/
int Vdaa_createChannel (vdaaChanType **pVdaa);
/**
* @brief
* Destroys the given structure and deallocates memory.
*
* @param[in,out] pVdaa - the structure to initialize
*
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref Vdaa_destroyChannel
*/
int Vdaa_destroyChannel (vdaaChanType **pVdaa);
/** @} */
/*****************************************************************************/
/** @defgroup VDAA_IO SPI/GCI access routines
* This group of functions are used to associcate the transport mechanism (SPI, GCI) functions with the API. The actual
* functions being references are normally implemented by the customer for their particualr OS and platform.
*
* @deprecated One should use the SiVoice equivalent functions located: @ref SIVOICE_IO
* @{
*/
/**
* @brief
* Associate a interface object with a user supplied datastructure. This
* structure is passed to all the I/O routines that the ProSLIC API calls.
*
* @param[in,out] *pCtrlIntf - which interface to associate
* the user supplied structure with.
* @param[in] hCtrl - the user supplied structure.
*
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use SiVoice_setControlInterfaceCtrlObj
*/
int Vdaa_setControlInterfaceCtrlObj (vdaaControlInterfaceType *pCtrlIntf, void *hCtrl);
/**
* @brief
* Associate a interface object with the reset function.
*
* @param[in,out] pCtrlIntf - which interface to associate
* the user supplied function with.
* @param[in] Reset_fptr - the reset function pointer
*
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref SiVoice_setControlInterfaceReset
*/
int Vdaa_setControlInterfaceReset (vdaaControlInterfaceType *pCtrlIntf, ctrl_Reset_fptr Reset_fptr);
/**
* @brief
* Associate a interface object with the register write function.
*
* @param[in,out] pCtrlIntf - which interface to associate
* the user supplied function with.
* @param[in] WriteRegister_fptr - the register write function pointer
*
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref SiVoice_setControlInterfaceWriteRegister
*/
int Vdaa_setControlInterfaceWriteRegister (vdaaControlInterfaceType *pCtrlIntf, ctrl_WriteRegister_fptr WriteRegister_fptr);
/**
* @brief
* Associate a interface object with the register read function.
*
* @param[in,out] pCtrlIntf - which interface to associate
* the user supplied function with.
* @param[in] ReadRegister_fptr- the register read function pointer
*
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref SiVoice_setControlInterfaceReadRegister
*/
int Vdaa_setControlInterfaceReadRegister (vdaaControlInterfaceType *pCtrlIntf, ctrl_ReadRegister_fptr ReadRegister_fptr);
/**
* @brief
* Associate a interface object with the write RAM function.
*
* @param[in,out] pCtrlIntf - which interface to associate
* the user supplied function with.
* @param[in] WriteRAM_fptr - the reset function pointer
*
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref SiVoice_setControlInterfaceWriteRAM
*/
int Vdaa_setControlInterfaceWriteRAM (vdaaControlInterfaceType *pCtrlIntf, ctrl_WriteRAM_fptr WriteRAM_fptr);
/**
* @brief
* Associate a interface object with the read RAM function.
*
* @param[in,out] pCtrlIntf - which interface to associate
* the user supplied function with.
* @param[in] ReadRAM_fptr - the read RAM function pointer
*
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use SiVoice_setControlInterfaceReadRAM
*/
int Vdaa_setControlInterfaceReadRAM (vdaaControlInterfaceType *pCtrlIntf, ctrl_ReadRAM_fptr ReadRAM_fptr);
/** @} VDAA_IO */
/*****************************************************************************/
/** @defgroup VDAA_TIMER Timer functions
*
* This group of functions associates the customer supplied timer routines with the ProSLIC API.
*
* @deprecated One should use the SiVoice equivalent functions located: @ref SIVOICE_TIMER
* @{
*/
/**
* @brief
* This function associates a timer object - which is user defined, but it is
* used with ALL channels of the particular control interface.
*
* @param[in] pCtrlIntf - which control interface to associate the given timer object with.
* @param[in] hTimer - the timer ojbect that is passed to all timer functions.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
* @sa SIVOICE_TIMER Vdaa_setControlInterfaceDelay Vdaa_setControlInterfaceTimeElapsed Vdaa_setControlInterfaceGetTime
* @deprecated Use SiVoice_setControlInterfaceTimerObj
*/
int Vdaa_setControlInterfaceTimerObj (vdaaControlInterfaceType *pCtrlIntf, void *hTimer);
/**
* @brief
* Associate a timer delay function with a given control interface. The
* delay function takes in an argument of the timer object and the time in mSec
* and delays the thread/task for at least the time requested.
*
* @param[in] pCtrlIntf - which control interface to associate the function with.
* @param[in] Delay_fptr - the pointer to the delay function.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
* @sa SIVOICE_TIMER Vdaa_setControlInterfaceTimerObj Vdaa_setControlInterfaceTimeElapsed Vdaa_setControlInterfaceGetTime
* @deprecated Use @ref SiVoice_setControlInterfaceDelay
*/
int Vdaa_setControlInterfaceDelay (vdaaControlInterfaceType *pCtrlIntf, system_delay_fptr Delay_fptr);
/**
* @brief
* Associate a time elapsed function with a given control interface. The
* time elapsed function uses the values from the function specified in
* @ref SiVoice_setControlInterfaceGetTime and computes the delta time
* in mSec.
* @param[in] pCtrlIntf - which control interface to associate the function with.
* @param[in] timeElapsed_fptr - the pointer to the elapsed time function.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @sa SIVOICE_TIMER Vdaa_setControlInterfaceTimerObj Vdaa_setControlInterfaceDelay Vdaa_setControlInterfaceGetTime
* @deprecated Use @ref SiVoice_setControlInterfaceTimeElapsed
*/
int Vdaa_setControlInterfaceTimeElapsed (vdaaControlInterfaceType *pCtrlIntf, system_timeElapsed_fptr timeElapsed_fptr);
/**
* @brief
* Associate a time get function with a given control interface. The
* time get function returns a value in a form of a void pointer that
* is suitable to be used with the function specified in @ref SiVoice_setControlInterfaceTimeElapsed .
* This is typically used as a timestamp of when an event started. The resolution needs to be in terms
* of mSec.
*
* @param[in] pCtrlIntf - which control interface to associate the function with.
* @param[in] getTime_fptr - the pointer to the get time function.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @sa SIVOICE_TIMER Vdaa_setControlInterfaceTimerObj Vdaa_setControlInterfaceDelay Vdaa_setControlInterfaceTimeElapsed
* @deprecated Use @ref SiVoice_setControlInterfaceGetTime
*/
int Vdaa_setControlInterfaceGetTime (vdaaControlInterfaceType *pCtrlIntf, system_getTime_fptr getTime_fptr);
/** @} VDAA_TIMER */
/*****************************************************************************/
/** @defgroup VDAA_PROCESS VDAA Process control
* @{
*/
/**
* @brief
* This function assoicates a user defined semaphore/critical section
* function with the given interface.
*
* @param[in,out] pCtrlIntf - the interface to associate the function with.
* @param[in] semaphore_fptr - the function pointer for semaphore control.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
* @deprecated Use @ref SiVoice_setControlInterfaceSemaphore
*/
int Vdaa_setControlInterfaceSemaphore (vdaaControlInterfaceType *pCtrlIntf, ctrl_Semaphore_fptr semaphore_fptr);
/** @} */
/** @} VDAA_IF_CONFIG */
/*****************************************************************************/
/** @defgroup VDAA_DEBUG Debug
* * This group of functions enables/disables debug messages as well as dump
* register contents.
* @{
*/
/**
* @brief
* This function enables or disables the debug mode, assuming @ref ENABLE_DEBUG is set in the configuration file.
*
* @param[in] pVdaa - which channel to set the debug flag.
* @param[in] debugEn - 0 = Not set, 1 = set.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref SiVoice_setSWDebugMode
*
*/
int Vdaa_setSWDebugMode (vdaaChanType_ptr pVdaa, int32 debugEn);
/**
* @brief
* This function dumps to console the register contents of several
* registers and RAM locations.
*
* @param[in] pVdaa - which channel to dump the register contents of.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
*/
int Vdaa_PrintDebugData (vdaaChanType *pVdaa);
/** @} VDAA_DEBUG */
/*****************************************************************************/
/** @defgroup VDAA_ERROR Return code functions
* This group of functions are used for when the ProSLIC API function does
* not reutrn a standard error value and instead returns back some other value.
* You may call these functions to see if there was an error preset and to clear
* the error state.
* @{
*/
/**
* @brief
* This function returns the error flag that may be set by some function in where
* @ref errorCodeType is not returned.
*
* @note For functions that DO return errorCodeType, the return value here is undefined.
*
* @param[in] pVdaa - which channel to clear the error flag
* @param[in,out] error - The current value of error flag.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref SiVoice_getErrorFlag
*
* @sa ProSLIC_clearErrorFlag
*/
int Vdaa_getErrorFlag (vdaaChanType_ptr pVdaa, int *error);
/**
* @brief
* This function clears the error flag that may be set by some function in where
* @ref errorCodeType is not returned.
*
* @param[in,out] pVdaa - which channel to clear the error flag
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref SiVoice_clearErrorFlag
*
* @sa ProSLIC_getErrorFlag
*/
int Vdaa_clearErrorFlag (vdaaChanType_ptr pVdaa);
/** @} VDAA_ERROR */
/*****************************************************************************/
/** @defgroup VDAA_AUDIO Audio
* @{
*/
/** @defgroup VDAA_GAIN_CONTROL Gain Control
* This section covers functions that allow one to adjust the audio
* gains - with TX toward the network/SOC/DSP and RX toward the tip/ring.
*
* @{
*/
/**
* @brief
* Sets the TX audio gain (toward the network).
*
* @param[in] pVdaa - which channel to configure
* @param[in] preset - which preset to use (this may be from the constants file)
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*/
int Vdaa_TXAudioGainSetup (vdaaChanType *pVdaa,int32 preset);
/**
* @brief
* Sets the RX audio gain (toward the tip/ring).
*
* @param[in] pVdaa - which channel to configure
* @param[in] preset - which preset to use (this may be from the constants file)
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*/
int Vdaa_RXAudioGainSetup (vdaaChanType *pVdaa,int32 preset);
/** @} VDAA_GAIN_CONTROL */
/*****************************************************************************/
/** @defgroup VDAA_AUDIO_CONTROL Audio control/configuration
* This group of functions is used to configure and control the PCM bus. It is essential that @ref Vdaa_PCMSetup,
* @ref Vdaa_PCMTimeSlotSetup and @ref Vdaa_PCMStart are called prior to any audio processing.
* @{
*/
/**
* @brief
* This configures the PCM bus with parameters such as companding and data latching timing.
*
* @param[in] pVdaa - which channel should be configured
* @param[in] preset - which preset to use from the constants file (see configuration tool, PCM dialog box)
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
* @sa Vdaa_PCMTimeSlotSetup ProSLIC_PCMStart
*/
int Vdaa_PCMSetup (vdaaChanType *pVdaa,int32 preset);
/**
* @brief
* This configures the ProSLIC to latch and send the PCM data at a particular timeslot in terms of PCM clocks (PCLK).
*
* Typically, for aLaw and uLaw, one can use the following calculation to set the rxcount and txcount parameters:
*
* rxcount = txcount = (channel_number)*8;
*
* For 16 bit linear, one can do the following:
*
* rxcount = txcount = (channel_number)*16;
*
* where channel_number = which ProSLIC channel on the PCM bus. For example, if one were to have 2 dual channel
* VDAA's on the same PCM bus, this value would range from 0 to 3.
*
* @param[in] pVdaa - which channel should be configured
* @param[in] rxcount - how many clocks until reading data from the PCM bus
* @param[in] txcount - how many clocks until writing data to the PCM bus.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
* @sa Vdaa_PCMSetup Vdaa_PCMStart
*/
int Vdaa_PCMTimeSlotSetup (vdaaChanType *pVdaa, uInt16 rxcount, uInt16 txcount);
/**
* @brief
* This enables PCM transfer on the given ProSLIC channel.
*
* @param[in] pVdaa - - which channel should be enabled
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
* @sa ProSLIC_PCMSetup ProSLIC_PCMTimeSlotSetup ProSLIC_PCMStop
*/
int Vdaa_PCMStart (vdaaChanType *pVdaa);
/**
* @brief
* This disables PCM transfer on the given VDAA channel. Typically, this is called for debugging
* purposes only.
*
* @param[in] pVdaa - - which channel should be disabled
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
* @sa Vdaa_PCMSetup Vdaa_PCMTimeSlotSetup Vdaa_PCMStart
*/
int Vdaa_PCMStop (vdaaChanType *pVdaa);
/**
* @brief
* Program desired mute mode for the given channel.
*
* @param[in] pVdaa - which channel should be modified
* @param[in] mute - what is the desired mode.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
*/
int Vdaa_SetAudioMute(vdaaChanType *pVdaa, tMUTE mute);
/**
* @brief
* Program desired loopback test mode for the given channel.
*
* @param[in] pVdaa - which channel should be modified
* @param[in] lpbk_mode - what is the desired loopback mode.
* @param[in] lpbk_status - is this to enable or disable the loopback mode.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated This API is depricated as of 5.2.0
* @sa Vdaa_LoopbackSetup
*
*/
int Vdaa_SetLoopbackMode(vdaaChanType_ptr pVdaa, tLpbkMode lpbk_mode, tLpbkStatus lpbk_status);
/**
* @brief
* Program desired loopback test mode for the given channel.
*
* @param[in] pVdaa - which channel should be modified
* @param[in] preset - which of the API configuration tool's preset to use.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
*/
int Vdaa_LoopbackSetup (vdaaChanType *pVdaa, int32 preset);
/*****************************************************************************/
/** @} VDAA_AUDIO */
/** @} */
/** @defgroup VDAA_RING Ring detection
* @{
*/
/**
* @brief This function configures ringing detect for the Vdaa.
* @param[in] pVdaa - which channel to program
* @param[in] preset - Index of predefined ring detect setup configuration
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*/
int Vdaa_RingDetectSetup (vdaaChanType *pVdaa,int32 preset);
/**
* @brief This function reads ring detect/hook status and populates the structure passed via pStatus.
* @param[in] pVdaa - Pointer to Voice DAA channel structure
* @param[out] pStatus - updated ring status.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*/
int Vdaa_ReadRingDetectStatus (vdaaChanType *pVdaa,vdaaRingDetectStatusType *pStatus);
/** @} VDAA_RING */
/*****************************************************************************/
/** @defgroup VDAA_LINE_STATE Line state
* @{
*/
/**
* @brief This function sets the Voice DAA hook status
* @param[in] pVdaa - Pointer to Voice DAA channel structure
* @param[in] newHookStatus - new hook state (VDAA_ONHOOK, VDAA_OFFHOOK, VDAA_DIG_LOOPBACK or VDAA_ONHOOK_MONITOR)
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*/
int Vdaa_SetHookStatus (vdaaChanType *pVdaa,uInt8 newHookStatus);
/**
* @brief This function powers up the Voice DAA lineside device.
* @param[in] pVdaa - Pointer to Voice DAA channel structure
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*/
int Vdaa_PowerupLineside(vdaaChanType_ptr pVdaa);
/**
* @brief This function powers down the Voice DAA lineside device.
* @param[in] pVdaa - Pointer to Voice DAA channel structure
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*/
int Vdaa_PowerdownLineside(vdaaChanType_ptr pVdaa);
/**
* @brief Read VDAA Hook Status
* @param[in] pVdaa - which channel to return the hook status.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*/
uInt8 Vdaa_GetHookStatus (vdaaChanType *pVdaa);
/** @} VDAA_LINE_STATE */
/*****************************************************************************/
/** @defgroup VDAA_DIAG Diagnostics
* @{
*/
/**
* @brief This function returns the Voice DAA linefeed status.
* @param[in] pVdaa - Pointer to Voice DAA channel structure
* @param[in,out] vloop - Pointer to loop voltage variable (set by this function) - in mV
* @param[in,out] iloop - Pointer to loop current variable (set by this function) - in uA
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*/
int Vdaa_ReadLinefeedStatus (vdaaChanType *pVdaa,int8 *vloop, int16 *iloop);
/**
* @brief This function initializes the vdaa_LIU_Config datastructure for line in use feature
* @param[in,out] liuCfg - Pointer to vdaa_LIU_Config structure (user allocates)
* @param[in] minOnV - minimum onhook loop voltage that indicates no parallel handset is present (mV)
* @param[in] minOffV - minimum offhook loop voltage that indicates no parallel handset is present (mV)
* @param[in] minOffI - minimum offhook loop current that indicates no parallel handset is preset (uA)
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @sa Vdaa_CheckForLineInUse
*/
int Vdaa_InitLineInUseCheck(vdaa_LIU_Config *liuCfg,int8 minOnV,int8 minOffV,int16 minOffI );
/**
* @brief Monitor LVCS to detect intrusion or parallel handset
* @param[in] pVdaa - Pointer to Voice DAA channel structure
* @param[in,out] liuCfg - Pointer to vdaa_LIU_Config structure
* @retval VDAA_ONHOOK or VDAA_OFFHOOK (in use)
* @sa Vdaa_InitLineInUseCheck
*/
uInt8 Vdaa_CheckForLineInUse(vdaaChanType *pVdaa, vdaa_LIU_Config *liuCfg);
/**
* @brief This function can be used to verify that the SPI interface is functioning properly.
* @param[in] pVdaa - Pointer to Voice DAA channel structure
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Deprecated in 5.2.0
*/
int Vdaa_VerifyControlInterface (vdaaChanType *pVdaa);
/**
* @brief This function returns the status of the Frame Detect (FDT) bit.
* @param[in] pVdaa - Pointer to Voice DAA channel structure
* @retval int - 0 - Frame NOT detected, 1 = Frame detected
*/
int Vdaa_ReadFDTStatus(vdaaChanType_ptr pVdaa);
/** @} VDAA_DIAG */
/*****************************************************************************/
/** @defgroup VDAA_INTERRUPTS Interrupts
* @{
*/
/**
* @brief Enables ALL interrupts
* @param[in] pVdaa - Pointer to Voice DAA channel structure
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Replaced by @ref Vdaa_SetInterruptMask
*/
int Vdaa_EnableInterrupts (vdaaChanType *pVdaa);
/**
* @brief Enables interrupts based on passed 9-bit bitmask. Bit values defined by vdaaIntMask enum.
* @param[in] pVdaa - Pointer to Voice DAA channel structure
* @param[in] bitmask - a logical or of @ref vdaaIntMask enum
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*/
int Vdaa_SetInterruptMask(vdaaChanType *pVdaa, vdaaIntMask bitmask);
/**
* @brief Returns the current interrupt status.
* @param[in] pVdaa - Pointer to Voice DAA channel structure
* @param[out] pIntData - interrupt mask showing which interrupts are set.
* @retval int - the number of interrupts set or RC_IGNORE
*/
int Vdaa_GetInterrupts (vdaaChanType *pVdaa,vdaaIntType *pIntData);
/**
* @brief Clears ALL interrupts
* @param[in] pVdaa - Pointer to Voice DAA channel structure
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*/
int Vdaa_ClearInterrupts (vdaaChanType *pVdaa);
/** @} VDAA_INTERRUPTS */
/*****************************************************************************/
/** @defgroup VDAA_INIT Initialization
* @{
*
* @defgroup VDAA_SOFT_INIT Software initialization
* @{
*/
/**
* @brief
* This function initializes the various channel structure elements.
* This function does not access the chipset directly, so SPI/GCI
* does not need to be up during this function call.
*
* It is suggested to migrate to the @ref SiVoice_SWInitChan in new
* implementations.
*
* @param[in,out] pVdaa - which channel to initialize.
* @param[in] channel - Which channel index is this. For example, for a 4 channel system, this would typically range from 0 to 3.
* @param[in] chipType - chipset family type for example @ref SI321X_TYPE or @ref SI3217X_TYPE
* @param[in] deviceObj - Device structure pointer associated with this channel
* @param[in] pCtrlIntf - Control interface associated with this channel
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref SiVoice_SWInitChan
*/
int Vdaa_SWInitChan (vdaaChanType_ptr pVdaa,int32 channel,int chipType, SiVoiceDeviceType*deviceObj,SiVoiceControlInterfaceType *pCtrlIntf);
/**
* @brief
* This function sets the channel enable status. If NOT set, then when
* the various initialization routines such as @ref Vdaa_SWInitChan is called,
* then this particular channel will NOT be initialized.
*
* This function does not access the chipset directly, so SPI/GCI
* does not need to be up during this function call.
*
* @param[in,out] pVdaa - which channel to return the status.
* @param[in] chanEn - The new value of the channel enable field. 0 = NOT enabled, 1 = enabled.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
* @sa Vdaa_getChannelEnable SiVoice_SWInitChan
*/
int Vdaa_setChannelEnable (vdaaChanType_ptr pVdaa, int chanEn);
/**
* @brief
* This function returns back if the channel is enabled or not.
* This function does not access the chipset directly, so SPI/GCI
* does not need to be up during this function call.
*
* @param[in] pVdaa - which channel to return the status.
* @param[in,out] chanEn - The current value of if the channel is enabled. 0 = NOT enabled, 1 = enabled.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
* @sa Vdaa_setChannelEnable SiVoice_SWInitChan
*/
int Vdaa_getChannelEnable (vdaaChanType_ptr pVdaa, int* chanEn);
/** @} VDAA_SOFT_INIT */
/*****************************************************************************/
/** @defgroup VDAA_HW_INIT Hardware/line initialization
* @{
*/
/**
* @brief
* This function configures the Voice DAA with a predefined country configuration preset.
*
* @param[in] pVdaa - which channel to initialize
* @param[in] preset - The preset to use to configure the VDAA with.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
*/
int Vdaa_CountrySetup (vdaaChanType *pVdaa,int32 preset);
/**
* @brief
* This function configures the Voice DAA digital hybrid with a predefined preset.
*
* @param[in] pVdaa - which channel to initialize
* @param[in] preset - Index of predefined digital hybrid preset
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @sa Vdaa_SetHybridEnable
*/
int Vdaa_HybridSetup (vdaaChanType *pVdaa,int32 preset);
/**
* @brief
* This function sets the impedance coefficients of the Vdaa.
*
* @param[in] pVdaa - which channel to initialize
* @param[in] preset - Index of predefined digital hybrid preset
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
*/
int Vdaa_ImpedanceSetup (vdaaChanType *pVdaa,int32 preset);
/**
* @brief
* This function fully initializes and loads the general config parameters to all Vdaa devices
* a given daisychain up to a given number.
*
* @param[in] pVdaa - which channel to initialize or start from if size>1
* @param[in] size - the number of channels to initialize, should be at least 1
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
*/
int Vdaa_Init (vdaaChanType_ptr *pVdaa,int size);
/**
* @brief
* This function fully initializes and loads the general config parameters to all Vdaa devices on
* a given daisychain.
*
* @param[in] pVdaa - Vdaa channel
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
*/
int Vdaa_InitBroadcast (vdaaChanType_ptr pVdaa);
/**
* @brief
* This function calibrates the ADC (analog to digital converter) of the Vdaa device(s).
*
* @param[in] pVdaa - which channel to calibrate or starting channel if size>1
* @param[in] size - the number of channels to calibrate.
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
*/
int Vdaa_ADCCal (vdaaChanType_ptr pVdaa, int32 size);
/**
* @brief
* This function controls the Voice DAA digital hybrid.
*
* @param[in] pVdaa - which channel to set/unset
* @param[in] enable - TRUE: enable digital hybrid, FALSE: disable digital hybrid
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*
*/
int Vdaa_SetHybridEnable(vdaaChanType_ptr pVdaa, int enable);
/** @} VDAA_HW_INIT */
/*****************************************************************************/
/**
* @brief Execute a reset on a given channel/daisychain.
* @param[in] pVdaa - the channel to reset
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
* @deprecated Use @ref SiVoice_Reset
*/
int Vdaa_Reset (vdaaChanType *pVdaa);
/**
* @brief Enables watchdog timer
* @param[in] pVdaa - the channel to enable the watchdog
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*/
int Vdaa_EnableWatchdog(vdaaChanType_ptr pVdaa);
/**
* @brief Execute a soft reset on a given channel.
* @param[in] pVdaa - the channel to reset
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error.
*/
int Vdaa_SoftReset(vdaaChanType_ptr pVdaa);/** @} VDAA_INIT */
/**
* @brief
* This function returns back a string with the current version of the
* ProSLIC API.
*
* @details
* The string is in the following format MM.mm.vv[.rcX] format, where
* MM is the major number, mm is the minor number and vv is the sub-minor number.
* If this is a release candidate, a .RCx is tacked on - such as RC1 for release
* candidate 1.
*
* @retval char * - returns back a constant string.
*/
char *Vdaa_Version(void);
/** @} MISC */
/** @} VDAA_API */
#endif