Configuración de la radio

En este módulo, se incluye la abstracción de la plataforma para la configuración de radio.

Resumen

remotas

otPlatRadioGetBusSpeed(otInstance *aInstance)
uint32_t
Obtiene la velocidad del bus en bits/segundo entre el host y el chip de radio.
otPlatRadioGetCaps(otInstance *aInstance)
Obtén las funciones de radio.
otPlatRadioGetCcaEnergyDetectThreshold(otInstance *aInstance, int8_t *aThreshold)
Obtiene el umbral de ED de CCA de la radio en dBm medido en el conector de antena según las secciones 10.1.4 de IEEE 802.15.4 a 2015.
otPlatRadioGetFemLnaGain(otInstance *aInstance, int8_t *aGain)
Obtiene la ganancia de Rx LNA del FEM externo en dBm.
otPlatRadioGetIeeeEui64(otInstance *aInstance, uint8_t *aIeeeEui64)
void
Obtiene el EUI-64 de IEEE asignado de fábrica para esta interfaz.
otPlatRadioGetNow(otInstance *aInstance)
uint64_t
Obtiene la hora actual en microsegundos a la que se hace referencia en un reloj de radio local monótono continuo (ancho de 64 bits).
otPlatRadioGetPromiscuous(otInstance *aInstance)
bool
Obtén el estado del modo promiscuo.
otPlatRadioGetReceiveSensitivity(otInstance *aInstance)
int8_t
Obtén el valor de sensibilidad de recepción de la radio.
otPlatRadioGetTransmitPower(otInstance *aInstance, int8_t *aPower)
Obtén la potencia de transmisión de la radio en dBm.
otPlatRadioGetVersionString(otInstance *aInstance)
const char *
Obtén la cadena de versión de la radio.
otPlatRadioSetCcaEnergyDetectThreshold(otInstance *aInstance, int8_t aThreshold)
Establece el umbral de ED de CCA de la radio en dBm, medido en el conector de antena, de acuerdo con las secciones 10.1.4 de IEEE 802.15.4 a 2015.
otPlatRadioSetExtendedAddress(otInstance *aInstance, const otExtAddress *aExtAddress)
void
Establece la dirección extendida para filtrar la dirección.
otPlatRadioSetFemLnaGain(otInstance *aInstance, int8_t aGain)
Establece la ganancia de Rx LNA del FEM externo en dBm.
otPlatRadioSetMacFrameCounter(otInstance *aInstance, uint32_t aMacFrameCounter)
void
Establece el valor actual del contador de tramas de MAC.
otPlatRadioSetMacFrameCounterIfLarger(otInstance *aInstance, uint32_t aMacFrameCounter)
void
Establece el valor del contador de tramas de MAC actual solo si el nuevo valor dado es mayor que el valor actual.
otPlatRadioSetMacKey(otInstance *aInstance, uint8_t aKeyIdMode, uint8_t aKeyId, const otMacKeyMaterial *aPrevKey, const otMacKeyMaterial *aCurrKey, const otMacKeyMaterial *aNextKey, otRadioKeyType aKeyType)
void
Actualiza las claves de MAC y el índice de claves.
otPlatRadioSetPanId(otInstance *aInstance, otPanId aPanId)
void
Establece el ID del número PAN para filtrar las direcciones.
otPlatRadioSetPromiscuous(otInstance *aInstance, bool aEnable)
void
Habilita o inhabilita el modo promiscuo.
otPlatRadioSetRxOnWhenIdle(otInstance *aInstance, bool aEnable)
void
Configura el estado rx-on-when-idle en la plataforma de radio.
otPlatRadioSetShortAddress(otInstance *aInstance, otShortAddress aShortAddress)
void
Establece la dirección corta para filtrar las direcciones.
otPlatRadioSetTransmitPower(otInstance *aInstance, int8_t aPower)
Establece la potencia de transmisión de la radio en dBm.

remotas

otPlatRadioGetBusSpeed

