/* | |
** Copyright (c) 2011 by Silicon Laboratories | |
** | |
** proslic_tstin.h | |
** | |
** Author(s): | |
** cdp | |
** | |
** 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 inward test implementations. | |
** | |
** Dependancies: | |
** si_voice_datatypes.h. proslic.h | |
** | |
*/ | |
#ifndef PROSLIC_TSTIN_H | |
#define PROSLIC_TSTIN_H | |
#include "si_voice_datatypes.h" | |
#include "proslic.h" | |
/** @addtogroup DIAGNOSTICS | |
* @{ | |
*/ | |
/** @defgroup PROSLIC_TSTIN ProSLIC Inward Tests (Test-In) | |
* This section documents functions and datastructures related to the | |
* ProSLIC/FXS inward test implementations. | |
* @{ | |
*/ | |
#define MIN_RINGING_SAMPLES 16 /**< Minimum number of ringing samples for measuring ring amplitude */ | |
#define MAX_RINGING_SAMPLES 255 /**< Maximum number of ringing samples for measuring ring amplitude */ | |
#define MIN_RINGING_SAMPLE_INTERVAL 1 /**< Minimum sample interval for measuring ring amplitude */ | |
#define MAX_RINGING_SAMPLE_INTERVAL 10 /**< Maximum sample interval for measuring ring amplitude */ | |
/** | |
* Test-In results status | |
*/ | |
enum { | |
TSTIN_RESULTS_INVALID, | |
TSTIN_RESULTS_VALID | |
}; | |
/** | |
* PCM format options | |
*/ | |
enum { | |
PCM_8BIT, | |
PCM_16BIT | |
}; | |
/** | |
* Abort if Line-in-use option | |
*/ | |
enum { | |
ABORT_LIU_DISABLED, | |
ABORT_LIU_ENABLED | |
}; | |
/** | |
* Check for loop closure option | |
*/ | |
enum { | |
LCR_CHECK_DISABLED, | |
LCR_CHECK_ENABLED | |
}; | |
/** | |
* Check for ringtrip option | |
*/ | |
enum { | |
RTP_CHECK_DISABLED, | |
RTP_CHECK_ENABLED | |
}; | |
/** | |
* Defines generic test limit/value/status structure | |
*/ | |
typedef struct { | |
int32 lowerLimit; /**< Lower test limit */ | |
int32 upperLimit; /**< Upper test limit */ | |
int32 value; /**< Numeric test result */ | |
uInt8 testResult; /**< 0 - Fail, 1 - pass */ | |
}proslicTestObj; | |
/** | |
* Defines structure for PCM Loopback Test | |
*/ | |
typedef struct { | |
BOOLEAN testEnable; /**< Gate execution/updating of results with this flag */ | |
BOOLEAN pcmLpbkEnabled; /**< Indicates if test data is valid (1) or stale (0) */ | |
BOOLEAN pcm8BitLinear; /**< Set to use 8 bit linear mode (used if normally using ulaw or alaw) */ | |
uInt8 pcmModeSave; /**< Store entry PCMMODE value */ | |
uInt8 testResult; /**< OR of all test results in this structure */ | |
}proslicPcmLpbkTest; | |
/** | |
* Defines structure for DC Feed Test | |
*/ | |
typedef struct { | |
BOOLEAN testEnable; /**< Gate execution/updating of results with this flag */ | |
BOOLEAN testDataValid; /**< Indicates if test data is valid (1) or stale (0) */ | |
BOOLEAN abortIfLineInUse; /**< Abort test if LCR set at the start of test. Leaves results invalid */ | |
BOOLEAN applyLcrThresh; /**< Apply alternate LCR thresholds to ensure LCR event occurs */ | |
uInt32 altLcrOffThresh; /**< Optional LCROFFHK threshold to apply during test */ | |
uInt32 altLcrOnThresh; /**< Optional LCRONHK threshold to apply during test */ | |
BOOLEAN lcrStatus; /**< Indicates LCR status after applying test load */ | |
proslicTestObj dcfeedVtipOnhook; /**< On-hook VTIP test results */ | |
proslicTestObj dcfeedVringOnhook; /**< On-hook VRING test results */ | |
proslicTestObj dcfeedVloopOnhook; /**< On-hook VLOOP test results */ | |
proslicTestObj dcfeedVbatOnhook; /**< On-hook VBAT test results */ | |
proslicTestObj dcfeedItipOnhook; /**< On-hook ITIP test results */ | |
proslicTestObj dcfeedIringOnhook; /**< On-hook IRING test results */ | |
proslicTestObj dcfeedIloopOnhook; /**< On-hook ILOOP test results */ | |
proslicTestObj dcfeedIlongOnhook; /**< On-hook ILONG test results */ | |
proslicTestObj dcfeedVtipOffhook; /**< Off-hook VTIP test results */ | |
proslicTestObj dcfeedVringOffhook; /**< Off-hook VRING test results */ | |
proslicTestObj dcfeedVloopOffhook; /**< Off-hook VLOOP test results */ | |
proslicTestObj dcfeedVbatOffhook; /**< Off-hook VBAT test results */ | |
proslicTestObj dcfeedItipOffhook; /**< Off-hook ITIP test results */ | |
proslicTestObj dcfeedIringOffhook; /**< Off-hook IRING test results */ | |
proslicTestObj dcfeedIloopOffhook; /**< Off-hook ILOOP test results */ | |
proslicTestObj dcfeedIlongOffhook; /**< Off-hook ILONG test results */ | |
uInt8 testResult; /**< OR of all test results in this structure */ | |
}proslicDcFeedTest; | |
/** | |
* Defines structure for Ringing Test | |
*/ | |
typedef struct { | |
BOOLEAN testEnable; /**< Gate execution/updating of results with this flag */ | |
BOOLEAN testDataValid; /**< Indicates if test data is valid (1) or stale (0) */ | |
BOOLEAN abortIfLineInUse; /**< Abort test if LCR set at the start of test. Leaves results invalid */ | |
uInt16 numSamples; /**< Number of samples taken */ | |
uInt8 sampleInterval; /**< Sample interval (in ms - range 1 to 100) */ | |
BOOLEAN ringtripTestEnable; /**< Enable ringtrip test */ | |
BOOLEAN rtpStatus; /**< RTP Bit */ | |
proslicTestObj ringingVac; /**< Ringing AC Voltage test results */ | |
proslicTestObj ringingVdc; /**< Ringing DC Voltage test results */ | |
uInt8 testResult; /**< OR of all test results in this structure */ | |
}proslicRingingTest; | |
/** | |
* Defines structure for Battery Test | |
*/ | |
typedef struct { | |
BOOLEAN testEnable; /**< Gate execution/updating of results with this flag */ | |
BOOLEAN testDataValid; /**< Indicates if test data is valid (1) or stale (0) */ | |
proslicTestObj vbat; /**< VBAT test results */ | |
uInt8 testResult; /**< OR of all test results in this structure */ | |
}proslicBatteryTest; | |
/** | |
* Defines structure for Audio Test | |
*/ | |
typedef struct { | |
BOOLEAN testEnable; /**< Gate execution/updating of results with this flag */ | |
BOOLEAN testDataValid; /**< Indicates if test data is valid (1) or stale (0) */ | |
BOOLEAN abortIfLineInUse; /**< Abort test if LCR set at the start of test. Leaves results invalid */ | |
int32 zerodBm_mVpk; /**< 0dBm voltage (in mVpk) of ref impedance */ | |
proslicTestObj txGain; /**< TX path gain test results */ | |
proslicTestObj rxGain; /**< RX path gain test results */ | |
uInt8 testResult; /**< OR of all test results in this structure */ | |
}proslicAudioTest; | |
/** | |
* Defines structure for all tests | |
*/ | |
typedef struct { | |
proslicPcmLpbkTest pcmLpbkTest; | |
proslicDcFeedTest dcFeedTest; | |
proslicRingingTest ringingTest; | |
proslicBatteryTest batteryTest; | |
proslicAudioTest audioTest; | |
}proslicTestInObjType; | |
typedef proslicTestInObjType *proslicTestInObjType_ptr; | |
/** | |
* @brief | |
* Allocate memory and initialize the given structure. | |
* | |
* @param[in,out] *pTstin - the structure to initialize | |
* | |
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error. | |
*/ | |
int ProSLIC_createTestInObj(proslicTestInObjType_ptr *pTstin); | |
/** | |
* @brief | |
* Free memory reserved by the given structure. | |
* | |
* @param[in,out] *pTstin - the structure to initialize | |
* | |
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error. | |
*/ | |
int ProSLIC_destroyTestInObj(proslicTestInObjType_ptr *pTstin); | |
/** | |
* @brief | |
* Enable PCM loopback. | |
* | |
* @param[in] pProslic - channel data structure | |
* @param[in,out] pTstin->pcmLpbkTest - all control, limits, and results | |
* | |
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error. | |
*/ | |
int ProSLIC_testInPCMLpbkEnable(proslicChanType_ptr pProslic, proslicTestInObjType_ptr pTstin); | |
/** | |
* @brief | |
* Disable PCM loopback. | |
* | |
* @param[in] pProslic - channel data structure | |
* @param[in,out] pTstin->pcmLpbkTest - all control, limits, and results | |
* | |
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error. | |
*/ | |
int ProSLIC_testInPCMLpbkDisable(proslicChanType_ptr pProslic, proslicTestInObjType_ptr pTstin); | |
/** | |
* @brief | |
* DC Feed Test | |
* | |
* @param[in] pProslic - channel data structure | |
* @param[in,out] pTstin->dcFeedTest - all control, limits, and results | |
* | |
* @retval int - error from @ref errorCodeType | |
* @retval RC_TEST_PASSED indicates test completed and passed | |
* @retval RC_TEST_FAILED indicates test completed and failed | |
* @retval RC_UNSUPPORTED_FEATURE indicates feature not supported on this device | |
* @retval RC_TEST_DISABLED indicates test has not been initialized/enabled | |
* @retval RC_LINE_IN_USE indicates LCS already set | |
* | |
*/ | |
int ProSLIC_testInDCFeed(proslicChanType_ptr pProslic, proslicTestInObjType_ptr pTstin); | |
/** | |
* @brief | |
* Ringing and Ringtrip Test | |
* | |
* @param[in] pProslic - channel data structure | |
* @param[in,out] pTstin->ringingTest - all control, limits, and results | |
* | |
* @retval int - error from @ref errorCodeType | |
* @retval RC_TEST_PASSED indicates test completed and passed | |
* @retval RC_TEST_FAILED indicates test completed and failed | |
* @retval RC_UNSUPPORTED_FEATURE indicates feature not supported on this device | |
* @retval RC_TEST_DISABLED indicates test has not been initialized/enabled | |
* @retval RC_LINE_IN_USE indicates LCS already set | |
* | |
*/ | |
int ProSLIC_testInRinging(proslicChanType_ptr pProslic, proslicTestInObjType_ptr pTstin); | |
/** | |
* @brief | |
* Battery Test | |
* | |
* @param[in] **pTstin - the structure to initialize | |
* @param[out] **pTstin->batteryTest.testResult - Pass/Fail Result | |
* | |
* @retval int - error from @ref errorCodeType | |
* @retval RC_TEST_PASSED indicates test completed and passed | |
* @retval RC_TEST_FAILED indicates test completed and failed | |
* @retval RC_UNSUPPORTED_FEATURE indicates feature not supported on this device | |
* @retval RC_TEST_DISABLED indicates test has not been initialized/enabled | |
* | |
*/ | |
int ProSLIC_testInBattery(proslicChanType_ptr pProslic, proslicTestInObjType_ptr pTstin); | |
/** | |
* @brief | |
* Audio level inward test. | |
* | |
* @param[in] pProslic - channel data structure | |
* @param[in,out] pTstin->audioTest - all control, limits, and results | |
* | |
* @retval int - error from @ref errorCodeType | |
* @retval RC_TEST_PASSED indicates test completed and passed | |
* @retval RC_TEST_FAILED indicates test completed and failed | |
* @retval RC_UNSUPPORTED_FEATURE indicates feature not supported on this device | |
* @retval RC_TEST_DISABLED indicates test has not been initialized/enabled | |
* @retval RC_LINE_IN_USE indicates LCS already set | |
* | |
*/ | |
int ProSLIC_testInAudio(proslicChanType_ptr pProslic, proslicTestInObjType_ptr pTstin); | |
/** | |
* @brief | |
* Initialize/Enable PCM Loopback Test. Links test config/limits | |
* to inward test data structure. | |
* | |
* @param[in,out] pTstin->pcmLpbkTest - all control, limits, and results | |
* @param[in] pcmLpbkTest - test config and limits to link to pTstin->pcmLpbkTest | |
* | |
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error. | |
*/ | |
int ProSLIC_testInPcmLpbkSetup(proslicTestInObjType *pTstin, proslicPcmLpbkTest *pcmLpbkTest); | |
/** | |
* @brief | |
* Initialize/Enable DC Feed Test. Links test config/limits | |
* to inward test data structure. | |
* | |
* @param[in,out] pTstin->dcFeedTest - all control, limits, and results | |
* @param[in] dcFeedTest - test config and limits to link to pTstin->dcFeedTest | |
* | |
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error. | |
*/ | |
int ProSLIC_testInDcFeedSetup(proslicTestInObjType *pTstin,proslicDcFeedTest *dcFeedTest); | |
/** | |
* @brief | |
* Initialize/Enable Ringing Test. Links test config/limits | |
* to inward test data structure. | |
* | |
* @param[in,out] pTstin->ringingTest - all control, limits, and results | |
* @param[in] ringingTest - test config and limits to link to pTstin->ringingTest | |
* | |
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error. | |
*/ | |
int ProSLIC_testInRingingSetup(proslicTestInObjType *pTstin, proslicRingingTest *ringingTest); | |
/** | |
* @brief | |
* Initialize/Enable Battery Test. Links test config/limits | |
* to inward test data structure. | |
* | |
* @param[in,out] pTstin->batteryTest - all control, limits, and results | |
* @param[in] batteryTest - test config and limits to link to pTstin->batteryTest | |
* | |
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error. | |
*/ | |
int ProSLIC_testInBatterySetup(proslicTestInObjType *pTstin, proslicBatteryTest *batteryTest); | |
/** | |
* @brief | |
* Initialize/Enable Audio Test. Links test config/limits | |
* to inward test data structure. | |
* | |
* @param[in,out] pTstin->audioTest - all control, limits, and results | |
* @param[in] audioTest - test config and limits to link to pTstin->audioTest | |
* | |
* @retval int - error from @ref errorCodeType @ref RC_NONE indicates no error. | |
*/ | |
int ProSLIC_testInAudioSetup(proslicTestInObjType *pTstin, proslicAudioTest *audioTest); | |
/** | |
* @brief | |
* Debug utility to log presently loaded test limits | |
* | |
* @param[in] pProslic - channel data structure | |
* @param[in] pTstin - inward test data structure | |
* | |
* @retval int - error from @ref errorCodeType | |
* @retval RC_NONE indicates no error. | |
* @retval RC_UNSUPPORTED_FEATURE indicates feature not supported on this device | |
*/ | |
int ProSLIC_testInPrintLimits(proslicChanType *pProslic,proslicTestInObjType *pTstin); | |
/** @} PROSLIC_TSTIN */ | |
/** @} DIAGNOSTICS */ | |
#endif |