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

Registros OpenThread

Ver fonte no GitHub

Os logs do OpenThread são controlados por várias constantes de configuração de tempo de compilação. Salvo indicação em contrário, essas constantes são definidas no seguinte arquivo:

openthread/src/core/config/logging.h

Métodos de saída

OpenThread suporta diferentes métodos de registro de saída, definidos como a constante de configuração de tempo de OPENTHREAD_CONFIG_LOG_OUTPUT de OPENTHREAD_CONFIG_LOG_OUTPUT . As opções do método de registro estão listadas no seguinte arquivo:

openthread/src/core/config/logging.h

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

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

Níveis de registro

Os logs podem OPENTHREAD_CONFIG_LOG_LEVEL vários níveis de informações, definidos como a constante de configuração em tempo de OPENTHREAD_CONFIG_LOG_LEVEL 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 Platform Logging Macros .

O nível de log padrão é OT_LOG_LEVEL_CRIT que produz apenas os logs mais críticos. Altere o nível para ver mais registros conforme desejado. Para ver todos os logs do OpenThread, use OT_LOG_LEVEL_DEBG .

Regiões de registro

As regiões de registro determinam quais áreas do código OpenThread estão habilitadas para registro. 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 Platform Logging Enumerations .

As regiões de log são comumente usadas como parâmetros em funções de log. Todas as regiões são ativadas por padrão.

Função de registro padrão

A função padrão para registro em OpenThread é otPlatLog , definida como a constante de configuração em tempo de OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION de OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION .

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

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

./script/build -DOT_REFERENCE_DEVICE=ON

Alternativamente, atualize o openthread/etc/cmake/options.cmake para habilitá-lo por padrão ao compilar.

Como habilitar registros

Antes de habilitar os logs, certifique-se de que seu ambiente esteja configurado para construir OpenThread. Consulte Build OpenThread para obter mais informações.

Habilitar todos os registros

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

./script/build -DOT_FULL_LOGS=ON

Essa opção define o nível de log para OT_LOG_LEVEL_DEBG e ativa todos os sinalizadores de região.

Habilite um nível específico de registros

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

#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build

Ver logs no syslog

Os logs são enviados ao syslog por padrão. No Linux, é /var/log/syslog.

  1. Construa o exemplo de simulação com todos os logs habilitados:
    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 logs de OT:
    tail -F /var/log/syslog | grep "ot-cli-ftd"
    
  4. No nó simulado, abra Thread:
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
Master 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 executando o comando tail . Os logs devem ser exibidos em tempo real para o nó simulado. Observe as marcas de log na saída: [INFO] , [DEBG] , [NOTE] . Todos eles correspondem aos níveis de log . Por exemplo, se você alterar o nível de log para OT_LOG_LEVEL_INFO , os logs 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 aplicativo CLI

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

  1. Edite o arquivo de configuração para a plataforma de exemplo e altere a saída do log para o aplicativo. Para o exemplo de simulação, é openthread/examples/platforms/simulation/openthread-core-simulation-config.h :
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. Construa o exemplo de simulação com o nível desejado de toras. Para habilitar 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ê deve ver a saída do log na mesma janela que a CLI do OpenThread à medida que os comandos são processados.

Se você adicionou o registro personalizado e habilitou todos os registros, o buffer de linha CLI ou o buffer de transmissão UART pode não ser grande o suficiente para lidar com os registros personalizados adicionais. Se alguns logs não estiverem aparecendo quando deveriam, tente aumentar o tamanho do buffer de linha 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 UART, definido como OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE arquivo de configuração, como /src/nrf52840/openthread-core-nrf52840-config.h .

Ver os registros de um NCP

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

Use um valor OPENTHREAD_CONFIG_LOG_OUTPUT de OPENTHREAD_CONFIG_LOG_OUTPUT_APP para ativar o registro NCP. Altere isso no arquivo de configuração da plataforma.

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

  1. Edite o arquivo de configuração da plataforma e altere a saída do log para o aplicativo. Para nrf52840, é ./src/nrf52840/openthread-core-nrf52840-config.h no repositório ot-nrf528xx :
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. Construa o exemplo nrf52840 com o nível desejado de logs e outros sinalizadores específicos do NCP. Para construir um joiner com todos os logs habilitados:
    ./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
    
  3. wpantund o NCP, conecte-o ao host Linux e inicie o wpantund conforme detalhado no repositório wpantund .

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

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

  5. Você deve ver os logs do OpenThread exibidos em tempo real para o NCP. Você também pode vê-los na saída wpantund .

Altere o nível de registro em tempo de execução

Os níveis de log podem ser alterados em tempo de execução se o controle de nível de log dinâmico estiver habilitado.

  1. Construa o aplicativo 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. Altere o nível de registro dependendo de sua implementação:
    1. Para um sistema no chip (SoC) , use a API Logging em seu aplicativo OpenThread.
    2. Para um NCP, use wpanctl na linha de comandos. Consulte wpan-properties.h no repositório wpantund para todas as propriedades expostas a wpanctl e a API Spinel para suas definições de nível de log.
      wpanctl set OpenThread:LogLevel 5