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

📄 com_driver.c

📁 lab windows uart driver
💻 C
📖 第 1 页 / 共 5 页
字号:
		//输出:*data: data[0]	读取到的数据的长度,单位为Byte
		//		*Buf: 读取到的数据
		//		*errinfo
		//备注:本功能必须在RXON执行成功后方可使用
	case RXIQSRLDATA:  ////传送IQ的数据
		//Com_init();
		FlushInQ (Rs232);  //Removes all characters from the input queue of the COM port
		FlushOutQ (Rs232);
		amt_set_commandtype(cmdbuf,AMT_IQSERIAL_CMD);//set command type          
		amt_set_int(cmdbuf,AMT_POWER_ATOM,data[1]);  //para 1  :ExpPower,信号源输入功率
		//amt_set_int(cmdbuf,AMT_TIMESLOT_ATOM,data[1]); //para 2 :TimeSlot
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break; //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);  //get response command type
		if(CommType!=AMT_IQSERIAL_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code   
		if(*errinfo!=0) break;
		temp=amt_get_bytes(cmdbuf,AMT_IQ_VALUE_ATOM,Buf,0);  //数据长度 
		amt_get_bytes(cmdbuf,AMT_IQ_VALUE_ATOM,Buf,temp);    //IQ数据 
		*data=temp;
		break;
		//IQ不平衡校准系数写入
		//*Buf: NULL
		//输入:*data: data[0]	X	I路校准系数
		//			   data[1]	Y	Q路校准系数
		//输出:*errinfo
		//备注:本功能必须在RXON执行成功后方可使用
	case WRIQVAL:  ////传入IQ不平衡校准系数
		amt_set_commandtype(cmdbuf,AMT_IQCHECK_CMD); //set command type
		amt_set_int(cmdbuf,AMT_X_ATOM,data[0]);  //para 1  
		amt_set_int(cmdbuf,AMT_Y_ATOM,data[1]); //para 2 
		
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break; //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf); //get response command type   
		if(CommType!=AMT_IQCHECK_RSPCMD)
		{
			*errinfo=ComRspTypeErr; //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //read error code   
		break;
		//读取IQ信号的功率值,即IQ信号的平方和平均
		//输入:*data: data[1]	Power Level:Power(dBm)+110
		//			   data[2]	Time Slot
		//输出:*data: data[0]	读取到的功率值
		//		*errinfo
		//*rult: NULL
		//备注:本功能必须在RXON执行成功后方可使用
	case RXIQPWR:  ////计算I/Q信号的功率均值
		amt_set_commandtype(cmdbuf,AMT_IQPOWER_CMD); //set command type
		amt_set_int(cmdbuf,AMT_POWER_ATOM,data[1]);  //para 1  :ExpPower
		amt_set_int(cmdbuf,AMT_TIMESLOT_ATOM,data[2]); //para 2 :TimeSlot
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break; //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf); //get response command type   
		if(CommType!=AMT_IQPOWER_RSPCMD)
		{
			*errinfo=ComRspTypeErr; //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //read error code   
		if(*errinfo!=0) break;
		*data=amt_get_int(cmdbuf,AMT_POWER_ATOM);  //get RMS of receive power 
		break;
		//改变接收频点
		//*Buf: NULL
		//输入:*data(data[0])	Channel No.:Frequency(MHz)*5
		//输出:*errinfo
		//备注:本功能必须在RXON执行成功后方可使用
	case RXFREQ:  ////改变接收频点
		amt_set_commandtype(cmdbuf,AMT_CHANGERXFREQ_CMD);  
		amt_set_int(cmdbuf,AMT_FREQ_ATOM,data[0]);      
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break; //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);  //get response command type
		if(CommType!=AMT_CHANGERXFREQ_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code 
		break;
		//LCD色彩显示
		//输入:*data: data[0]	Color	0:	白色
		//								1:	红色
		//								2:	绿色
		//								3:	蓝色
		//								4:	黑色
		//*Buf: NULL
		//输出:*errinfo
		//备注:
	case LCDSHOW:  ////LCD显示命令
		amt_set_commandtype(cmdbuf,AMT_SHOWLCD_CMD); 
		amt_set_int(cmdbuf,AMT_COLORNUMBER_ATOM,data[0]); 
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break; //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf); //get response command type  
		if(CommType!=AMT_SHOWLCD_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//LCD亮度测试
		//输入:*data(data[0])	LCD亮度参数	
		//*rult: NULL
		//输出:*errinfo
		//备注:
	case LCDLIGHT:  ////LCD 亮度测试命令
		amt_set_commandtype(cmdbuf,AMT_LCDLIGHT_CMD);  //set command type
		amt_set_int(cmdbuf,AMT_LCDLIGHT_ATOM,data[0]); 
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break; //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);  //get response command type  
		if(CommType!=AMT_LCDLIGHT_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//Audio loop 测试命令
		//*Buf: NULL
		//输入:*data: data[0]	开始停止	Boolean		True-开始
		//												False-停止
		//			   data[1]	耳机/手机	UINT32		0-耳机		  	AMT_MOBILELOOP
		//												1-手机		  	AMT_EARPHONELOOP
		//												2		  		AMT_INTER_1KHz_TO_RECEIVER
		//												3		  		AMT_INTER_1KHz_TO_SPEAKER
		//												4		  		AMT_INTER_1KHz_TO_HS_SPEAKER
		//												5		  		AMT_HS_MIC_TO_RECEIVER
		
		
		//输出:*errinfo
		//备注:
	case AUDLOOP:  ////Audio loop 测试命令
		amt_set_commandtype(cmdbuf,AMT_AUDIOLOOP_CMD); //set command type 
		amt_set_bool(cmdbuf,AMT_START_ATOM,data[0]);  //para1
		amt_set_int(cmdbuf,AMT_AUDIO_TYPE_ATOM,data[1]);   //para2
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw(); //send command and read response
			if(*errinfo==enNoneErr) break;  //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);  //get response command type 
		if(CommType!=AMT_AUDIOLOOP_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code    
		break;
		//振铃测试命令
		//*Buf: NULL
		//输入:*data(data[0])	开始停止	Boolean		True-开始
		//												False-停止
		//输出:*errinfo
		//备注:不需要指定铃声
		//		采用默认铃声类型
	case BELL: ////振铃测试命令
		amt_set_commandtype(cmdbuf,AMT_BELL_CMD); //set command type
		amt_set_bool(cmdbuf,AMT_START_ATOM,data[0]);//para1
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break;  //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);  //get response command type        
		if(CommType!=AMT_BELL_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//振动器测试命令
		//*Buf: NULL
		//输入:*data(data[0])	开始停止	Boolean		True-开始
		//												False-停止
		//输出:*errinfo
		//备注:
	case VIBRATOR:  ////振动器测试命令
		amt_set_commandtype(cmdbuf,AMT_VIBRATION_CMD);  //set command type 
		amt_set_bool(cmdbuf,AMT_START_ATOM,data[0]);    //para 1
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break;	  
		}
		if(*errinfo!=0) break;
		//应答CommandID	UINT8	36	
		//Error Code	UINT32		见7.4节
		CommType=amt_get_commandtype(cmdbuf); //get response command type
		if(CommType!=AMT_VIBRATION_RSPCMD)
		{
			*errinfo=ComRspTypeErr;  
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code 
		break;
		//模式切换命令
		//*Buf: NULL
		//输入:*data(data[0])	AMT_MODE_ATOM,模式指定
		//输出:*errinfo
		//备注:目前无用
	case MODECHG:  ////模式切换命令
		amt_set_commandtype(cmdbuf,AMT_CHANGEMODE_CMD);  //set command type  
		amt_set_int(cmdbuf,AMT_MODE_ATOM,data[0]);		 //para 1
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw(); //send command and read response
			if(*errinfo==enNoneErr) break;   //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf); //get response command type
		if(CommType!=AMT_CHANGEMODE_RSPCMD)
		{
			*errinfo=ComRspTypeErr;   //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//按键测试
		//输入:*data(data[0])	开始停止	Boolean		True-开始
		//												False-停止
		//*rult: NULL
		//输出:*errinfo
		//备注:
	case KEYBD:  ////键盘测试命令
		amt_set_commandtype(cmdbuf,AMT_KEYBOARD_CMD);  //set command type 
		amt_set_bool(cmdbuf,AMT_START_ATOM,data[0]);   //para 1
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break;	  //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);  //get response command type
		if(CommType!=AMT_KEYBOARD_RSPCMD)
		{
			*errinfo=ComRspTypeErr;  //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //read error code
		break;
		//写入软件版本命令
		//输入:*data(data[0])	AMT_SW_MODULE_ATOM	0x01- General Product(注1)
		//											0x10- Gerneral Software(注1)
		//											0x11-L1
		//											0x12- HL
		//											0x13- Platform
		//											0x14- MMI/APP
		//											0x20-General hardware(注1)
		//		*rult: 内容,长度为64Byte
		//输出:*errinfo
		//备注:
	case WTHDVER:  //写入硬件版本命令
		amt_set_commandtype(cmdbuf,AMT_WRIET_VERSION_CMD);  //set command type
		amt_set_int(cmdbuf,AMT_SW_MODULE_ATOM,data[1]); //para 1
		amt_set_bytes(cmdbuf,AMT_VERSION_ATOM,Buf,64);     
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw(); //send command and read response
			if(*errinfo==enNoneErr) break; //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf); //get response command type
		if(CommType!=AMT_WRIET_VERSION_RSPCMD)
		{
			*errinfo=ComRspTypeErr;  //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//读取软件版本命令
		//输入:*data(data[0])	AMT_SW_MODULE_ATOM	0x01- General Product(注1)
		//											0x10- Gerneral Software(注1)
		//											0x11-L1
		//											0x12- HL
		//											0x13- Platform
		//											0x14- MMI/APP
		//											0x20-General hardware(注1)
		//输出:*errinfo
		//		*rult: 读出内容
		//备注:
	case RDVER:  ////读取软件版本命令
		amt_set_commandtype(cmdbuf,AMT_VERSION_CMD);  //set command type
		amt_set_int(cmdbuf,AMT_SW_MODULE_ATOM,data[1]); //para 1
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw(); //send command and read response
			if(*errinfo==enNoneErr) break; //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf); //get response command type
		if(CommType!=AMT_VERSION_RSPCMD)
		{
			*errinfo=ComRspTypeErr;  //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		if(*errinfo!=0) break;
		amt_get_int(cmdbuf,AMT_SW_MODULE_ATOM); //get version kind
		temp=amt_get_bytes(cmdbuf,AMT_VERSION_ATOM,Buf,0); //get version length
		amt_get_bytes(cmdbuf,AMT_VERSION_ATOM,Buf,temp); //get version
		*data = temp;
		break;
		//读Flash中物理层码表
		//输入:data[0]: AMT_TABLETYPE_ATOM,1:	APC表
		//									2:	AGC表
		//									3:	AFC表(Reserved)
		//		data[1]: AMT_DATAADDR_ATOM, 表中偏移地址
		//		data[2]:AMT_DATALENGTH_ATOM, Data length,单位为Byte
		//输出:*Buf:读取到的表值
		//		*errinfo
		//备注:
	case RDFTBL:  ////读物理层码表  
		amt_set_commandtype(cmdbuf,AMT_READTABLE_FLASH_CMD);  //set command type
		amt_set_int(cmdbuf,AMT_TABLETYPE_ATOM,data[0]);		  //para 1
		amt_set_int(cmdbuf,AMT_DATAADDR_ATOM,data[1]);		  //para 2
		amt_set_int(cmdbuf,AMT_DATALENGTH_ATOM,data[2]);	  //para 3
		//DataType=AMT_DATA_ATOM;
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break;  //
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);  //get response command type
		if(CommType!=AMT_READTABLE_FLASH_RSPCMD) //
		{
			*errinfo=ComRspTypeErr;	//command type error				
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);   //get error code
		if(*errinfo!=0)break;
		MsgLen=amt_get_bytes(cmdbuf,AMT_DATA_ATOM,Buf,0);	 //
		amt_get_bytes(cmdbuf,AMT_DATA_ATOM,Buf,MsgLen);		 //
		break;											 
		//写Flash中物理层码表
		//输入:data[0]: AMT_TABLETYPE_ATOM,1:	APC表
		//									2:	AGC表
		//									3:	AFC表(Reserved)
		//		data[1]: AMT_DATAADDR_ATOM, 表中偏移地址
		//		data[2]:AMT_DATALENGTH_ATOM, Data length,单位为Byte
		//		*Buf:待写入的表值
		//输出:*errinfo
		//备注:
	case WRFTBL:  ////写物理层码表
		amt_set_commandtype(cmdbuf,AMT_WRITETABLE_FLASH_CMD);
		amt_set_int(cmdbuf,AMT_TABLETYPE_ATOM,data[0]);		 // start address
		amt_set_int(cmdbuf,AMT_DATAADDR_ATOM,data[1]);		 //表中偏移地址
		//amt_set_int(cmdbuf,AMT_DATALENGTH_ATOM,data[2]);   //
		amt_set_bytes(cmdbuf,AMT_DATA_ATOM,Buf,data[2]);	 //data 
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break;  //
		}

⌨️ 快捷键说明

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