uint32_t otPlatRadioGetBusSpeed(
  otInstance *aInstance
)

Obtiene la velocidad del bus en bits/segundo entre el host y el chip de radio.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
Qué muestra
La velocidad del bus en bits/segundo entre el host y el chip de radio. Muestra 0 cuando la capa de MAC y superior y la capa de radio residen en el mismo chip.

otPlatRadioGetCaps

otRadioCaps otPlatRadioGetCaps(
  otInstance *aInstance
)

Obtén las funciones de radio.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
Qué muestra
El vector de bits de capacidad de radio (consulta las definiciones de OT_RADIO_CAP_*).

otPlatRadioGetCcaEnergyDetectThreshold

otError otPlatRadioGetCcaEnergyDetectThreshold(
  otInstance *aInstance,
  int8_t *aThreshold
)

Obtiene el umbral de ED de CCA de la radio en dBm medido en el conector de antena según las secciones 10.1.4 de IEEE 802.15.4 a 2015.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
[out] aThreshold
El umbral de ED de CCA endBm.
Valores que se muestran
OT_ERROR_NONE
Se recuperó correctamente el umbral de ED de CCA.
OT_ERROR_INVALID_ARGS
aThreshold era NULL.
OT_ERROR_NOT_IMPLEMENTED
No se implementó la configuración del umbral de CCA ED a través dedBm.

otPlatRadioGetFemLnaGain

otError otPlatRadioGetFemLnaGain(
  otInstance *aInstance,
  int8_t *aGain
)

Obtiene la ganancia de Rx LNA del FEM externo en dBm.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
[out] aGain
Ganancia de Rx LNA del FEM externo en dBm.
Valores que se muestran
OT_ERROR_NONE
Se recuperó correctamente la ganancia de LNA del FEM externo.
OT_ERROR_INVALID_ARGS
aGain era NULL.
OT_ERROR_NOT_IMPLEMENTED
No se implementó la configuración de LNA de FEM externo.

otPlatRadioGetIeeeEui64

void otPlatRadioGetIeeeEui64(
  otInstance *aInstance,
  uint8_t *aIeeeEui64
)

Obtiene el EUI-64 de IEEE asignado de fábrica para esta interfaz.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
[out] aIeeeEui64
Un puntero al EUI-64 de IEEE asignado de fábrica.

otPlatRadioGetNow

uint64_t otPlatRadioGetNow(
  otInstance *aInstance
)

Obtiene la hora actual en microsegundos a la que se hace referencia en un reloj de radio local monótono continuo (ancho de 64 bits).

El reloj de la radio NO se ajustará durante el tiempo de actividad del dispositivo. Por lo tanto, las implementaciones deben identificar y compensar el desbordamiento del contador interno. El reloj no tiene una época definida y NO introducirá ajustes continuos o discontinuos (p.ej., segundos bisiestos). Las implementaciones deben compensar los tiempos de suspensión del dispositivo.

Las implementaciones PUEDEN disciplinar el reloj de la radio y compensar los tiempos de suspensión por cualquier medio (p.ej., combinando una RTC de alta precisión/baja potencia con un contador de alta resolución), siempre que el reloj combinado expuesto proporcione marcas de resolución monotónicas continuas de microsegundos dentro de los límites de precisión anunciados por otPlatRadioGetCslAccuracy.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
Qué muestra
La hora actual en microsegundos. UINT64_MAX cuando la plataforma no es compatible o el tiempo de radio no está listo

otPlatRadioGetPromiscuous

bool otPlatRadioGetPromiscuous(
  otInstance *aInstance
)

Obtén el estado del modo promiscuo.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
Valores que se muestran
TRUE
El modo promiscuo está habilitado.
FALSE
El modo promiscuo está inhabilitado.

otPlatRadioGetReceiveSensitivity

int8_t otPlatRadioGetReceiveSensitivity(
  otInstance *aInstance
)

