O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Registros OpenThread

Veja o código no GitHub

Os registros do OpenThread são controlados por várias constantes de configuração no tempo de compilação. A menos que indicado de outra forma, essas constantes são definidas no seguinte arquivo:

openthread/src/core/config/logging.h

Métodos de saída

O OpenThread é compatível com diferentes métodos de geração de registros de saída, definidos como a constante de configuração do tempo de compilação de OPENTHREAD_CONFIG_LOG_OUTPUT. As opções do método de geração de registros estão listadas no seguinte arquivo:

openthread/src/core/config/logging.h

A configuração de saída de registro padrão é OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED.

O método de saída é um exemplo de onde pode ser necessário atualizar a constante de configuração no nível da plataforma, em vez da constante principal. Por exemplo, para alterar o método de saída no app de exemplo da simulação, edite openthread/examples/platforms/simulation/openthread-core-simulation-config.h em vez de openthread/src/core/config/logging.h.

Níveis de registro

Os registros podem gerar vários níveis de informações, definidos como a constante de configuração do tempo de compilação de OPENTHREAD_CONFIG_LOG_LEVEL. As opções de nível estão listadas no seguinte arquivo:

openthread/include/openthread/platform/logging.h

A lista de níveis de registro também está disponível na referência da API Macros do Logging da plataforma.

O nível de registro padrão é OT_LOG_LEVEL_CRIT, que só gera os registros mais críticos. Mude o nível para ver mais registros. Para ver todos os registros do OpenThread, use OT_LOG_LEVEL_DEBG.

Regiões de registros

As regiões de registro determinam quais áreas do código OpenThread estão ativadas para geração de registros. A enumeração da região é definida no seguinte arquivo:

openthread/include/openthread/platform/logging.h

A lista de regiões de registro também está disponível na referência da API Enumerações de registro da plataforma.

As regiões de registro costumam ser usadas como parâmetros nas funções de registro. Todas as regiões são ativadas por padrão.

Função de geração de registros padrão

A função padrão para geração de registros no OpenThread é otPlatLog, definida como a constante de configuração do tempo de compilação de OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION.

Consulte a referência da API Platform Logging para mais informações sobre essa função.

Para usar essa função diretamente nos apps de exemplo do OpenThread, use a opção cmake OT_REFERENCE_DEVICE. Por exemplo, para usá-lo no aplicativo da CLI para o exemplo do CC2538:

./script/build -DOT_REFERENCE_DEVICE=ON

Se preferir, atualize o arquivo openthread/etc/cmake/options.cmake para ativá-lo por padrão durante a criação.

Como ativar os registros

Antes de ativar os registros, verifique se o ambiente está configurado para criar o OpenThread. Consulte Criar OpenThread para saber mais.

Ativar todos os registros

Para ativar rapidamente todos os níveis e regiões de registro, use a opção cmake OT_FULL_LOGS:

./script/build -DOT_FULL_LOGS=ON

Essa chave define o nível de registro como OT_LOG_LEVEL_DEBG e ativa todas as sinalizações de região.

Ativar um nível específico de registros

Para ativar um nível específico de registros, edite openthread/src/core/config/logging.h, atualize OPENTHREAD_CONFIG_LOG_LEVEL para o nível desejado e crie o OpenThread. Por exemplo, para ativar registros de até OT_LOG_LEVEL_INFO:

#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build

Ver registros no syslog

Por padrão, os registros são enviados para syslog. No Linux, o valor é /var/log/syslog.

  1. Crie o exemplo de simulação com todos os registros ativados:
    cd openthread
    ./script/cmake-build simulation -DOT_FULL_LOGS=ON
    
  2. Inicie um nó simulado:
    ./build/simulation/examples/apps/cli/ot-cli-ftd 1
    
  3. Em uma nova janela de terminal, configure uma saída em tempo real dos registros OT:
    tail -F /var/log/syslog | grep "ot-cli-ftd"
    
  4. No nó simulado, abra a linha de execução:
dataset init new
Done
dataset
Active Timestamp: 1
Channel: 13
Channel Mask: 07fff800
Ext PAN ID: d63e8e3e495ebbc3
Mesh Local Prefix: fd3d:b50b:f96d:722d/64
Network Key: dfd34f0f05cad978ec4e32b0413038ff
Network Name: OpenThread-8f28
PAN ID: 0x8f28
PSKc: c23a76e98f1a6483639b1ac1271e2e27
Security Policy: 0, onrcb
Done
dataset commit active
Done
ifconfig up
Done
thread start
Done

