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

📄 test.c

📁 atheros ar5001 5002 driver
💻 C
📖 第 1 页 / 共 5 页
字号:
				configSetup.rxGain = USE_REG_FILE;
				configSetup.powerControlMethod = NO_PWR_CTL;

				if (((swDeviceID & 0xff) >= 0x0014) && ((swDeviceID & 0xff) != 0x0015)) {
					//xpdgain gets set by devlib, don't want to apply here unless there
					//is an override.
					configSetup.applyXpdGain = (configSetup.eepromLoad == 1) ? 0 : 1;
				}
				//update the library with the new eepromload flag setting.
				art_setResetParams(devNum, configSetup.pCfgFile, (A_BOOL)configSetup.eepromLoad,
					(A_BOOL)1, (A_BOOL)configSetup.mode, configSetup.use_init);
				art_rereadProm(devNum);
				art_resetDevice(devNum, txStation, bssID, configSetup.channel, configSetup.turbo);
				
				//Read register values read in from resetDevice
				updateConfigFromRegValues(devNum);
			} else
			{
				invalidEepromMessage(3000);
				configSetup.applyXpdGain = 1;
			}

			break;
#endif //__ATH_DJGPPDOS__
        case 'C':
			contMenu(devNum);
			break;
        case 'R':
			contRxMenu(devNum);
			break;
        case 'L':
			linkMenu(devNum);
			break;
		case 'T':
			throughputMenu(devNum);
			break;
        case 'P':
			EEPROM_Routine(devNum);
            break;
		case 'U':
			utilityMenu(devNum);
			break;
		case 'G':
			if (configSetup.logging) {
				configSetup.logging = 0;

				//turn off logging
				uilogClose();
			}
			else {
				configSetup.logging = 1;

				if(configSetup.logFile[0] == '\0') {
					uiPrintf("\nPlease enter filename for logging: ");
					scanf("%s", configSetup.logFile);
				}
				uilog(configSetup.logFile, 1);
			}
			
			if(configSetup.logging) {
			}
	
			break;
#ifndef __ATH_DJGPPDOS__
        case 'S':
            art_teardownDevice(devNum);
			if ((devNum_2g != devNum_5g) && ((swDeviceID == 0xa014)||(swDeviceID == 0xa016))&&(!configSetup.userInstanceOverride)) {
				if(devNum == devNum_2g) {
					art_teardownDevice(devNum_5g);
				} else {
					art_teardownDevice(devNum_2g); 
				}
				
			}
            uiPrintf("Device has been stopped and may be removed\n");
            uiPrintf("Press Q to exit or any other key to setup a new device\n");
            if( toupper(getch()) == 'Q' ) {
                uiPrintf("closing environment\n");
                closeEnvironment();
                exit(0);            
            }
			if (configSetup.remote)
 			{
 					uiPrintf("IP Address of the new AP: ");
 					scanf("%s",configSetup.machName);
 			}

            tempDevNum = art_setupDevice(configSetup.instance);
			if(tempDevNum < 0) {
				uiPrintf("main: Error attaching to the device - ending test\n");
				closeEnvironment();
				exit(0);
			}
			devNum = tempDevNum;
			art_configureLibParams(devNum);

			if (configSetup.instance == CalSetup.instanceForMode[MODE_11a]) {
				devNum_5g = devNum;
			}

			if (configSetup.instance == CalSetup.instanceForMode[MODE_11g]) {
				devNum_2g = devNum;
			}

			if((configSetup.instance != CalSetup.instanceForMode[MODE_11a]) &&
				(configSetup.instance != CalSetup.instanceForMode[MODE_11g]))
			{
				//the default instance is not needed by this board.
				art_teardownDevice(devNum);
			}

			if (!configSetup.userInstanceOverride) {
				if (CalSetup.instanceForMode[MODE_11a] != configSetup.instance) {
					tempDevNum = art_setupDevice(CalSetup.instanceForMode[MODE_11a]);
					if(tempDevNum < 0) {
						uiPrintf("main: Error attaching to the device - ending test\n");
						closeEnvironment();
						exit(0);
					}
					devNum_5g = tempDevNum;
					art_configureLibParams(devNum_5g);
					if (CalSetup.instanceForMode[MODE_11a] == CalSetup.instanceForMode[MODE_11g]) {
						devNum_2g = devNum_5g;
					}
				} else if (CalSetup.instanceForMode[MODE_11g] != configSetup.instance) {
					tempDevNum = art_setupDevice(CalSetup.instanceForMode[MODE_11g]);
					if(tempDevNum < 0) {
						uiPrintf("main: Error attaching to the device - ending test\n");
						closeEnvironment();
						exit(0);
					}
					devNum_2g = tempDevNum;
					art_configureLibParams(devNum_2g);
					if (CalSetup.instanceForMode[MODE_11a] == CalSetup.instanceForMode[MODE_11g]) {
						devNum_5g = devNum_2g;
					}
				} 

				if ((swDeviceID == 0xa016) && (devStruct.aRevID == 0x0)) { // indicates an AP31 			 
					art_resetDevice(devNum_2g, txStation, bssID, configSetup.channel, configSetup.turbo);
					art_getDeviceInfo(devNum_2g, &devStruct);
					swDeviceID = devStruct.swDevID;
					hwDeviceID = devStruct.hwDevID;					
				}

				if (CalSetup.Amode) {
					if (CalSetup.Gmode) {
						if ((CalSetup.instanceForMode[MODE_11a] != 1) && (CalSetup.instanceForMode[MODE_11g] != 1)) {
							configSetup.validInstance = 2;
						}
					} else {
						if (CalSetup.instanceForMode[MODE_11a] != 1) {
							configSetup.validInstance = 2;
						}
					}
				} else if (CalSetup.Gmode) {
					if (CalSetup.instanceForMode[MODE_11g] != 1) {
						configSetup.validInstance = 2;
					}
				}

			}
				
/*
			if(((swDeviceID == 0xa014)||(swDeviceID == 0xa016))&&(!configSetup.userInstanceOverride)) {
				devNum_5g = devNum;

				tempDevNum = art_setupDevice(2);
	
				if(tempDevNum < 0) {
					uiPrintf("main: Error attaching to second instance on the device - ending test\n");
					closeEnvironment();
					exit(0);
				}
				devNum_2g = tempDevNum;
				art_configureLibParams(devNum_2g);

				if(configSetup.mode != MODE_11A) {
					devNum = devNum_2g;
				}
				if (subSystemID == 0xa035) {
					devNum_5g = devNum_2g;
				}
			}
*/
			//setup devnum correctly
			if(configSetup.mode == MODE_11A) {
				devNum = devNum_5g;
			}
			else {
				devNum = devNum_2g;
			}

			configSetup.powerControlMethod = NO_PWR_CTL;
			art_resetDevice(devNum, txStation, bssID, configSetup.channel, configSetup.turbo);
			//get the deviceID from the library and use the swDevID
			art_getDeviceInfo(devNum, &devStruct);
			swDeviceID = devStruct.swDevID;
			if (((swDeviceID & 0xff) == 0x14)||((swDeviceID & 0xff) >= 0x16)) {
				if ((swDeviceID & 0xFF) >= 0x16) {
					pCurrGainLadder = &(gainLadder_derby2);
				} else {
					pCurrGainLadder = &(gainLadder_derby1);
				}
			} else {
				pCurrGainLadder = &(gainLadder);
			}

			if (eeprom_verify_checksum(devNum))
			{
				configSetup.validCalData  =  TRUE;
				configSetup.eepromLoad    =  1;
				if (((swDeviceID & 0xff) >= 0x0014)&&((swDeviceID & 0xff) != 0x0015) ){
					//xpdgain gets set by devlib, don't want to apply here unless there
					//is an override.
					configSetup.applyXpdGain = 0;
				}
			} else
			{
				configSetup.validCalData  =  FALSE;
				configSetup.eepromLoad    =  0;
				invalidEepromMessage(2000);
				configSetup.applyXpdGain = 1;
			}

			art_setResetParams(devNum, configSetup.pCfgFile, (A_BOOL)configSetup.eepromLoad,
				(A_BOOL)configSetup.eepromHeaderLoad, (A_UCHAR)configSetup.mode, configSetup.use_init);		
	   
			if(!setEepFile(devNum)) {
				closeEnvironment();
				exit(0);
			}

			if(((swDeviceID == 0xa014)||(swDeviceID == 0xa016))&&(!configSetup.userInstanceOverride)) {
				if(!setEepFile((devNum == devNum_5g) ? devNum_2g : devNum_5g)) {
					closeEnvironment();
					exit(0);
				}
			}

			//test card/installation
			if(!initTest(devNum)) {
                uiPrintf("main: Error testing device - exiting\n");
                closeEnvironment();
                exit(0);
			}

    		//Read register values read in from resetDevice
	    	updateConfigFromRegValues(devNum);
            break;
		case 'W':
			if(configSetup.logging) {
				printf("Enter comment below.  Put a period (.) on a seperate line to complete\n");
				while(commentBuffer[0] != '.') {   
					if( fgets( commentBuffer, MAX_SIZE_COMMENT_BUFFER, stdin ) == NULL) {
						printf( "fgets error\n" );
						break;
					}
					if(commentBuffer[0] != '.') {	
						uiWriteToLog(commentBuffer);
					}
				}
				//remote the . from comment buffer otherwise will fall through next time
				commentBuffer[0] = 'a';
			}
			else {
				uiPrintf("Unknown command\n");
			}
			break;
        case 'M':
			if((swDeviceID == 0xa014)||(swDeviceID == 0xa016)){
				if (configSetup.userInstanceOverride) {
					if (configSetup.instance == 1) {
						tempDevNum = art_setupDevice(2);
						if(tempDevNum < 0) {
							uiPrintf("main: Error attaching to the second device - ending test\n");
							closeEnvironment();
							exit(0);
						}
						art_configureLibParams(tempDevNum);
						
						if (CalSetup.instanceForMode[MODE_11g] == 2) {
							devNum_2g = tempDevNum;
						} else {
							devNum_2g = devNum;
						}
						
						if (CalSetup.instanceForMode[MODE_11a] == 2) {
							devNum_5g = tempDevNum;
						} else {
							devNum_5g = devNum;
						}
						
					} else {
						tempDevNum = art_setupDevice(1);
						if(tempDevNum < 0) {
							uiPrintf("main: Error attaching to the second device - ending test\n");
							closeEnvironment();
							exit(0);
						}						
						art_configureLibParams(tempDevNum);
	
						if (CalSetup.instanceForMode[MODE_11g] == 1) {
							devNum_2g = tempDevNum;
						} else {
							devNum_2g = devNum;
						}
						
						if (CalSetup.instanceForMode[MODE_11a] == 1) {
							devNum_5g = tempDevNum;
						} else {
							devNum_5g = devNum;
						}
					}
//				art_teardownDevice(devNum_2g);
//				devNum = devNum_5g;
				} 
			} else {
				devNum_2g = devNum;
				devNum_5g = devNum;
			}
            
			art_resetDevice(devNum, txStation, bssID, configSetup.channel, configSetup.turbo);
            topCalibrationEntry(&devNum_5g, &devNum_2g);

