【笔记】关于 RILJ 中 “< OPERATOR” 运营商名称来源代码流程

embedded/2024/9/18 12:23:56/ 标签: SPN, EF, 运营商名称, 移动网络

功能背景说明

分析日志中关于AT “< OPERATOR” 的运营商名称信息来源。

04-22 22:53:25.915403  2140  2140 D RILJ    : [0209]> OPERATOR [PHONE0]
04-22 22:53:25.922854  2140  2157 D RILJ    : [0209]< OPERATOR {telering, telering, 23207} [PHONE0]

与MD交互,RILJ和RIJD(RIL_REQUEST_OPERATOR)

根据ril.h的注释说明,该信息是EONS的(Enhanced Operator Name String),即EF文件信息。

EONS信息来源:

  • EF_PNN(PLMN Network Name, fid: 6FC5) :LAC和EF_PNN中的Record Identifier
  • EF_OPL(Operator PLMN List, fid: 6FC6) :Network Name,具体名称

Code in SIMRecords.java getEonsIfExist()

因此< OPERATOR {long Alpha, short Alpha, MCCMNC}

代码

RILUtils.java

frameworks/opt/telephony/src/java/com/android/internal/telephony/RILUtils.java

import static com.android.internal.telephony.RILConstants.RIL_REQUEST_OPERATOR;import java.lang.reflect.Method;/*** Utils class for HAL <-> RIL conversions*/
public class RILUtils {private static final String TAG = "RILUtils";/*** RIL request to String* @param request request* @return The converted String request*/public static String requestToString(int request) {switch(request) {case RIL_REQUEST_OPERATOR:return "OPERATOR";}

ril.h

hardware/ril/include/telephony/ril.h

定义说明当前使用v12

/** RIL version.* Value of RIL_VERSION should not be changed in future. Here onwards,* when a new change is supposed to be introduced  which could involve new* schemes added like Wakelocks, data structures added/updated, etc, we would* just document RIL version associated with that change below. When OEM updates its* RIL with those changes, they would return that new RIL version during RIL_REGISTER.* We should make use of the returned version by vendor to identify appropriate scheme* or data structure version to use.** Documentation of RIL version and associated changes* RIL_VERSION = 12 : This version corresponds to updated data structures namely*                    RIL_Data_Call_Response_v11, RIL_SIM_IO_v6, RIL_CardStatus_v6,*                    RIL_SimRefreshResponse_v7, RIL_CDMA_CallWaiting_v6,*                    RIL_LTE_SignalStrength_v8, RIL_SignalStrength_v10, RIL_CellIdentityGsm_v12*                    RIL_CellIdentityWcdma_v12, RIL_CellIdentityLte_v12,RIL_CellInfoGsm_v12,*                    RIL_CellInfoWcdma_v12, RIL_CellInfoLte_v12, RIL_CellInfo_v12.** RIL_VERSION = 13 : This version includes new wakelock semantics and as the first*                    strongly versioned version it enforces structure use.** RIL_VERSION = 14 : New data structures are added, namely RIL_CarrierMatchType,*                    RIL_Carrier, RIL_CarrierRestrictions and RIL_PCO_Data.*                    New commands added: RIL_REQUEST_SET_CARRIER_RESTRICTIONS,*                    RIL_REQUEST_SET_CARRIER_RESTRICTIONS and RIL_UNSOL_PCO_DATA.** RIL_VERSION = 15 : New commands added:*                    RIL_UNSOL_MODEM_RESTART,*                    RIL_REQUEST_SEND_DEVICE_STATE,*                    RIL_REQUEST_SET_UNSOLICITED_RESPONSE_FILTER,*                    RIL_REQUEST_SET_SIM_CARD_POWER,*                    RIL_REQUEST_SET_CARRIER_INFO_IMSI_ENCRYPTION,*                    RIL_UNSOL_CARRIER_INFO_IMSI_ENCRYPTION*                    The new parameters for RIL_REQUEST_SETUP_DATA_CALL,*                    Updated data structures: RIL_DataProfileInfo_v15, RIL_InitialAttachApn_v15*                    New data structure RIL_DataRegistrationStateResponse,*                    RIL_VoiceRegistrationStateResponse same is*                    used in RIL_REQUEST_DATA_REGISTRATION_STATE and*                    RIL_REQUEST_VOICE_REGISTRATION_STATE respectively.*                    New data structure RIL_OpenChannelParams.*                    RIL_REQUEST_START_NETWORK_SCAN*                    RIL_REQUEST_STOP_NETWORK_SCAN*                    RIL_UNSOL_NETWORK_SCAN_RESULT*/
#define RIL_VERSION 12

说明了 “< OPERATOR” 返回的参数是{long,short,mccmnc}

/*** RIL_REQUEST_OPERATOR** Request current operator ONS or EONS** "data" is NULL* "response" is a "const char **"* ((const char **)response)[0] is long alpha ONS or EONS*                                  or NULL if unregistered** ((const char **)response)[1] is short alpha ONS or EONS*                                  or NULL if unregistered* ((const char **)response)[2] is 5 or 6 digit numeric code (MCC + MNC)*                                  or NULL if unregistered** Valid errors:*  SUCCESS*  RADIO_NOT_AVAILABLE*  NO_MEMORY*  INTERNAL_ERR*  SYSTEM_ERR*  REQUEST_NOT_SUPPORTED*  NO_RESOURCES*  CANCELLED*/
#define RIL_REQUEST_OPERATOR 22

hardware/ril/libril/ril_commands.h

命令定义?

    {RIL_REQUEST_OPERATOR, radio::getOperatorResponse},

Need to improve


http://www.ppmy.cn/embedded/13093.html

相关文章

Azure AKS集群监控告警表达式配置

背景需求 Azure AKS集群中&#xff0c;需要对部署的服务进行监控和告警&#xff0c;需要创建并启用预警规则&#xff0c;而这里怎么去监控每个pod级别的CPU和内存&#xff0c;需要自己写搜索查询 解决方法 搜索和查询的语句如下&#xff0c;需要自己替换其中的部分信息,其中…

【库函数】Linux下动态库.so和静态库.a的生成和使用

目录 &#x1f31e;1. Linux下静态库和动态库的基本概念 &#x1f31e;2. 动态库 &#x1f30a;2.1 动态库如何生成 &#x1f30d;2.1.1 文件详情 &#x1f30d;2.1.2 编译生成动态库 &#x1f30a;2.2 动态库如何使用 &#x1f30d;2.2.1 案例 &#x1f30d;2.2.2 动态…

OceanBase数据库日常运维快速上手

这里为大家汇总了从租户创建、连接数据库&#xff0c;到数据库的备份、归档、资源配置调整等&#xff0c;在OceanBase数据库日常运维中的操作指南。 创建租户 方法一&#xff1a;通过OCP 创建 确认可分配资源 想要了解具体可分配的内存量&#xff0c;可以通过【资源管理】功…

C++ | Leetcode C++题解之第46题全排列

题目&#xff1a; 题解&#xff1a; class Solution { public:void backtrack(vector<vector<int>>& res, vector<int>& output, int first, int len){// 所有数都填完了if (first len) {res.emplace_back(output);return;}for (int i first; i &…

java高级工程师面试题及答案解析干货汇总-MYSQL与SQLServer区别及其适用场景

SQLServer与MySQL区别及适用场景 1. SQLServer与MySQL的区别&#xff08;1&#xff09;许可与成本&#xff08;2&#xff09;性能与可扩展性&#xff08;3&#xff09;功能与特性&#xff08;4&#xff09;社区与支持 2. 优劣势分析SQLServer的优势MySQL的优势SQLServer的劣势M…

uniapp——组件多颜色模块展示、气泡框

一、自定义颜色&#xff1a; 样式 代码 <template><view class"content"><!-- 右上角 --><view class"coverStatus" :class"[itemClass, positionClass,cornerClass,sanJiaoCss,sanJiaoCss2]":style"dynamicStyle&q…

.rmallox勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复

导言&#xff1a; 在当今数字化的时代&#xff0c;计算机病毒已成为网络安全的一大威胁。其中&#xff0c;.rmallox勒索病毒以其高度的隐蔽性、快速的传播速度、巨大的危害性和不断变种的特性&#xff0c;引起了广大用户的关注。本文将详细解析.rmallox勒索病毒的特点&#xf…

用C语言做一个小游戏:贪吃蛇(初阶)

1.整体思路规划 首先设计贪吃蛇就要先设计出一个游戏初始的界面以及要让玩家知道相应的游戏规则&#xff0c;其次要设计出一个地图来限制贪吃蛇的运动范围&#xff0c;那么就要初始化一条蛇&#xff0c;以及一个食物和其他功能&#xff0c;比如加速减速、暂停、食物的分数以及总…

爬虫零基础学习,第一天,安装环境,requests库常用命令的讲解

Python爬虫 爬虫学习思路 URL内容获取&#xff0c;requests的基本常用语法 import requests # 先向目标网站发送请求 url "http://www.baidu.com" r requests.get(url) # 可以用看一下访问码返回值是不是200&#xff0c;若是200则表示访问成功 print(r.status_…

SQLServer数据库的查询语句

SQLServer数据库的查询语句 select version; #查询数据库的版本 select host_name(); #查询主机名&#xff0c;如果是用navicat远程连接的话&#xff0c;主机名是本地的名字 select db_name(); #查询当前数据库名 select user; #查询当前数据库的拥有者&#xff0c;结果为 dbo。…

MyDumper “喜欢” 触发器么?

是的&#xff0c;但现在它更“喜欢”它们&#xff0c;原因如下。 介绍 使用 LIKE 子句过滤特定表中的触发器或视图很常见。但是&#xff0c;它可能会欺骗您&#xff0c;特别是如果您看不到输出&#xff08;即在非交互式会话中&#xff09;。让我们看一个简单的例子&#xff0c…

“奇观”初见,祁门竞赛上海正式发

布给上下山水、左右人文的“徽州”&#xff0c;另起一笔“烟火” 城市更新从空间营造进入地方创生。何为地方&#xff1f;如何创生&#xff1f;其关键也许在于“持续打开”&#xff0c;源源不断吸引新生力量参与&#xff0c;从在地文化中生长出创作生态。 镶嵌于长三角腹地&a…

Rust常用特型之AsRef和AsMut特型

在Rust标准库中&#xff0c;存在很多常用的工具类特型&#xff0c;它们能帮助我们写出更具有Rust风格的代码。 今天我们要学习的AsRef和AsMut&#xff0c;和前面学习的Deref和DerefMut有那么一点混淆的地方。 当一个类型U实现了AsRef<T>&#xff0c;那么我们可以高效的从…

js 同步、异步的概念,async 和 await 的说明

啥是同步、啥是异步 JavaScript中&#xff0c;同步&#xff08;Synchronous&#xff09;和异步&#xff08;Asynchronous&#xff09;是两种处理代码执行顺序的主要方式&#xff0c; 同步&#xff08;Synchronous&#xff09;&#xff1a; 执行顺序&#xff1a;在同步编程中…

java学习路线

Java学习路线通常包括从基础语法到高级框架和工具的系统学习过程。以下是一个推荐的Java学习路线&#xff0c;涵盖了从入门到进阶的各个阶段&#xff1a; ### 1. Java基础知识 - **环境搭建**&#xff1a;安装Java开发工具包&#xff08;JDK&#xff09;和集成开发环境&#x…

SpringBoot项目启动,传参有哪些方式?

SpringBoot项目启动&#xff0c;传参有哪些方式&#xff1f; 1.Spring级别的参数 直接在启动 Spring Boot 应用的命令行中使用 -- 后跟参数名和值的方式来传递参数。 记住&#xff1a;一般是对于Spring Boot应用特有的配置参数&#xff0c;确保它们遵循Spring Boot的配置属性命…

复习python函数

复习python函数 1.对函数的理解函数的传递方式返回值 return可通过help()函数查看函数说明作用域 2.不定长参数3.递归4.高阶函数将函数作为参数传递将函数作为返回值返回 5.匿名函数6.装饰器 1.对函数的理解 函数可以用来保存一些可执行的代码&#xff0c;并且可以在需要时&am…

鼠标悬停的几种方式

鼠标悬停&#xff08;Hover&#xff09;效果是Web设计中常见的交互方式&#xff0c;用于在用户鼠标指针悬停在元素上时提供视觉反馈或触发某些动作。以下是实现鼠标悬停效果的几种常见方式&#xff1a; 1. 使用CSS&#xff08;Cascading Style Sheets&#xff09; .item_titl…

如何根据元素的位置关系来调整 CSS 样式

1. 基础知识 什么是兄弟选择器 CSS 兄弟选择器是一种特殊的选择器&#xff0c;它用于选择一个元素的兄弟元素。 在 CSS 中&#xff0c;我们主要使用两种兄弟选择器&#xff1a;相邻兄弟选择器&#xff08;&#xff09;和通用兄弟选择器&#xff08;~&#xff09;。 相邻兄弟…

无法连接到MongoDB Atlas 的Cloud Database

打开Mongodb网页: 选择允许任何地址连接 连接成功