电话本电话号码不能显示的问题

 

原因:不能显示时,该条电话记录没有保存type类型,导致data_len后移,而代码中取的长度值仍是那一位,而此时该值为0xFF,导致系统认为电话号码为空

 

正常的电话记录在trace dump中的显示

例一

例二

有问题的电话记录在trace dump中的显示

例一

例二

修改:

Pbmgsdi.c

pbm_gsdi_process_sim_data

{

……

  //muxiang add for phone number can't display 2010.11.2

/*-------------------------------------------------------------------------------------------------------------------

  typedef PACKED struct {

    byte bcd_len;

    byte ton_npi;

    byte number[10];    

    ...

  } pbm_fixed_sim_rec_s_type

  normal  bcd_len = 0x07  ton_npi = 0x81

  error   bcd_len = 0xff  ton_npi = 0x07

--------------------------------------------------------------------------------------------------------------------*/

  /*if (fixed_sim_record->bcd_len == 0xFF)

  {

    if(fixed_sim_record->ton_npi != 0xFF)

        fixed_sim_record->bcd_len = fixed_sim_record->ton_npi;

  }*/

  //end

  {

      //muxiang modify for phone number can't display 2011.3.21

      uint8 i;

      for(i=0;i<10;i++)

      {

          if(fixed_sim_record->number[i]==0xFF)

              break;

      }

      fixed_sim_record->bcd_len = i;

  }

……

}

蓝色字体部分是第一次的改动,判断bcd_len字段是否为0xFF,是则进一步判断ton_npi是否为0xFF,不是则将ton_npi的值拷贝给bcd_len

但是这种改法想当然的以为ton_npi的值就是bcd_len的值,在碰到ton_npi和bcd_len都是0xFF时,这个改法依然会有问题

之后客户还是发现有电话号码不能显示的问题存在,所以有了红色字体的改动,将number字段遍历一次,获取其长度并赋值给bcd_len

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值