blob: 91ae85cac34c6eb5465e25731d7708c1c41528ec [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0 */
/*
* Vdaa VoiceDAA interface header file
*
*
* 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.
*
*
*/
#ifndef VDAA_INTF_H
#define VDAA_INTF_H
#include "../config_inc/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 */
/* Macro substitution from Vdaa legacy API's to SiVoice API's */
#define Vdaa_createControlInterface SiVoice_createControlInterface
#define Vdaa_destroyControlInterface SiVoice_destroyControlInterface
#define Vdaa_createDevice SiVoice_createDevice
#define Vdaa_destroyDevice SiVoice_destroyDevice
#define Vdaa_createChannel SiVoice_createChannel
#define Vdaa_destroyChannel SiVoice_destroyChannel
#define Vdaa_setControlInterfaceCtrlObj SiVoice_setControlInterfaceCtrlObj
#define Vdaa_setControlInterfaceReset SiVoice_setControlInterfaceReset
#define Vdaa_setControlInterfaceWriteRAM SiVoice_setControlInterfaceWriteRAM
#define Vdaa_setControlInterfaceReadRAM SiVoice_setControlInterfaceReadRAM
#define Vdaa_setControlInterfaceWriteRegister SiVoice_setControlInterfaceWriteRegister
#define Vdaa_setControlInterfaceReadRegister SiVoice_setControlInterfaceReadRegister
#define Vdaa_setControlInterfaceTimerObj SiVoice_setControlInterfaceTimerObj
#define Vdaa_setControlInterfaceDelay SiVoice_setControlInterfaceDelay
#define Vdaa_setControlInterfaceSemaphore SiVoice_setControlInterfaceSemaphore
#define Vdaa_setControlInterfaceTimeElapsed SiVoice_setControlInterfaceTimeElapsed
#define Vdaa_setControlInterfaceGetTime SiVoice_setControlInterfaceGetTime
#define Vdaa_SWInitChan SiVoice_SWInitChan
#define Vdaa_setSWDebugMode SiVoice_setSWDebugMode
#define Vdaa_getErrorFlag SiVoice_getErrorFlag
#define Vdaa_clearErrorFlag SiVoice_clearErrorFlag
#define Vdaa_setChannelEnable SiVoice_setChannelEnable
#define Vdaa_getChannelEnable SiVoice_getChannelEnable
#define Vdaa_Reset SiVoice_Reset
#define Vdaa_Version SiVoice_Version
#define SI3050_CHAN_PER_DEVICE 1
/*
**
** 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 = 2,
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;
/** @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_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.
*
*/
int Vdaa_SetLoopbackMode(vdaaChanType_ptr pVdaa, tLpbkMode lpbk_mode,
tLpbkStatus lpbk_status);
/*****************************************************************************/
/** @} 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 line side 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 Volts
* @param[in,out] iloop - Pointer to loop current variable (set by this function) - in mA
* @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 (V)
* @param[in] minOffV - minimum offhook loop voltage that indicates no parallel handset is present (V)
* @param[in] minOffI - minimum offhook loop current that indicates no parallel handset is preset (mA)
* @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 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 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_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 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 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 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 */
/** @} MISC */
/** @} VDAA_API */
#endif