- 浏览: 426972 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
weiwu83:
为什么我在手机内访问127.0.0.1访问不了呀
NanoHttpd 构建android 手机端的HttpServer -
jiae:
为啥我的插入语句乱码? 但是可以插入数据库 然后复制你 ...
SQLite3 在应用启动时初始化数据 -
lichenxiao77:
...
android 连接远程数据库 -
林源滔:
为什么我make clobber之后第一次执行make 可以。 ...
No rule to make target `out/target/common/obj/JAVA_LIBRARIES/bouncycastle_in -
cn23snyga:
new String(str.getBytes("I ...
android 平台上SQLite3中文乱码 --我的小bug
ril是具体的AT指令合成者和应答解析者。从最基本的功能来讲,ril建立了一个侦听Socket,等待客户端的连接,然后从该连接上读取RIL-Java成传递来的命令并转化成AT指令发送到Modem。并等待Modem的回应,然后将结果通过套接口传回到Ril-Java层。
AT通讯的过程中有两类响应:一种是请求后给出应答,一种是通知类,即为不请自来的,例如短信通知达到,我们称该类通知为URC。在Rild中URC和一般的Response是分开处理的,概念上URC由handleUnsolicited@Atchannel.c处理,而Response由handleFinalResponse来处理。
来源:http://www.uml.org.cn/mobiledev/201107263.asp
与AT error有关的网址:http://www.developershome.com/sms/resultCodes2.asp 利用AT命令无线模块拨号上网以及建立PPP连接的流程图如图4.3所示。
无线模块的无线网络连接可分为比较明显的两阶段:
第一阶段,配置无线模块参数,进行一系列初始化,然后发送AT指令拨上中国移
动GPRS的WAP网关;
第二阶段,同GPRS的WAP网关通过三阶段协商(即LCP连接协商、CHAP密码
认证、NCP网络层协议配置)建立PPP连接链路。
连接成功后,无线模块就会从GPRS的WAP网关上获得一个动态IP地址,该动态
IP地址一般是10.188.xxx.xxx。接下来,无线模块就可以进行TCP/IP数据包传输,访问
GPRS网内的主机,完成无线网络的连接,发送封装好的MMS信息。
AT命令集是调制解调器可以识别并执行的命令,专门用于控制GSM Modem,它是由美国Hayes公司所发展的数据传输通信接口。计算机和单片机通过串行端口对Modem发出相应的AT命令,可以调整Modem各种工作方式。AT命令简单、容易掌握,GSM07.07协议对AT指令做了详细的介绍。GSM07.07中定义的AT Command接口,提供了一种移动平台与数据终端设备之间的通用接口。GSM模块提供的命令接口符合GSM07.07规范,在短消息模块收到网络发来的短消息时,能够通过串口发送指示消息,数据终端设备可以向GSM模块发送各种命令。AT指令在当代手机通讯中起着重要的作用,用户能够通过AT指令控制手机的许多行为,包括进行呼叫、拨叫号码、按键控制、短信、电话本、数据业务、补充业务、传真、GPRS等方面的控制。本课题中是控制模块利用AT命令来控制无线模块拨号连接无线网络。
AT命令的语法是[[351:在每行命令的开头都必须有“AT”或者“at”作前缀,用输入<CR>来结束这个命令。"ATXX”及少量“AT十XXX”为V.25标准命令集;"AT+CXXX "为GSM标准所扩展的AT命令;"AT+SXXX”为SIEMENS定义扩展的AT命令。
发送AT指令时,应注意以下几点:
(1)每个AT命令字符串的最后面必须加上CR(也就是键盘上的Enter键)字符,否则无线模块将不识别此命令。这个字符就是结束符。
(2)除了“A/”及“+++”命令外,其它的命令必须加上AT两个字符。
(3)命令字符串可以合成一个字符串后再一次送给调制解调器,但总的字符串长度
不得超过40个字符,而且所有的字符必须一律大写或小写。
本课题中,无线模块采用的是BENQ M22的GSM/GPRS模块,因为选用的是专业厂家生产的GPRS模块,设计中可以不再考虑GPRS附着和PDP上下文激活等复杂过程,只需用AT指令操作专用的GPRS模块上网即可。用AT命令设置无线模块的参数时,必须先要将命令写入串口,读取串口的应答数据来判断是否成功。一般命令发送成功时,模块会返回数据“OK",表示命令执行成功。如果没有成功,要继续发送命令,
发送3次后还是没有成功,就重新初始化串口。
对无线模块GPRS拨号上网,需要用到AT+CGDCONT和ATD这两条指令
1) AT+CGDCONT=l,"IP”,“CMWAP”
此命令用于设置GPRS接入网关,其中第二个数表示PDP (Packet Data Protocol)
类型为:IP或PPP,第三个数表示接入网关为移动梦网,APN是CMWAP,表示中国移动网应用接口。目前只有中国移动全球通卡才可以使用CMNET功能,而动感地带只能使用CMWAP功能。
2) ATD *99***1#
ATD用于设置拨号方式,进行拨号,并设法进入在线(on-line)状态。与传统的电话线Modem相比较,ATD指令在GPRS中有些变化,采用如下两种格式:
格式一:ATD*99[*[<called address>][*[<L2P>][*[<cid>]]]]#
其中99是个服务码,也可用98的(见格式二),国内一般用99: <called address>是w.x.y.z格式的IP V4地址;<L2P>是用于TE和ME连接的Layer2协议或用于PPP协议的Layer2协议;<cid>是表明PDP上下文的一个数字编号,用AT +CGDCONT命令创建,一般为1, 20
格式二:ATD*98[*<cid>]#
含义同上。
举例如下:
ATD*99# //用服务码99建立一个连接
ATD*99* 123.124.125.126*PPP* 1#//用服务码99建立一个连接
HIP地址123.124.125.124, L2P=PPP
//用CID 1, CID的值由AT十CGDCONT事先
指定
ATD*99***1# //用服务码99建立连接,CID =1,其它用事先指定的值
ATD*98*1#//用服务码98建立一个IP连接,CID =1
国内最常用的是:ATD *99***1#,本设计中就采用了此种格式。
用ATD指令若能拨号上线则返回“CONNECT",否则返回“NO CARRIER"。
这样,就完成了拨号上GPRS网络的功能,即接收到无线模块返回的“CONNECT",说明无线模块已经连上了移动GPRS的WAP网关,之后即为通过三阶段协商建立PPP链路的过程。
PPP协议格式分析
利用AT指令无线模块连接上了中国移动的GPRS的WAP网关之后,接着是进行PPP连接。GPRS拨号采用的是点对点协议(Point to Point Protocol, PPP),该协议是是TCP/IP网络协议包的一个成员。其主要作用是无线模块通过拨号连接上终端服务器后,由PPP取得一个临时的IP地址,使该设备成为网络上的一个节点。只要PPP链路顺利建立成功,获得临时的IP地址,则即可在其上嵌入IP等数据包进行数据传送,完成无线模块的无线网络连接。
PPP协议(Point-to-Point Protocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。其目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。
PPP协议中提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题。PPP协议包含了以下几个部分:
.链路控制协议LCP (Link Control Protocol):LCP负责创建,维护或终止一次物理连接;
.网络控制协议NCP (Network Control Protocol):NCP是一族协议,负责解决物理连接上运行什么网络协议,以及解决上层网络协议发生的问题;
.认证协议,PPP协议支持两种验证协议:口令验证协议PAP (PasswordAuthentication Protocol)和挑战握手验证协议CHAP (Challenge-Handshake AuthenticationProtocol)。验证过程在PPP协议中为可选项,在连接建立后进行连接者身份验证的目的是为了防止有人在未经授权的情况下成功连接,从而导致泄密。PAP是一种简单的明文验证方式,安全性较差。而CHAP是对PAP的改进,是一种加密的验证方式,使用挑战口令以哈希算法对口令进行加密,用三次握手的方法周期性地检验对端的节点,优点在于密钥不在网络中传送。本课题中采用的是挑战握手验证协议CHAP.
PPP连接的建立主要经过三个阶段,分别是LCP连接协商、CHAP密码认证以及
NCP网络层协议配置。
第一阶段:LCP连接协商
在这个阶段,将对基本的通讯方式进行选择。链路两端设备通过LCP向对方发送LCP数据报配置请求(Configure-Request),对方同意接收后双方互发LCP数据报配置应答(Configure-Ack )。一旦一个配置成功信息包(Configure-Ack packet)被发送且被接收,就完成了交换,进入LCP开启状态。
第二阶段:CHAP密码认证
在这个阶段,客户端会将自己的身份发送给远端的接入服务器。服务器向用户发PPP CHAP安全性认证挑战,接着用户给服务器送PPP CHAP安全性认证响应,服务器再向用户发送 PPP CHAP安全性认证成功。
该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。在认证完成之前,禁止从认证阶段前进到网络层协议阶段。如果认证失败,认证者应该跃迁到链路终止阶段。
第三阶段:NCP网络层协议配置
认证阶段完成之后,PPP将调用在链路创建阶段(阶段一)选定的各种网络控制协议(NCP )。选定的NCP解决PPP链路之上的高层协议问题,例如,在该阶段IP控制协议(IPCP)可以向拨入用户分配动态IP地址。 在这个阶段,先是用户向服务器发送PPP NCP网络控制数据包(网络协议配置,要求服务器提供IP地址和DNS,NBNS信息),接着服务器向用户发送配置请求PPP NCP网络控制数据包(为用户分配IP地址),用户向服务器发送配置应答PPP NCP网络控制数据包(接受所分配的IP地址),最后服务器向用户发送配置应答PPP NCP网络控制数据包(同意用户的IP地址和DNS地址)。
这样,经过三个阶段以后,一条完整的PPP链路就建立起来了,用户即可向服务器
发送IP数据包。
发表评论
-
Android.mk文件解析
2016-01-27 14:01 868以 tools/tradefederation/Androi ... -
NanoHttpd 构建android 手机端的HttpServer
2015-10-20 16:24 2800NanoHttpd是Github上的一个开源项目, 通过下载 ... -
permission denial : android.permission.INTERACT_ACROSS_USERS_FULL
2015-08-05 16:50 4984在android5.0上运行 Runtime.getRun ... -
android getprop() 和 java System.getPropety()
2015-06-04 14:39 62271 System.getPropety()是java中的方 ... -
android cts测试相关
2015-05-27 17:38 0example: -
android uiautomator 相关
2015-05-15 16:53 16381 Runtime.getRuntime().exec 启 ... -
android UI test Espresso
2015-04-10 18:31 1146google android UI测试工具 espresso ... -
android 安全(转)
2014-12-26 12:37 666一 如何不被反编译解析1防止反编译工具的反编译 查看 ... -
nexus related
2014-12-17 15:29 6771 nexus drivers https://deve ... -
git related
2014-12-17 15:24 9101 see all detailed git info ... -
ubuntu android studio 配置和使用
2014-12-10 17:34 3561Ubuntu 64位,Android studio 的安装, ... -
eclipse+ADT+android配置相关
2014-12-05 16:40 13881 eclipse 过旧时,ant 运行不了,会报sdk. ... -
anroid 开发小知识点
2014-10-09 09:52 7701 1)代码 获取APK安装路径和包名 L ... -
androird 内存泄露 浅析
2013-06-19 17:52 1351主要是记录工作中出 ... -
mms 相关链接
2013-03-15 13:53 1335http://blog.chinaunix.net/uid ... -
java层堆栈调用的打印
2012-12-26 15:14 44091. 在指定的函数内打印相关java调用 Log.d ... -
mms 数据包相关
2012-11-26 14:51 21971 抓包 adb shell tcpdump -i any ... -
sms AT指令返回错误代码: CMS errors & CME errors 的区别!
2012-10-26 18:35 11893CMS的是短信中心的返回错误。 CME 是设备返 ... -
sms 发送 radio log
2012-10-26 17:25 3959发送短信:radio.log 关键字 :SEND_SMS ... -
SQLite --函数
2012-09-03 18:22 1880一、日期和时间函数:原文地址SQLite主要支持以下 ...
相关推荐
Android下sierra 3G ril 创建和连接,AT指令交互的完整log.模块为MC8790V。
在android的HAL层用C语言编写可执行测试程序来模拟andoird的HAL层来与RIL进行socket通信为例来介绍电话模块以外的其他模块如何向Modem发送AT命令。
Android的Radio Interface Layer (RIL)提供了电话服务和的radio硬件之间的抽象层。 Radio Interface Layer RIL(Radio Interface Layer)负责数据的可靠传输、AT命令的发送以及response的解析。应用处理器通过AT命令...
RIL主要负责数据的可靠传输、AT命令的发送(AP与BP通过AT命令集进行通信)以及modem回复response的解析。 Android开发者使用的Modem是不一样的,各种指令格式,初始化序列都可能不一样,为了适应不同的Modem,...
RIL简介 RIL是Radio Interface Layer的缩写。 目前的智能机在硬件上多采用双cpu的架构,一个是基带处理器,...应用处理器通过AT命令集与带GPRS功能的无线通讯模块通信,提供SMS、Voice Call及网络应用的最底层支持。
android at与ril工作原理PPT
应用处理器通过AT命令集与带GPRS功能的无线通讯模块通信,为实现网络的应用提供了一个最底层的支持。 从软件的角度来看,RIL(Radio Interface Layer)工作在PPP、TCP/IP协议之下,负责数据的可靠传输、AT命令的发送...
Android的Radio Interface Layer (RIL)提供了电话服务和的radio硬件之间的抽象层。 Radio Interface Layer RIL(Radio Interface Layer)负责数据的可靠传输、AT命令的发送以及response的解析。应用处理器通过AT命令...
RIL概述 目前的智能机在硬件上多采用双cpu的架构,一个是基带处理器,主要处理数字信号、语音信号的编码解码...应用处理器通过AT命令集与带GPRS功能的无线通讯模块通信,为实现网络的应用提供了一个最底层的支持。。。
负责数据的可靠传输、AT命令的发送以及响应(response)的解析. Android的RIL驱动模块,在hardware/ril目录下,一共分rild,libril.so以及librefrence_ril.so三个部分。 本文档对RIL进行了详细介绍
windows mobile无线接口模块,用来解析和发送AT命令,是无线业务底层驱动.另外提供分析文档
首先抛开Android的一切概念来研究一下电话系统...4)AP跟Modem通讯时通过AT指令的,如何将AT指令变成一个个具体的操作函数,如何管理Modem发给我们的回应,AT命令通道,数据通道如何管理? 5)sim卡的电话本如何管理?
包含ME909S-821 AT命令手册 产品说明书 驱动(android linux wince windows) 硬件规格书 ril库
它们是:使用 SEEK API,将新的服务实现注入电话进程,以及 AT/Hayes 命令。 该应用程序使用透明地找到一个工作接口来进行 SIM I/O。 定位和解析 SIM 文件的代码主要来自 CyanogenMod(尽管 AOSP 代码应该几乎相同...
频段: LTE-FDD: B1/B3/B5/B8 LTE-TDD: B34/B38/B39/B40/B41 GSM: 900/1800 MHz 数据 LTE: LTE-FDD: 最大 10 Mbps (DL)/最大 5 Mbps (UL) LTE-TDD: 最大 7.5 Mbps (DL)/最大 1 Mbps (UL) ...通信增强型 AT 命令
本文详细讲述了Android的开机流程。分享给大家供大家参考,具体如下: 开机过程中无线模块的初始...rild 调用参考实现 Reference-ril.c (hardware\ril\reference-ril) 中的函数: const RIL_RadioFunctions *RIL_Init