Configuração de rádio

Este módulo inclui a abstração da plataforma para configuração de rádio.

Resumo

remotas

otPlatRadioGetBusSpeed(otInstance *aInstance)
uint32_t
Descubra a velocidade do barramento em bits/segundo entre o host e o chip de rádio.
otPlatRadioGetCaps(otInstance *aInstance)
Conheça os recursos de rádio.
otPlatRadioGetCcaEnergyDetectThreshold(otInstance *aInstance, int8_t *aThreshold)
Descubra o limite de CCA ED do rádio em dBm medido no conector de antena de acordo com a seção 10.1.4 IEEE 802.15.4 - 2015.
otPlatRadioGetFemLnaGain(otInstance *aInstance, int8_t *aGain)
Recebe o ganho de Rx LNA da FEM externo em dBm.
otPlatRadioGetIeeeEui64(otInstance *aInstance, uint8_t *aIeeeEui64)
void
Recebe o IEEE EUI-64 atribuído de fábrica para esta interface.
otPlatRadioGetNow(otInstance *aInstance)
uint64_t
Mostra a hora atual em microssegundos referenciada em um relógio de rádio local monotônico contínuo (64 bits de largura).
otPlatRadioGetPromiscuous(otInstance *aInstance)
bool
Confira o status do modo promíscuo.
otPlatRadioGetReceiveSensitivity(otInstance *aInstance)
int8_t
Recebe o valor de sensibilidade de recebimento do rádio.
otPlatRadioGetTransmitPower(otInstance *aInstance, int8_t *aPower)
Recebe a potência de transmissão do rádio em dBm.
otPlatRadioGetVersionString(otInstance *aInstance)
const char *
Acessa a string da versão de rádio.
otPlatRadioSetCcaEnergyDetectThreshold(otInstance *aInstance, int8_t aThreshold)
Defina o limite de CCA ED do rádio em dBm medido no conector da antena de acordo com a seção 10.1.4 IEEE 802.15.4 - 2015.
otPlatRadioSetExtendedAddress(otInstance *aInstance, const otExtAddress *aExtAddress)
void
Define o endereço estendido para a filtragem de endereço.
otPlatRadioSetFemLnaGain(otInstance *aInstance, int8_t aGain)
Define o ganho de Rx LNA da FEM externa em dBm.
otPlatRadioSetMacFrameCounter(otInstance *aInstance, uint32_t aMacFrameCounter)
void
Define o valor atual do contador de frames MAC.
otPlatRadioSetMacFrameCounterIfLarger(otInstance *aInstance, uint32_t aMacFrameCounter)
void
Define o valor atual do contador de frames MAC somente se o novo valor fornecido for maior que o valor atual.
otPlatRadioSetMacKey(otInstance *aInstance, uint8_t aKeyIdMode, uint8_t aKeyId, const otMacKeyMaterial *aPrevKey, const otMacKeyMaterial *aCurrKey, const otMacKeyMaterial *aNextKey, otRadioKeyType aKeyType)
void
Atualizar as chaves MAC e o índice de chaves.
otPlatRadioSetPanId(otInstance *aInstance, otPanId aPanId)
void
Defina o ID do PAN para a filtragem de endereços.
otPlatRadioSetPromiscuous(otInstance *aInstance, bool aEnable)
void
Ativar ou desativar o modo promíscuo.
otPlatRadioSetRxOnWhenIdle(otInstance *aInstance, bool aEnable)
void
Define o estado rx-on-when-idle para a plataforma de rádio.
otPlatRadioSetShortAddress(otInstance *aInstance, otShortAddress aShortAddress)
void
Defina o endereço curto para a filtragem de endereço.
otPlatRadioSetTransmitPower(otInstance *aInstance, int8_t aPower)
Define a potência de transmissão do rádio em dBm.

remotas

otPlatRadioGetBusSpeed

uint32_t otPlatRadioGetBusSpeed(
  otInstance *aInstance
)

Descubra a velocidade do barramento em bits/segundo entre o host e o chip de rádio.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
Retorna
A velocidade do barramento em bits/segundo entre o host e o chip de rádio. Retorne 0 quando a camada MAC e acima e a camada de rádio estiverem no mesmo chip.

otPlatRadioGetCaps

otRadioCaps otPlatRadioGetCaps(
  otInstance *aInstance
)

Conheça os recursos de rádio.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
Retorna
O vetor de bits da capacidade de rádio (consulte as definições de OT_RADIO_CAP_*).

otPlatRadioGetCcaEnergyDetectThreshold

otError otPlatRadioGetCcaEnergyDetectThreshold(
  otInstance *aInstance,
  int8_t *aThreshold
)

Descubra o limite de CCA ED do rádio em dBm medido no conector de antena de acordo com a seção 10.1.4 IEEE 802.15.4 - 2015.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
[out] aThreshold
O limite de CCA ED em dBm.
Valores de retorno
OT_ERROR_NONE
O limite de CCA ED foi recuperado.
OT_ERROR_INVALID_ARGS
aThreshold estava NULL.
OT_ERROR_NOT_IMPLEMENTED
A configuração do limite de ED de CCA via dBm não foi implementada.

