⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmdtest.c

📁 atheros ar5001 5002 driver
💻 C
📖 第 1 页 / 共 5 页
字号:
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 + -