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

📄 com_driver.c

📁 lab windows uart driver
💻 C
📖 第 1 页 / 共 5 页
字号:
		//输出:*errinfo
		//备注:
	case WTBODNO:  ////写Board No.
		amt_set_commandtype(cmdbuf,AMT_WRITE_BOARD_CMD);  //Set command type
		amt_set_string(cmdbuf,AMT_BOARD_ATOM,Buf);   // Write Board No.
		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_BOARD_RSPCMD)  //
		{
			*errinfo=ComRspTypeErr;   //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //get error code
		break;
		//Read Test result
		//输入:*data: data[0]	测试站点序列号
		//输出:*data: data[1]	测试结果	0-未测试
		//									1-PASS
		//									2-FAIL
		//		*Buf 读取到的描述信息,ASCII字符串
		//		*errinfo
		//备注:
	case RDFLAG:							////读取生产测试相关信息
		amt_set_commandtype(cmdbuf,AMT_READ_TEST_RESULT_CMD);  //set command type
		amt_set_int(cmdbuf,AMT_SITE_ATOM, data[0]);  //set station no.
		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 command type
		if(CommType!=AMT_READ_TEST_RESULT_RSPCMD)	   //
		{
			*errinfo=ComRspTypeErr;			   //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //get error code    
		if(*errinfo!=0) break;
		data[1]=amt_get_int(cmdbuf,AMT_RESULT_ATOM); //get test result
		temp=amt_get_string(cmdbuf,AMT_DESCRIPTION_ATOM,Buf,0); //get the length of test description
		amt_get_string(cmdbuf,AMT_DESCRIPTION_ATOM,Buf,temp);   //get test description
		break;
		//写入测试结果
		//输入:*data: data[0]	测试站点序列号
		//			   data[1]	测试结果	0-未测试
		//									1-PASS
		//									2-FAIL
		//		*Buf 待写入的描述信息,ASCII字符串
		//输出:*errinfo
		//备注:
	case WTFLAG:  ////写生产测试结果和相关信息
		amt_set_commandtype(cmdbuf,AMT_WRIET_TEST_RESULT_CMD);  //set command type
		amt_set_int(cmdbuf,AMT_SITE_ATOM, data[0]);  //set station no. 
		amt_set_int(cmdbuf,AMT_RESULT_ATOM,data[1]); //set test result
		amt_set_string(cmdbuf,AMT_DESCRIPTION_ATOM,Buf);   // set test description
		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_TEST_RESULT_RSPCMD)  //
		{
			*errinfo=ComRspTypeErr;   //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //get error code
		break;	
		//改变麦克风的参数
		//*Buf: NULL
		//输入:*data(data[0]) 待写入的MIC参数
		//输出:*errinfo
		//备注:
	case WTMIC:  ////改变麦克风的参数
		amt_set_commandtype(cmdbuf,AMT_WRITE_MIC_CMD); 
		amt_set_int(cmdbuf,AMT_MIC_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_WRITE_MIC_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//读取麦克风的参数
		//*Buf: NULL
		//输入:无
		//输出:*data(data[0]) 读取到的MIC参数
		//		*errinfo
		//备注:
	case RDMIC: //读取麦克风的参数     
		amt_set_commandtype(cmdbuf,AMT_READ_MIC_CMD);  //set command type    
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and check response from UE
			if(*errinfo==enNoneErr) break;  //there is error,try three times .or break
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf); //get response command type
		if(CommType!=AMT_READ_MIC_RSPCMD) //
		{
			*errinfo=ComRspTypeErr;			  //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //get error code    
		if(*errinfo!=0) break;
		*data=amt_get_int(cmdbuf,AMT_MIC_ATOM); //read ADC value 
		break;
		//USIM检测
		//*Buf: NULL
		//输入:无
		//输出:*data(data[0]) 检测结果	0-检测不到USIM
		//								1-成功检测到USIM
		//
		//		*errinfo
		//备注:
	case USIMCHECK: //读取USIM卡状态
		amt_set_commandtype(cmdbuf,AMT_USIMCHECK_CMD);  //set command type    
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and check response from UE
			if(*errinfo==enNoneErr) break;  //there is error,try three times .or break
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf); //get response command type
		if(CommType!=AMT_USIMCHECK_RSPCMD) //
		{
			*errinfo=ComRspTypeErr;			  //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //get error code    
		if(*errinfo!=0) break;
		*data=amt_get_bool(cmdbuf,AMT_USIMPRESENT_ATOM); //read ADC value 
		break;
		//将DSP Memory中的码表更新到Flash
		//*data: NULL
		//*Buf: NULL
		//输入:无
		//输出:*errinfo
		//备注:
	case UPDATEFTBL:  ////更新FLASH中的码表
		amt_set_commandtype(cmdbuf,AMT_REFRESHTABLE_FLASH_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_REFRESHTABLE_FLASH_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//GPIO测试
		//*输入:*data: data[0]	Start/Stop	0-停止
		//									1-开始
		//				data[1]	置为高电平的GPIO组	1-组1置高
		//											2-组2置高
		//*Buf: NULL
		//输出:*errinfo
		//备注:
	case GPIOMES:
		amt_set_commandtype(cmdbuf,AMT_GPIO_CMD);
		amt_set_bool(cmdbuf,AMT_START_ATOM,data[0]);
		amt_set_int(cmdbuf,AMT_GPIOGROUP_ATOM, data[1]); //GPIO组号
		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_GPIO_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//GSM透传命令
		//*输入:*data: data[0]	需透传的GSM Control command ID
		//				data[1]	需透传的GSM命令的总长度
		//		 *Buf: 需透传的GSM命令
		//输出: *Buf: DSP反馈命令
		//		 *errinfo
		//备注: GSM Control command ID的具体定义参见Comm.h中ADIL1CAL_PRIMITIVES的定义
	case GSMCOMMAND:
		Buf[0] = data[0]&0xFF;
		Buf[1] = (data[0]>>8)&0xFF;
		Buf[2] = (data[0]>>16)&0xFF;
		Buf[3] = (data[0]>>24)&0xFF;
		amt_set_commandtype(cmdbuf,AMT_GSM_TRANSPARENT_CONTROL_CMD);
		amt_set_bytes(cmdbuf,AMT_GSM_CONTROLCMD_ATOM,Buf,data[1]);
		for(i=0;i<3;i++)
		{
			*errinfo=ComRw();  //send command and read response
			//if(*errinfo==enNoneErr) break;  //
			if(*errinfo!=-1) break;
		}
		if(*errinfo!=0) break;
		CommType=amt_get_commandtype(cmdbuf); //get response command type
		if(CommType!=AMT_GSM_TRANSPARENT_CONTROL_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		if(*errinfo) break;
		memset(Buf,0,sizeof(Buf));
		temp=amt_get_bytes(cmdbuf,AMT_GSM_CONTROLCMD_ATOM,Buf,0); //
		amt_get_bytes(cmdbuf,AMT_GSM_CONTROLCMD_ATOM,Buf,temp);   //
		MsgLen=(unsigned char)Buf[0]+((unsigned char)Buf[1]<<8)+((unsigned char)Buf[2]<<16)+((unsigned char)Buf[3]<<24);  //获取Configure信息中的CommandId
		if(MsgLen!=data[0]+1) *errinfo=DspRspTypeErr;//比较CommandId
		break;
		//复制NVRAM到共享内存
		//*data: NULL
		//*Buf: NULL
		//*输入:无
		//输出:*errinfo
		//备注:将所有GSM码表从NVRAM复制到共享内存中
	case GSMCPFTOM:
		amt_set_commandtype(cmdbuf,AMT_GSM_READTABLE_FLASH_TO_MEMORY_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_GSM_READTABLE_FLASH_TO_MEMORY_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//读取GSM码表flag(NVRAM)
		//*Buf: NULL
		//*输入:无
		//输出:*data(data[0]) flag(bool)
		//		*errinfo
		//备注:此flag决定DSP是否在启动时从NVRAM更新码表
	case GSMRDFLAG:
		amt_set_commandtype(cmdbuf,AMT_GSM_READTABLE_FLAG_FLASH_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_GSM_READTABLE_FLAG_FLASH_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		if(*errinfo) break;
		*data=amt_get_bool(cmdbuf,AMT_GSM_TABLEFLAG_ATOM); //read flag
		break;
		//更新GSM码表
		//*Buf: NULL
		//*输入:*data(data[0])	flag  0- DSP启动时不需要从NVRAM更新GSM码表
		//							  1- DSP启动时需要从NVRAM更新GSM码表
		//输出:*errinfo
		//备注: 将所有GSM码表从共享内存复制到NVRAM中
	case GSMUPDATE:
		amt_set_commandtype(cmdbuf,AMT_GSM_REFRESHTABLE_MEMORY_TO_FLASH_CMD);
		amt_set_bool(cmdbuf,AMT_GSM_TABLEFLAG_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_GSM_REFRESHTABLE_MEMORY_TO_FLASH_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		break;
		//读GSM码表(共享内存)
		//输入:*data: data[0]: AMT_GSM_TABLETYPE_ATOM, 1:GSM AFC表
		//												2:GSM TXSCAL表    
		//												3:GSM RXGAIN表    
		//												4:GSM TXFREQ表    
		//												5:GSM RXFREQ表    
		//												6:GSM POWPROFILE表
		//				data[1]: AMT_DATAADDR_ATOM, 表中偏移地址
		//				data[2]: AMT_DATALENGTH_ATOM, Data length,单位为Byte
		//输出:*Buf:读取到的表值
		//		*errinfo
		//备注: 
	case GSMRDMTBL:
		amt_set_commandtype(cmdbuf,AMT_GSM_READTABLE_MEMORY_CMD);  // set command type
		amt_set_int(cmdbuf,AMT_GSM_TABLETYPE_ATOM,data[0]); //para 1 : table type
		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
		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_GSM_READTABLE_MEMORY_RSPCMD)
		{
			*errinfo=ComRspTypeErr;			  //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //get error code   
		if(*errinfo!=0)break;
		memset(Buf,0,sizeof(Buf));
		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;
		//写GSM码表(共享内存)
		//输入:*data: data[0]: AMT_GSM_TABLETYPE_ATOM, 1:GSM AFC表
		//												2:GSM TXSCAL表    
		//												3:GSM RXGAIN表    
		//												4:GSM TXFREQ表    
		//												5:GSM RXFREQ表    
		//												6:GSM POWPROFILE表
		//				data[1]: AMT_DATAADDR_ATOM, 表中偏移地址
		//				data[2]: AMT_DATALENGTH_ATOM, Data length,单位为Byte
		//		*Buf:待写入的表值
		//输出:*errinfo
		//备注:
	case GSMWRMTBL:
		amt_set_commandtype(cmdbuf,AMT_GSM_WRITETABLE_MEMORY_CMD);  //set command type
		amt_set_int(cmdbuf,AMT_GSM_TABLETYPE_ATOM,data[0]); //para 1 : 表类型
		amt_set_int(cmdbuf,AMT_DATAADDR_ATOM,data[1]);  //para 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_GSM_WRITETABLE_MEMORY_RSPCMD)
		{
			*errinfo=ComRspTypeErr; //
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM); //get error code
		break;
		
		/*Wang Hong Ren modified 2007.09.05 begin*/
#if 0
	case LCD_EXTRA_PATTERN_SET:
		amt_set_commandtype(cmdbuf,AMT_FLEX_CMD); 
		amt_set_int(cmdbuf,AMT_FLEX_EXTRA_MODULE_ATOM,data[0]); 
		amt_set_int(cmdbuf,AMT_LCD_EXTRA_PATTERN_ATOM,data[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_FLEX_RSPCMD)
		{
			*errinfo=ComRspTypeErr;
			break;
		}
		*errinfo=amt_get_int(cmdbuf,AMT_ERRORCODE_ATOM);  //read error code
		

⌨️ 快捷键说明

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