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