Android怎样添加AT命令

Android读取SIM卡ICCID 获取SIM卡ICCID 阅读详情
frameworks/base/telephony/java/com/android/internal/telephony/Phone.java中添加所要发AT命令的上层函数.
  
    Phone是个接口,因此,添加完后,得在实现Phone接口的java类里面实现这个方法,实现Phone的类即GSMPhone.java
  
    位于
    frameworks/base/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
    在这里,调用CommandInterface里面的方法, 因此, 我们还得在CommandInterface里面把我们要增加的方法添加进去
  
    同样的,CommandInterface也是个接口,而实现这个接口的类有2个:
    1. frameworks/base/telephony/java/com/android/internal/telephony/gsm/RIL.java
    2. frameworks/base/telephony/java/com/android/internal/telephony/test/SimulatedCommands.java
    其中第2个是在模拟器里面测试用的, 我们只需要在里面把方法添加进去,然后调用个resultSuccess或者umimplement都可以.
  
    而第1个才是真正到达GSM驱动的类.
    所以,我们得在RIL.java中,实现上层与下层的通信.
    在RIL.java的方法里面,只需要定义好你所需要发送AT命令的一个标识MARK(下面还会提到), 再把RilRequest类里面的Parcel成员mp赋值, 然后发送出去即可.
    赋给mp的值,即为我们需要发送到下层去处理的值, 例如传个数组下去, 一般都先把长度写进去, 其次再把成员依次写入.
  
    接下来,便是下层的添加过程.
  
    1. hardware/ril/include/telephony/ril.h
    在此文件中,添加一个标识你所要处理的AT命令的宏, 即上面所说到的MARK, 注意不要和别的宏发生冲突.
    注意: 这里的MARK必须定义在最后面, 不然会带来不必要的麻烦, 理由如下:
    在ril.h中定义了每个关键字对应的值,同时在ril_command.h有张映射表
    而且是按ril.h中的顺序映射的,大家可以看作是数组的下标.
    这里要一一对应,如果从中间插入,将会导致后面的字段映射不对.
    除非把ril.h中关键字对应的值修改,但这样会浪费比较多的时间.
  
    2. hardware/ril/libril/ril.cpp
    在该文件的const char *requestToString(int request)函数里面添加消息映射字符串.
    3. hardware/ril/libril/ril_commands.h
  
    在该文件的最后添加函数映射表, 形如{MARK, dispatch, response}
    解释如下:
    首先第1个参数即为我们之前所定义的标识,即MARK.
    第2个参数是下层的从数据流中解出数据的函数,这里要和上层所传下来的类型对应,例如上层传下来的是int数组,这里也得是dispathInts, 否则数据会出错
    第3个参数是该函数所要返回的值, 这里的和第2个参数的一样.
  
    4. hardware/ril/reference-ril/reference-ril.c
    这里就是发AT命令的核心文件,在static void onRequest (int request, void *data, size_t datalen, RIL_Token t)里面添加我们所要处理的
android添加at指令的方法 modem_proc/datamodem/interface/atcop/inc/dsatact.h // Record factory produce test flag mark in NV dsat_result_enum_type dsatact_exec_flagnv_cmd ( dsat_mode_enum_type mode, /* AT command mode: */ const dsati_cmd_type *parse_table, /* 阅读详情

相关推荐

android发送AT命令

android发送AT命令

android 发送AT命令

android手机要发送AT命令获取信息,需要把AT命令发送到/dev目录下的其中一些设备,/dev目录下的文件很多,可能每台手机都不同,也不是每个都是,只能一个个去试了 主要用到的代码: 发送 void Send(String file, String cmd){ RandomAccessFile localRandomAccessFile = new RandomAccessFile(

ssydiai的专栏 9862

android中添加AT+CMGL命令

android中添加从SIM卡中读取短信AT+CMGL命令

Android ATCID客制化AT命令

前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          优快云:http://www.youkuaiyun.com          雨季o莫忧离:http://blog.youkuaiyun.com/luckkof 正文   ATCID主要用来处理PC端传输过来的AT命令,从AT命令实际处理的地方来说,主要分

奥特曼 4193

FRM模型五:Brinson业绩归因

利用Brinson对基金组合业绩进行归因分析。

stonesssssss的博客 3004

晶圆测试(Wafer Sort)的核心技术与良率提升策略

晶圆测试(Wafer Sort)是芯片制造中的关键“入学考试”,通过探针台与自动测试设备(ATE)对晶圆上的芯片进行功能与参数测试,筛选不合格芯片以控制成本。本文深入解析了其核心技术,包括自动化视觉系统对准、测试流程优化策略,并探讨如何利用测试数据驱动良率提升,展望了DFT与AI智能测试的未来趋势。

e4f5g6h的博客 515

Android AT命令

命令查询 SIM 是否已经注网成功,若返回以下信息则表明注网成功: [2020-03-10_15:48:52:852]AT+CGATT?命令查询网络是否接通,返回 0,5 代表网络处于已注网,漫游中状态,表示 APN 设置成功。命令查询 SIM 是否已经注网成功,若返回以下信息则表明注网成功: [2019-12-06_16:24:10:713]AT+CGATT?1)使用 AT+QICSGP=1,"orange.m2m.spec","","" 命令配置 APN 信息,返回 OK 代表配置成功。

u010823818的博客 1455

Oracle数据库安装及配置(Oracle19c)

Windows 10安装Oracle 19c教程

weixin_69200200的博客 2万+

android 如何发送at指令,android – ADB shell脚本将AT命令发送到调制...

我已经发布了类似的问题,但仍然无法完成我的工作,所以这是第二次尝试,在哪里我想更清楚地说明我的绊脚石.所以基本上我在Android手机的adb shell中,通过发送AT命令与GPRS调制解调器通信.我可以通过将命令重定向到代表调制解调器的设备文件来实现;我可以回读使用cat实用程序在后台运行的响应(先前开始).我在脚本中实现了它它可以发送单个AT命令并读回响应.例如,这是脚本警察发送?获取移动设...

weixin_33860377的博客 2629

Reactor 响应式编程(第一篇:Reactor核心)

响应式:响应式编程: 全异步、消息、事件回调默认还是用当前线程,生成整个流、发布流、流操作.log();//只要不指定线程池,默认发布者用的线程就是订阅者的线程;

moments的博客 1572

【学习系列】SAP RAP 20:Unmanaged场景开发示例-调用BAPI、BAPI包装类、BO接口创建标准采购订单

本文介绍了在SAP RAP(Restful ABAP Programming)框架下,通过三种方式实现采购订单创建的方案。首先分析了RAP框架对传统BAPI调用的限制,特别是禁止显式COMMIT语句的要求。随后详细阐述了三种实现方式:1)直接调用传统BAPI(仅支持OP环境);2)使用BAPI包装类(仅支持OP环境);3)调用标准业务对象接口(支持所有环境)。 文章重点说明了在unmanaged场景下的技术实现细节,包括字段控制、缓冲区管理、测试运行与实际调用的分离处理等。针对每种方式都提供了完整的实施步骤

DeveloperMrMeng的博客 598

Android 中添加 AT 命令流程

本文假设读者已经了解 RIL 的基本知识   从上层出发,在   frameworks/base/telephony/java/com/android/internal/telephony /Phone.java 中   添加所要发 AT 命令的上层函数。     Phone 是个接口,因此,添加完后,得在实现 Phone 接口的 java 类里面实现这个方

liujianminghero的专栏 3128

STM32入门教程:无人机控制

我们将会一步一步引导您完成无人机的控制代码,包括无人机的姿态控制、飞行控制和通信控制等。第三步:配置无人机姿态控制 无人机的姿态控制是指控制无人机在空中的倾斜和转向。为了实现姿态控制,我们需要使用加速度计和陀螺仪传感器来获取无人机的姿态信息,并使用PID控制算法来控制无人机的姿态。在这一步骤中,您需要根据您使用的具体传感器和控制算法的要求进行更详细的配置和编码。在通信控制中,您需要考虑到通信的稳定性和可靠性。第五步:通信控制 无人机的通信控制是指与地面站或其他设备进行通信,传输飞行数据和接收飞行指令。

m0_75244442的博客 747

android中添加AT命令流程(转载)

本文假设读者已经了解RIL的基本知识 从上层出发,在 frameworks/base/telephony/java/com/android/internal/telephony/Phone.java中 添加所要发AT命令的上层函数。 Phone是个接口,因此,添加完后,得

lightsoure的专栏 1201

Arcgis中的模型构建器(ModelBuilder)技术之批量图层转KML

这段时间全省各地都在开展耕地流出图斑整改恢复工作,期间或多或少都需要村委会协助摸排举证,除了举证软件外,奥维、外业精灵等软件想必大家接触得也很多。这就经常需要我们转kmz文件给业主或者摸排人员,那么有没有什么方法在arcgis下快速批量转kmz文件呢,今天就介绍一下如何在模型构建器(ModelBuilder)构建批量图层转KML的模型。

weixin_44671081的博客 1324

工艺边与定位孔设计经验规则总结

工艺边是在SMT焊接时,为了PCB和导轨接触预留的PCB边。工艺边和PCB的接触部分一般需要开槽,或者使用邮票孔,以方便后期去除工艺边。

fydar的博客 1984

android中添加AT命令流程

<br />转自:http://hi.baidu.com/hnu_reason/blog/item/9786adfa95db7915a9d3116b.html<br />本文假设读者已经了解RIL的基本知识<br /> 从上层出发,在<br /> frameworks/base/telephony/java/com/android/internal/telephony/Phone.java中<br /> 添加所要发AT命令的上层函数。<br /><br /> Phone是个接口,因此,添加完后,得在

井欢欢的专栏 1947

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

A​n​d​r​o​i​d​ ​中​添​加​ ​A​T​ ​命​令​流​程

本文假设读者已经了解RIL的基本知识 从上层出发,在  frameworks/base/telephony/java/com/android/internal/telephony/Phone.java中 添加所要发AT命令的上层函数。   Phone是个接口,因此,添加完后,得在实现Phone接口的java类里面实现这个方法,实现Phone的类即GSMPhone.java 位于  frame

我的专栏 953

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Android自定义at命令

本文假设读者已经了解RIL的基本知识 从上层出发,在 frameworks/base/telephony/java/com/android/internal/telephony/Phone.java中 添加所要发AT命令的上层函数。 Phone是个接口,因此,添加完后,得在实现Phone接口的java类里面实现这个方法,实现Phone的类即GSMPhone.java 位于 fram

人工智能,深度学习,人脸识别 2829

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

android AT命令

优秀的参考文献: Wireless Emergency Alerts 介绍(紧急广播 CMAS介绍) https://blog.youkuaiyun.com/aaa111/article/details/79361595 Android kitkat RIL 请求扩展及主动上报扩展 https://blog.youkuaiyun.com/guoleimail/article/details/41649537 A...

蚁人日记 5370

AT命令

AT:attention的简写 modem:调制解调器,移动模块 RIL:Radio Interface Layer,无线接口层 RILC:HAL层中代码,是用C和C++语言来实现的,简称RILC RILJ:Framework层的代码,是用java语言实现的,简称RILJ RILD:守护进程 https://blog.youkuaiyun.com/hanxiaoming292/article/details/62224733 AT命令举例: 读: cat /dev/smd11 写: ..

ITbigger的博客 831

Android4.4 RIL的AT命令增加流程

首先,感谢  http://blog.youkuaiyun.com/guoleimail/article/details/41649537这篇博文的出现,文中不仅列出了大部分要修改的代码,还给出了原理阐述。本文作为该博文的补充,将所有修改的地方全部给出,由上层应用逐级往下调用,但类之间的关系不作说明,想弄清楚的朋友可以看看下面的链接 http://blog.youkuaiyun.com/youbang321/a

御翔宇内的专栏 8440

【安卓Android】利用lua脚本终端命令添加微信好友

【安卓Android】利用lua脚本终端命令添加微信好友

Mike Zhou的博客 3342
上一篇: Android RIL 本地代码(c/c++) 和 Java代码解析
下一篇: 用Dbus与android的bluz通信
huber
博客等级 码龄15年 79粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值