By:GentlemanTsao
将配置与特定需求从modem核心代码中分离出来,独立成一个组件。
以XML的形式配置规则与策略。
XML中的策略规则在build版本时不参与编译。
数据库(用于保存当前配置);
规则引擎(逻辑部分)
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消息,获得更新的配置项。
在EFS中的\policyman\目录:
常用于配置MCC,PLMN,Bands,
用法:
举例:
(XXX) -->
(XXX-XX) or 2 (XXX-XX) digits -->
460-01 460-06 460-09
base=“none” >
7 8 9 19 20 21 22 23 25 26 49
0 1 2 3 4 5 6 9 11 13 19 28 29 37 39 41 65
用于根据条件,设定状态的开或关(true or false)。
Initial段定义初始值;
Values段定义根据条件的切换值。
用法:
{condition}
举例:
refer to conditions section -->
用于追踪定期的Event与action。
在initial段定义timer,另外还需定义一个规则,包含start,stop,expiry handler。
用法:
/>
举例:
id=“102” />
expired -->
policy XML配置文件的结构包含一个元素以及随之一系列规则。
Ex:
Ex:
XML定义下面三种功能:
l 根据MCC或PLMN,定义RAT和band list
l 定义了当特定事件(例如无服务)发生时要启动的timer
l 根据PLMN,定义CA组合
RAT capability
Policy Manager使用
manager(CM)
哪些RAT可以搜索。CM结合用户设置的制式(例如,通过NV10或菜单)计算出最终的RATs.
用法:
{G,W,T,L,C,H,5G}
举例:
C H G W L 5G