blob: f1d21e78b207d779decd4014ace7fe253f11d1f2 [file] [log] [blame]
#include <Copyright.h>
/********************************************************************************
* cableTest.c
*
* DESCRIPTION:
* This sample shows how to run Virtual Cable Test and how to use the
* test result.
*
* DEPENDENCIES:
*
* FILE REVISION NUMBER:
*
* COMMENTS:
*******************************************************************************/
#include "msSample.h"
void sampleDisplayCableTestResult
(
GT_TEST_STATUS *cableStatus,
GT_CABLE_LEN *cableLen
)
{
switch(*cableStatus)
{
case GT_TEST_FAIL:
MSG_PRINT(("Cable Test Failed\n"));
break;
case GT_NORMAL_CABLE:
MSG_PRINT(("Cable Test Passed. No problem found.\n"));
switch(cableLen->normCableLen)
{
case GT_LESS_THAN_50M:
MSG_PRINT(("Cable Length is less than 50M.\n"));
break;
case GT_50M_80M:
MSG_PRINT(("Cable Length is between 50M and 80M.\n"));
break;
case GT_80M_110M:
MSG_PRINT(("Cable Length is between 80M and 110M.\n"));
break;
case GT_110M_140M:
MSG_PRINT(("Cable Length is between 110M and 140M.\n"));
break;
case GT_MORE_THAN_140:
MSG_PRINT(("Cable Length is over 140M.\n"));
break;
default:
MSG_PRINT(("Cable Length is unknown.\n"));
break;
}
break;
case GT_IMPEDANCE_MISMATCH:
MSG_PRINT(("Cable Test Passed. Cable has Impedance Mismatch .\n"));
MSG_PRINT(("Approximatly %i meters from the tested port.\n",cableLen->errCableLen));
break;
case GT_OPEN_CABLE:
MSG_PRINT(("Cable Test Passed. Cable is open.\n"));
MSG_PRINT(("Approximatly %i meters from the tested port.\n",cableLen->errCableLen));
break;
case GT_SHORT_CABLE:
MSG_PRINT(("Cable Test Passed. Cable is short.\n"));
MSG_PRINT(("Approximatly %i meters from the tested port.\n",cableLen->errCableLen));
break;
default:
MSG_PRINT(("Unknown Test Result.\n"));
break;
}
}
GT_STATUS sampleCableTest(GT_QD_DEV *dev,GT_LPORT port)
{
GT_STATUS status;
GT_CABLE_STATUS cableStatus;
int i;
/*
* Start and get Cable Test Result
*/
if((status = gvctGetCableDiag(dev,port, &cableStatus)) != GT_OK)
{
MSG_PRINT(("gvctGetCableDiag return Failed\n"));
return status;
}
MSG_PRINT(("Cable Test Result for Port %i\n",port));
if(cableStatus.phyType == PHY_100M)
{
MSG_PRINT(("RX PAIR :\n"));
sampleDisplayCableTestResult(&cableStatus.cableStatus[MDI_RX_PAIR],
&cableStatus.cableLen[MDI_RX_PAIR]);
MSG_PRINT(("TX PAIR :\n"));
sampleDisplayCableTestResult(&cableStatus.cableStatus[MDI_TX_PAIR],
&cableStatus.cableLen[MDI_TX_PAIR]);
}
else /* phyType must be PHY_1000M */
{
for(i=0; i<GT_MDI_PAIR_NUM; i++)
{
MSG_PRINT(("MDI PAIR %i:\n",i));
sampleDisplayCableTestResult(&cableStatus.cableStatus[i],
&cableStatus.cableLen[i]);
}
}
return GT_OK;
}