无线装置配置

此模块包含无线装置配置的平台抽象。

摘要

函数

otPlatRadioGetBusSpeed(otInstance *aInstance)
uint32_t
获取主机和无线装置芯片之间总线速度(以比特/秒为单位)。
otPlatRadioGetCaps(otInstance *aInstance)
获取电台功能。
otPlatRadioGetCcaEnergyDetectThreshold(otInstance *aInstance, int8_t *aThreshold)
根据 IEEE 802.15.4 - 2015 第 10.1.4 节的规定,获取无线装置的 CCA ED 阈值(以 dBm 为单位)。
otPlatRadioGetFemLnaGain(otInstance *aInstance, int8_t *aGain)
获取外部 FEM 的 Rx LNA 增益(以 dBm 为单位)。
otPlatRadioGetIeeeEui64(otInstance *aInstance, uint8_t *aIeeeEui64)
void
获取该接口在出厂时分配的 IEEE EUI-64。
otPlatRadioGetNow(otInstance *aInstance)
uint64_t
获取参照连续单调本地无线装置时钟(64 位宽度)的当前时间(以微秒为单位)。
otPlatRadioGetPromiscuous(otInstance *aInstance)
bool
获取混杂模式的状态。
otPlatRadioGetReceiveSensitivity(otInstance *aInstance)
int8_t
获取无线装置接收灵敏度值。
otPlatRadioGetTransmitPower(otInstance *aInstance, int8_t *aPower)
获取无线装置的发射功率(以 dBm 为单位)。
otPlatRadioGetVersionString(otInstance *aInstance)
const char *
获取电台版本字符串。
otPlatRadioSetCcaEnergyDetectThreshold(otInstance *aInstance, int8_t aThreshold)
根据 IEEE 802.15.4 - 2015 第 10.1.4 节的规定,设置无线装置的 CCA ED 阈值(以 dBm 为单位)。
otPlatRadioSetExtendedAddress(otInstance *aInstance, const otExtAddress *aExtAddress)
void
设置扩展地址以进行地址过滤。
otPlatRadioSetFemLnaGain(otInstance *aInstance, int8_t aGain)
设置外部 FEM 的 Rx LNA 增益(以 dBm 为单位)。
otPlatRadioSetMacFrameCounter(otInstance *aInstance, uint32_t aMacFrameCounter)
void
设置当前的 MAC 帧计数器值。
otPlatRadioSetMacFrameCounterIfLarger(otInstance *aInstance, uint32_t aMacFrameCounter)
void
仅当新的指定值大于当前值时,才设置当前的 MAC 帧计数器值。
otPlatRadioSetMacKey(otInstance *aInstance, uint8_t aKeyIdMode, uint8_t aKeyId, const otMacKeyMaterial *aPrevKey, const otMacKeyMaterial *aCurrKey, const otMacKeyMaterial *aNextKey, otRadioKeyType aKeyType)
void
更新 MAC 密钥和密钥索引。
otPlatRadioSetPanId(otInstance *aInstance, otPanId aPanId)
void
设置用于地址过滤的 PAN ID。
otPlatRadioSetPromiscuous(otInstance *aInstance, bool aEnable)
void
启用或停用混杂模式。
otPlatRadioSetRxOnWhenIdle(otInstance *aInstance, bool aEnable)
void
将 rx-on-when-idle 状态设置为电台平台。
otPlatRadioSetShortAddress(otInstance *aInstance, otShortAddress aShortAddress)
void
设置用于过滤地址的短地址。
otPlatRadioSetTransmitPower(otInstance *aInstance, int8_t aPower)
设置无线装置的发射功率(以 dBm 为单位)。

函数

otPlatRadioGetBusSpeed

uint32_t otPlatRadioGetBusSpeed(
  otInstance *aInstance
)

获取主机和无线装置芯片之间总线速度(以比特/秒为单位)。

具体说明
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
主机与无线装置芯片之间总线速度(以比特/秒为单位)。当 MAC 层和更上层与无线层位于同一个芯片上时,返回 0。

otPlatRadioGetCaps

otRadioCaps otPlatRadioGetCaps(
  otInstance *aInstance
)

获取电台功能。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
返回值
无线电功能位矢量(请参阅 OT_RADIO_CAP_* 定义)。

otPlatRadioGetCcaEnergyDetectThreshold

otError otPlatRadioGetCcaEnergyDetectThreshold(
  otInstance *aInstance,
  int8_t *aThreshold
)

根据 IEEE 802.15.4 - 2015 第 10.1.4 节的规定,获取无线装置的 CCA ED 阈值(以 dBm 为单位)。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[out] aThreshold
CCA ED 阈值(以 dBm 为单位)。
返回值
OT_ERROR_NONE
已成功检索到 CCA ED 阈值。
OT_ERROR_INVALID_ARGS
aThreshold 为 NULL。
OT_ERROR_NOT_IMPLEMENTED
未实现通过 dBm 进行的 CCA ED 阈值配置。

otPlatRadioGetFemLnaGain

otError otPlatRadioGetFemLnaGain(
  otInstance *aInstance,
  int8_t *aGain
)

获取外部 FEM 的 Rx LNA 增益(以 dBm 为单位)。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[out] aGain
外部 FEM 的 Rx LNA 增益(以 dBm 为单位)。
返回值
OT_ERROR_NONE
成功检索到外部 FEM 的 LNA 增益。
OT_ERROR_INVALID_ARGS
aGain 为 NULL。
OT_ERROR_NOT_IMPLEMENTED
未实现外部 FEM 的 LNA 设置。

otPlatRadioGetIeeeEui64

void otPlatRadioGetIeeeEui64(
  otInstance *aInstance,
  uint8_t *aIeeeEui64
)

获取该接口在出厂时分配的 IEEE EUI-64。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[out] aIeeeEui64
指向出厂分配的 IEEE EUI-64 的指针。

otPlatRadioGetNow

uint64_t otPlatRadioGetNow(
  otInstance *aInstance
)

获取参照连续单调本地无线装置时钟(64 位宽度)的当前时间(以微秒为单位)。

在设备的正常运行时间期间,无线电时钟不得换行。因此,实现应识别并补偿内部计数器溢出。时钟没有指定的周期,且不得引入任何连续或不连续的调整(例如闰秒)。实现应补偿设备的任何休眠时间。

实现可以选择通过任何方式(例如,将高精度/低功耗 RTC 与高分辨率计数器相结合)来限制无线电时钟并补偿休眠时间,前提是公开的组合时钟提供连续的单调微秒分辨率(在 otPlatRadioGetCslAccuracy 宣布的精度限制内)。

具体说明
参数
[in] aInstance
指向 OpenThread 实例的指针。
返回值
当前时间(以微秒为单位)。UINT64_MAX(如果平台不支持或无线电时间尚未就绪)。

otPlatRadioGetPromiscuous

bool otPlatRadioGetPromiscuous(
  otInstance *aInstance
)

获取混杂模式的状态。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
返回值
TRUE
已启用混杂模式。
FALSE
混杂模式已停用。

otPlatRadioGetReceiveSensitivity

int8_t otPlatRadioGetReceiveSensitivity(
  otInstance *aInstance
)

获取无线装置接收灵敏度值。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
返回值
无线装置接收灵敏度值(以 dBm 为单位)。

otPlatRadioGetTransmitPower

otError otPlatRadioGetTransmitPower(
  otInstance *aInstance,
  int8_t *aPower
)

获取无线装置的发射功率(以 dBm 为单位)。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[out] aPower
发射功率(以 dBm 为单位)。
返回值
OT_ERROR_NONE
成功检索到发射功率。
OT_ERROR_INVALID_ARGS
aPower 为 NULL。
OT_ERROR_NOT_IMPLEMENTED
未实现通过 dBm 的发射功率配置。

otPlatRadioGetVersionString

const char * otPlatRadioGetVersionString(
  otInstance *aInstance
)

获取电台版本字符串。

这是可选的无线装置驱动程序平台函数。如果平台无线装置驱动程序未提供,则 OpenThread 改为使用 OpenThread 版本 (

具体说明
参数
[in] aInstance
OpenThread 实例结构。
返回值
指向 OpenThread 无线装置版本的指针。
另请参阅
otGetVersionString())。

otPlatRadioSetCcaEnergyDetectThreshold

otError otPlatRadioSetCcaEnergyDetectThreshold(
  otInstance *aInstance,
  int8_t aThreshold
)

根据 IEEE 802.15.4 - 2015 第 10.1.4 节的规定,设置无线装置的 CCA ED 阈值(以 dBm 为单位)。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aThreshold
CCA ED 阈值(以 dBm 为单位)。
返回值
OT_ERROR_NONE
成功设置传输功率。
OT_ERROR_INVALID_ARGS
给定阈值超出范围。
OT_ERROR_NOT_IMPLEMENTED
未实现通过 dBm 进行的 CCA ED 阈值配置。

otPlatRadioSetExtendedAddress

void otPlatRadioSetExtendedAddress(
  otInstance *aInstance,
  const otExtAddress *aExtAddress
)

设置扩展地址以进行地址过滤。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aExtAddress
指向以小端字节序存储的 IEEE 802.15.4 扩展地址的指针。

otPlatRadioSetFemLnaGain

otError otPlatRadioSetFemLnaGain(
  otInstance *aInstance,
  int8_t aGain
)

设置外部 FEM 的 Rx LNA 增益(以 dBm 为单位)。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aGain
外部 FEM 的 Rx LNA 增益(以 dBm 为单位)。
返回值
OT_ERROR_NONE
成功设置外部 FEM 的 LNA 增益。
OT_ERROR_NOT_IMPLEMENTED
未实现外部 FEM 的 LNA 增益设置。

otPlatRadioSetMacFrameCounter

void otPlatRadioSetMacFrameCounter(
  otInstance *aInstance,
  uint32_t aMacFrameCounter
)

设置当前的 MAC 帧计数器值。

在电台提供 OT_RADIO_CAPS_TRANSMIT_SEC 功能时使用。

具体说明
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aMacFrameCounter
MAC 帧计数器值。

otPlatRadioSetMacFrameCounterIfLarger

void otPlatRadioSetMacFrameCounterIfLarger(
  otInstance *aInstance,
  uint32_t aMacFrameCounter
)

仅当新的指定值大于当前值时,才设置当前的 MAC 帧计数器值。

在电台提供 OT_RADIO_CAPS_TRANSMIT_SEC 功能时使用。

具体说明
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aMacFrameCounter
MAC 帧计数器值。

otPlatRadioSetMacKey

void otPlatRadioSetMacKey(
  otInstance *aInstance,
  uint8_t aKeyIdMode,
  uint8_t aKeyId,
  const otMacKeyMaterial *aPrevKey,
  const otMacKeyMaterial *aCurrKey,
  const otMacKeyMaterial *aNextKey,
  otRadioKeyType aKeyType
)

更新 MAC 密钥和密钥索引。

在无线装置提供 OT_RADIO_CAPS_TRANSMIT_SEC 功能时使用。

具体说明
参数
[in] aInstance
指向 OpenThread 实例的指针。
[in] aKeyIdMode
密钥 ID 模式。
[in] aKeyId
当前 MAC 密钥索引。
[in] aPrevKey
指向上一个 MAC 密钥的指针。
[in] aCurrKey
指向当前 MAC 密钥的指针。
[in] aNextKey
指向下一个 MAC 密钥的指针。
[in] aKeyType
使用的密钥类型。

otPlatRadioSetPanId

void otPlatRadioSetPanId(
  otInstance *aInstance,
  otPanId aPanId
)

设置用于地址过滤的 PAN ID。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aPanId
IEEE 802.15.4 PAN ID。

otPlatRadioSetPromiscuous

void otPlatRadioSetPromiscuous(
  otInstance *aInstance,
  bool aEnable
)

启用或停用混杂模式。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aEnable
为 TRUE 时启用,为 FALSE 以停用混杂模式。

otPlatRadioSetRxOnWhenIdle

void otPlatRadioSetRxOnWhenIdle(
  otInstance *aInstance,
  bool aEnable
)

将 rx-on-when-idle 状态设置为电台平台。

在少数情况下,如果设备处于 rx-off-when-idle 状态,则无线装置可以进入休眠状态,但 SubMac 识别这些情况并指示无线装置进入休眠状态是困难且成本高昂的:

  • 完成常规帧接收任务,前提是:
    • 收到的帧不会有任何错误,并通过过滤,并且不是虚假的 ACK。
    • 未请求 ACK,或因内部条件无法传输 ACK。
  • 当已传输的帧中未请求 ACK 时,完成 ACK 帧的传输或传输。
  • 由于以下原因,已请求的 ACK 的接收操作已完成:
    • ACK 超时。
    • 收到无效的 ACK 或未 ACK 帧。
    • 能够正确接收 ACK,除非传输的帧是数据请求命令,且收到的 ACK 上的帧待处理位设为 true。在这种情况下,电台平台实现应使接收器保持开启状态,直到已确定的超时(会触发空闲时段开始)。OPENTHREAD_CONFIG_MAC_DATA_POLL_TIMEOUT 可作为参考。
  • 完成独立的 CCA 任务。
  • 在 CSMA/CA 程序中已完成 CCA 操作,且结果为忙碌结果。
  • 完成能量检测任务。
  • 使用 otPlatRadioReceiveAt 完成调度的电台接收窗口。

如果平台支持 OT_RADIO_CAPS_RX_ON_WHEN_IDLE,它还必须支持 OT_RADIO_CAPS_CSMA_BACKOFF 并处理 CCA 之后的空闲时段,如上所述。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aEnable
为 TRUE 时使无线装置保持接收状态,为 FALSE 在空闲期间使无线装置进入休眠状态。

otPlatRadioSetShortAddress

void otPlatRadioSetShortAddress(
  otInstance *aInstance,
  otShortAddress aShortAddress
)

设置用于过滤地址的短地址。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aShortAddress
IEEE 802.15.4 短地址。

otPlatRadioSetTransmitPower

otError otPlatRadioSetTransmitPower(
  otInstance *aInstance,
  int8_t aPower
)

设置无线装置的发射功率(以 dBm 为单位)。

具体说明
参数
[in] aInstance
OpenThread 实例结构。
[in] aPower
发射功率(以 dBm 为单位)。
返回值
OT_ERROR_NONE
成功设置传输功率。
OT_ERROR_NOT_IMPLEMENTED
未实现通过 dBm 的发射功率配置。

资源

OpenThread API 参考文档源自 GitHub 上提供的源代码。如需了解详情,或者为我们的文档做贡献,请参阅资源