blob: c5688e89cf2352d198fd7638814756dfdfbbdb4f [file] [log] [blame]
/** \file vp_CSLAC_types.h
* vp_CSLAC_types.h
*
* Header file for internal variables used in CSLAC type API.
*
* Copyright (c) 2010, Zarlink Semiconductor, Inc.
*
* $Revision: 8533 $
* $LastChangedDate: 2011-04-21 11:11:31 -0500 (Thu, 21 Apr 2011) $
*/
#ifndef VP_CSLAC_TYPES_H
#define VP_CSLAC_TYPES_H
#include "vp_api_fxo_params.h"
#include "vp_api_timer.h"
#define VP_CSLAC_DEV_PROFILE_VERSION_INT_SW_CONFIG_FR 5
#define VP_CSLAC_DEV_PROFILE_VERSION_INT_SW_CONFIG 4
#define VP_CSLAC_DEV_PROFILE_VERSION_LINECARD_PARAM 3
#define VP_CSLAC_DEV_PROFILE_VERSION_VBH_REG 2
#define VP_CSLAC_DEV_PROFILE_VERSION_SW_CONFIG 1
#define VP_CSLAC_FXO_VERSION_DTMF_LEVEL 1
#define VP_CSLAC_FXO_VERSION_POH 2
#define VP_CSLAC_DC_PROFILE_VERSION_890 1
#define VP_CSLAC_RING_PROFILE_VERSION_890 1
#define VP_CSLAC_TICKSTEP_0_5MS 0x80 /**< CSLAC Tickrate for 0.5mS */
#define VP_CID_TIMESCALE 1 /**< Timescale in mS for CID time data */
#define VP_CSLAC_DEV_PROF_TABLE_SIZE 1
#define VP_CSLAC_AC_PROF_TABLE_SIZE 2
#define VP_CSLAC_DC_PROF_TABLE_SIZE 2
#define VP_CSLAC_RINGING_PROF_TABLE_SIZE 2
#define VP_CSLAC_TONE_CADENCE_PROF_TABLE_SIZE 11
#define VP_CSLAC_TONE_PROF_TABLE_SIZE 10
#define VP_CSLAC_RING_CADENCE_PROF_TABLE_SIZE 4
#define VP_CSLAC_METERING_PROF_TABLE_SIZE 2
#define VP_CSLAC_CALLERID_PROF_TABLE_SIZE 2
#define VP_CSLAC_FXO_CONFIG_PROF_TABLE_SIZE 1
#define VP_CSLAC_CUSTOM_TERM_PROF_TABLE_SIZE 4
#define VP_CSLAC_STD_TONE 0
#define VP_CSLAC_HOWLER_TONE 4
#define VP_CSLAC_AUS_HOWLER_TONE 8
#define VP_CSLAC_NTT_HOWLER_TONE 12
#define VP_CSLAC_TONE_TYPE 5
#define VP_CSLAC_READ_RESPONSE_MASK (VP_LINE_EVID_LLCMD_RX_CMP \
| VP_LINE_EVID_RD_OPTION \
| VP_LINE_EVID_GAIN_CMP)
typedef struct {
VpProfilePtrType pDevProfileTable[VP_CSLAC_DEV_PROF_TABLE_SIZE];
VpProfilePtrType pAcProfileTable[VP_CSLAC_AC_PROF_TABLE_SIZE];
VpProfilePtrType pDcProfileTable[VP_CSLAC_DC_PROF_TABLE_SIZE];
VpProfilePtrType pRingingProfileTable[VP_CSLAC_RINGING_PROF_TABLE_SIZE];
VpProfilePtrType pToneCadProfileTable[VP_CSLAC_TONE_CADENCE_PROF_TABLE_SIZE];
VpProfilePtrType pToneProfileTable[VP_CSLAC_TONE_PROF_TABLE_SIZE];
VpProfilePtrType pRingingCadProfileTable[VP_CSLAC_RING_CADENCE_PROF_TABLE_SIZE];
VpProfilePtrType pMeteringProfileTable[VP_CSLAC_METERING_PROF_TABLE_SIZE];
VpProfilePtrType pCallerIdProfileTable[VP_CSLAC_CALLERID_PROF_TABLE_SIZE];
VpProfilePtrType pFxoConfigProfileTable[VP_CSLAC_FXO_CONFIG_PROF_TABLE_SIZE];
VpProfilePtrType pCustomTermProfileTable[VP_CSLAC_CUSTOM_TERM_PROF_TABLE_SIZE];
} VpCSLACDeviceProfileTableType;
/**
* The following structure is used by the device as a bitmask indicating
* whether or not a given profile table entry is valid. In the bit location a
* value '1' = profile is current, '0' = profile is not current.
*/
typedef struct {
uint16 devProfEntry;
uint16 acProfEntry;
uint16 dcProfEntry;
uint16 ringingProfEntry;
uint16 toneCadProfEntry;
uint16 toneProfEntry;
uint16 ringCadProfEntry;
uint16 meterProfEntry;
uint16 cidCadProfEntry;
uint16 fxoConfigProfEntry;
uint16 customTermProfEntry;
} VpCSLACProfileTableEntryType;
#define VP_PROF_ENTRY_INVALID 0
#define VP_PROF_ENTRY_VALID 1
typedef union {
VpOptionCriticalFltType criticalFaultOption;
VpOptionEventMaskType eventMaskOption;
VpOptionPulseModeType pulseModeOption;
VpOptionPulseType pulseTypeOption;
VpOptionRingControlType ringControlOption;
VpOptionZeroCrossType zeroCross;
VpOptionTimeslotType timeSlotOption;
VpOptionCodecType codecOption;
VpOptionPcmHwyType pcmHwyOption;
VpOptionLoopbackType loopBackOption;
VpOptionLineStateType lineStateOption;
VpOptionPcmTxRxCntrlType pcmTxRxCtrl;
VpDeviceIoAccessDataType deviceIoData;
VpOptionDeviceIoType deviceIo;
VpLoopCondResultsType loopCond;
bool autoShutdownEn;
VpOptionAbsGainType absGain;
} VpGetResultsOptionsDataType;
typedef struct {
VpGetResultsOptionsDataType optionData;
uint8 chanId;
VpOptionIdType optionType;
} VpGetResultsOptionsType;
#define VP_CID_DTMF_ON_TIME 70 /**< Nominal 70mS +/- 5mS */
#define VP_CID_DTMF_OFF_TIME 70 /**< Minimum 65mS */
typedef enum {
VP_CID_GENERATOR_DATA,
VP_CID_GENERATOR_KEYED_CHAR,
VP_CID_SIGGEN_EOT,
VP_CID_NO_CHANGE, /**< Load tones only, do not change generator
* state
*/
VP_CID_GENERATOR_MARKOUT,
VP_CID_CTRL_TYPE_CNT,
VP_CID_GENC_ENUM_SIZE = FORCE_STANDARD_C_ENUM_SIZE /* Portability Req.*/
} VpCidGeneratorControlType;
typedef enum {
VP_CID_RESET_VALUE = 0x0000,
VP_CID_IS_DEBOUNCE = 0x0001, /**< Set when debounce has expired */
VP_CID_CLIAWAITTONE = 0x0002,
VP_CID_REPEAT_MSG = 0x0004,
VP_CID_AWAIT_TONE = 0x0008, /**< Set if waiting for CPE ACK Tone */
VP_CID_TERM_FSK = 0x0010, /**< Set if stopping FSK generator */
VP_CID_END_OF_MSG = 0x0020, /**< Set if API detects an end of
* message in the buffered data
*/
VP_CID_FSK_GEN_VALID = 0x0040, /**< Set if FSK Generator is programmed
* for Caller ID signals.
*/
VP_CID_IN_PROGRESS = 0x0080, /**< Set if Caller ID is in progress */
VP_CID_ACTIVE_RING_SEQ = 0x0100, /**< Set if active CID Ring sequence */
VP_CID_PRIMARY_FULL = 0x0200, /**< Set when primary buffer contains
* CID data
*/
VP_CID_SECONDARY_FULL = 0x0400, /**< Set when secondary buffer contains
* CID data
*/
VP_CID_PRIMARY_IN_USE = 0x0800, /**< Set when primary buffer in use */
VP_CID_SECONDARY_IN_USE = 0x1000, /**< Set when secondary buffer in use */
VP_CID_WAIT_ON_ACTIVE = 0x2000, /**< Set when a "wait on" mode is
* active. Should only be cleared in
* the timer function (since currently
* support only for Wait on CID or time
*/
VP_CID_MID_CHECKSUM = 0x4000, /**< Set when a checksum value is being
* sent.
*/
VP_CID_MUTE_ON = 0x8000, /**< Set when a "Mute On" CID operator
* is active.
*/
VP_CID_FSK_ACTIVE = 0x10000 /**< Set while the FSK Generator is needed */
} VpCidStatusFlagType; /* Update "status" if this size increases */
typedef enum {
VP_CID_DTMF_RESET_VALUE = 0x0000,
VP_CID_ACTIVE_ON_TIME = 0x0001,
VP_CID_ACTIVE_OFF_TIME = 0x0002,
VP_CID_DTMFS_ENUM_SIZE = FORCE_STANDARD_C_ENUM_SIZE /* Portability Req.*/
} VpCidDtmfStatusType;
/** Caller ID variables used by the line */
typedef struct {
uint32 status; /**< 'OR'ed combination of VpCidStatusFlagType */
VpCidDtmfStatusType dtmfStatus; /**< Used only for DTMF CID Message Data */
uint16 cliTimer; /**< Time in increments of device ticks */
uint8 currentData; /**< Data to repeat on the line */
uint16 cidCheckSum; /**< Checksum to append to message data */
uint8 cliDebounceTime; /**< Hook debouce specified in device ticks */
VpProfilePtrType pCliProfile; /**< Currently running CID Profile */
VpDigitType cliDetectTone1;
VpDigitType cliDetectTone2;
uint8 cliMPIndex; /**< Current Index into primary message buffer */
uint8 cliMSIndex; /**< Current Index into secondary message buffer */
uint8 cliIndex; /**< Current Index into profile data */
uint8 primaryBuffer[VP_SIZEOF_CID_MSG_BUFFER];
uint8 secondaryBuffer[VP_SIZEOF_CID_MSG_BUFFER];
uint8 primaryMsgLen; /**< Length of data in the primary buffer */
uint8 secondaryMsgLen; /**< Length of data in the secondary buffer */
VpDigitType digitDet; /**< Stores the last DTMF digit detected during
* Caller ID (if enabled via tone detection).
*/
/*
* At the end of FSK Message Data, some systems require a mark-out time. As
* specified in the Profile Wizard, this is defined in # of bytes with each
* byte corresponding to 8.33ms (1200 baud with 1 start + 1 stop + 8 data
* bits = 10/1200 = 8.33ms).
*/
uint8 markOutByteCount; /* Retains the value specified in the profile */
uint8 markOutByteRemain; /* Current value remaining. Clean up when = 0 */
} VpCallerIdType;
typedef enum {
VP_CADENCE_RESET_VALUE = 0x0000,
VP_CADENCE_STATUS_ACTIVE = 0x0001,
VP_CADENCE_STATUS_BRANCHING = 0x0002,
VP_CADENCE_STATUS_MID_TIMER = 0x0004,
VP_CADENCE_STATUS_SENDSIG = 0x0008,
VP_CADENCE_STATUS_METERING = 0x0010,
VP_CADENCE_STATUS_BRANCHING_LVL2 = 0x0020,
VP_CADENCE_STATUS_IGNORE_POLARITY = 0x0040,
VP_CADENCE_STATUS_ENUM_SIZE = FORCE_STANDARD_C_ENUM_SIZE /* Portability Req.*/
} VpCadenceStatusType;
/** Variables to control the cadence on the line using the Sequencer */
#define VP_CSLAC_MAX_BRANCH_DEPTH 2
#define VP_CSLAC_BRANCH_LVL_0 0
#define VP_CSLAC_BRANCH_LVL_1 1
typedef struct {
VpProfilePtrType pActiveCadence; /**< Currently Active Cadence */
VpProfilePtrType pCurrentPos; /**< Current position in profile */
VpCadenceStatusType status;
uint8 index; /**< Index in the the cadence table */
uint8 length; /**< Length of executable cadence instructions */
/**< Remaining number of repeats to perform for each branch depth */
uint8 count[VP_CSLAC_MAX_BRANCH_DEPTH];
uint16 timeRemain;
uint8 branchAt; /**< Outermost step we're branching */
uint16 meteringBurst; /**< Tracks the number of metering pulses sent */
bool meterPendingAbort; /**< Indicates that metering should abort after the
* current pulse ends */
VpLineStateType meterAbortLineState; /**< The line state that should be set
* when metering aborts */
/* The following variables are for controlling signal generator ramp */
#define VPCSLAC_MAX_GENERATOR_DATA 11
uint8 regData[VPCSLAC_MAX_GENERATOR_DATA]; /**< Scratchpad to reduce MPI
* traffic.
*/
/*
* These values should correspond to device specific values for the
* freqency/level being set -- not a generic value.
*/
uint16 startFreq;
bool isFreqIncrease;
uint16 stopFreq;
uint16 freqStep; /**< Step size assumes a 50mS interval. */
uint16 startLevel;
uint16 stopLevel;
uint16 levelStep; /**< Step size assumes a 50mS interval. Note: It is
* possible to support a negative step, but the first
* use of this function is UK type howler tone which only
* increases in level.
*/
} VpSeqDataType;
/** Variables to control the CID sequence on the line using the CID Sequencer */
typedef struct {
VpProfilePtrType pActiveCadence; /**< Currently Active Cadence */
VpProfilePtrType pCurrentPos; /**< Current position in profile */
uint8 index; /**< Index in the the cadence table */
uint16 timeRemain;
} VpCidSeqDataType;
typedef VpStatusType
(*VpSeqInstructionFuncPtrType) (
VpLineCtxType *pLineCtx,
VpProfilePtrType pSequenceData);
#define VP_SEQ_OPERATOR_MASK 0xE0
#define VP_SEQ_SUBTYPE_MASK 0x1F
#define VP_SEQUENCER_TICKRATE 0x0500 /* 5mS - Used with MS_TO_TICKRATE */
/**< The super commands are the upper 3 bits of the command byte */
typedef enum {
VP_SEQ_SPRCMD_COMMAND_INSTRUCTION = 0x00,
VP_SEQ_SPRCMD_TIME_INSTRUCTION = 0x20,
VP_SEQ_SPRCMD_BRANCH_INSTRUCTION = 0x40,
VP_SEQ_SPRCMD_ENUM_SIZE = FORCE_STANDARD_C_ENUM_SIZE /* Portability Req.*/
} VpSeqSuperCommandsType;
/**< The sub commands are the lower 5 bits of the command byte */
typedef enum {
VP_SEQ_SUBCMD_SIGGEN = 0x00,
VP_SEQ_SUBCMD_LINE_STATE = 0x01,
VP_SEQ_SUBCMD_START_CID = 0x02,
VP_SEQ_SUBCMD_WAIT_ON = 0x07, /**< Wait for CID or time to continue */
VP_SEQ_SUBCMD_RAMP_GENERATORS = 0x08, /**< Forces frequency/amplitude
* change of the tone generator.
* Tone Cadence associated with this
* command must be specified as
* "ramp" type. The period between
* adjustments is fixed 50mS.
*/
/**< API Internal Use only operators */
VP_SEQ_SUBCMD_METERING = 0x10, /**< Cadence Metering */
VP_SEQ_SUBCMD_ENUM_SIZE = FORCE_STANDARD_C_ENUM_SIZE /* Portability Req.*/
} VpSeqSubCommandsType;
typedef enum {
VP_SEQ_SIGGEN_ALL_DISABLED = 0x00,
VP_SEQ_SIGGEN_A_EN = 0x01,
VP_SEQ_SIGGEN_B_EN = 0x02,
VP_SEQ_SIGGEN_C_EN = 0x04,
VP_SEQ_SIGGEN_D_EN = 0x08,
VP_SEQ_SIGGEN_ENUM_SIZE = FORCE_STANDARD_C_ENUM_SIZE /* Portability Req.*/
} VpSeqSigGenCtrlType;
typedef uint8 VpProfileCadencerStateTypes;
#define VP_PROFILE_CADENCE_STATE_STANDBY (0)
#define VP_PROFILE_CADENCE_STATE_TIP_OPEN (1)
#define VP_PROFILE_CADENCE_STATE_TALK (2)
#define VP_PROFILE_CADENCE_STATE_ACTIVE (3)
#define VP_PROFILE_CADENCE_STATE_RSVD (4)
#define VP_PROFILE_CADENCE_STATE_OHT (5)
#define VP_PROFILE_CADENCE_STATE_DISCONNECT (6)
#define VP_PROFILE_CADENCE_STATE_RINGING (7)
#define VP_PROFILE_CADENCE_STATE_POLREV_STANDBY (8)
#define VP_PROFILE_CADENCE_STATE_POLREV_TIP_OPEN (9)
#define VP_PROFILE_CADENCE_STATE_POLREV_TALK (10)
#define VP_PROFILE_CADENCE_STATE_POLREV_ACTIVE (11)
#define VP_PROFILE_CADENCE_STATE_POLREV_RSVD (12)
#define VP_PROFILE_CADENCE_STATE_POLREV_OHT (13)
#define VP_PROFILE_CADENCE_STATE_POLREV_DISCONNECT (14)
#define VP_PROFILE_CADENCE_STATE_POLREV_RINGING (15)
#define VP_PROFILE_CADENCE_STATE_FXO_OHT (16)
#define VP_PROFILE_CADENCE_STATE_FXO_LOOP_OPEN (17)
#define VP_PROFILE_CADENCE_STATE_FXO_LOOP_CLOSE (18)
#define VP_PROFILE_CADENCE_STATE_FXO_LOOP_TALK (19)
#define VP_PROFILE_CADENCE_STATE_MSG_WAIT_NORM (20)
#define VP_PROFILE_CADENCE_STATE_MSG_WAIT_POLREV (21)
/* struct VpDialPulseDetectType is for FXS lines when detecting digits */
typedef enum {
VP_DP_DETECT_STATE_LOOP_OPEN = 0,
VP_DP_DETECT_STATE_LOOP_CLOSE = 1,
VP_DP_DETECT_STATE_IDLE = 2
} VpDialPulseDetectStatesType;
typedef struct {
int digits;
uint16 lo_time;
uint16 lc_time;
VpDialPulseDetectStatesType state; /**< Dial Pulse State Machine state */
bool hookSt;
uint8 signalingData;
} VpDialPulseDetectType;
/* struct VpDigitGenerationDataType is for FXO lines when generating digits */
typedef struct {
uint16 dtmfOnTime;
uint16 dtmfOffTime;
uint8 breakTime;
uint8 makeTime;
uint16 flashTime;
uint16 dpInterDigitTime;
uint8 dtmfHighFreqLevel[2];
uint8 dtmfLowFreqLevel[2];
} VpDigitGenerationDataType;
/** Virtual Device Registers - Used to reduce MPI accesses to the Device */
typedef struct {
uint8 sigRegMSB; /**< Signaling Register's Most Significant byte */
uint8 sigRegLSB; /**< Signaling Register's Least Significant byte */
uint8 iMaskMSB; /**< Interrupt mask for the current line */
uint8 iMaskLSB; /**< Interrupt mask for the current line */
uint8 iMaskMSBSP; /**< Interrupt mask for the current line */
uint8 iMaskLSBSP; /**< Interrupt mask for the current line */
uint8 ccR1SP;
uint8 ccR5SP; /**< Scratchpad for CCR5 used during metering */
uint8 ccR8SP; /**< Scratchpad for CCR8 used during calibration */
uint8 ioReg; /**< IO Register for QSLAC SLIC states */
} VpVirtualDeviceReg;
/*
* IMPORTANT: Make sure to update the type used for "state" member inside
* objects, structs, and passed to functions where the comment states the value
* is a bit-mask of "VpDeviceStateType". Seach by "VpDeviceStateType".
* There are no instance of this type itself.
*/
typedef enum {
/**< Indicates if function is running from InitDevice. Not the same as in
* the middle of an initialization process (including calibration). Used to
* allow InitDevice function calling other functions to be enabled. Otherwise,
* some functions will return "Device Not Initialized" error.
*/
VP_DEV_INIT_IN_PROGRESS = 0x0001,
VP_DEV_INIT_CMP = 0x0002, /**< Set if device has been initialized */
VP_DEV_IN_CAL = 0x0004, /**< Set if device is busy calibrating */
VP_DEV_PENDING_INT = 0x0008, /**< Set if there is a pending interrupt */
VP_DEV_ABS_BAT_CAL = 0x0010, /**< Set when running ABS (batt switch) Cal */
VP_DEV_ABV_CAL = 0x0020, /**< Set when running ABV Calibration on Tracker */
VP_DEV_ABV_CAL_ABS = 0x0040, /**< Set when running ABV Calibration on ABS */
VP_DEV_DISC_PENDING = 0x0080, /**< Set when a Disconnect Timer was suspsended */
VP_DEV_TEST_BUFFER_READ = 0x0100, /**< Set if test buffer was read this tick */
/**< Set if device in process of warm reboot. Note that warm reboot
* detection alone only helps skipping of VpCalCodec() because it is run
* with VpInitDevice(). But it does not ensure that VpCalLine() was
* previously run.
*/
VP_DEV_WARM_REBOOT = 0x0200
} VpDeviceStateType;
typedef struct {
uint16 state; /**< This is a bit-mask of VpDeviceStateType values */
uint8 globStatReg; /**< Holds state of the device stat reg */
uint8 calibrating; /**< Calibration timer */
uint8 numIntServiced; /**< Max interrupts to be serviced during tick */
} VpCSLACDeviceStatusType;
#define VP_CSLAC_MAX_RCN_PCN_SIZE 2
typedef struct {
uint8 rcnPcn[VP_CSLAC_MAX_RCN_PCN_SIZE]; /**< Revision Code Number and
* Product Code Number as
* applicable
*/
uint8 maxChannels; /**< How many lines supported by this device */
} VpDeviceStaticInfoType;
typedef struct {
uint8 lastChan; /**< The last line checked */
bool clkFault; /** TRUE if a clock fault is active */
bool bat1Fault; /** TRUE if a bat1 fault is active and device level */
bool bat2Fault; /** TRUE if a bat2 fault is active and device level */
bool bat3Fault; /** TRUE if a bat3 fault is active and device level */
} VpDeviceDynamicInfoType;
/** Line state variables used by the line (api internal) */
typedef enum {
VP_CSLAC_STATUS_INVALID = 0x0000,
/* FXS Type Status */
VP_CSLAC_HOOK = 0x0001,
VP_CSLAC_GKEY = 0x0002,
/* FXO Type Status */
VP_CSLAC_RAW_DISC = 0x0001, /*
* Set on 890 when device level disconnect
* status is set. Cleared otherwise.
*/
VP_CSLAC_RINGING = 0x0004, /**< Set when Ringing detected on Line */
VP_CSLAC_DISC = 0x0008, /**< Set when Disconnect detected on Line */
VP_CSLAC_AC_FLT = 0x0010,
VP_CSLAC_DC_FLT = 0x0020,
VP_CSLAC_THERM_FLT = 0x0040,
VP_CSLAC_CAL_ENABLE = 0x0080, /**< Set when the line is in a state that
* will allow device calibration
*/
VP_CSLAC_CAL_FAIL = 0x0100,
VP_CSLAC_POLREV = 0x0200,
VP_CSLAC_POLREV_REPORTED = 0x0400,
VP_CSLAC_LIU = 0x0800,
VP_CSLAC_LINE_LEAK_TEST = 0x1000, /**< Set when line is being tested for
* resistive leak. Clear when test is
* complete.
*/
VP_CSLAC_RING_AMP_DET = 0x2000,
VP_CSLAC_RINGING_EXIT = 0x4000, /**< Set when FXS line is exiting Ringing */
VP_CSLAC_STATUS_VALID = 0x8000
} VpCslacLineCondType;
typedef enum {
VP_CSLAC_CAL_NONE = 0x0000,
VP_CSLAC_CAL_VOC,
VP_CSLAC_CAL_VAG,
VP_CSLAC_CAL_VBG,
VP_CSLAC_CAL_ILA,
#ifdef VP880_TRACKER_SUPPORT
VP_CSLAC_CAL_VAS,
#endif
VP_CSLAC_CAL_ABV,
VP_CSLAC_CAL_CLEANUP,
VP_CSLAC_CAL_TYPE_SIZE,
VP_CSLAC_CAL_ENUM_SIZE = FORCE_STANDARD_C_ENUM_SIZE /* Portability Req.*/
} VpCslacCalType;
typedef struct {
VpLineStateType currentState; /**< Current state of the line */
VpLineStateType previous; /**< Previous sate of the line */
VpLineStateType usrCurrent; /**< Current user set state of the line */
VpCslacLineCondType condition;
VpCslacCalType calType;
} VpApiIntLineStateType;
typedef enum
{
VP_CUSTOM_TERM_SLIC_TYPE = 6,
VP_CUSTOM_TERM_NUM_STATES = 7,
VP_CUSTOM_TERM_ENUM_SIZE = FORCE_STANDARD_C_ENUM_SIZE /* Portability Req.*/
} vpCustomTermProfileParams;
typedef enum
{
VP_FXO_DIAL_PRFL_DTMF_ON_MSB = 6,
VP_FXO_DIAL_PRFL_DTMF_ON_LSB = 7,
VP_FXO_DIAL_PRFL_DTMF_OFF_MSB = 8,
VP_FXO_DIAL_PRFL_DTMF_OFF_LSB = 9,
VP_FXO_DIAL_PRFL_FLASH_HOOK_MSB = 10,
VP_FXO_DIAL_PRFL_FLASH_HOOK_LSB = 11,
VP_FXO_DIAL_PRFL_PULSE_BREAK = 12,
VP_FXO_DIAL_PRFL_PULSE_MAKE = 13,
VP_FXO_DIAL_PRFL_INTERDIG_MSB = 14,
VP_FXO_DIAL_PRFL_INTERDIG_LSB = 15,
VP_FXO_DIAL_PRFL_RING_PRD_MAX = 16,
VP_FXO_DIAL_PRFL_RING_PRD_MIN = 17,
VP_FXO_DIAL_PRFL_RING_VOLT_MIN = 18,
VP_FXO_DIAL_PRFL_DISC_VOLT_MIN = 19,
VP_FXO_DIAL_PRFL_LIU_THRESH_MIN = 20,
VP_FXO_DIAL_PRFL_RSVD = 21,
VP_FXO_DIAL_PRFL_ENUM_SIZE = FORCE_STANDARD_C_ENUM_SIZE /* Portability Req.*/
} vpCslac_fxo_dialPrflParams;
#endif