数据本地化
业务个性化
问题描述:
4G模块在+CPBW等操作SIM电话簿时,需要按照要求进行必要的转换。
问题分析:
SIM中的电话簿是按照BCD码存贮的每个号码对应4个bits。3GPP31.102对SIM中字符的定义:
BCD Value |
Character/Meaning |
'0' |
"0" |
: |
: |
'9' |
"9" |
'A' |
"*" |
'B' |
"#" |
'C' |
DTMF Control digitseparator(seeTS22.101[24]). |
'D' |
"Wild"value.ThiswillcausetheMMItoprompttheuserforasingledigit(seeTS22.101[24]). |
'E' |
RFU. |
'F' |
Endmarke.g.in caseof anoddnumberof digits. |
但是在多种不同手机测试的结果:
BCD Value |
Meaning |
功能机 |
智能机 |
'C' |
电话接通后等待3秒发送'C'之后的 DTMF |
p |
,(自动将p转化为,) |
'D' |
拨号时等待用户补全'D'位置上的一位号码 |
w或者? |
N |
'E' |
电话接通后等待用户确认发送'E'之后的 DTMF |
/ |
;(自动将w转化为;) |
'F' |
结束标志 |
/ |
/ |
可以看到,‗w‘在功能机是"Wild";但是在智能机却是"Wait",在使用中有可能造成歧义。
为了避免上述问题,我们统一按照中移OTA操作SIM电话簿的规范:
卡中 |
HOST侧 |
0-9 |
0-9 |
A |
* |
B |
# |
C |
C |
D |
D |
E |
E |
关于A,用户可以输入A\a\*,我们按照A存卡;显示给HOST只有*。关于B,用户可以输入B\b\#,我们按照B存卡;显示给HOST只有#。
关于C,D,E,用户可以输入c\C,d\D,e\E,我们按照对应的BCD码存卡;显示给HOST的都是大写。