nearlink_sdr.phy.mac_interface¶
MAC-PHY 集成适配层。
将 MAC 层帧对象与 PHY 层发射/接收流水线打通, 提供字节级到比特级的转换和完整的发收链路。
QoS 集成: QosLink 类封装了带 ARQ/HARQ/流控的端到端数据链路。
Module Contents¶
Classes¶
MAC 层接收结果。 |
|
带 QoS 管理的端到端数据链路。 |
Functions¶
比特数组 → 字节序列 (长度向上对齐到 8 的倍数)。 |
|
字节序列 → 比特数组 (MSB first)。 |
|
基带 IQ 信号 → MAC 层载荷字节。 |
|
基带 IQ 信号 → 信令对象。 |
|
MAC 层载荷 → 基带 IQ 信号。 |
|
异步数据帧编码 → IQ → 解码全链路测试。 |
|
信令编码 → IQ → 解码全链路测试。 |
|
信令对象 → 基带 IQ 信号。 |
API¶
- class nearlink_sdr.phy.mac_interface.MacRxResult[源代码]¶
MAC 层接收结果。
- ctrl_bits: numpy.ndarray¶
None
- class nearlink_sdr.phy.mac_interface.QosLink(cfg: nearlink_sdr.phy.tx_pipeline.TxConfig | None = None, frame_type: int = 2, max_pdu: int = 256)[源代码]¶
带 QoS 管理的端到端数据链路。
封装 ARQ 序列号管理、HARQ 反馈、流控和链路质量跟踪。 调用方通过 submit / transmit / receive 方法实现自动重传驱动。
- 参数:
cfg -- 发射参数配置。
frame_type -- 帧类型 (1-4), 决定 ARQ SN 位宽。
max_pdu -- 单 PDU 最大字节数。
Initialization
- submit(data: bytes, priority: nearlink_sdr.mac.qos.Priority = Priority.NORMAL) bool[源代码]¶
提交数据到发送队列。
- transmit() tuple[numpy.ndarray | None, nearlink_sdr.mac.qos.TxDecision][源代码]¶
从队列取数据并生成 IQ 信号。
- 返回:
(IQ 信号或 None, 发送决策)。
- receive(iq: numpy.ndarray, n_mac_bytes: int) tuple[bytes, bool][源代码]¶
接收 IQ 信号并处理 ARQ 反馈。
- 返回:
(恢复的数据, CRC 是否通过)。
- process_feedback(crc_ok: bool) nearlink_sdr.mac.qos.TxDecision[源代码]¶
外部反馈处理 (对端发来 CRC 结果)。
- nearlink_sdr.phy.mac_interface.bits_to_bytes(bits: numpy.ndarray) bytes[源代码]¶
比特数组 → 字节序列 (长度向上对齐到 8 的倍数)。
- nearlink_sdr.phy.mac_interface.bytes_to_bits(data: bytes) numpy.ndarray[源代码]¶
字节序列 → 比特数组 (MSB first)。
- nearlink_sdr.phy.mac_interface.iq_to_mac(iq_signal: numpy.ndarray, cfg: nearlink_sdr.phy.tx_pipeline.TxConfig, n_mac_bytes: int) nearlink_sdr.phy.mac_interface.MacRxResult[源代码]¶
基带 IQ 信号 → MAC 层载荷字节。
- 参数:
iq_signal -- IQ 采样数组。
cfg -- 与发射端相同的配置。
n_mac_bytes -- MAC 层载荷字节数(需要预先知道)。
- 返回:
MacRxResult。
- nearlink_sdr.phy.mac_interface.iq_to_signaling(iq_signal: numpy.ndarray, cfg: nearlink_sdr.phy.tx_pipeline.TxConfig, n_mac_bytes: int) tuple[object, bool][源代码]¶
基带 IQ 信号 → 信令对象。
- 返回:
(信令对象, CRC是否通过)。
- nearlink_sdr.phy.mac_interface.mac_to_iq(mac_payload: bytes, cfg: nearlink_sdr.phy.tx_pipeline.TxConfig, ctrl_info: nearlink_sdr.phy.control_info.ControlInfoA2 | None = None) numpy.ndarray[源代码]¶
MAC 层载荷 → 基带 IQ 信号。
- 参数:
mac_payload -- MAC 帧 pack() 产生的字节流。
cfg -- 发射参数配置。
ctrl_info -- 物理层控制信息。若为 None 则使用默认 A2 配置。
- 返回:
IQ 采样数组 (complex128)。
- nearlink_sdr.phy.mac_interface.roundtrip_data(data: bytes, cfg: nearlink_sdr.phy.tx_pipeline.TxConfig | None = None, segment_type: int = 0) tuple[bytes, bool][源代码]¶
异步数据帧编码 → IQ → 解码全链路测试。
- 返回:
(恢复的数据, CRC是否通过)。
- nearlink_sdr.phy.mac_interface.roundtrip_signaling(msg: object, cfg: nearlink_sdr.phy.tx_pipeline.TxConfig | None = None) tuple[object | None, bool][源代码]¶
信令编码 → IQ → 解码全链路测试。
无信道(直连),验证 MAC → PHY → MAC 数据完整性。
- 返回:
(恢复的信令对象, CRC是否通过)。
- nearlink_sdr.phy.mac_interface.signaling_to_iq(msg: object, cfg: nearlink_sdr.phy.tx_pipeline.TxConfig) numpy.ndarray[源代码]¶
信令对象 → 基带 IQ 信号。
将一条 MAC 信令消息编码为 ControlFrame -> bytes -> bits -> tx_chain。