标签:
IccConstants.java
staticfinal intEF_SMS = 0x6F3C;
if (statusReportRequested) { // Set TP-Status-Report-Request bit. mtiByte |= 0x20; if (VDBG) Rlog.d(LOG_TAG, "SMS status report requested"); } // (TP-Validity-Period) if ((mtiByte & 0x10) != 0) { Rlog.d(LOG_TAG, "Write validity period into pdu:" + validityPeriod); bo.write(validityPeriod); }
SubmitPdu ret = new SubmitPdu(); //PDU Type ByteArrayOutputStream bo = getSubmitPduHead(scAddress, destinationAddress, mtiByte, statusReportRequested, ret); // space for TP-Message-Reference #bo.write(0); // destination address #bo.write(daBytes, 0, daBytes.length); // TP-Protocol-Identifier #bo.write(0); // TP-Data-Coding-Scheme // (TP-Validity-Period) // User Data (and length) #bo.write(userData, 0, userData.length);
缺省的GSM字符集为7位编码,Bit8可以被忽略。依次将下一位7位编码的后几位逐次移至前面,形成新的8位编码。
Android RIL提供了无线硬件设备与电话服务之间的抽象层
RIL.java中定义了一个Java类RILRequest,代表着一个即将发送出去的RIL请求,它里面包含了Request请求号、序列号(自0开始累加)和保存请求结果的Message。Java部分的Request请求号就是上述的RILConstants.java中的常量(与C/C++部分的请求号保持一致)。当需要执行某种RIL请求时,则需创建一个新的RILRequest——使用RILRequest的obtain函数。
以短信中心为例:
RILRequestrr = RILRequest.obtain(RIL_REQUEST_SET_SMSC_ADDRESS,result);
使用者在使用RIL请求API时,通过sender线程向rild发送RIL请求,具体是:在这些API函数中,得到一个RILRequest(通过其obtain静态函数)后,将要传递给RIL请求的数据写入到socket中,rild侧解析得到传递来的数据,根据请求号调用相应的分发函数转换成AT命令发送给Modem。
Java接口类CommandsInterface定义了与RILJ和rild交互的接口。RILConstants.java文件定义了RIL的各种请求request号和unsolicited号,它们必须与ril.h中的定义保持一致,用于标识请求号和unsolicited消息号。这些标识号也必须出现在ril_commands.h和ril_unsol_commands.h中定义的数组元素中。
文件BaseCommands.java中的BaseCommands类实现了CommandsInterface的部分接口,用于通知手机各种内部状态的变化。它里面包含了很多注册者Registrant和注册者列表RegistrantList,它们代表着对某些事件感兴趣希望接收事件变化通知的接收者。另外,还提供了大量的registerXXX和unregisterXXX函数。当对某种状态变化感兴趣时,就可以调用registerXXX函数将自己注册为一个对某种状态感兴趣的通知接收者。注册时,在BaseCommands内部创建一个对应的registrant或将registrant添加到列表registrantList中。registrantList表示某种状态有多个感兴趣者,因此将registrant添加到RegistrantList中。
1.短息中心号码:at+csca
该指令用来设置短信中心号码。负责转播和存储转发SME和MS之间的短消息。如果MS,支持SMS-MO(短消息服务移动发送),为了使用SMS,必须在MS中设置SMSC(短消息服务中心,SCA)。查看存储在SIM卡中的当前服务中心地址:AT+CSCA?
2.选择短信服务:at+csms
该指令用于支持的短消息包括:发送(SMS-MO)、接收(SMS-MT)、小区广播(SMS-CB)。
3.设置短消息模式:at+cmgf
该指令用于设置短信的输入模式。
4.读取短信列表:at+cmgl;储存位置的列表 at+cpms
at+cmgl该指令用于读取某一类存储的短信,短信会被从+cpms指令选取的当前的存储器中读取出来。
at+cpms该指令用于读取手机所支持的存储位置的列表。
5.发送短消息:at+cmgs
该指令用于将短消息从模块发送到网络,短消息发送成功后网络返回参考值<mr>给模块。
6.写短消息到存储器:at+cmgw
该指令用于往存储器中写入短消息,正确存储后返回位置信息<index>。
7.写短消息到存储器:at+cmgd
该指令用于从当期存储器中删除某一条短消息
<index>:存储的短息的记录号
<delflag>:删除标记。
0:删除指定记录号的短息
1:删除所有已读的短息
2:删除所有已读和已发送的短息
3:删除所有已读、已发送和未发送的短息
4:删除所有短息
8.重复执行上一条指令a/
标签:
原文地址:http://blog.csdn.net/sinat_34157462/article/details/51328984