Modem2G/3G/4G/5G:高通Policy Manager(概述,优势,架构与API,配置与debug方法)

By:GentlemanTsao

本篇主要介绍

    • 1 Policy Manager概述
    • 2 为什么使用policy manager
      • 弱耦合:
      • 方便修改:
      • 动态配置:
    • 3 policy manager架构与API
      • 3.1 policy manager包括两部分:
      • 3.2 上层架构:
      • 3.3 Policy生效过程
    • 4 如何修改Policyman XML
      • 4.1 Policyman包含的XML文件
      • 4.2 三种类型:Lists, booleans, and timers
        • List
        • Booleans
        • Timers
      • 4.3 Policyman XML 结构
        • 功能
        • 配置项
        • 配置方法
    • 5 如何debug policy manager

1 Policy Manager概述

  • Policy Manager是MMCP(多模通话处理器)组件,用于管理modem策略。
  • 基于设备和网络当前状态,提供了多种配置项。
  • 指导modem该做什么。

2 为什么使用policy manager

弱耦合:

将配置与特定需求从modem核心代码中分离出来,独立成一个组件。

方便修改:

以XML的形式配置规则与策略。

动态配置:

XML中的策略规则在build版本时不参与编译。

3 policy manager架构与API

3.1 policy manager包括两部分:

数据库(用于保存当前配置);

规则引擎(逻辑部分)

3.2 上层架构:

Modem2G/3G/4G/5G:高通Policy Manager(概述,优势,架构与API,配置与debug方法)_第1张图片

3.3 Policy生效过程

1.初始化或更换SIM卡后读取policy

Policyman任务启动,读取/policyman/carrier_policy.xml,创建规则集合以提供给规则引擎。

2.Policyman注册三类事件

UIM事件

Serving System事件

Phone事件

此时Policyman发布配置项的初始值(可能从XML中得到,也可能是默认值),之后休眠,等待事件唤醒。

3.Policy规则触发

当监听的事件发生时,policyman判断是否满足了相应规则的预置条件。如果满足,policyman通过规则引擎执行该规则,并决定当前配置项的值。

4.发送配置更新

Policyman将配置项的当前值更新到数据库,如果有改动,则发送MSGR(message Router)消息,该消息只包含改动项

5.组件(主要是Call Manager)更新配置

通过监听 POLICYMAN_CFG_UPDATE_IND消息,获得更新的配置项。

4 如何修改Policyman XML

4.1 Policyman包含的XML文件

在EFS中的\policyman\目录:

Modem2G/3G/4G/5G:高通Policy Manager(概述,优势,架构与API,配置与debug方法)_第2张图片

4.2 三种类型:Lists, booleans, and timers

List

常用于配置MCC,PLMN,Bands,

用法:

{MCC set}

{PLMN set}

{bands}

举例:

(XXX) -->

name=“sxlte_mccs”> 302 310 311 312 313

(XXX-XX) or 2 (XXX-XX) digits -->

name=“operators”>

460-01 460-06 460-09

name=“rf_bands_home”>

     

base=“none” >

               

7 8 9 19 20 21 22 23 25 26 49

     

base=“none” >

               

0 1 2 3 4 5 6 9 11 13 19 28 29 37 39 41 65

     

Booleans

用于根据条件,设定状态的开或关(true or false)。

Initial段定义初始值;

Values段定义根据条件的切换值。

用法:

initial="{true,false}" />

value="{true,false}" />

     {condition}

举例:

initial=“false” />

value=“true” />

refer to conditions section -->

name=“in_home”>

Timers

用于追踪定期的Eventaction

在initial段定义timer,另外还需定义一个规则,包含start,stop,expiry handler。

用法:

interval="{value}" units="{sec,min}" id="{value}"
/>

/>

/>

name="{name}" />

举例:

name=“ue_mode_timer” interval=“1” units=“min”
id=“102” />

/>

/>

expired -->

/>

4.3 Policyman XML 结构

policy XML配置文件的结构包含一个元素以及随之一系列规则。

Ex: 455 460

Ex:

 

    

ONLINE

      

功能

XML定义下面三种功能:

l 根据MCC或PLMN,定义RAT和band list

l 定义了当特定事件(例如无服务)发生时要启动的timer

l 根据PLMN,定义CA组合

配置项

Modem2G/3G/4G/5G:高通Policy Manager(概述,优势,架构与API,配置与debug方法)_第3张图片
Modem2G/3G/4G/5G:高通Policy Manager(概述,优势,架构与API,配置与debug方法)_第4张图片

Modem2G/3G/4G/5G:高通Policy Manager(概述,优势,架构与API,配置与debug方法)_第5张图片

配置方法

RAT capability

Policy Manager使用通知call
manager(CM)
哪些RAT可以搜索。CM结合用户设置的制式(例如,通过NV10或菜单)计算出最终的RATs.

用法:

base="{none,hardware}">

     

{G,W,T,L,C,H,5G}

举例:

base=“none”>

C H G W L 5G

5 如何debug policy manager

你可能感兴趣的:(Modem2G/3G/4G/5G:高通Policy Manager(概述,优势,架构与API,配置与debug方法))