📄 cmdtest.c
字号:
art_rxGetStats(devNum, 0, remoteStats, &rStats);
uiPrintf("%3d", rStats.crcPackets);
if(rStats.crcPackets > testSetup.maxCRCAllowed) {
if(remoteStats) {
//means dut was doing transmit test
reasonFailMask |= (MASK_LINKTEST_TX_CRC_ANTA << antennaMaskOffset);
}
else {
//dut was doing a receive test
reasonFailMask |= (MASK_LINKTEST_RX_CRC_ANTA << antennaMaskOffset);
}
}
uiPrintf(" ");
if(!((testMode == MODE_11B) || ((testMode == MODE_11G) && ((swDeviceID & 0xff) >= 0x0013)))) {
uiPrintf("%3d", rStats.ppmAvg);
if((rStats.ppmAvg > testSetup.ppmMax) || (rStats.ppmAvg < testSetup.ppmMin)) {
if(remoteStats) {
//means dut was doing transmit test
reasonFailMask |= (MASK_LINKTEST_TX_PPM_ANTA << antennaMaskOffset);
}
else {
//dut was doing a receive test
reasonFailMask |= (MASK_LINKTEST_RX_PPM_ANTA << antennaMaskOffset);
}
}
}
//print the RSSI for llg if needed
if ((testMode == MODE_11G) &&
((swDeviceID & 0xff) >= 0x0013) && (turbo != TURBO_ENABLE) && (rateMask > 0xff)) {
uiPrintf("\n ");
for(j = 0; j < numLoops; j++) {
art_rxGetStats(devNum, DataRate[j], remoteStats, &rStats);
uiPrintf("(%2d)", rStats.DataSigStrengthAvg);
}
uiPrintf(" ");
}
return(reasonFailMask);
}
A_UINT32 broadcastTest
(
A_UINT32 devNum,
A_UINT32 testChannel,
A_UINT32 testMode,
A_UINT32 turbo,
A_UINT16 antenna
)
{
A_UCHAR pattern[] = {0xaa, 0x55};
RX_STATS_STRUCT rStats;
A_UINT16 index;
A_UINT32 i;
A_BOOL testFailed = 0;
A_INT32 rssiThreshold;
A_UINT32 reasonFailMask = 0;
A_UINT16 antennaMaskOffset = 0;
A_BOOL enablePPM = 1;
if(antenna == DESC_ANT_B) {
//shift masks by 1 to get to the B antenna mask
antennaMaskOffset = 1;
}
if((testMode == MODE_11B) || ((testMode == MODE_11G) && ((swDeviceID & 0xff) >= 0x0013))) {
enablePPM = 0;
}
switch(testMode) {
case MODE_11A:
switch(antenna) {
case DESC_ANT_A:
rssiThreshold = testSetup.rssiThreshold11a_antA;
break;
case DESC_ANT_B:
rssiThreshold = testSetup.rssiThreshold11a_antB;
break;
} //end switch antenna
break;
case MODE_11B:
switch(antenna) {
case DESC_ANT_A:
rssiThreshold = testSetup.rssiThreshold11b_antA;
break;
case DESC_ANT_B:
rssiThreshold = testSetup.rssiThreshold11b_antB;
break;
} //end switch antenna
break;
case MODE_11G:
switch(antenna) {
case DESC_ANT_A:
rssiThreshold = testSetup.rssiThreshold11g_antA;
break;
case DESC_ANT_B:
rssiThreshold = testSetup.rssiThreshold11g_antB;
break;
} //end switch antenna
break;
} //end switch mode
//start the receive test
art_setResetParams(devNum, configSetup.pCfgFile, (A_BOOL)configSetup.eepromLoad,
(A_BOOL)configSetup.eepromHeaderLoad, (A_UCHAR)testMode, configSetup.use_init);
for(i = 0; i < testSetup.numIterations; i++) {
art_resetDevice(devNum, dutStation, configSetup.beaconBSSID.octets, testChannel, turbo);
art_setAntenna(devNum, configSetup.antenna);
rxDataSetupFixedNumber(devNum, testSetup.numPackets, testSetup.packetSize, enablePPM);
rxDataBeginFixedNumber(devNum, testSetup.beaconTimeout, 0, 0, pattern, 2);
if (art_mdkErrNo!=0) {
reasonFailMask |= MASK_COMMS_FAILURE;
continue;
}
art_rxGetStats(devNum, 0, 0, &rStats);
uiPrintf("\nReceived %d good packets on BSSID ", rStats.goodPackets);
for (index = 0; index < 6; index++) {
uiPrintf("%02x ", configSetup.beaconBSSID.octets[index]);
}
uiPrintf("RSSI = %d ", rStats.DataSigStrengthAvg);
if(rStats.DataSigStrengthAvg < rssiThreshold) {
uiPrintf("FAILED\n");
testFailed = 1;
reasonFailMask = MASK_BEACON_RSSI_ANTA << antennaMaskOffset;
}
else {
uiPrintf("PASSED\n");
}
}
if (testFailed) {
uiPrintf("\nBeacon Test Failed. Error code %d \n", ERR_BEACON_RSSI_ANTA + antennaMaskOffset);
}
else {
uiPrintf("\nBeacon Test Passed, return code 0\n");
}
//restore the mode
art_setResetParams(devNum, configSetup.pCfgFile, (A_BOOL)configSetup.eepromLoad,
(A_BOOL)configSetup.eepromHeaderLoad, (A_UCHAR)configSetup.mode, configSetup.use_init);
return(reasonFailMask);
}
A_UINT32 throughputUpTest
(
A_UINT32 devNum,
A_UINT32 testChannel,
A_UINT32 testMode,
A_UINT32 turbo,
A_UINT16 antenna,
A_UINT16 goldAntenna
)
{
// rxDataSetup
A_UINT32 num_rx_desc = 50;
A_UINT32 rx_length = 100;
A_UINT32 enable_ppm = 0;
A_UINT32 stats_mode = ENABLE_STATS_RECEIVE;
// txrxDataBegin
A_UINT32 start_timeout = 0; // no wait time for transmit
A_UINT32 complete_timeout = 25000;
A_UINT32 compare = 0;
A_UCHAR pattern[] = {0xaa, 0x55};
A_UINT32 broadcast = 0;
A_UINT32 reasonFailMask = 0;
A_UINT32 iterationFailMask = 0;
A_UINT32 rateMask;
A_UINT32 currentRate;
A_UINT32 currentRateIndex;
A_UINT32 numPackets;
// A_UINT32 startTime = milliTime();
//start the transmit test
// uiPrintf("Good Packets Throughput RSSI Result Rate\n");
uiPrintf("Good Throughput Good RSSI CRCs Missed Result Rate\n");
uiPrintf("(Tx) (RX) (RX) (RX)\n");
rateMask = testSetup.dataRateMaskTP;
if(configSetup.enableXR) {
rateMask &= 0xf80ff;
}
else if(((swDeviceID & 0xff) < 0x0013) || (testMode != MODE_11G)) {
rateMask &= 0xff;
}
if(testMode == MODE_11B) {
rateMask &= 0xfd;
}
if((turbo == TURBO_ENABLE) && !configSetup.enableXR) {
rateMask &= 0xff;
}
//send wakeup call to golden unit
Sleep(1500);
dutSendWakeupCall(devNum, THROUGHPUT_UP_TEST, testChannel, testMode, turbo, goldAntenna, rateMask);
Sleep(2000); // delay between packet sends
if(testMode == MODE_11B){
numPackets = testSetup.numPacketsTP_CCK;
}
else {
numPackets = testSetup.numPacketsTP;
}
art_setResetParams(devNum, configSetup.pCfgFile, (A_BOOL)configSetup.eepromLoad,
(A_BOOL)configSetup.eepromHeaderLoad, (A_UCHAR)testMode, configSetup.use_init);
art_resetDevice(devNum, dutStation, bssID, testChannel, turbo);
//set the txPower if needed
forcePowerOrPcdac(devNum);
art_txDataSetup(devNum, rateMask | RATE_GROUP, goldenStation,
numPackets, testSetup.packetSizeTP, pattern, 2, 0, configSetup.antenna, broadcast);
if(art_mdkErrNo) {
uiPrintf("Error: Unable to setup packets for throughput test\n");
return(ERR_TEST_SETUP);
}
art_rxDataSetup(devNum, num_rx_desc, rx_length, enable_ppm);
art_txrxDataBegin(devNum, start_timeout, complete_timeout, stats_mode, compare, pattern, 2);
// if(art_mdkErrNo) {
// uiPrintf("Error: Throughput test did not complete\n");
// return(ERR_TEST_SETUP);
// }
// for(i = 0; i < testSetup.numIterations; i++) {
// uiPrintf("Starting transmit iteration number %d, out of %d\n", i, testSetup.numIterations);
rateMask = testSetup.dataRateMaskTP;
if(configSetup.enableXR) {
rateMask &= 0xf80ff;
}
else if(((swDeviceID & 0xff) < 0x0013) || (testMode != MODE_11G)) {
rateMask &= 0xff;
}
if(testMode == MODE_11B) {
rateMask &= 0xfd;
}
if((turbo == TURBO_ENABLE) && !configSetup.enableXR) {
rateMask &= 0xff;
}
currentRate = 0x01;
currentRateIndex = 0;
while(rateMask) {
if(currentRate & rateMask) {
iterationFailMask = analyzeThroughputResults(devNum, currentRateIndex, testMode, turbo, 0, antenna, testChannel, "up");
if(iterationFailMask) {
reasonFailMask |= iterationFailMask;
uiPrintf(" X:");
printFailLetters(iterationFailMask);
}
else {
uiPrintf(" ");
}
if(testMode != MODE_11B) {
uiPrintf(" %s", DataRateStr[currentRateIndex]);
if(turbo == TURBO_ENABLE) {
uiPrintf(" turbo");
}
uiPrintf("\n");
}
else {
uiPrintf(" %s\n", DataRate_11b[currentRateIndex]);
}
//uiPrintf("\n");
rateMask = rateMask & ~currentRate;
}
currentRate = currentRate << 1;
currentRateIndex++;
}
uiPrintf("\n");
// }
if(reasonFailMask) {
uiPrintf("\nThroughput Test FAIL, due to: \n");
printFailures(reasonFailMask);
uiPrintf("\n");
}
else {
uiPrintf("\nThroughput Test Pass, return code 0\n");
}
//restore the mode
art_setResetParams(devNum, configSetup.pCfgFile, (A_BOOL)configSetup.eepromLoad,
(A_BOOL)configSetup.eepromHeaderLoad, (A_UCHAR)configSetup.mode, configSetup.use_init);
if(configSetup.rangeLogging) {
fprintf(rangeLogFileHandle, "\n");
}
return(reasonFailMask);
}
A_UINT32 throughputDownTest
(
A_UINT32 devNum,
A_UINT32 testChannel,
A_UINT32 testMode,
A_UINT32 turbo,
A_UINT16 antenna,
A_UINT16 goldAntenna
)
{
// rxDataSetup
A_UINT32 num_rx_desc = 50;
A_UINT32 rx_length = 100;
A_UINT32 enable_ppm = 0;
A_UINT32 stats_mode = ENABLE_STATS_RECEIVE;
// txrxDataBegin
A_UINT32 start_timeout = 5000;
A_UINT32 complete_timeout = 15000;
A_UINT32 compare = 0;
A_UCHAR pattern[] = {0xaa, 0x55};
A_UINT32 broadcast = 0;
A_UINT32 reasonFailMask = 0;
A_UINT32 iterationFailMask = 0;
A_UINT32 rateMask;
A_UINT32 currentRate;
A_UINT32 currentRateIndex;
A_UINT32 numPackets;
A_UINT32 mask;
A_UINT32 numRates;
//start the transmit test
// uiPrintf("Good Packets Throughput RSSI Result Rate\n");
uiPrintf("Good Throughput Good RSSI CRCs Missed Result Rate\n");
uiPrintf("(Tx) (RX) (RX) (RX)\n");
Sleep(1500);
rateMask = testSetup.dataRateMaskTP;
if(configSetup.enableXR) {
rateMask &= 0xf80ff;
}
else if(((swDeviceID & 0xff) < 0x0013) || (testMode != MODE_11G)) {
rateMask &= 0xff;
}
if(testMode == MODE_11B) {
rateMask &= 0xfd;
}
if((turbo == TURBO_ENABLE) && !configSetup.enableXR) {
rateMask &= 0xff;
}
//send wakeup call to golden unit
dutSendWakeupCall(devNum, THROUGHPUT_DOWN_TEST, testChannel, testMode, turbo, goldAntenna, rateMask);
art_setResetParams(devNum, configSetup.pCfgFile, (A_BOOL)configSetup.eepromLoad,
(A_BOOL)configSetup.eepromHeaderLoad, (A_UCHAR)testMode, configSetup.use_init);
if(testMode == MODE_11B){
numPackets = testSetup.numPacketsTP_CCK;
}
else {
numPackets = testSetup.numPacketsTP;
}
art_resetDevice(devNum, dutStation, bssID, testChannel, turbo);
mask = 0x80000;
numRates = 0;
while(mask) {
if(mask & rateMask) {
numRates++;
}
mask >>= 1;
}
#ifdef _DEBUG
printf(" F2_DEF_ANT Antenna =%x F2_STA_ID1)=%x\n",REGR(devNum, 0x8058),REGR(devNum, F2_STA_ID1));
#endif
art_setAntenna(devNum,antenna);
#ifdef _DEBUG
printf(" Antenna =%x REGR(devNum, F2_STA_ID1)=%x\n",REGR(devNum, 0x8058),REGR(devNum, F2_STA_ID1));
#endif
art_rxDataSetup(devNum, (numPackets * numRates) + 40, testSetup.packetSizeTP, enable_ppm);
#ifdef _DEBUG
printf("ELSE Antenna =%x REGR(devNum, F2_STA_ID1)=%x\n",REGR(devNum, 0x8058),REGR(devNum, F2_STA_ID1));
#endif
if(art_mdkErrNo) {
uiPrintf("Error: Unable to setup packets for throughput test\n");
return(ERR_TEST_SETUP);
}
art_rxDataStart(devNum);
art_rxDataComplete(devNum, start_timeout, complete_timeout, stats_mode, 0, pattern, 2);
// if(art_mdkErrNo) {
// uiPrintf("Error: Throughput test did not complete\n");
// return(ERR_TEST_SETUP);
// }
// for(i = 0; i < testSetup.numIterations; i++) {
// uiPrintf("Starting transmit iteration number %d, out of %d\n", i, testSetup.numIterations);
rateMask = testSetup.dataRateMaskTP;
if(configSetup.enableXR) {
rateMask &= 0xf80ff;
}
else if(((swDeviceID & 0xff) < 0x0013) || (testMode != MODE_11G)) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -