Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
nearlink-sdr 1.0.9 文档
nearlink-sdr 1.0.9 文档
  • 快速入门
  • 操作指南
    • 运行链路仿真
    • 添加新的调制方式
    • QoS 服务质量管理
    • 使用 SLE 节点实体
    • Rust 加速模块
    • SDR E310 部署规划
    • 构建文档
  • 技术参考
    • nearlink_sdr
      • nearlink_sdr.mac
        • nearlink_sdr.mac.access
        • nearlink_sdr.mac.broadcast
        • nearlink_sdr.mac.crypto
        • nearlink_sdr.mac.frame
        • nearlink_sdr.mac.link_control
        • nearlink_sdr.mac.link_manager
        • nearlink_sdr.mac.power_control
        • nearlink_sdr.mac.qos
        • nearlink_sdr.mac.scheduler
        • nearlink_sdr.mac.security
        • nearlink_sdr.mac.security_manager
        • nearlink_sdr.mac.signaling
        • nearlink_sdr.mac.smf
        • nearlink_sdr.mac.smf_scheduler
      • nearlink_sdr.sim
        • nearlink_sdr.sim.link_sim
        • nearlink_sdr.sim.usrp_sim
      • nearlink_sdr.common
        • nearlink_sdr.common.bch
        • nearlink_sdr.common.code_block_seg
        • nearlink_sdr.common.crc
        • nearlink_sdr.common.m_sequence
        • nearlink_sdr.common.mcs
        • nearlink_sdr.common.polar
        • nearlink_sdr.common.prbs
        • nearlink_sdr.common.scrambler
      • nearlink_sdr.phy
        • nearlink_sdr.phy.channel
        • nearlink_sdr.phy.control_info
        • nearlink_sdr.phy.data_link
        • nearlink_sdr.phy.equalizer
        • nearlink_sdr.phy.frame
        • nearlink_sdr.phy.freq_hopping
        • nearlink_sdr.phy.gfsk
        • nearlink_sdr.phy.mac_interface
        • nearlink_sdr.phy.measurement
        • nearlink_sdr.phy.measurement_frame
        • nearlink_sdr.phy.measurement_tx
        • nearlink_sdr.phy.mock_backend
        • nearlink_sdr.phy.multitone
        • nearlink_sdr.phy.pilot
        • nearlink_sdr.phy.pluto_backend
        • nearlink_sdr.phy.preamble
        • nearlink_sdr.phy.psk
        • nearlink_sdr.phy.rf_compliance
        • nearlink_sdr.phy.rx_pipeline
        • nearlink_sdr.phy.sdr_backend
        • nearlink_sdr.phy.sync_sequence
        • nearlink_sdr.phy.tx_pipeline
        • nearlink_sdr.phy.uhd_backend
        • nearlink_sdr.phy.usrp
        • nearlink_sdr.phy.uwb_measurement_security
        • nearlink_sdr.phy.uwb_pulse
      • nearlink_sdr.node
  • 设计说明
    • SparkLink SLE 协议总览
    • 物理层原理
    • 物理层详解
    • MAC 层详解
    • 安全子系统详解
    • 端到端数据流
    • 系统架构
    • 标准条款映射
  • 更新日志
  • API Reference
    • nearlink_sdr
      • nearlink_sdr.mac
        • nearlink_sdr.mac.access
        • nearlink_sdr.mac.broadcast
        • nearlink_sdr.mac.crypto
        • nearlink_sdr.mac.frame
        • nearlink_sdr.mac.link_control
        • nearlink_sdr.mac.link_manager
        • nearlink_sdr.mac.power_control
        • nearlink_sdr.mac.qos
        • nearlink_sdr.mac.scheduler
        • nearlink_sdr.mac.security
        • nearlink_sdr.mac.security_manager
        • nearlink_sdr.mac.signaling
        • nearlink_sdr.mac.smf
        • nearlink_sdr.mac.smf_scheduler
      • nearlink_sdr.sim
        • nearlink_sdr.sim.link_sim
        • nearlink_sdr.sim.usrp_sim
      • nearlink_sdr.common
        • nearlink_sdr.common.bch
        • nearlink_sdr.common.code_block_seg
        • nearlink_sdr.common.crc
        • nearlink_sdr.common.m_sequence
        • nearlink_sdr.common.mcs
        • nearlink_sdr.common.polar
        • nearlink_sdr.common.prbs
        • nearlink_sdr.common.scrambler
      • nearlink_sdr.phy
        • nearlink_sdr.phy.channel
        • nearlink_sdr.phy.control_info
        • nearlink_sdr.phy.data_link
        • nearlink_sdr.phy.equalizer
        • nearlink_sdr.phy.frame
        • nearlink_sdr.phy.freq_hopping
        • nearlink_sdr.phy.gfsk
        • nearlink_sdr.phy.mac_interface
        • nearlink_sdr.phy.measurement
        • nearlink_sdr.phy.measurement_frame
        • nearlink_sdr.phy.measurement_tx
        • nearlink_sdr.phy.mock_backend
        • nearlink_sdr.phy.multitone
        • nearlink_sdr.phy.pilot
        • nearlink_sdr.phy.pluto_backend
        • nearlink_sdr.phy.preamble
        • nearlink_sdr.phy.psk
        • nearlink_sdr.phy.rf_compliance
        • nearlink_sdr.phy.rx_pipeline
        • nearlink_sdr.phy.sdr_backend
        • nearlink_sdr.phy.sync_sequence
        • nearlink_sdr.phy.tx_pipeline
        • nearlink_sdr.phy.uhd_backend
        • nearlink_sdr.phy.usrp
        • nearlink_sdr.phy.uwb_measurement_security
        • nearlink_sdr.phy.uwb_pulse
      • nearlink_sdr.node
Back to top
View this page

nearlink_sdr.node¶

SLE 节点实体 -- 统一收发接口。

将 MAC/PHY 各模块整合为单一 SLE 节点, 提供完整的链路生命周期管理 和数据收发能力。支持仿真模式和 USRP 硬件模式。

Module Contents¶

Classes¶

NodeCallback

节点事件回调, 子类可覆盖。

NodeConfig

SLE 节点配置。

NodeRole

节点初始角色偏好。

NodeState

节点高层状态, 简化自 LinkState。

RxResult

接收结果。

SleNode

SparkLink SLE 节点实体。

TransportMode

传输模式。

TxResult

发射结果。

API¶

class nearlink_sdr.node.NodeCallback[源代码]¶

节点事件回调, 子类可覆盖。

on_state_changed(old: nearlink_sdr.node.NodeState, new: nearlink_sdr.node.NodeState) → None[源代码]¶
on_connected(peer_address: bytes, role: nearlink_sdr.mac.link_manager.Role) → None[源代码]¶
on_data_received(data: bytes) → None[源代码]¶
on_disconnected(reason: nearlink_sdr.mac.link_manager.DisconnectReason) → None[源代码]¶
on_broadcast_received(frame: nearlink_sdr.mac.broadcast.BroadcastFrame) → None[源代码]¶
on_discovery_complete(devices: dict) → None[源代码]¶
on_measurement_result(result: dict) → None[源代码]¶
class nearlink_sdr.node.NodeConfig[源代码]¶

SLE 节点配置。

变量:
  • address -- 6 字节设备地址。

  • role -- 角色偏好 (AUTO/G_NODE/T_NODE)。

  • frame_type -- 帧类型 (1-4)。

  • mcs_index -- MCS 索引 (0-12)。

  • bandwidth_mhz -- 信道带宽 (1/2/4 MHz)。

  • pilot_interval -- 导频插入间隔 (0/4/8/16)。

  • max_pdu -- 最大 PDU 长度 (字节)。

  • max_retransmit -- 最大重传次数。

  • enable_encryption -- 是否启用加密。

  • transport -- 传输模式。

  • band -- 频段标识。

  • hop_param2 -- 跳频参数 2 (0 表示自动从地址派生)。

  • blocked_channels -- 被阻塞的信道号集合。

  • tx_power_dbm -- 初始发射功率 (dBm)。

  • max_power_dbm -- 最大发射功率。

  • min_power_dbm -- 最小发射功率。

  • channel_config -- 仿真模式下的信道模型配置 (None 表示理想信道)。

  • sdr_config -- SDR 硬件配置 (transport=USRP 时使用, 支持 mock/uhd/pluto 后端)。

  • usrp_config -- (已废弃) USRP 配置, 保留向后兼容; 优先使用 sdr_config。

  • smf_enabled -- 是否启用系统管理帧调度。

address: bytes¶

None

role: nearlink_sdr.node.NodeRole¶

None

frame_type: int¶

2

mcs_index: int¶

7

bandwidth_mhz: int¶

1

pilot_interval: int¶

8

max_pdu: int¶

256

max_retransmit: int¶

3

enable_encryption: bool¶

False

transport: nearlink_sdr.node.TransportMode¶

None

band: str¶

'2400'

hop_param2: int¶

0

blocked_channels: set[int]¶

'field(...)'

tx_power_dbm: float¶

0.0

max_power_dbm: float¶

20.0

min_power_dbm: float¶

None

channel_config: nearlink_sdr.phy.channel.ChannelConfig | None¶

None

sdr_config: nearlink_sdr.phy.sdr_backend.SDRConfig | None¶

None

usrp_config: nearlink_sdr.phy.usrp.USRPConfig | None¶

None

smf_enabled: bool¶

False

class nearlink_sdr.node.NodeRole[源代码]¶

Bases: enum.IntEnum

节点初始角色偏好。

Initialization

Initialize self. See help(type(self)) for accurate signature.

AUTO¶

0

G_NODE¶

1

T_NODE¶

2

class nearlink_sdr.node.NodeState[源代码]¶

Bases: enum.IntEnum

节点高层状态, 简化自 LinkState。

Initialization

Initialize self. See help(type(self)) for accurate signature.

IDLE¶

0

ADVERTISING¶

'auto(...)'

SCANNING¶

'auto(...)'

CONNECTING¶

'auto(...)'

PAIRED¶

'auto(...)'

CONNECTED¶

'auto(...)'

DISCONNECTED¶

'auto(...)'

class nearlink_sdr.node.RxResult[源代码]¶

接收结果。

data: bytes | None¶

None

success: bool¶

None

decrypted: bool¶

False

class nearlink_sdr.node.SleNode[源代码]¶

SparkLink SLE 节点实体。

整合链路管理、安全、QoS、PHY 流水线、跳频、功率控制、 时序调度、接入流程、信道模型为统一收发接口。

用法::

node = SleNode(NodeConfig(address=b"\x01\x02\x03\x04\x05\x06"))
node.send(b"hello", Priority.NORMAL)
tx_result = node.transmit()
# ... 通过信道传输 tx_result.iq ...
rx_result = node.receive(rx_iq, n_bytes)
config: nearlink_sdr.node.NodeConfig¶

'field(...)'

callback: nearlink_sdr.node.NodeCallback¶

'field(...)'

property state: nearlink_sdr.node.NodeState¶
property link_state: nearlink_sdr.mac.link_manager.LinkState¶
property role: nearlink_sdr.mac.link_manager.Role¶
property peer_address: bytes¶
property is_connected: bool¶
start_advertising() → nearlink_sdr.mac.broadcast.BroadcastFrame | None[源代码]¶

进入广播态, 构建并返回扩展广播帧。

start_scanning() → None[源代码]¶

进入扫描态, 搜索广播节点。

on_broadcast_received(frame: nearlink_sdr.mac.broadcast.BroadcastFrame) → bool[源代码]¶

处理收到的广播帧。

在扫描态时, 通过发现管理器和广播过滤器处理帧。

返回:

True 表示该帧包含有效的接入资源配置。

connect(peer_address: bytes) → None[源代码]¶

发起接入请求。

accept_connection(peer_address: bytes, role: nearlink_sdr.mac.link_manager.Role = Role.G_NODE) → None[源代码]¶

接受接入请求, 直接进入链接态。

接入完成后自动注册链路调度资源。

run_access(peer_address: bytes, is_broadcaster: bool = True) → tuple[nearlink_sdr.mac.access.BroadcasterAccessManager, nearlink_sdr.mac.access.InitiatorAccessManager][源代码]¶

执行完整接入编排流程。

disconnect() → None[源代码]¶

断开连接。

reset() → None[源代码]¶

重置到初始状态。

start_pairing(peer_address: bytes) → list[源代码]¶

发起配对流程。