Volte para a janela do terminal que executa o comando tail. Os registros serão exibidos em tempo real para o nó simulado. Observe as tags de registro na saída: [INFO], [DEBG], [NOTE]. Todos correspondem aos níveis de registro. Por exemplo, se você alterar o nível de registro para OT_LOG_LEVEL_INFO, os registros DEBG desaparecerão da saída.

ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: SrcAddrMatch - Cleared all entries
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: Read NetworkInfo {rloc:0x9c00, extaddr:1a4aaf5e97c852de, role:Leader, mode:0x0f, keyseq:0x0, ...
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: ... pid:0x8581bc9, mlecntr:0x3eb, maccntr:0x3e8, mliid:05e4b515e33746c8}
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Notifier: StateChanged (0x7f133b) [Ip6+ Ip6- LLAddr MLAddr Rloc+ KeySeqCntr NetData Ip6Mult+ Channel PanId NetName ExtPanId MstrKey PSKc SecPolicy]
ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: dataset panid
ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: dataset commit active
ot-cli-ftd[30055]: [1] [INFO]-MESH-CP-: Active dataset set
ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: Idle mode: Radio sleeping
ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: RadioPanId: 0x8f28
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Notifier: StateChanged (0x007f0100) [KeySeqCntr Channel PanId NetName ExtPanId MstrKey PSKc SecPolicy]
ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: ifconfig up
ot-cli-ftd[30055]: [1] [DEBG]-MAC-----: Idle mode: Radio receiving on channel 11
ot-cli-ftd[30055]: [1] [INFO]-CLI-----: execute command: thread start
ot-cli-ftd[30055]: [1] [NOTE]-MLE-----: Role Disabled -> Detached
ot-cli-ftd[30055]: [1] [INFO]-MLE-----: Attempt to become router
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: Read NetworkInfo {rloc:0x9c00, extaddr:1a4aaf5e97c852de, role:Leader, mode:0x0f, keyseq:0x0, ...
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: ... pid:0x8581bc9, mlecntr:0x3eb, maccntr:0x3e8, mliid:05e4b515e33746c8}
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: Saved NetworkInfo {rloc:0x9c00, extaddr:1a4aaf5e97c852de, role:Leader, mode:0x0f, keyseq:0x0, ...
ot-cli-ftd[30055]: [1] [INFO]-CORE----: Non-volatile: ... pid:0x8581bc9, mlecntr:0x7d4, maccntr:0x7d0, mliid:05e4b515e33746c8}
ot-cli-ftd[30055]: [1] [DEBG]-MLE-----: Store Network Information
ot-cli-ftd[30055]: [1] [INFO]-MLE-----: Send Link Request (ff02:0:0:0:0:0:0:2)

Ver registros no app CLI

Os registros podem ser visualizados diretamente no app de exemplo CLI do OpenThread.

  1. Edite o arquivo de configuração da plataforma de exemplo e altere a saída do registro para o app. Para o exemplo da simulação, use o seguinte openthread/examples/platforms/simulation/openthread-core-simulation-config.h:
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. Crie o exemplo de simulação com o nível desejado de registros. Para ativar todos os registros:
    ./script/cmake-build simulation -DOT_FULL_LOGS=ON
    
  3. Inicie um nó simulado:
    ./build/simulation/examples/apps/cli/ot-cli-ftd 1
    
  4. Você verá a saída de registro na mesma janela que a CLI do OpenThread enquanto os comandos são processados.

Se você tiver adicionado geração de registros personalizada e ativado todos os registros, o buffer de linha da CLI ou o buffer de transmissão UART talvez não seja grande o suficiente para processar os outros registros personalizados. Se alguns registros não estiverem aparecidos quando necessário, tente aumentar o tamanho do buffer de linha da CLI, definido como OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH em /openthread/src/cli/cli_config.h, ou aumentar o tamanho do buffer de transmissão da UART, definido como OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE, no arquivo de configuração da plataforma, como /src/nrf52840/openthread-core-nrf52840-config.h.

Ver registros de um NCP

Os registros de um NCP podem ser enviados por meio de wpantund para o syslog de um host. Para um host do Linux, este é /var/log/syslog..

Use um valor OPENTHREAD_CONFIG_LOG_OUTPUT de OPENTHREAD_CONFIG_LOG_OUTPUT_APP para ativar a geração de registros do NCP. Mude isso no arquivo de configuração da plataforma.

Por exemplo, para ativar isso para um nrf52840 conectado a um host do Linux:

  1. Edite o arquivo de configuração da plataforma e altere a saída do registro para o app. Para nrf52840, ele é ./src/nrf52840/openthread-core-nrf52840-config.h no repositório ot-nrf528xx:
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. Crie o exemplo nrf52840 com o nível desejado de registros e outras sinalizações específicas do NCP. Para criar um inicializador com todos os registros ativados:
    ./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
    
  3. Atualize o NCP, conecte-o ao host do Linux e inicie wpantund conforme detalhado no repositório wpantund.

  4. Quando o NCP estiver em execução, verifique o syslog na máquina Linux:

    tail -F /var/log/syslog | grep "wpantund"
    

  5. Os registros do OpenThread serão exibidos em tempo real para o NCP. Eles também podem ser vistos na saída de wpantund.

Alterar o nível de registro no ambiente de execução

Os níveis de registro poderão ser alterados no tempo de execução se o controle de nível de registro dinâmico estiver ativado.

  1. Crie o app com a opção -DOT_LOG_LEVEL_DYNAMIC=ON. Por exemplo,
    ./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
    
  2. Mude o nível de registro dependendo da implementação:
    1. Para um system-on-chip (SoC), use a API Logging no seu aplicativo OpenThread.
    2. Para um NCP, use wpanctl na linha de comando. Consulte wpan-properties.h no repositório wpantund para ver todas as propriedades expostas a wpanctl e a API Spinnaker para ver as definições de nível de registro.
      wpanctl set OpenThread:LogLevel 5