nearlink_sdr.mac.scheduler¶
时序调度器 -- TXS-10002-2025 标准 6.3/6.6/7.2。
管理 SLE 系统的基础时隙、调度时隙、超帧结构和事件组调度:
系统基础时隙 (Tsys = 125 μs, 30 bit 计数器)
系统调度时隙 (Tschedule = k × 25 μs, k ∈ {1,2,3,4,5})
超帧: 两个相邻 SMF 之间的时间资源
事件组: 多个事件的容器, 以事件组周期重复
时间片: 超帧内的调度时间块 (偏移量 + 持续长度 + 周期 + 重复次数)
Module Contents¶
Classes¶
事件组调度器。 |
|
事件组计时参数 (标准 7.1.4.3 表29/30)。 |
|
链路信令: 链路在超帧内的时间资源配置 (标准 6.6.2.2)。 |
|
31 级多级收发间隔 (标准 7.2.2)。 |
|
综合调度管理器。 |
|
系统调度时隙类型枚举 (3 bit, 标准 6.3.1)。 |
|
睡眠时钟精度枚举 (3 bit)。 |
|
30 bit 系统时隙计数器。 |
|
SMF 调度信令参数 (标准 6.6.2.1)。 |
|
超帧: 两个相邻 SMF 之间的时间资源。 |
|
超帧内时间片配置 (标准 6.6.2.2)。 |
|
收发间隔类型枚举 (4 bit, 标准 7.2.1)。 |
Functions¶
将调度时隙类型枚举转为微秒值。 |
|
收发间隔类型转微秒值。 |
API¶
- class nearlink_sdr.mac.scheduler.EventGroupScheduler[源代码]¶
事件组调度器。
管理一个链路上事件组的时间计算, 根据事件组参数 生成事件的调度时间表。
- 变量:
timing -- 事件计时参数。
anchor_slot -- 锚点时隙 (基础时隙顺序号)。
anchor_offset_us -- 事件组起始偏移 (μs)。
- timing: nearlink_sdr.mac.scheduler.EventTimingParams¶
'field(...)'
- event_start_times(group_index: int = 0) list[int][源代码]¶
计算指定事件组内每个事件的起始时间。
- 参数:
group_index -- 第几个事件组 (从 0 开始)。
- 返回:
事件起始时间列表 (μs, 绝对时间)。
- tx_window(event_start_us: int) tuple[int, int][源代码]¶
计算一个事件中先发窗口的时间区间。
- 参数:
event_start_us -- 事件起始时间 (μs)。
- 返回:
(start_us, end_us) 先发窗口区间。
- rx_window(event_start_us: int) tuple[int, int][源代码]¶
计算一个事件中后发窗口的时间区间。
- 参数:
event_start_us -- 事件起始时间 (μs)。
- 返回:
(start_us, end_us) 后发窗口区间。
- class nearlink_sdr.mac.scheduler.EventTimingParams[源代码]¶
事件组计时参数 (标准 7.1.4.3 表29/30)。
所有周期以调度时隙为单位, 间隔以 μs 为单位。
- class nearlink_sdr.mac.scheduler.LinkScheduleEntry[源代码]¶
链路信令: 链路在超帧内的时间资源配置 (标准 6.6.2.2)。
- 变量:
link_id -- 逻辑链路标识 (24 bit)。
effective_slot -- 信令生效时隙 (32 bit, 基础时隙)。
period_factor -- 链路周期因子 (8 bit)。
schedule_slot_type -- 调度时隙长度 (3 bit)。
time_slices -- 时间片配置列表。
- time_slices: list[nearlink_sdr.mac.scheduler.TimeSlice]¶
'field(...)'
- class nearlink_sdr.mac.scheduler.MultiLevelInterval[源代码]¶
31 级多级收发间隔 (标准 7.2.2)。
Polar 编码分段 [00001]~[11111] 各对应一个 8 bit 间隔值 (μs)。
- 变量:
levels -- 31 个间隔值 (μs), 索引 0-30 对应级别 1-31。
- classmethod unpack(data: bytes) nearlink_sdr.mac.scheduler.MultiLevelInterval[源代码]¶
从 31 字节反序列化。
- class nearlink_sdr.mac.scheduler.ScheduleManager[源代码]¶
综合调度管理器。
整合超帧管理、事件组调度和收发间隔控制, 提供链路时间资源的统一管理接口。
- 变量:
superframe -- 超帧结构。
event_schedulers -- 按 link_id 索引的事件组调度器。
slot_counter -- 全局时隙计数器。
tx_rx_interval -- 当前收发间隔类型。
multi_interval -- 多级收发间隔配置。
- superframe: nearlink_sdr.mac.scheduler.Superframe¶
'field(...)'
- event_schedulers: dict[int, nearlink_sdr.mac.scheduler.EventGroupScheduler]¶
'field(...)'
- slot_counter: nearlink_sdr.mac.scheduler.SlotCounter¶
'field(...)'
- multi_interval: nearlink_sdr.mac.scheduler.MultiLevelInterval¶
'field(...)'
- configure_smf(config: nearlink_sdr.mac.scheduler.SmfScheduleConfig) None[源代码]¶
配置 SMF 调度参数。
- register_link(link_id: int, timing: nearlink_sdr.mac.scheduler.EventTimingParams, time_slices: list[nearlink_sdr.mac.scheduler.TimeSlice] | None = None, anchor_slot: int = 0, anchor_offset_us: int = 0) None[源代码]¶
注册链路并配置事件组调度。
- 参数:
link_id -- 逻辑链路标识。
timing -- 事件计时参数。
time_slices -- 超帧内时间片列表 (可选)。
anchor_slot -- 事件组锚点时隙。
anchor_offset_us -- 事件组起始偏移 (μs)。
- class nearlink_sdr.mac.scheduler.ScheduleSlotType[源代码]¶
Bases:
enum.IntEnum系统调度时隙类型枚举 (3 bit, 标准 6.3.1)。
Initialization
Initialize self. See help(type(self)) for accurate signature.
- T_25US¶
0
- T_50US¶
1
- T_75US¶
2
- T_100US¶
3
- T_125US¶
4
- class nearlink_sdr.mac.scheduler.SleepClockAccuracy[源代码]¶
Bases:
enum.IntEnum睡眠时钟精度枚举 (3 bit)。
Initialization
Initialize self. See help(type(self)) for accurate signature.
- PPM_251_500¶
0
- PPM_151_250¶
1
- PPM_101_150¶
2
- PPM_76_100¶
3
- PPM_51_75¶
4
- PPM_31_50¶
5
- PPM_21_30¶
6
- PPM_0_20¶
7
- class nearlink_sdr.mac.scheduler.SlotCounter[源代码]¶
30 bit 系统时隙计数器。
以 Tsys = 125 μs 为最小递增单位, 30 bit 可表示约 37.3 小时。
- 变量:
value -- 当前计数值 (0 ~ 2^30 - 1)。
- class nearlink_sdr.mac.scheduler.SmfScheduleConfig[源代码]¶
SMF 调度信令参数 (标准 6.6.2.1)。
- 变量:
effective_slot -- 信令生效时隙 (32 bit, 基础时隙)。
smf_interval -- 两个 SMF 之间的间隔 (16 bit, 基础时隙)。
frame_type -- 无线帧类型指示 (4 bit)。
bandwidth -- 带宽指示 (2 bit, 0=1M/1=2M/2=4M)。
pilot_density -- 导频密度指示 (2 bit)。
channel_count -- 可用频点个数 (8 bit)。
channel_table -- 频点表。
- class nearlink_sdr.mac.scheduler.Superframe[源代码]¶
超帧: 两个相邻 SMF 之间的时间资源。
管理 SMF 周期内的链路调度, 活动区间和低功耗区间的划分。
- 变量:
smf_config -- SMF 调度参数。
link_entries -- 已注册的链路调度条目。
- smf_config: nearlink_sdr.mac.scheduler.SmfScheduleConfig¶
'field(...)'
- link_entries: list[nearlink_sdr.mac.scheduler.LinkScheduleEntry]¶
'field(...)'
- add_link(entry: nearlink_sdr.mac.scheduler.LinkScheduleEntry) None[源代码]¶
注册一个链路的时间资源配置。
- get_link(link_id: int) nearlink_sdr.mac.scheduler.LinkScheduleEntry | None[源代码]¶
按链路标识查找调度条目。
- class nearlink_sdr.mac.scheduler.TimeSlice[源代码]¶
超帧内时间片配置 (标准 6.6.2.2)。
描述一个链路在超帧内的时间资源分配。
- 变量:
offset -- 相对 SMF 起始点的偏移 (调度时隙)。
duration -- 时间片持续长度 (调度时隙)。
period -- 时间片重复周期 (调度时隙)。
repeat_count -- 时间片重复次数。