mt2503 在MMI版本实现AT+CPBF

[DESCRIPTION]
目前只有在Modem版本上,才能支持AT+CPBF功能;在MMI版本上不支持CPBF;为了在MMI版本实现AT+CPBF:MMI并没有支 持CPBF的相关接口;由于MMI版本,L4C也没有记录电话本的数据,所以需要通过MMI来获取数据;所以,借用CPBR的接 口,从MMI读数据,然后在L4C分析比较数据;符合条件的就通过UART上报。

[SOLUTION]
下面的代码在09B0952上验证通过。
修改了三个函数,请注意对比区分添加修改的代码;
rmmi_cpbf_hdlr
l4cphb_read_response_handler
rmmi_phb_entry_rsp_fmttr
1,voidrmmi_cpbf_hdlr(rmmi_string_struct*source_string_ptr)
{
kal_boolret_val=KAL_FALSE;
kal_uint8const*rsp_str=NULL;
kal_uint16string_length=0;
//#ifdefined(__PHB_SORT_ENABLE__)
kal_uint8result;
kal_uint8length;
kal_uint8text[32];
l4_name_structname;
//#endif
kal_uint8buffer[RMMI_SHORT_RSP_LEN];
kal_uint8alpha_length;
kal_uint8num_length;
rmmi_context_struct*rmmi_ptr=RMMI_PTR;
kal_uint16index;
kal_uint8i;
kal_trace(TRACE_FUNC,FUNC_RMMI_CPBF_HDLR_ENTRY);
if(L4C_PTR->phb_ready_flag==KAL_FALSE)
{
rmmi_ptr->cmee_err=OPERATION_NOT_ALLOWED_ERR;
}
else
{
switch(source_string_ptr->cmd_mode)
{
caseRMMI_TEST_MODE:
{
if(rmmi_is_valid_phb_storage(rmmi_ptr->phb_storage_type)==KAL_TRUE)
{
rmmi_get_phb_length(&alpha_length,&num_length);
kal_sprintf((kal_char*)buffer,"+CPBF:%d,%d",num_length,alpha_length);
ret_val=KAL_TRUE;
rsp_str=&buffer[0];
string_length=strlen((char*)rsp_str);
}
break;
}
caseRMMI_SET_OR_EXECUTE_MODE:
{
#ifdefined(__PHB_SORT_ENABLE__)
result=rmmi_string_validator(
source_string_ptr,
rmmi_ptr->s_reg.s3,/*separator*/
30,
(kal_uint8*)text);
if(result==RMMI_VALIDATOR_ERROR)
{
break;
}
if((rmmi_ptr->char_set==RMMI_CHSET_UCS2)||(rmmi_ptr->char_set==RMMI_CHSET_HEX))
{
//wedon'tsupport+CPBFforUCS2.
rmmi_ptr->cmee_err=RMMI_ERR_OPERATION_NOT_SUPPORTED;
break;
/*converttoucs2valueandstoreinalpha_id
isUCS2format=check_ucs2_value((kal_uint8*)text,(kal_uint8*)name.name);
if(isUCS2format==KAL_FALSE)break;
name.name_length=strlen((char*)text)/2;
name.name_dcs=PHB_UCS2;*/
}
else
{
length=strlen((char*)text);
name.name_length=length;
kal_mem_cpy((kal_uint8*)name.name,(kal_uint8*)text,length);
name.name_dcs=PHB_ASCII;
}
ret_val=l4c_phb_get_entry_by_prefix_text_req(
source_string_ptr->src_id,
PHB_PHONEBOOK,
15,
(l4_name_struct*)&name);
if(ret_val==KAL_TRUE)
{
return;
}
else
{
rmmi_ptr->cmee_err=RMMI_ERR_COMMAND_CONFLICT;
}
#else/*__PHB_SORT_ENABLE__*/
/*mtk01616_081106:searchfunctionneeDTUrnoncompileoption__PHB_SORT_ENABLE__tosupport*/
//rmmi_ptr->cmee_err=RMMI_ERR_OPERATION_NOT_SUPPORTED;
index=source_string_ptr->index;
result=rmmi_string_validator(
source_string_ptr,
rmmi_ptr->s_reg.s3,/*separator*/
30,
(kal_uint8*)text);
source_string_ptr->index=index;
if(result==RMMI_VALIDATOR_ERROR)
{
break;
}
if((rmmi_ptr->char_set==RMMI_CHSET_UCS2)||(rmmi_ptr->char_set==RMMI_CHSET_HEX))
{
//wedon'tsupport+CPBFforUCS2.
rmmi_ptr->cmee_err=RMMI_ERR_OPERATION_NOT_SUPPORTED;
break;
/*converttoucs2valueandstoreinalpha_id
isUCS2format=check_ucs2_value((kal_uint8*)text,(kal_uint8*)name.name);
if(isUCS2format==KAL_FALSE)break;
name.name_length=strlen((char*)text)/2;
name.name_dcs=PHB_UCS2;*/
}
else
{
length=strlen((char*)text);
/*name.name_length=length;
kal_mem_cpy((kal_uint8*)name.name,(kal_uint8*)text,length);
name.name_dcs=PHB_ASCII;
*/
//convertlowercaselettertouppercaseletter.
for(i=0;i<length;i++)
{
if((text>=0x61&&text<=0x7A)||/*Latinbasic*/
(text>=0xE0&&text<=0xF6)||(text>=0xF8&&text<=0xFE))/*Latin-1*/
{
text=text-0X20;
}
}
strncpy((char*)rmmi_ptr->cpbf_findtext,(char*)text,length);
}
//getinfothroughcpbr
{
kal_uint16total,used;
if(!l4c_phb_get_storage_info(source_string_ptr->src_id,rmmi_ptr->phb_storage_type,&used,&total))
{
rmmi_ptr->cmee_err=RMMI_ERR_UNKNOWN;
mEMSet(rmmi_ptr->cpbf_findtext,0,sizeof(rmmi_ptr->cpbf_findtext)-1);
}
else
{
kal_uint8*string;
string=get_ctrl_buffer(40);//kal_uint8cpbf_findtext[30];
kal_wsprintf((WCHAR*)string,"at+cpbr=1,%d",total);
ucs2_to_ascii((kal_wchar*)string,(kal_uint8*)source_string_ptr->string_ptr);
free_ctrl_buffer(string);
source_string_ptr->cmd_index=53;//cpbr
rmmi_cpbr_hdlr(source_string_ptr);
}
}
#endif/*__PHB_SORT_ENABLE__*/
break;
}
default:
{
/*unrecognizedformatofATcommandline*/
break;
}
}/*endoftheswitch*/
}
//#endif
rmmi_final_rsp_generator(source_string_ptr->src_id,ret_val,(kal_uint8*)rsp_str,string_length);
return;

}

资料只有部分内容,阅读完整资料,请到一牛网论坛 MT2503

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值