otPlatRadioGetFemLnaGain

otError otPlatRadioGetFemLnaGain(
  otInstance *aInstance,
  int8_t *aGain
)

Recebe o ganho de Rx LNA da FEM externo em dBm.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
[out] aGain
Ganho de Rx LNA da FEM externa em dBm.
Valores de retorno
OT_ERROR_NONE
O ganho de LNA da FEM externo foi recuperado.
OT_ERROR_INVALID_ARGS
aGain estava NULL.
OT_ERROR_NOT_IMPLEMENTED
A configuração de LNA da FEM externa não foi implementada.

otPlatRadioGetIeeeEui64

void otPlatRadioGetIeeeEui64(
  otInstance *aInstance,
  uint8_t *aIeeeEui64
)

Recebe o IEEE EUI-64 atribuído de fábrica para esta interface.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
[out] aIeeeEui64
Um ponteiro para o IEEE EUI-64 atribuído de fábrica.

otPlatRadioGetNow

uint64_t otPlatRadioGetNow(
  otInstance *aInstance
)

Mostra a hora atual em microssegundos referenciada em um relógio de rádio local monotônico contínuo (64 bits de largura).

O relógio de rádio NÃO DEVE encapsular durante o tempo de atividade do dispositivo. Portanto, as implementações DEVEM identificar e compensar os estouros do contador interno. O relógio não tem um período definido e NÃO deve introduzir ajustes contínuos ou descontínuos (por exemplo, segundos bissextos). As implementações compensarão os tempos de suspensão do dispositivo.

As implementações podem optar por disciplinar o relógio de rádio e compensar os tempos de sono de qualquer forma (por exemplo, combinando um RTC de alta precisão/baixa potência com um contador de alta resolução), desde que o relógio combinado exposto forneça escalas contínuas de resolução de microssegundos dentro dos limites de precisão anunciados por otPlatRadioGetCslAccuracy.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
Retorna
A hora atual em microssegundos. UINT64_MAX quando a plataforma não for compatível ou o horário de rádio não estiver pronto.

otPlatRadioGetPromiscuous

bool otPlatRadioGetPromiscuous(
  otInstance *aInstance
)

Confira o status do modo promíscuo.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
Valores de retorno
TRUE
O modo promíscuo está ativado.
FALSE
O modo promíscuo está desativado.

otPlatRadioGetReceiveSensitivity

int8_t otPlatRadioGetReceiveSensitivity(
  otInstance *aInstance
)

Recebe o valor de sensibilidade de recebimento do rádio.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
Retorna
O valor da sensibilidade de recebimento do rádio em dBm.

otPlatRadioGetTransmitPower

otError otPlatRadioGetTransmitPower(
  otInstance *aInstance,
  int8_t *aPower
)

Recebe a potência de transmissão do rádio em dBm.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
[out] aPower
A potência de transmissão em dBm.
Valores de retorno
OT_ERROR_NONE
A potência de transmissão foi recuperada.
OT_ERROR_INVALID_ARGS
aPower estava NULL.
OT_ERROR_NOT_IMPLEMENTED
A transmissão da configuração de energia por dBm não foi implementada.

otPlatRadioGetVersionString

const char * otPlatRadioGetVersionString(
  otInstance *aInstance
)

Acessa a string da versão de rádio.

Essa é uma função opcional da plataforma do driver de rádio. Se não for fornecido pelo driver do rádio da plataforma, o OpenThread usará a versão do OpenThread (

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
Retorna
Um ponteiro para a versão de rádio do OpenThread.
Consulte também:
otGetVersionString()).

otPlatRadioSetCcaEnergyDetectThreshold

otError otPlatRadioSetCcaEnergyDetectThreshold(
  otInstance *aInstance,
  int8_t aThreshold
)

Defina o limite de CCA ED do rádio em dBm medido no conector da antena de acordo com a seção 10.1.4 IEEE 802.15.4 - 2015.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
[in] aThreshold
O limite de CCA ED em dBm.
Valores de retorno
OT_ERROR_NONE
A potência de transmissão foi definida.
OT_ERROR_INVALID_ARGS
O limite informado está fora do intervalo.
OT_ERROR_NOT_IMPLEMENTED
A configuração do limite de ED de CCA via dBm não foi implementada.

otPlatRadioSetExtendedAddress

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

Define o endereço estendido para a filtragem de endereço.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
[in] aExtAddress
Um ponteiro para o endereço estendido IEEE 802.15.4 armazenado na ordem de bytes few-endian.

otPlatRadioSetFemLnaGain

otError otPlatRadioSetFemLnaGain(
  otInstance *aInstance,
  int8_t aGain
)

Define o ganho de Rx LNA da FEM externa em dBm.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
[in] aGain
Ganho de Rx LNA da FEM externa em dBm.
Valores de retorno
OT_ERROR_NONE
O ganho de LNA da FEM externo foi definido.
OT_ERROR_NOT_IMPLEMENTED
A configuração de ganho de LNA da FEM externa não foi implementada.

otPlatRadioSetMacFrameCounter

void otPlatRadioSetMacFrameCounter(
  otInstance *aInstance,
  uint32_t aMacFrameCounter
)