Obtén el valor de sensibilidad de recepción de la radio.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
Qué muestra
El valor de sensibilidad de recepción de la radio en dBm.

otPlatRadioGetTransmitPower

otError otPlatRadioGetTransmitPower(
  otInstance *aInstance,
  int8_t *aPower
)

Obtén la potencia de transmisión de la radio en dBm.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
[out] aPower
La potencia de transmisión en dBm.
Valores que se muestran
OT_ERROR_NONE
La potencia de transmisión se recuperó correctamente.
OT_ERROR_INVALID_ARGS
aPower era NULL.
OT_ERROR_NOT_IMPLEMENTED
No se implementó la configuración de transmisión de energía mediante dBm.

otPlatRadioGetVersionString

const char * otPlatRadioGetVersionString(
  otInstance *aInstance
)

Obtén la cadena de versión de la radio.

Esta es una función opcional de la plataforma del controlador de radio. Si no lo proporciona el controlador de radio de la plataforma, OpenThread usa la versión de OpenThread en su lugar (

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
Qué muestra
Un puntero a la versión de radio de OpenThread.
Consulta también:
otGetVersionString()).

otPlatRadioSetCcaEnergyDetectThreshold

otError otPlatRadioSetCcaEnergyDetectThreshold(
  otInstance *aInstance,
  int8_t aThreshold
)

Establece el umbral de ED de CCA de la radio en dBm, medido en el conector de antena, de acuerdo con las secciones 10.1.4 de IEEE 802.15.4 a 2015.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
[in] aThreshold
El umbral de ED de CCA endBm.
Valores que se muestran
OT_ERROR_NONE
Se estableció correctamente la potencia de transmisión.
OT_ERROR_INVALID_ARGS
El umbral especificado está fuera del rango.
OT_ERROR_NOT_IMPLEMENTED
No se implementó la configuración del umbral de CCA ED a través dedBm.

otPlatRadioSetExtendedAddress

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

Establece la dirección extendida para filtrar la dirección.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
[in] aExtAddress
Un puntero para la dirección extendida IEEE 802.15.4 almacenada en orden de bytes bit-endian.

otPlatRadioSetFemLnaGain

otError otPlatRadioSetFemLnaGain(
  otInstance *aInstance,
  int8_t aGain
)

Establece la ganancia de Rx LNA del FEM externo en dBm.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
[in] aGain
Ganancia de Rx LNA del FEM externo en dBm.
Valores que se muestran
OT_ERROR_NONE
Se estableció correctamente la ganancia de LNA de la FEM externa.
OT_ERROR_NOT_IMPLEMENTED
No se implementó la configuración de ganancia de LNA de FEM externo.

otPlatRadioSetMacFrameCounter

void otPlatRadioSetMacFrameCounter(
  otInstance *aInstance,
  uint32_t aMacFrameCounter
)

Establece el valor actual del contador de tramas de MAC.

Se usa cuando la radio proporciona la capacidad OT_RADIO_CAPS_TRANSMIT_SEC.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aMacFrameCounter
El valor del contador de tramas de MAC.

otPlatRadioSetMacFrameCounterIfLarger

void otPlatRadioSetMacFrameCounterIfLarger(
  otInstance *aInstance,
  uint32_t aMacFrameCounter
)

Establece el valor del contador de tramas de MAC actual solo si el nuevo valor dado es mayor que el valor actual.

Se usa cuando la radio proporciona la capacidad OT_RADIO_CAPS_TRANSMIT_SEC.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aMacFrameCounter
El valor del contador de tramas de MAC.

otPlatRadioSetMacKey

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

Actualiza las claves de MAC y el índice de claves.

Se usa cuando la radio proporciona la función OT_RADIO_CAPS_TRANSMIT_SEC.

Detalles
Parámetros
[in] aInstance
Un puntero para una instancia de OpenThread.
[in] aKeyIdMode
El modo de ID de la clave.
[in] aKeyId
Índice de claves MAC actual.
[in] aPrevKey
Un puntero a la clave MAC anterior.
[in] aCurrKey
Un puntero a la clave MAC actual.
[in] aNextKey
Un puntero a la siguiente clave MAC.
[in] aKeyType
Tipo de clave usado.

