📄 cmdtest.c
字号:
void goldenCompleteWakeupCall
(
A_UINT32 devNum
)
{
// txDataSetup
A_UINT32 rate_mask = RATE_6; //0xff; // all rates
A_UINT32 turbo = 0;
A_UINT32 num_tx_desc = 15; //2;
A_UINT32 tx_length = sizeof(TEST_INFO_STRUCT);
A_UINT32 retry = 10;
A_UINT32 broadcast = 0;
// rxDataSetup
A_UINT32 num_rx_desc = 100;
A_UINT32 rx_length = 100;
A_UINT32 enable_ppm = 0;
A_UINT32 compare = 0;
// txrxDataBegin
A_UINT32 start_timeout = 0; // no wait time for transmit
A_UINT32 complete_timeout = 5000;
A_UINT32 stats_mode = 0;
A_UINT16 ii=0;
A_UCHAR pattern[] = {0xaa, 0x55};
A_UINT32 channel = testSetup.sideChannel2G;
if(configSetup.mode == MODE_11A){
channel = testSetup.sideChannel5G;
}
art_resetDevice(devNum, goldenStation, bssID, channel, configSetup.turbo);
while(!kbhit()) {
art_txDataSetup(devNum, rate_mask, dutStation, num_tx_desc, tx_length,
pattern, 2, retry,configSetup.antenna, broadcast);
art_txDataBegin(devNum, complete_timeout, 0);
if(art_mdkErrNo==0) {
#ifdef _DEBUG
uiPrintf("\nGolden Unit is ready to go!\n");
#endif
break;
}
}
while(kbhit())
getch(); // clean up buffer
//cleanup descriptor queues, to free up mem
art_cleanupTxRxMemory(devNum, TX_CLEAN | RX_CLEAN);
return;
}
void printFailures
(
A_UINT32 reasonFailMask
)
{
if(reasonFailMask & MASK_LINKTEST_TX_PER_ANTA) {
uiPrintf(" High PER(P) on antenna A. Error code %d\n", ERR_LINKTEST_TX_PER_ANTA);
}
if(reasonFailMask & MASK_LINKTEST_TX_PER_ANTB) {
uiPrintf(" High PER(P) on antenna B. Error code %d\n", ERR_LINKTEST_TX_PER_ANTB);
}
if(reasonFailMask & MASK_LINKTEST_TX_PPM_ANTA) {
uiPrintf(" PPM out of range(M) on antenna A. Error code %d\n", ERR_LINKTEST_TX_PPM_ANTA);
}
if(reasonFailMask & MASK_LINKTEST_TX_PPM_ANTB) {
uiPrintf(" PPM out of range(M) on antenna B. Error code %d\n", ERR_LINKTEST_TX_PPM_ANTB);
}
if(reasonFailMask & MASK_LINKTEST_TX_RSSI_ANTA) {
uiPrintf(" Low RSSI(R) on antenna A. Error code %d\n", ERR_LINKTEST_TX_RSSI_ANTA);
}
if(reasonFailMask & MASK_LINKTEST_TX_RSSI_ANTB) {
uiPrintf(" Low RSSI(R) on antenna B. Error code %d\n", ERR_LINKTEST_TX_RSSI_ANTB);
}
if(reasonFailMask & MASK_LINKTEST_TX_CRC_ANTA) {
uiPrintf(" Many CRC errors(C) on antenna A. Error code %d\n", ERR_LINKTEST_TX_CRC_ANTA);
}
if(reasonFailMask & MASK_LINKTEST_TX_CRC_ANTB) {
uiPrintf(" Many CRC errors(C) on antenna B. Error code %d\n", ERR_LINKTEST_TX_CRC_ANTB);
}
if(reasonFailMask & MASK_LINKTEST_RX_PER_ANTA) {
uiPrintf(" High PER(P) on antenna A. Error code %d\n", ERR_LINKTEST_RX_PER_ANTA);
}
if(reasonFailMask & MASK_LINKTEST_RX_PER_ANTB) {
uiPrintf(" High PER(P) on antenna B. Error code %d\n", ERR_LINKTEST_RX_PER_ANTB);
}
if(reasonFailMask & MASK_LINKTEST_RX_PPM_ANTA) {
uiPrintf(" PPM out of range(M) on antenna A. Error code %d\n", ERR_LINKTEST_RX_PPM_ANTA);
}
if(reasonFailMask & MASK_LINKTEST_RX_PPM_ANTB) {
uiPrintf(" PPM out of range(M) on antenna B. Error code %d\n", ERR_LINKTEST_RX_PPM_ANTB);
}
if(reasonFailMask & MASK_LINKTEST_RX_RSSI_ANTA) {
uiPrintf(" Low RSSI(R) on antenna A. Error code %d\n", ERR_LINKTEST_RX_RSSI_ANTA);
}
if(reasonFailMask & MASK_LINKTEST_RX_RSSI_ANTB) {
uiPrintf(" Low RSSI(R) on antenna B. Error code %d\n", ERR_LINKTEST_RX_RSSI_ANTB);
}
if(reasonFailMask & MASK_LINKTEST_RX_CRC_ANTA) {
uiPrintf(" Many CRC errors(C) on antenna A. Error code %d\n", ERR_LINKTEST_RX_CRC_ANTA);
}
if(reasonFailMask & MASK_LINKTEST_RX_CRC_ANTB) {
uiPrintf(" Many CRC errors(C) on antenna B. Error code %d\n", ERR_LINKTEST_RX_CRC_ANTB);
}
if(reasonFailMask & MASK_THROUGHPUT_PER_ANTA) {
uiPrintf(" High PER(P) on antenna A. Error code %d\n", ERR_THROUGHPUT_PER_ANTA);
}
if(reasonFailMask & MASK_THROUGHPUT_PER_ANTB) {
uiPrintf(" High PER(P) on antenna B. Error code %d\n", ERR_THROUGHPUT_PER_ANTB);
}
if(reasonFailMask & MASK_THROUGHPUT_RSSI_ANTA) {
uiPrintf(" Low RSSI(R) on antenna A. Error code %d\n", ERR_THROUGHPUT_RSSI_ANTA);
}
if(reasonFailMask & MASK_THROUGHPUT_RSSI_ANTB) {
uiPrintf(" Low RSSI(R) on antenna B. Error code %d\n", ERR_THROUGHPUT_RSSI_ANTB);
}
if(reasonFailMask & MASK_THROUGHPUT_THRESH_ANTA) {
uiPrintf(" Throughput too low(t) on antenna A. Error code %d\n", ERR_THROUGHPUT_THRESH_ANTA);
}
if(reasonFailMask & MASK_THROUGHPUT_THRESH_ANTB) {
uiPrintf(" Throughput too low(t) on antenna B. Error code %d\n", ERR_THROUGHPUT_THRESH_ANTB);
}
if(reasonFailMask & MASK_COMMS_FAILURE) {
uiPrintf(" Poor communications with golden unit. Error code %d\n", ERR_COMMS_FAIL);
}
return;
}
void printFailLetters
(
A_UINT32 reasonFailMask
)
{
if((reasonFailMask & MASK_LINKTEST_TX_RSSI_ANTA)||(reasonFailMask & MASK_LINKTEST_TX_RSSI_ANTB) ||
(reasonFailMask & MASK_LINKTEST_RX_RSSI_ANTA)||(reasonFailMask & MASK_LINKTEST_RX_RSSI_ANTB) ||
(reasonFailMask & MASK_THROUGHPUT_RSSI_ANTA)||(reasonFailMask & MASK_THROUGHPUT_RSSI_ANTB)) {
uiPrintf("R");
}
if((reasonFailMask & MASK_LINKTEST_TX_CRC_ANTA)||(reasonFailMask & MASK_LINKTEST_TX_CRC_ANTB)||
(reasonFailMask & MASK_LINKTEST_RX_CRC_ANTA)||(reasonFailMask & MASK_LINKTEST_RX_CRC_ANTB)) {
uiPrintf("C");
}
if((reasonFailMask & MASK_LINKTEST_TX_PER_ANTA)||(reasonFailMask & MASK_LINKTEST_TX_PER_ANTB)||
(reasonFailMask & MASK_LINKTEST_RX_PER_ANTA)||(reasonFailMask & MASK_LINKTEST_RX_PER_ANTB)||
(reasonFailMask & MASK_THROUGHPUT_PER_ANTA)||(reasonFailMask & MASK_THROUGHPUT_PER_ANTB)) {
uiPrintf("P");
}
if((reasonFailMask & MASK_LINKTEST_TX_PPM_ANTA)||(reasonFailMask & MASK_LINKTEST_TX_PPM_ANTB)||
(reasonFailMask & MASK_LINKTEST_RX_PPM_ANTA)||(reasonFailMask & MASK_LINKTEST_RX_PPM_ANTB)) {
uiPrintf("M");
}
if((reasonFailMask & MASK_THROUGHPUT_THRESH_ANTA)||(reasonFailMask & MASK_THROUGHPUT_THRESH_ANTA)) {
uiPrintf("T");
}
return;
}
A_UINT32 printTestSummary
(
A_UINT32 reasonFailMask
)
{
A_UINT32 mask = 0x01;
A_UINT32 nextErrorCode = ERR_LINKTEST_TX_PER_ANTA;
A_UINT32 lastErrorCode = 0;
uiPrintf("\n\n*************************************************\n");
if(!reasonFailMask) {
uiPrintf("\nDEVICE PASSED, return code 0");
}
else {
uiPrintf("\nDEVICE FAILED with error code(s): ");
while(reasonFailMask) {
if(mask & reasonFailMask) {
uiPrintf("%d ", nextErrorCode);
lastErrorCode = nextErrorCode;
}
reasonFailMask = reasonFailMask & ~mask;
mask = mask << 1;
nextErrorCode++;
}
}
uiPrintf("\n\n*************************************************\n");
return(lastErrorCode);
}
A_BOOL testMacAddress
(
WLAN_MACADDR *addressIn
)
{
if((A_MACADDR_COMP(addressIn, &testSetup.minMacAddress) >= 0) &&
(A_MACADDR_COMP(addressIn, &testSetup.maxMacAddress) <= 0)) {
return TRUE;
}
return FALSE;
}
A_BOOL parseTestFile(void)
{
FILE *fStream;
char lineBuf[222], *pLine;
char delimiters[] = " \t";
uiPrintf("\nReading in Test Setup\n");
if( (fStream = fopen( TESTSETUP_FILE, "r")) == NULL ) {
uiPrintf("Failed to open %s - using Defaults\n", TESTSETUP_FILE);
return 0;
}
while(fgets(lineBuf, 120, fStream) != NULL) {
pLine = lineBuf;
while(isspace(*pLine)) pLine++;
if(*pLine == '#') {
continue;
}
if(*pLine == '\0') {
continue;
}
else if(strnicmp("NUM_ITERATIONS", pLine, strlen("NUM_ITERATIONS")) == 0) {
pLine = strchr(pLine, '=');
pLine++;
pLine = strtok( pLine, delimiters ); //get past any white space etc
if(!sscanf(pLine, "%ld", &testSetup.numIterations)) {
uiPrintf("Unable to read the NUM_ITERATIONS from %s\n", TESTSETUP_FILE);
return 0;
}
//check to see if command line arg was specified, if so this overrides file
if(configSetup.iterations) {
testSetup.numIterations = configSetup.iterations;
}
}
else if(strnicmp("NUM_PACKETS", pLine, strlen("NUM_PACKETS")) == 0) {
pLine = strchr(pLine, '=');
pLine++;
pLine = strtok( pLine, delimiters ); //get past any white space etc
if(!sscanf(pLine, "%ld", &testSetup.numPackets)) {
uiPrintf("Unable to read the NUM_PACKETS from %s\n", TESTSETUP_FILE);
return 0;
}
//check for exeeding max
if(testSetup.numPackets > MAX_NUM_PACKETS) {
uiPrintf("NUM_PACKETS should be less than %d\n", MAX_NUM_PACKETS);
return 0;
}
}
else if(strnicmp("PACKET_SIZE", pLine, strlen("PACKET_SIZE")) == 0) {
pLine = strchr(pLine, '=');
pLine++;
pLine = strtok( pLine, delimiters ); //get past any white space etc
if(!sscanf(pLine, "%ld", &testSetup.packetSize)) {
uiPrintf("Unable to read the PACKET_SIZE from %s\n", TESTSETUP_FILE);
return 0;
}
//check for exeeding max
if(testSetup.packetSize > MAX_PACKET_SIZE) {
uiPrintf("PACKET_SIZE should be less than %d\n", MAX_PACKET_SIZE);
return 0;
}
}
else if(strnicmp("TP_PACKET_SIZE", pLine, strlen("TP_PACKET_SIZE")) == 0) {
pLine = strchr(pLine, '=');
pLine++;
pLine = strtok( pLine, delimiters ); //get past any white space etc
if(!sscanf(pLine, "%ld", &testSetup.packetSizeTP)) {
uiPrintf("Unable to read the TP_PACKET_SIZE from %s\n", TESTSETUP_FILE);
return 0;
}
//check for exeeding max
// if(testSetup.packetSizeTP > MAX_PACKET_SIZE) {
// uiPrintf("TP_PACKET_SIZE should be less than %d\n", MAX_PACKET_SIZE);
// return 0;
// }
}
else if(strnicmp("TP_NUM_PACKETS", pLine, strlen("TP_NUM_PACKETS")) == 0) {
pLine = strchr(pLine, '=');
pLine++;
pLine = strtok( pLine, delimiters ); //get past any white space etc
if(!sscanf(pLine, "%ld", &testSetup.numPacketsTP)) {
uiPrintf("Unable to read the TP_NUM_PACKETS from %s\n", TESTSETUP_FILE);
return 0;
}
//check for exeeding max
// if(testSetup.numPacketsTP > MAX_NUM_PACKETS_TP) {
// uiPrintf("TP_NUM_PACKETS should be less than %d\n", MAX_NUM_PACKETS_TP);
// return 0;
// }
}
else if(strnicmp("TP_CCK_NUM_PACKETS", pLine, strlen("TP_CCK_NUM_PACKETS")) == 0) {
pLine = strchr(pLine, '=');
pLine++;
pLine = strtok( pLine, delimiters ); //get past any white space etc
if(!sscanf(pLine, "%ld", &testSetup.numPacketsTP_CCK)) {
uiPrintf("Unable to read the TP_CCK_NUM_PACKETS from %s\n", TESTSETUP_FILE);
return 0;
}
//check for exeeding max
// if(testSetup.numPacketsTP > MAX_NUM_PACKETS_TP) {
// uiPrintf("TP_NUM_PACKETS should be less than %d\n", MAX_NUM_PACKETS_TP);
// return 0;
// }
}
else if(strnicmp("TP_RATE_MASK", pLine, strlen("TP_RATE_MASK")) == 0) {
pLine = strchr(pLine, '=');
pLine++;
pLine = strtok( pLine, delimiters ); //get past any white space etc
if(!sscanf(pLine, "%x", &testSetup.dataRateMaskTP)) {
uiPrintf("Unable to read the TP_RATE_MASK from %s\n", TESTSETUP_FILE);
return 0;
}
//check for exeeding max
// if(testSetup.dataRateIndexTP > 7) {
// uiPrintf("TP_RATE_CODE should be less than 8\n");
// return 0;
// }
}
else if(strnicmp("5G_SIDE_CHANNEL", pLine, strlen("5G_SIDE_CHANNEL")) == 0) {
pLine = strchr(pLine, '=');
pLine++;
pLine = strtok( pLine, delimiters ); //get past any white space etc
if(!sscanf(pLine, "%ld", &testSetup.sideChannel5G)) {
uiPrintf("Unable to read the 5G_SIDE_CHANNEL from %s\n", TESTSETUP_FILE);
return 0;
}
//no limit checking
}
else if(strnicmp("2G_SIDE_CHANNEL", pLine, strlen("2G_SIDE_CHANNEL")) == 0) {
pLine = strchr(pLine, '=');
pLine++;
pLine = strtok( pLine, delimiters ); //get past any white space etc
if(!sscanf(pLine, "%ld", &testSetup.sideChannel2G)) {
uiPrintf("Unable to read the 2G_SIDE_CHANNEL from %s\n", TESTSETUP_FILE);
return 0;
}
//no limit checking
}
else if(strnicmp("DUT_ORIENTATION", pLine, strlen("DUT_ORIENTATION")) == 0) {
pLine = strchr(pLine, '=');
pLine++;
pLine = strtok( pLine, delimiters ); //get past any white space etc
if(!sscanf(pLine, "%c", &testSetup.dutOrientation)) {
uiPrintf("Unable to read the DUT_ORIENTATION from %s\n", TESTSETUP_FILE);
return 0;
}
testSetup.dutOrientation = toupper(testSetup.dutOrientation);
if((testSetup.dutOrientation != 'N') && (testSetup.dutOrientation != 'S') &&
(testSetup.dutOrientation != 'E') && (testSetup.dutOrientation != 'W')) {
uiPrintf("Illegal DUT_ORIENTATION must be N|S|E|W\n");
return 0;
}
}
else if(strnicmp("AP_ORIENTATION", pLine, strlen("AP_ORIENTATION")) == 0) {
pLine = strchr(pLine, '=');
pLine++;
pLine = strtok( pLine, delimiters ); //get past any white space etc
if(!sscanf(pLine, "%c", &testSetup.apOrientation)) {
uiPrintf("Unable to read the AP_ORIENTATION from %s\n", TESTSETUP_FILE);
return 0;
}
testSetup.apOrientation = toupper(testSetup.apOrientation);
if((testSetup.apOrientation != 'N') && (testSetup.apOrientation != 'S') &&
(testSetup.apOrientation != 'E') && (testSetup.apOrientation != 'W')) {
uiPrintf("Illegal AP_ORIENTATION must be N|S|E|W\n");
return 0;
}
}
else if(strnicmp("DUT_ID", pLine, strlen("DUT_ID")) == 0) {
pLine = strchr(pLine, '=');
pLine++;
pLine = strtok( pLine, delimiters ); //get past any white space etc
strncpy(testSetup.dutType, pLine, MAX_AP_DUT_TYPE_LENGTH);
//no limit checking
}
else if(strnicmp("AP_ID", pLine, s
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -