当前位置: 首页 > article >正文

Android 15 获取网络切片信息的标准接口

相关术语

简称 全称 中文 说明
URSP UE Route Selection Policy 用户路由选择策略 URSP 是 5G 核心网(PCF)下发给 UE 的策略,用于指导应用流量如何路由到不同的网络切片或 PDU 会话。其包含多个规则,每条规则由 优先级、业务描述符(Traffic Descriptor) 和 路由选择描述符(Route Selection Descriptor) 组成

NSSAI Network Slice Selection Assistance Information 网络切片选择辅助信息

每个 S-NSSAI (Single)由 SST(Slice/Service Type) 和可选的 SD(Slice Differentiator) 组成:

- SST:1 字节,标识切片类型(如 eMBB、URLLC、mMTC)或自定义类型。

- SD:24 位,用于区分相同 SST 下的不同切片实例。

接口介绍

Android 提供通用的标准接口获取网络切片的信息(sliceInfo),公开的API是TelephonyManager.getNetworkSlicingConfiguration()。

调用链

  • TelephonyManager:getNetworkSlicingConfiguration() 
  • ITelephony:getSlicingConfig() 
  • PhoneInterfaceManager:getSlicingConfig() CMD_GET_SLICING_CONFIG

// TelephonyManager.java 
// getNetworkSlicingConfiguration()
ITelephony telephony = getITelephony();
telephony.getSlicingConfig(new ResultReceiver(null)

// PhoneInterfaceManager.java - 是ITelephony的实现类
// MainThreadHandler case CMD_GET_SLICING_CONFIG: {
request.phone.getSlicingConfig(onCompleted);

RIL到Modem的调用链:

1. RIL.java: getSlicingConfig()

2. radiodata_service.cpp: getSlicingConfig()

3. RmmDcEventHandler.cpp: getSliceInfo()

4. Modem MIPC:  MIPC_NW_GET_NSSAI_REQ/CNF

代码逻辑

TelephonyManager

TelephonyManager.java getNetworkSlicingConfiguration 接口介绍
TelephonyManager.java getNetworkSlicingConfiguration 接口介绍
//TelephonyManager.java getNetworkSlicingConfiguration()
ITelephony telephony = getITelephony();
telephony.getSlicingConfig(new ResultReceiver(null)
TelephonyManager.java getNetworkSlicingConfiguration()
TelephonyManager.java getNetworkSlicingConfiguration() 接口实现

ITelephony

frameworks/base/telephony/java/com/android/internal/telephony/ITelephony.aidl 

defination of getSlicingConfig in frameworks
defination of getSlicingConfig in frameworks

ITelephony接口备注
ITelephony接口

ITelephony.aidl getSlicingConfig 接口定义
ITelephony.aidl getSlicingConfig 接口定义

PhoneInterfaceManager

类的初始化

  • ITelephony 接口的实现类是 TeleService 中的 PhoneInterfaceManager,其构造方法会创建MainThreadHandler对象,获取网络切片的流程会使用到,而后会详细说明消息请求和处理的协作流程。

packages/services/Telephony/src/com/android/phone/PhoneInterfaceManager.java
PhoneInterfaceManager.java

/**
 * Initialize the singleton PhoneInterfaceManager instance.
 * This is only done once, at startup, from PhoneApp.onCreate().
 */
/* package */ static PhoneInterfaceManager init(PhoneGlobals app, FeatureFlags featureFlags) {
    synchronized (PhoneInterfaceManager.class) {
        if (sInstance == null) {
            sInstance = new PhoneInterfaceManager(app, featureFlags);
        } else {
            Lo

http://www.kler.cn/a/591785.html

相关文章:

  • vue3+elementPlus使用vuedraggable实现照片墙拖拽调整位置
  • 【设计模式】3W 学习法全面解析 7 大结构型模式:Java 实战 + 开源框架应用
  • 合React宝宝体质的自定义防抖hook
  • 安全地自动重新启动 Windows 资源管理器Bat脚本
  • css3有哪些新属性
  • 计算机网络-综合布线系统
  • trae和Spring Boot Java 项目 ruoyi框架
  • STM32---FreeRTOS软件定时器
  • 关于非线性优化小记
  • 半导体制造行业的现状 内检LIMS系统在半导体制造的应用
  • Spring Cloud 中的服务注册与发现: Eureka详解
  • mybatis集合映射association与collection
  • WebForms HTML:深入理解与高效应用
  • RS-232与TTL、CMOS的区别
  • 软件工程:数据字典
  • Spring Bean 生命周期深度解析:原理、场景与优化策略
  • Java List 接口的核心 API
  • 【区块链+乡村振兴】国经安农信链服务平台 | FISCO BCOS 应用案例
  • HarmonyOS三层架构实战
  • 算法刷题记录——LeetCode篇(6) [第501~600题](持续更新)