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

📄 com_driver.c

📁 lab windows uart driver
💻 C
📖 第 1 页 / 共 5 页
字号:
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf);
		if(CommType!=AMT_WRITETABLE_FLASH_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		/*temp=amt_get_int(cmdbuf,AMT_DATALENGTH_ATOM); //get written data length
		if(temp!=data[2])  //written length or data not correct?
		{
		*errinfo=5; 
			}*/ 
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //get error code     
		break;
		//读取当前终端温度ADC值
		//*Buf: NULL
		//输入:无
		//输出:*data(data[0]) 读取到的温度ADC值
		//		*errinfo
		//备注:
	case RDTMP:  ////读取当前终端温度ADC值
		amt_set_commandtype(cmdbuf,AMT_TEMPERATURE_CMD);
		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);  //
		if(CommType!=AMT_TEMPERATURE_RSPCMD)   //
		{
			*errinfo=ComRspTypeErr;			   //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //get error code   
		if(*errinfo!=0) break;
		//temp=amt_get_string(cmdbuf,AMT_TEMPERATURE_ATOM,Buf,0);
		//amt_get_string(cmdbuf,AMT_TEMPERATURE_ATOM,Buf,temp);
		*data=amt_get_int(cmdbuf,AMT_TEMPERATURE_ATOM);  //read temperature ADC value
		break;
		//读取射频芯片电压ADC值
		//*Buf: NULL
		//输入:无
		//输出:*data(data[0]) 读取到的射频芯片电压ADC值
		//		*errinfo
		//备注:
	case RDRFADC: ////读取射频芯片电压ADC值
		amt_set_commandtype(cmdbuf,AMT_READ_RFADC_CMD);
		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);  //
		if(CommType!=AMT_READ_RFADC_RSPCMD)	   //
		{
			*errinfo=ComRspTypeErr;			   //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //get error code    
		if(*errinfo!=0) break;
		//temp=amt_get_string(cmdbuf,AMT_TEMPERATURE_ATOM,Buf,0);
		//amt_get_string(cmdbuf,AMT_TEMPERATURE_ATOM,Buf,temp);
		*data=amt_get_int(cmdbuf,AMT_ADC_ATOM); //read ADC value 
		break;
		//MMI初始化
		//目前不支持
		/*	case MMISET:
		WriteCommandType(enFaceCmd);
		for(i=0;i<3;i++)
		{
		*errinfo=ComRw();
		if(*errinfo==enNoneErr) break;
		}
		if(*errinfo!=0) break;
		CommType=ReadCommandType();
		if(CommType!=enFaceRspCmd)
		{
		*errinfo=ComRspTypeErr;
		break;
		}
		*errinfo=GetInt(enErrorCodeAtom);
		break;  */
		//读取IMEI号码
		//输入:无
		//输出:*data(data[0])	IMEI号码长度
		//		*Buf	读到的IMEI号码
		//		*errinfo
		//备注:
	case RDIMEI:////读取IMEI号码
		amt_set_commandtype(cmdbuf,AMT_READIMEI_CMD);    
		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);  //
		if(CommType!=AMT_READIMEI_RSPCMD)	   //
		{
			*errinfo=ComRspTypeErr;			   //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //get error code    
		if(*errinfo!=0) break;
		temp=amt_get_bytes(cmdbuf,AMT_IMEI_ATOM,Buf,0);  //IMEI length
		amt_get_bytes(cmdbuf,AMT_IMEI_ATOM,Buf,temp);	  //read IMEI number
		//*data=temp;
		break;
		//写IMEI号码
		//*data: NULL
		//输入:*Buf 待写入的IMEI号码
		//输出:*errinfo
		//备注:
	case WRIMEI:  ////写IMEI 号码
		amt_set_commandtype(cmdbuf,AMT_WRITEIMEI_CMD);  //get command type
		amt_set_bytes(cmdbuf,AMT_IMEI_ATOM,Buf,15);   // Write imei
		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_WRITEIMEI_RSPCMD)  //
		{
			*errinfo=ComRspTypeErr;   //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //get error code
		break;
		//读取按键值
		//*data: NULL
		//输入:无
		//输出:*rult: 读取被按下的按键值,ASCII字符串型
		//		*errinfo
		//备注:此功能需在KEYBD功能执行成功,开启了按键测试后方可进行
	case KBVAL:	////读取键盘按键值
		*errinfo=Com_Rd(0.01); //read key value from COM port
		if(*errinfo!=0) break;
		//amt_set_commandtype(cmdbuf,AMT_KEYVALUE_CMD);
		CommType=amt_get_commandtype(cmdbuf); //read command type from UE 
		if(CommType!=AMT_KEYVALUE_CMD)  //if command type is wrong
		{
			*errinfo=ComRspTypeErr; //return error number
			break;
		}   
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //get error code    
		if(*errinfo!=0) break;  //there is error,then break
		temp=amt_get_string(cmdbuf,AMT_KEYVALUE_ATOM,Buf,0);  //get key value
		amt_get_string(cmdbuf,AMT_KEYVALUE_ATOM,Buf,temp);  //
		break;
		//COM口测试
		/*case COMTEST:
		Com_test();
		//	*errinfo=Com_Rd(50);
		break;  
		*/  
		//键盘背光测试
		//输入:*data(data[0])	开始停止	Boolean		True-开启
		//												False-关闭
		//*rult: NULL
		//输出:*errinfo
		//备注:
	case BKLIGHT:  ////键盘背光测试
		amt_set_commandtype(cmdbuf,AMT_BACKLIGHT_CMD);  //set command type   
		amt_set_bool(cmdbuf,AMT_START_ATOM,data[0]);  //set bool value to cmdbuf      
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			if(*errinfo==enNoneErr) break; //no error, break
		}
		if(*errinfo!=0) break;  //fail to run this test for three times,break
		CommType=amt_get_commandtype(cmdbuf);  //read response command type
		if(CommType!=AMT_BACKLIGHT_RSPCMD)     //
		{
			*errinfo=ComRspTypeErr; //command type not correct
			break;					//
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code  
		break;  
		//读DSP Memory中物理层码表
		//输入: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 RDMTBL: //读物理层码表
		amt_set_commandtype(cmdbuf,AMT_READTABLE_MEMORY_CMD);  // set command type
		amt_set_int(cmdbuf,AMT_TABLETYPE_ATOM,data[0]); //para 1 : table kind
		amt_set_int(cmdbuf,AMT_DATAADDR_ATOM,data[1]);  //para 2 : offset address
		amt_set_int(cmdbuf,AMT_DATALENGTH_ATOM,data[2]);  //para 3 : data length
		//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_MEMORY_RSPCMD)
		{
			*errinfo=ComRspTypeErr;			  //
			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);  //get data length
		amt_get_bytes(cmdbuf,AMT_DATA_ATOM,Buf,MsgLen);	  //get data
		break;
		//写DSP Memory中物理层码表
		//输入: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 WRMTBL: //写物理层码表
		amt_set_commandtype(cmdbuf,AMT_WRITETABLE_MEMORY_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]);
		amt_set_bytes(cmdbuf,AMT_DATA_ATOM,Buf,data[2]); //para 3 : 数据
		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_WRITETABLE_MEMORY_RSPCMD)
		{
			*errinfo=ComRspTypeErr; //
			break;
		}
		/*temp=amt_get_int(cmdbuf,AMT_DATALENGTH_ATOM);  //get written data length
		if(temp!=data[2])
		{
		*errinfo=5;  //written data length error
			}*/
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //get error code    
		break;
		//读取电池电压ADC表
		//*rult: NULL
		//输入:*data:data[0]	AMT_MINMAX_ADC_ATOM		0-最小值
		//												1-最大值
		//输出:*data:data[1]	读取到的表值
		//		*errinfo
		//备注:
	case RDBADC: ////读取电池电压ADC表
		amt_set_commandtype(cmdbuf,AMT_READ_BATTERYADC_CMD);  //set command type
		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_READ_BATTERYADC_RSPCMD)
		{
			*errinfo=ComRspTypeErr;			   //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //get error code  
		if(*errinfo!=0)break;
		temp=amt_get_bytes(cmdbuf,AMT_ADC_ATOM,data,0); 
		amt_get_bytes(cmdbuf,AMT_ADC_ATOM,data,temp); 
		break;
		//写电池电压ADC表
		//*rult: NULL
		//输入:*data:	data[0]	a
		//						
		//				data[1]	b
		//输出:*errinfo
		//备注:
	case WRBADC:  ////写电池ADC表
		amt_set_commandtype(cmdbuf,AMT_WRITE_BATTERYADC_CMD);  //set command type
		amt_set_bytes(cmdbuf,AMT_ADC_ATOM,data,8);	 
		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_WRITE_BATTERYADC_RSPCMD)
		{
			*errinfo=ComRspTypeErr;   //command type error
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //get error code    
		break;
	case RCURADC:  ////电池current值读取
		amt_set_commandtype(cmdbuf,AMT_READ_CURRENT_CMD);     
		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_READ_CURRENT_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_BATTERYVALUE_ATOM);  
		break;
		
		break;
	case RCURADCDAC16:  
		amt_set_commandtype(cmdbuf,AMT_READ_CURRENT_ADC16_CMD);     
		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_READ_CURRENT_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_BATTERYVALUE_ATOM);  
		
		break;
		
	case RCURADCDAC64:  
		amt_set_commandtype(cmdbuf,AMT_READ_CURRENT_ADC64_CMD);     
		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_READ_CURRENT_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_BATTERYVALUE_ATOM);  
		
		break;
		
	case RTEMADC:  ////电池电压temperature值读取
		amt_set_commandtype(cmdbuf,AMT_READ_TEMPERATURE_CMD);     
		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_READ_TEMPERATURE_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_BATTERYVALUE_ATOM);  
		break;
		
	case RFLASHCURADC: ////读取电池current ADC表
		amt_set_commandtype(cmdbuf,AMT_READ_BATCURRENTADC_CMD);  //set command type
		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_READ_BATCURRENTADC_RSPCMD)
		{
			*errinfo=ComRspTypeErr;			   //
			break;
		}

⌨️ 快捷键说明

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