問題描述:
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的都是大寫。