Define o valor atual do contador de frames MAC.

É usado quando o rádio fornece o recurso OT_RADIO_CAPS_TRANSMIT_SEC.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
[in] aMacFrameCounter
O valor do contador de frames MAC.

otPlatRadioSetMacFrameCounterIfLarger

void otPlatRadioSetMacFrameCounterIfLarger(
  otInstance *aInstance,
  uint32_t aMacFrameCounter
)

Define o valor atual do contador de frames MAC somente se o novo valor fornecido for maior que o valor atual.

É usado quando o rádio fornece o recurso OT_RADIO_CAPS_TRANSMIT_SEC.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
[in] aMacFrameCounter
O valor do contador de frames MAC.

otPlatRadioSetMacKey

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

Atualizar as chaves MAC e o índice de chaves.

É usado quando o rádio fornece o recurso OT_RADIO_CAPS_TRANSMIT_SEC.

Detalhes
Parâmetros
[in] aInstance
Um ponteiro para uma instância do OpenThread.
[in] aKeyIdMode
O modo de ID da chave.
[in] aKeyId
Índice atual de chave MAC.
[in] aPrevKey
Um ponteiro para a chave MAC anterior.
[in] aCurrKey
Um ponteiro para a chave MAC atual.
[in] aNextKey
Um ponteiro para a próxima chave MAC.
[in] aKeyType
Tipo de chave usado.

otPlatRadioSetPanId

void otPlatRadioSetPanId(
  otInstance *aInstance,
  otPanId aPanId
)

Defina o ID do PAN para a filtragem de endereços.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
[in] aPanId
O ID PAN IEEE 802.15.4.

otPlatRadioSetPromiscuous

void otPlatRadioSetPromiscuous(
  otInstance *aInstance,
  bool aEnable
)

Ativar ou desativar o modo promíscuo.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
[in] aEnable
Use "TRUE" para ativar ou "FALSE" para desativar o modo promíscuo.

otPlatRadioSetRxOnWhenIdle

void otPlatRadioSetRxOnWhenIdle(
  otInstance *aInstance,
  bool aEnable
)

Define o estado rx-on-when-idle para a plataforma de rádio.

Há algumas situações em que o rádio pode entrar no estado de suspensão se o dispositivo estiver no estado rx-off-when-idle, mas é difícil e caro para o SubMac identificar essas situações e instruir o rádio a entrar em suspensão:

  • Finalizar uma tarefa regular de recepção de frame, desde que:
    • O frame é recebido sem erros, passando pela filtragem, e não é uma ACK falsa.
    • A ACK não é solicitada ou a transmissão da ACK não é possível devido a condições internas.
  • Finalização de uma transmissão ou transmissão de frame de um frame ACK, quando ACK não é solicitada no frame transmitido.
  • Finalização da operação de recepção de uma ACK solicitada devido a:
    • Expiração do tempo limite de ACK.
    • Recepção de uma ACK inválida ou não de um frame ACK.
    • Recepção da ACK adequada, a menos que o frame transmitido seja um comando de solicitação de dados e o bit de frame pendente na ACK recebida esteja definido como true. Nesse caso, a implementação da plataforma de rádio DEVE manter o receptor ativado até um tempo limite determinado que acione o início do período de inatividade.OPENTHREAD_CONFIG_MAC_DATA_POLL_TIMEOUT pode ser usado como referência para isso.
  • Finalizar uma tarefa de CCA independente.
  • Finalizar uma operação de CCA com resultado ocupado durante o procedimento CSMA/CA.
  • Finalizar uma tarefa de detecção de energia.
  • Finalização de uma janela de recepção de rádio programada com otPlatRadioReceiveAt.

Se uma plataforma oferecer suporte a OT_RADIO_CAPS_RX_ON_WHEN_IDLE, ela também vai precisar oferecer suporte a OT_RADIO_CAPS_CSMA_BACKOFF e processar períodos de inatividade após a CCA, conforme descrito acima.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
[in] aEnable
TRUE para manter o rádio no estado de recebimento, FALSE para colocar no estado de suspensão durante os períodos de inatividade.

otPlatRadioSetShortAddress

void otPlatRadioSetShortAddress(
  otInstance *aInstance,
  otShortAddress aShortAddress
)

Defina o endereço curto para a filtragem de endereço.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
[in] aShortAddress
O endereço curto IEEE 802.15.4.

otPlatRadioSetTransmitPower

otError otPlatRadioSetTransmitPower(
  otInstance *aInstance,
  int8_t aPower
)

Define a potência de transmissão do rádio em dBm.

Detalhes
Parâmetros
[in] aInstance
A estrutura da instância do OpenThread.
[in] aPower
A potência de transmissão em dBm.
Valores de retorno
OT_ERROR_NONE
A potência de transmissão foi definida.
OT_ERROR_NOT_IMPLEMENTED
A transmissão da configuração de energia por dBm não foi implementada.

Recursos

Os tópicos de Referência da API OpenThread são originados do código-fonte, disponível no GitHub. Para mais informações ou para contribuir com nossa documentação, consulte Recursos.