返回:

待发送给对端的配对信令列表。

process_pairing_message(msg: object) → list[源代码]¶

处理收到的配对信令。

返回:

待发送的响应信令列表。

send(data: bytes, priority: nearlink_sdr.mac.qos.Priority = Priority.NORMAL) → bool[源代码]¶

提交数据到发送队列。

transmit() → nearlink_sdr.node.TxResult[源代码]¶

从发送队列取出数据, 构建帧并生成 IQ 信号。

自动选择当前跳频信道, 更新发射功率。

receive(iq_signal: numpy.ndarray, n_mac_bytes: int) → nearlink_sdr.node.RxResult[源代码]¶

从 IQ 信号解码数据。

如果配置了信道模型, 会在解码前应用信道效应。

process_feedback(crc_ok: bool) → nearlink_sdr.mac.qos.TxDecision[源代码]¶

处理对端 ACK/NACK 反馈。

property freq_table: nearlink_sdr.phy.freq_hopping.FreqTable¶
property current_channel: int¶

当前跳频信道号。

block_channel(channel: int) → None[源代码]¶

阻塞指定信道。

unblock_channel(channel: int) → None[源代码]¶

解除信道阻塞。

property power_controller: nearlink_sdr.mac.power_control.PowerController¶
property tx_power_dbm: float¶
adjust_power(delta_db: float) → float[源代码]¶

调整发射功率, 返回调整后的功率值。

property scheduler: nearlink_sdr.mac.scheduler.ScheduleManager¶
advance_slot(n: int = 1) → int[源代码]¶

推进时隙计数器。

property smf_scheduler: nearlink_sdr.mac.smf_scheduler.SMFTransmitScheduler | None¶
configure_smf(params: nearlink_sdr.mac.smf_scheduler.SMFScheduleParams) → None[源代码]¶

配置 SMF 调度参数。

property whitelist: nearlink_sdr.mac.access.AccessWhitelist¶
property discovery: nearlink_sdr.mac.access.DiscoveryManager¶
property discovered_devices: dict¶
set_broadcast_filter(broadcast_filter: nearlink_sdr.mac.broadcast.BroadcastFilter) → None[源代码]¶

设置广播帧过滤器。

start_non_connected_broadcast(nc_config: nearlink_sdr.mac.access.NonConnectedBroadcastConfig | None = None) → nearlink_sdr.mac.broadcast.BroadcastFrame | None[源代码]¶

发送非链接态广播数据帧。

property channel_model: nearlink_sdr.phy.channel.ChannelModel | None¶
set_channel_model(config: nearlink_sdr.phy.channel.ChannelConfig) → None[源代码]¶

配置仿真信道模型。

clear_channel_model() → None[源代码]¶

清除信道模型 (恢复理想信道)。

property sdr_device: nearlink_sdr.phy.sdr_backend.SDRDevice | None¶
property transceiver: nearlink_sdr.phy.usrp.SLETransceiver | None¶
open_transceiver(rx_buf_size: int = 4096) → None[源代码]¶

打开 SDR/USRP 硬件收发器。

close_transceiver() → None[源代码]¶

关闭 SDR/USRP 硬件收发器。

receive_iq(num_samps: int) → numpy.ndarray | None[源代码]¶

从 SDR/USRP 接收 IQ 采样。

generate_measurement_signal(n_measur: int = 64, security_type: int = 1) → numpy.ndarray[源代码]¶

生成窄带测量信号 (标准 6.2.4)。

property data_link_params: nearlink_sdr.phy.data_link.AsyncDataLinkParams | nearlink_sdr.phy.data_link.SyncDataLinkParams | None¶
send_signaling(msg: object) → nearlink_sdr.mac.frame.ControlFrame | None[源代码]¶

通过链路管理器发送控制面信令。

receive_signaling(msg: object) → None[源代码]¶

处理收到的控制面信令。

property stats: dict¶

返回节点统计信息。

property recommended_mcs: int¶

基于链路质量建议的 MCS 索引。

update_mcs(mcs_index: int) → None[源代码]¶

更新 MCS 索引。

class nearlink_sdr.node.TransportMode[源代码]¶

Bases: enum.IntEnum

传输模式。

Initialization