otPlatRadioSetPanId

void otPlatRadioSetPanId(
  otInstance *aInstance,
  otPanId aPanId
)

Establece el ID del número PAN para filtrar las direcciones.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
[in] aPanId
El ID PAN IEEE 802.15.4.

otPlatRadioSetPromiscuous

void otPlatRadioSetPromiscuous(
  otInstance *aInstance,
  bool aEnable
)

Habilita o inhabilita el modo promiscuo.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
[in] aEnable
TRUE para habilitar o FALSE para inhabilitar el modo promiscuo.

otPlatRadioSetRxOnWhenIdle

void otPlatRadioSetRxOnWhenIdle(
  otInstance *aInstance,
  bool aEnable
)

Configura el estado rx-on-when-idle en la plataforma de radio.

En algunas situaciones, la radio puede entrar en estado de suspensión si el dispositivo se encuentra en estado rx-off-when-idle, pero es difícil y costoso para el SubMac identificar estas situaciones e indicarle a la radio que entre en suspensión:

  • Finalizar una tarea normal de recepción de tramas:
    • La trama se recibe sin errores y pasa el filtro; no es un ACK falso.
    • No se solicita la ACK o no se puede transmitir la ACK debido a las condiciones internas.
  • Finalización de la transmisión o transmisión de una trama de una trama ACK, cuando no se solicita ACK en la trama transmitida
  • Finalización de la operación de recepción de un ACK solicitado debido a lo siguiente:
    • Vencimiento del tiempo de espera de ACK.
    • Recepción de un ACK no válido o no de una trama ACK.
    • La recepción de la ACK adecuada, a menos que la trama transmitida fuera un comando de solicitud de datos y el bit pendiente de la trama en la ACK recibido se configure como verdadero. En este caso, la implementación de la plataforma de radio DEBE mantener el receptor activado hasta que se agote el tiempo de espera determinado que active el inicio de un período de inactividad.OPENTHREAD_CONFIG_MAC_DATA_POLL_TIMEOUT se puede tomar como referencia para esto.
  • Finalización de una tarea de CCA independiente.
  • Finalización de una operación de CCA con resultado ocupado durante el procedimiento de CSMA/CA.
  • Finalización de una tarea de Detección de energía
  • Finalización de un período de recepción de radio programado con otPlatRadioReceiveAt

Si una plataforma admite OT_RADIO_CAPS_RX_ON_WHEN_IDLE, también debe admitir OT_RADIO_CAPS_CSMA_BACKOFF y controlar los períodos de inactividad después de CCA, como se describió anteriormente.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
[in] aEnable
TRUE para mantener la radio en el estado de recepción, FALSE para poner en estado de suspensión durante los períodos de inactividad.

otPlatRadioSetShortAddress

void otPlatRadioSetShortAddress(
  otInstance *aInstance,
  otShortAddress aShortAddress
)

Establece la dirección corta para filtrar las direcciones.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
[in] aShortAddress
Es la dirección corta de IEEE 802.15.4.

otPlatRadioSetTransmitPower

otError otPlatRadioSetTransmitPower(
  otInstance *aInstance,
  int8_t aPower
)

Establece la potencia de transmisión de la radio en dBm.

Detalles
Parámetros
[in] aInstance
Estructura de instancias de OpenThread
[in] aPower
La potencia de transmisión en dBm.
Valores que se muestran
OT_ERROR_NONE
Se estableció correctamente la potencia de transmisión.
OT_ERROR_NOT_IMPLEMENTED
No se implementó la configuración de transmisión de energía mediante dBm.

Recursos

Los temas de referencia de la API de OpenThread se originan a partir del código fuente, disponible en GitHub. Para obtener más información o contribuir a nuestra documentación, consulta Recursos.