Google is committed to advancing racial equity for Black communities. See how.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Registros de OpenThread

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

/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 en tiempo de OPENTHREAD_CONFIG_LOG_OUTPUT de OPENTHREAD_CONFIG_LOG_OUTPUT . Las opciones del método de registro se enumeran en el siguiente archivo:

/src/core/config/logging.h

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

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

Niveles de registro

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

/include/openthread/platform/logging.h

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

El nivel de registro predeterminado es OT_LOG_LEVEL_CRIT que solo genera los registros más críticos. Cambie el nivel para ver más registros como desee. Para ver todos los registros de OpenThread, use OT_LOG_LEVEL_DEBG .

Regiones de registro

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

/include/openthread/platform/logging.h

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

Las regiones de registro se utilizan comúnmente 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 , definida como la constante de configuración en tiempo de OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION de OPENTHREAD_CONFIG_PLAT_LOG_FUNCTION .

Consulte 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 aplicaciones de ejemplo de OpenThread, use el modificador de compilación REFERENCE_DEVICE . Por ejemplo, para usarlo dentro de la aplicación CLI ( examples/apps/cli/main.c ) para el ejemplo nRF52840:

make -f examples/Makefile-nrf52840 REFERENCE_DEVICE=1

Alternativamente, modifique la variable COMMONCFLAGS en un COMMONCFLAGS Makefile ejemplo para habilitarlo por defecto al COMMONCFLAGS .

Cómo habilitar registros

Antes de habilitar los registros, asegúrese de que su entorno esté configurado para compilar OpenThread. Consulte Compilar OpenThread para obtener más información.

Habilitar todos los registros

Para habilitar rápidamente todos los niveles y regiones de registro, use el FULL_LOGS compilación FULL_LOGS :

make -f examples/Makefile-simulation FULL_LOGS=1

Este conmutador establece el nivel de registro en OT_LOG_LEVEL_DEBG y activa todos los indicadores de región.

Habilite un nivel específico de registros

Para habilitar un nivel específico de registros, edite /src/core/config/logging.h actualice OPENTHREAD_CONFIG_LOG_LEVEL al nivel deseado, luego compile OpenThread. Por ejemplo, para habilitar registros hasta OT_LOG_LEVEL_INFO :

#define OPENTHREAD_CONFIG_LOG_LEVEL OT_LOG_LEVEL_INFO
make -f examples/Makefile-simulation

Ver registros en syslog

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

  1. Cree el ejemplo de simulación con todos los registros habilitados:
    make -f examples/Makefile-sim FULL_LOGS=1
    
  2. Inicie un nodo simulado:
    ./output/x86_64-unknown-linux-gnu/bin/ot-cli-ftd 1
    
  3. En una nueva ventana de terminal, configure una salida en tiempo real de los registros de OT:
    tail -F /var/log/syslog | grep "ot-cli-ftd"
    
  4. En el nodo 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
    
  5. Regrese a la ventana de terminal ejecutando el comando tail . Los registros deben mostrarse en tiempo real para el nodo simulado:
    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)
    

Tenga en cuenta las etiquetas de registro en la salida: [INFO] , [DEBG] , [NOTE] . Todos estos corresponden a los niveles de registro . Por ejemplo, si cambia el nivel de registro a OT_LOG_LEVEL_INFO , los registros DEBG desaparecen de la salida.

Ver registros en la aplicación CLI

Los registros se pueden ver directamente en la aplicación de ejemplo de OpenThread CLI.

  1. Edite el archivo de configuración para la plataforma de ejemplo y cambie la salida del registro a la aplicación. Para el ejemplo de simulación, este es /examples/platforms/sim/openthread-core-sim-config.h :
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_APP
    
  2. Cree el ejemplo de simulación con el nivel de registros deseado. Para habilitar todos los registros:
    make -f examples/Makefile-sim FULL_LOGS=1
    
  3. Inicie un nodo simulado:
    ./output/x86_64-apple-darwin/bin/ot-cli-ftd 1
    
  4. Debería ver la salida del registro en la misma ventana que la CLI de OpenThread a medida que se procesan los comandos.

Si ha agregado un registro personalizado y habilitado todos los registros, es posible que el búfer de transmisión de UART no sea lo suficientemente grande para manejar los registros personalizados adicionales. Si algunos registros no aparecen cuando deberían, intente aumentar el tamaño del búfer de transmisión UART, definido como OPENTHREAD_CONFIG_CLI_UART_TX_BUFFER_SIZE en /src/cli/cli_config.h o el archivo de configuración de la plataforma, como /examples/platforms/nrf528xx/nrf52840/openthread-core-nrf52840-config.h .

Ver registros de un NCP

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

Utilice un valor OPENTHREAD_CONFIG_LOG_OUTPUT de OPENTHREAD_CONFIG_LOG_OUTPUT_NCP_SPINEL para habilitar el registro NCP. Cambie esto en el archivo de configuración de la plataforma.

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

  1. Edite el archivo de configuración para la plataforma y cambie la salida del registro a NCP Spinel. Para nrf52840, este es /examples/platforms/nrf528xx/nrf52840/openthread-core-nrf52840-config.h :
    #define OPENTHREAD_CONFIG_LOG_OUTPUT OPENTHREAD_CONFIG_LOG_OUTPUT_NCP_SPINEL
    
  2. Cree el ejemplo nrf52840 con el nivel deseado de registros y otros indicadores específicos de NCP. Para construir un carpintero con todos los registros habilitados:
    make -f examples/Makefile-nrf52840 JOINER=1 USB=1 FULL_LOGS=1
    
  3. Actualice el NCP, conéctelo al host de Linux e inicie wpantund como se detalla en el laboratorio de códigos de hardware OpenThread .
  4. Una vez que el NCP se esté ejecutando, verifique el syslog en la máquina Linux:
    tail -F /var/log/syslog | grep "ot-ncp-ftd"
    
  5. Debería ver los registros de OpenThread mostrarse en tiempo real para el NCP. También puede verlos en la salida de wpantund .

Cambiar el nivel de registro en tiempo de ejecución

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

  1. Edite /src/core/config/logging.h establezca OPENTHREAD_CONFIG_ENABLE_DYNAMIC_LOG_LEVEL en 1 .
  2. Cambie el nivel de registro según su implementación:
    1. Para un sistema en chip (SoC) , use la API de registro dentro de su aplicación OpenThread.
    2. Para un NCP, use wpanctl en la línea de comando:
      wpanctl set OpenThread:LogLevel 5
      
      Consulte wpan-properties.h en el repositorio de wpantund para todas las propiedades expuestas a wpanctl y la API de Spinel para sus definiciones de nivel de registro.