| #include <Copyright.h> |
| /******************************************************************************** |
| * testApi.c |
| * |
| * DESCRIPTION: |
| * API test functions |
| * |
| * DEPENDENCIES: Platform. |
| * |
| * FILE REVISION NUMBER: |
| * |
| *******************************************************************************/ |
| #include "msSample.h" |
| |
| GT_STATUS advVctTest(GT_QD_DEV *dev, GT_LPORT port); |
| GT_STATUS getAdvExtendedStatus(GT_QD_DEV *dev, GT_LPORT port); |
| |
| void displayAdvVCTResult |
| ( |
| GT_ADV_CABLE_STATUS *cableStatus, |
| int channel |
| ) |
| { |
| int i; |
| |
| switch(cableStatus->cableStatus[channel]) |
| { |
| case GT_ADV_VCT_FAIL: |
| MSG_PRINT(("Advanced Cable Test Failed\n")); |
| break; |
| case GT_ADV_VCT_NORMAL: |
| MSG_PRINT(("Cable Test Passed. No problem found.\n")); |
| break; |
| case GT_ADV_VCT_IMP_GREATER_THAN_115: |
| MSG_PRINT(("Cable Test Passed. Impedance is greater than 115 Ohms.\n")); |
| MSG_PRINT(("Approximatly %i meters from the tested port.\n",cableStatus->u[channel].dist2fault)); |
| break; |
| case GT_ADV_VCT_IMP_LESS_THAN_85: |
| MSG_PRINT(("Cable Test Passed. Impedance is less than 85 Ohms.\n")); |
| MSG_PRINT(("Approximatly %i meters from the tested port.\n",cableStatus->u[channel].dist2fault)); |
| break; |
| case GT_ADV_VCT_OPEN: |
| MSG_PRINT(("Cable Test Passed. Open Cable.\n")); |
| MSG_PRINT(("Approximatly %i meters from the tested port.\n",cableStatus->u[channel].dist2fault)); |
| break; |
| case GT_ADV_VCT_SHORT: |
| MSG_PRINT(("Cable Test Passed. Shorted Cable.\n")); |
| MSG_PRINT(("Approximatly %i meters from the tested port.\n",cableStatus->u[channel].dist2fault)); |
| break; |
| case GT_ADV_VCT_CROSS_PAIR_SHORT: |
| MSG_PRINT(("Cable Test Passed.\n")); |
| for(i=0; i<GT_MDI_PAIR_NUM; i++) |
| { |
| if(cableStatus->u[channel].crossShort.channel[i] == GT_TRUE) |
| { |
| MSG_PRINT(("\tCross pair short with channel %i.\n",i)); |
| MSG_PRINT(("\tApproximatly %i meters from the tested port.\n", |
| cableStatus->u[channel].crossShort.dist2fault[i])); |
| } |
| } |
| break; |
| default: |
| MSG_PRINT(("Unknown Test Result.\n")); |
| break; |
| } |
| } |
| |
| /* Advanced VCT (TDR) */ |
| GT_STATUS advVctTest(GT_QD_DEV *dev, GT_LPORT port) |
| { |
| GT_STATUS status; |
| int i, j; |
| GT_ADV_VCT_MODE mode; |
| GT_ADV_CABLE_STATUS advCableStatus; |
| |
| GT_ADV_VCT_MOD mod[2] = { |
| GT_ADV_VCT_FIRST_PEAK, |
| GT_ADV_VCT_MAX_PEAK |
| }; |
| |
| char modeStr[2][32] = { |
| "(Adv VCT First PEAK)", |
| "(Adv VCT MAX PEAK)" |
| }; |
| |
| if (dev == 0) |
| { |
| MSG_PRINT(("GT driver is not initialized\n")); |
| return GT_FAIL; |
| } |
| |
| for (j=0; j<2; j++) |
| { |
| mode.mode=mod[j]; |
| mode.transChanSel=GT_ADV_VCT_TCS_NO_CROSSPAIR; |
| mode.sampleAvg = 0; |
| mode.peakDetHyst =0; |
| |
| /* |
| * Start and get Cable Test Result |
| */ |
| status = GT_OK; |
| if((status = gvctGetAdvCableDiag(dev,port, |
| mode,&advCableStatus)) != GT_OK) |
| { |
| MSG_PRINT(("gvctGetAdvCableDiag return Failed\n")); |
| return status; |
| } |
| |
| MSG_PRINT(("\nCable Test Result %s for Port %i\n", modeStr[j], (int)port)); |
| |
| for(i=0; i<GT_MDI_PAIR_NUM; i++) |
| { |
| MSG_PRINT(("MDI PAIR %i:\n",i)); |
| displayAdvVCTResult(&advCableStatus, i); |
| } |
| } |
| |
| return GT_OK; |
| } |
| |
| /* Advanced DSP VCT */ |
| GT_STATUS getAdvExtendedStatus(GT_QD_DEV *dev, GT_LPORT port) |
| { |
| GT_STATUS status; |
| GT_ADV_EXTENDED_STATUS extendedStatus; |
| int i; |
| char ch; |
| |
| if (dev == 0) |
| { |
| MSG_PRINT(("GT driver is not initialized\n")); |
| return GT_FAIL; |
| } |
| |
| /* |
| * Start getting Extended Information. |
| */ |
| if((status = gvctGetAdvExtendedStatus(dev,port, &extendedStatus)) != GT_OK) |
| { |
| MSG_PRINT(("gvctGetAdvExtendedStatus return Failed\n")); |
| return status; |
| } |
| |
| if (!extendedStatus.isValid) |
| { |
| MSG_PRINT(("Not able to get Extended Status.\n")); |
| MSG_PRINT(("Please check if 1000B-T Link is established on Port %i.\n",(int)port)); |
| return status; |
| } |
| |
| /* Pair Polarity */ |
| MSG_PRINT(("Pair Polarity:\n")); |
| for(i=0; i<GT_MDI_PAIR_NUM; i++) |
| { |
| MSG_PRINT(("MDI PAIR %i: %s\n",i, |
| (extendedStatus.pairPolarity[i] == GT_POSITIVE)?"Positive":"Negative")); |
| } |
| |
| /* Pair Swap */ |
| MSG_PRINT(("Pair Swap:\n")); |
| for(i=0; i<GT_MDI_PAIR_NUM; i++) |
| { |
| switch(extendedStatus.pairSwap[i]) |
| { |
| case GT_CHANNEL_A: |
| ch = 'A'; |
| break; |
| case GT_CHANNEL_B: |
| ch = 'B'; |
| break; |
| case GT_CHANNEL_C: |
| ch = 'C'; |
| break; |
| case GT_CHANNEL_D: |
| ch = 'D'; |
| break; |
| default: |
| MSG_PRINT(("Error: reported unknown Pair Swap %i\n",extendedStatus.pairSwap[i])); |
| ch = 'U'; |
| break; |
| } |
| |
| MSG_PRINT(("MDI PAIR %i: Channel %c\n",i,ch)); |
| } |
| |
| /* Pair Polarity */ |
| MSG_PRINT(("Pair Skew:\n")); |
| for(i=0; i<GT_MDI_PAIR_NUM; i++) |
| { |
| MSG_PRINT(("MDI PAIR %i: %ins\n",i,(int)extendedStatus.pairSkew[i])); |
| } |
| |
| /* Pair Polarity */ |
| MSG_PRINT(("Cable Len:\n")); |
| for(i=0; i<GT_MDI_PAIR_NUM; i++) |
| { |
| MSG_PRINT(("MDI PAIR %i: approximately %im\n",i,(int)extendedStatus.cableLen[i])); |
| } |
| |
| return GT_OK; |
| } |