/*
			if(((swDeviceID == 0xa014)||(swDeviceID == 0xa016))&&(!configSetup.userInstanceOverride)) {
				tempDevNum = art_setupDevice(2);
				if(tempDevNum < 0) {
					uiPrintf("main: Error attaching to the device - ending test\n");
					closeEnvironment();
					exit(0);
				}
				devNum_2g = tempDevNum;
				art_configureLibParams(devNum_2g);
	
				if(devNum_2g < 0) {
					uiPrintf("main: Error attaching to second instance on the device - ending test\n");
					closeEnvironment();
					exit(0);
				}

				if(configSetup.mode != MODE_11A) {
					devNum = devNum_2g;
					art_setResetParams(devNum, configSetup.pCfgFile, (A_BOOL)configSetup.eepromLoad,
						(A_BOOL)configSetup.eepromHeaderLoad, (A_UCHAR)configSetup.mode, configSetup.use_init);		

					art_resetDevice(devNum, txStation, bssID, configSetup.channel, configSetup.turbo);
				}
				if (subSystemID == 0xa035) {
					devNum_5g = devNum_2g;
				}
			}
*/
            break;
#endif  // __ATH_DJGPPDOS__
//Take out for now		case 'X':
//			testMenu(devNum);
//			break;
        case 0x1b:
        case 'Q':
            exitLoop = TRUE;
            uiPrintf("exiting\n");
            break;
			
        default:
            uiPrintf("Unknown command\n");
            break;
        }
    }
    if(configSetup.logging) {
		uilogClose();
	}
	uiPrintf("closing device\n");
    art_teardownDevice(devNum); 
	if((devNum_2g != devNum_5g) && ((swDeviceID == 0xa014)||(swDeviceID == 0xa016))&&(!configSetup.userInstanceOverride)) {
		if(devNum == devNum_2g) {
			art_teardownDevice(devNum_5g);
		} else {
			art_teardownDevice(devNum_2g); 
		}
	}
    uiPrintf("closing environment\n");
    closeEnvironment();
    uiPrintf("exiting\n");
    exit(0);
}

void getSupportedModes (A_UINT32 devNum, SUPPORTED_MODES *pModes)
{
	A_UINT16 tempValue;

	if(configSetup.eepromLoad) {
		//get the mode flags from reading eeprom
		tempValue = (A_UINT16)art_eepromRead(devNum, 0xc2);
		pModes->aMode = (A_BOOL)(tempValue & 0x01);
		pModes->bMode = (A_BOOL)((tempValue >> 1) & 0x01);
		pModes->gMode = (A_BOOL)((tempValue >> 2) & 0x01);
	}
	else {
#ifndef __ATH_DJGPPDOS__
		//get the values from the eep file
		load_cal_section();
		pModes->aMode = (A_BOOL)CalSetup.Amode;
		pModes->bMode = (A_BOOL)CalSetup.Bmode;
		pModes->gMode = (A_BOOL)CalSetup.Gmode;
#endif //__ATH_DJGPPDOS__
	}
}

A_UINT32 getFirstMode (SUPPORTED_MODES *pModes) {
	A_UINT32 firstMode = configSetup.mode;

	switch(configSetup.mode) {
	case MODE_11A:
		if(!pModes->aMode) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -