📄 com_driver.c
字号:
//输出:*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 + -