Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Registros de OpenThread

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Ver el código fuente en GitHub

Los registros de OpenThread se controlan mediante numerosas constantes de configuración en el tiempo de compilación. A menos que se indique lo contrario, estas constantes se definen en el siguiente archivo:

openthread/src/core/config/logging.h

Métodos de salida

OpenThread admite diferentes métodos de registro de salida, definidos como la constante de configuración del tiempo de compilación de OPENTHREAD_CONFIG_LOG_OUTPUT. Las opciones del método de registro se enumeran en el siguiente archivo:

openthread/src/core/config/logging.h

La configuración predeterminada de salida de registro es OPENTHREAD_CONFIG_LOG_OUTPUT_PLATFORM_DEFINED.

El método de salida es un ejemplo de dónde es posible que debas actualizar la constante de configuración a nivel de la plataforma en lugar de la principal. Por ejemplo, para cambiar el método de salida en la app de ejemplo de simulación, edita openthread/examples/platforms/simulation/openthread-core-simulation-config.h en lugar de openthread/src/core/config/logging.h.

Niveles de registro

Los registros pueden generar diferentes niveles de información, definidos como la constante de configuración del tiempo de compilación de OPENTHREAD_CONFIG_LOG_LEVEL. Las opciones de nivel se detallan en el siguiente archivo:

openthread/include/openthread/platform/logging.h

La lista de niveles de registro también está disponible en la referencia de la API de macros de Logging de la plataforma.

El nivel de registro predeterminado es OT_LOG_LEVEL_CRIT, que solo muestra los registros más importantes. Cambia el nivel para ver más registros como desees. Para ver todos los registros de OpenThread, usa OT_LOG_LEVEL_DEBG.

Regiones de registro

Las regiones del registro determinan las áreas del código de OpenThread que están habilitadas para el registro. La enumeración de la región se define en el siguiente archivo:

openthread/include/openthread/platform/logging.h

La lista de regiones de registro también está disponible en la referencia de la API de Enumeraciones de Logging de la plataforma.

Las regiones de registro se suelen usar como parámetros en las funciones de registro. Todas las regiones están habilitadas de forma predeterminada.

Función de registro predeterminada

La función predeterminada para el registro dentro de OpenThread es otPlatLog, que se define como la constante de configuración del tiempo de compilación de OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION.

Consulta la referencia de la API de Platform Logging para obtener más información sobre esta función.

Para usar esta función directamente en las apps de ejemplo de OpenThread, usa la opción de CMake OT_REFERENCE_DEVICE. Por ejemplo, si quieres usarla dentro de la app de CLI para el ejemplo de CC2538:

./script/build -DOT_REFERENCE_DEVICE=ON

De manera alternativa, actualiza el archivo openthread/etc/cmake/options.cmake a fin de habilitarlo de forma predeterminada cuando compiles.

Cómo habilitar los registros

Antes de habilitar los registros, asegúrate de que tu entorno esté configurado para compilar subprocesos. Consulta Cómo compilar OpenThread para obtener más información.

Habilitar todos los registros

Para habilitar con rapidez todos los niveles de registro y las regiones, usa la opción de CMake OT_FULL_LOGS:

./script/build -DOT_FULL_LOGS=ON

Este interruptor establece el nivel de registro en OT_LOG_LEVEL_DEBG y activa todas las marcas de la región.

Habilita un nivel específico de registros

Para habilitar un nivel específico de registros, edita openthread/src/core/config/logging.h y actualiza OPENTHREAD_CONFIG_LOG_LEVEL al nivel deseado y, luego, compila OpenThread. Por ejemplo, para habilitar registros hasta OT_LOG_LEVEL_INFO, haz lo siguiente:

#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
./script/build

Ver registros en syslog

Los registros se envían a syslog de forma predeterminada. En Linux, es /var/log/syslog.

  1. Compila el ejemplo de simulación con todos los registros habilitados:
    cd openthread
    ./script/cmake-build simulation -DOT_FULL_LOGS=ON
    
  2. Inicia un nodo simulado:
    ./build/simulation/examples/apps/cli/ot-cli-ftd 1
    
  3. En una ventana nueva de terminal, configura un resultado en tiempo real de los registros de OT:
    tail -F /var/log/syslog | grep "ot-cli-ftd"
    
  4. En el nodo simulado, abre 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
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