Initialize self. See help(type(self)) for accurate signature.

SIMULATION¶

'auto(...)'

USRP¶

'auto(...)'

class nearlink_sdr.node.TxResult[源代码]¶

发射结果。

iq: numpy.ndarray | None¶

None

mac_bytes: bytes | None¶

None

decision: nearlink_sdr.mac.qos.TxDecision¶

None

encrypted: bool¶

False

channel: int¶

None

Next
设计说明
Previous
nearlink_sdr.phy.uwb_pulse
Copyright ©
Made with Sphinx and @pradyunsg's Furo
On this page
  • nearlink_sdr.node
    • Module Contents
      • Classes
      • API
        • NodeCallback
          • NodeCallback.on_state_changed()
          • NodeCallback.on_connected()
          • NodeCallback.on_data_received()
          • NodeCallback.on_disconnected()
          • NodeCallback.on_broadcast_received()
          • NodeCallback.on_discovery_complete()
          • NodeCallback.on_measurement_result()
        • NodeConfig
          • NodeConfig.address
          • NodeConfig.role
          • NodeConfig.frame_type
          • NodeConfig.mcs_index
          • NodeConfig.bandwidth_mhz
          • NodeConfig.pilot_interval
          • NodeConfig.max_pdu
          • NodeConfig.max_retransmit
          • NodeConfig.enable_encryption
          • NodeConfig.transport
          • NodeConfig.band
          • NodeConfig.hop_param2
          • NodeConfig.blocked_channels
          • NodeConfig.tx_power_dbm
          • NodeConfig.max_power_dbm
          • NodeConfig.min_power_dbm
          • NodeConfig.channel_config
          • NodeConfig.sdr_config
          • NodeConfig.usrp_config
          • NodeConfig.smf_enabled
        • NodeRole
          • NodeRole.AUTO
          • NodeRole.G_NODE
          • NodeRole.T_NODE
        • NodeState
          • NodeState.IDLE
          • NodeState.ADVERTISING
          • NodeState.SCANNING
          • NodeState.CONNECTING
          • NodeState.PAIRED
          • NodeState.CONNECTED
          • NodeState.DISCONNECTED
        • RxResult
          • RxResult.data
          • RxResult.success
          • RxResult.decrypted
        • SleNode
          • SleNode.config
          • SleNode.callback
          • SleNode.state
          • SleNode.link_state
          • SleNode.role
          • SleNode.peer_address
          • SleNode.is_connected
          • SleNode.start_advertising()
          • SleNode.start_scanning()
          • SleNode.on_broadcast_received()
          • SleNode.connect()
          • SleNode.accept_connection()
          • SleNode.run_access()
          • SleNode.disconnect()
          • SleNode.reset()
          • SleNode.start_pairing()
          • SleNode.process_pairing_message()
          • SleNode.send()
          • SleNode.transmit()
          • SleNode.receive()
          • SleNode.process_feedback()
          • SleNode.freq_table
          • SleNode.current_channel
          • SleNode.block_channel()
          • SleNode.unblock_channel()
          • SleNode.power_controller
          • SleNode.tx_power_dbm
          • SleNode.adjust_power()
          • SleNode.scheduler
          • SleNode.advance_slot()
          • SleNode.smf_scheduler
          • SleNode.configure_smf()
          • SleNode.whitelist
          • SleNode.discovery
          • SleNode.discovered_devices
          • SleNode.set_broadcast_filter()
          • SleNode.start_non_connected_broadcast()
          • SleNode.channel_model
          • SleNode.set_channel_model()
          • SleNode.clear_channel_model()
          • SleNode.sdr_device
          • SleNode.transceiver
          • SleNode.open_transceiver()
          • SleNode.close_transceiver()
          • SleNode.receive_iq()
          • SleNode.generate_measurement_signal()
          • SleNode.data_link_params
          • SleNode.send_signaling()
          • SleNode.receive_signaling()
          • SleNode.stats
          • SleNode.recommended_mcs
          • SleNode.update_mcs()
        • TransportMode
          • TransportMode.SIMULATION
          • TransportMode.USRP
        • TxResult
          • TxResult.iq
          • TxResult.mac_bytes
          • TxResult.decision
          • TxResult.encrypted
          • TxResult.channel