UECC-UE连接协调的运作方式
文章目录
- UECC 基础概念与核心原则
- 什么是 UECC?
- 核心原则
- UE 任务详解
- 任务定义
- 任务组成要素
- 特殊任务类型:透明 UE 任务
- 核心特性
- 启用方式
- 执行机制
- UECC 完整操作流程(3/3)
- 基础信号交互(1/3)
- 订阅与转发机制(2/3)
- ueTaskInitInd
- expectedMsgList
- expectedMsgInd
- 队列查询与消息转发(3/3)
- forwardMsgInd
- isTaskReqInQueue()
- 任务调度与队列管理实例
- 1. 无优先级调度场景
- 2. 优先级调度场景
- 3. 任务订阅场景
- 4. 透明任务与普通任务并行场景
- 架构协作流程(以 UE 接入为例)
UECC 基础概念与核心原则
什么是 UECC?
UECC 全称UE Connection Coordination(UE 连接协调),是 UEH(UE Handling,UE 处理)架构中负责任务管理的核心模块。它的本质是一个任务队列框架,通过协调 UE层面的各类任务,确保相互冲突的流程不会并行执行。
核心原则
所有 UE 层面的活动必须通过 UECC 发起
核心目标:
- 阻止不可交互的流程并行运行(比如E-RAB建立和释放)。
- 以 UE 任务为基本管理单位,通过队列机制实现有序调度。
UE 任务详解
任务定义
UE 任务是指为响应特定事件而执行的一系列操作,触发场景包括:
接收 RBS(Radio Base Station,无线基站)节点外部消息(如 RRC 连接请求)
RBS 节点内部事件(如超时、传输失败)
任务组成要素
- 任务名称(Task Name)
- 任务驱动者(Task Driver)
- 优先级(Priority)
- 重复处理策略------- >>>
保留最后一个(Keep Last):仅保留最新任务
保留第一个(Keep First):仅保留最早任务
全部保留(Keep All):默认方式,所有任务入队 - 任务数据(Task Data)
特殊任务类型:透明 UE 任务
核心特性
可与其他任务并行执行,无需协调
运行时间原子化(操作不会被中断所需要的时间)
禁止修改任何 UE 相关数据(如 UE 上下文)
启用方式
优先级类别设为UEH_UE_PRIORITY_CLASS_TRANSPARENT
通过任务属性明确指定为透明任务
执行机制
由ueTaskInitInd信号触发(区别于普通任务的ueTaskInitReq)
独立于主线程运行,不阻塞其他任务队列
UECC 完整操作流程(3/3)
基础信号交互(1/3)
ueTaskRequestInd
发送方:任务请求者
接收方:UECC
作用:将新任务加入 UECC 队列(Class B 向 UECC 提交 TaskA)
ueTaskInitReq
发送方:UECC
接收方:任务驱动者
作用:启动队列中首个任务或上一任务指定的下一个任务。任务执行期间,新任务会被暂存队列,直到收到ueTaskInitCfm信号才视为完成。
ueTaskInitCfm
发送方:任务驱动者
接收方:UECC
作用:确认任务完成,可指定下一执行任务(实现任务顺序控制)
订阅与转发机制(2/3)
ueTaskInitInd
发送方:UECC
接收方:透明任务的驱动者
作用:启动透明任务
expectedMsgList
用途:正在执行的任务通过该列表订阅特定任务
规则:新订阅任务直接转发给订阅者;已在队列的订阅任务不转发
如:Class A->通过ueCtxtData->UECC
expectedMsgInd
发送方:订阅任务的类(如 Class A)
接收方:UECC
作用:立即请求队列中已存在的订阅任务,UECC 通过forwardMsgInd转发并从队列移除该任务
队列查询与消息转发(3/3)
forwardMsgInd
发送方:UECC
接收方:订阅任务的类
作用:将新加入队列的订阅任务转发给订阅者
isTaskReqInQueue()
调用方:正在执行的任务(如 Class B)
作用:查询特定任务是否在队列中
特点:查询不影响任务状态,被查询任务仍保留在队列
任务调度与队列管理实例
1. 无优先级调度场景
当无任务运行时,新任务(如 TaskA)直接启动
流程:ueTaskRequestInd(提交 TaskA)→ ueTaskInitReq(启动 TaskA)→ ueTaskInitCfm(TaskA 完成)
2. 优先级调度场景
当 TaskB 正在执行时,TaskA 和 TaskC 先后入队,若 TaskC 优先级高于 TaskA:
流程:TaskB 运行→ TaskA 入队→ TaskC 入队→ TaskB 完成→ ueTaskInitReq(启动 TaskC)→ TaskC 完成→ ueTaskInitReq(启动 TaskA)
3. 任务订阅场景
Class B 执行 TaskB 时,通过expectedMsgList订阅 TaskA
当 TaskA 提交后,UECC 通过forwardMsgInd直接转发给 Class B
Class B 完成后,可通过ueTaskInitCfm指定启动 TaskA
4. 透明任务与普通任务并行场景
Class B 执行 TaskB 时,同时订阅普通任务 TaskA 和透明任务 TaskD
TaskD 提交后,UECC 通过ueTaskInitInd启动(与 TaskB 并行)
TaskA 提交后,UECC 通过forwardMsgInd转发给 Class B
架构协作流程(以 UE 接入为例)
UE 发送 RRC 连接请求(触发 Task)
UECC 接收ueTaskRequestInd,将任务入队
启动任务后,通过ueTaskInitReq通知 RRC 模块
完成 RRC 连接后,发送ueTaskInitCfm给 UECC
UECC 调度下一任务(如 E-RAB 建立)