Vuelve a la ventana de la terminal que ejecuta el comando tail. Los registros deben mostrarse en tiempo real para el nodo simulado. Observa las etiquetas de registro en el resultado: [INFO], [DEBG], [NOTE]. Todos corresponden a los niveles de registro. Por ejemplo, si cambias el nivel de registro a OT_LOG_LEVEL_INFO, los registros DEBG desaparecen del resultado.

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)

Visualiza registros en la app de CLI

Los registros se pueden ver directamente en la app de ejemplo de la CLI de OpenThread.

  1. Edita el archivo de configuración para la plataforma de ejemplo y cambia el resultado del registro a la app. Para el ejemplo de simulación, el archivo es openthread/examples/platforms/simulation/openthread-core-simulation-config.h:
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
    .
  2. Compila el ejemplo de simulación con el nivel de registros deseado. Para habilitar todos los registros, sigue estos pasos:
    ./script/cmake-build simulation -DOT_FULL_LOGS=ON
    
  3. Inicia un nodo simulado:
    ./build/simulation/examples/apps/cli/ot-cli-ftd 1
    
  4. Deberías ver los resultados del registro en la misma ventana que la CLI de OpenThread a medida que se procesan los comandos.

Si agregaste registros personalizados y habilitaste todos los registros, es posible que el búfer de la línea de la CLI o el búfer de transmisión de UART no sean lo suficientemente grandes para controlar los registros personalizados adicionales. Si algunos registros no aparecen cuando deberían, aumenta el tamaño del búfer de línea de la CLI, definido como OPENTHREAD_CONFIG_CLI_MAX_LINE_LENGTH en /openthread/src/cli/cli_config.h, o aumenta el tamaño del búfer de transmisión de UART, definido como OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE en el archivo de configuración de la plataforma, como /src/nrf52840/openthread-core-nrf52840-config.h.

Ver registros para un NCP

Los registros de un NCP se pueden enviar a través de wpantund al syslog de un host. Para un host de Linux, esto es /var/log/syslog.

Usa un valor de OPENTHREAD_CONFIG_LOG_OUTPUT de OPENTHREAD_CONFIG_LOG_OUTPUT_APP para habilitar el registro de NCP. Cámbialo en el archivo de configuración de la plataforma.

Por ejemplo, para habilitar esto en un nrf52840 conectado a un host de Linux:

  1. Edita el archivo de configuración de la plataforma y cambia el resultado del registro a la app. Para nrf52840, es ./src/nrf52840/openthread-core-nrf52840-config.h en el repositorio ot-nrf528xx:
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. Compila el ejemplo nrf52840 con el nivel deseado de registros y otras marcas específicas de NCP. Para compilar un unión con todos los registros habilitados, usa lo siguiente:
    ./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON
    
  3. Escribe en la memoria flash del NCP, conéctalo al host de Linux y, luego, inicia wpantund como se detalla en el repositorio wpantund.

  4. Una vez que el NCP se esté ejecutando, comprueba syslog en la máquina Linux:

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

  5. Deberías ver que los registros de OpenThread se muestran en tiempo real para el NCP. Es posible que también los veas en el resultado de wpantund.

Cambia el nivel de registro en el tiempo de ejecución

Los niveles de registro se pueden cambiar en el tiempo de ejecución si el control de nivel de registro dinámico está habilitado.

  1. Compila la app con la opción -DOT_LOG_LEVEL_DYNAMIC=ON. Por ejemplo:
    ./script/build nrf52840 UART_trans -DOT_JOINER=ON -DOT_FULL_LOGS=ON -DOT_LOG_LEVEL_DYNAMIC=ON
    
    .
  2. Cambia el nivel de registro según tu implementación:
    1. Para un sistema en chip (SoC), usa la API de Logging en tu aplicación de OpenThread.
    2. Para un NCP, usa wpanctl en la línea de comandos. Consulta wpan-properties.h en el repositorio de wpantund para conocer todas las propiedades expuestas de wpanctl y la API de Spinel a fin de conocer sus definiciones de nivel de registro.
      wpanctl set OpenThread:LogLevel 5