cleanup sw req

This commit is contained in:
2026-02-01 19:47:53 +01:00
parent 0bdbcb1657
commit 304371c6b8
608 changed files with 47798 additions and 0 deletions

View File

@@ -0,0 +1,689 @@
# ASF Logger - UML Diagrams and Visual Documentation
## Table of Contents
1. [System Overview](#system-overview)
2. [Class Diagrams](#class-diagrams)
3. [Sequence Diagrams](#sequence-diagrams)
4. [State Diagrams](#state-diagrams)
5. [Component Diagrams](#component-diagrams)
6. [Deployment Diagrams](#deployment-diagrams)
7. [Activity Diagrams](#activity-diagrams)
## System Overview
### High-Level System Architecture
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ Application Layer │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ GPIO │ │ UART │ │ I2C │ │ Other │ │
│ │ Wrapper │ │ Wrapper │ │ Wrapper │ │ Modules │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────────────────────┤
│ ASF Logger │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────────────────┐ │
│ │ Configuration │ │ Message │ │ API Layer │ │
│ │ Manager │ │ Formatter │ │ ┌─────────────────────────────┐ │ │
│ │ │ │ │ │ │ Convenience Macros │ │ │
│ │ • Log Levels │ │ • Timestamps │ │ │ ASF_LOGI, ASF_LOGE, etc. │ │ │
│ │ • Color Config │ │ • Color Codes │ │ └─────────────────────────────┘ │ │
│ │ • Buffer Size │ │ • Message IDs │ │ ┌─────────────────────────────┐ │ │
│ │ • Runtime Ctrl │ │ • Format String │ │ │ Core Functions │ │ │
│ └─────────────────┘ └─────────────────┘ │ │ logInfo, logError, etc. │ │ │
│ │ └─────────────────────────────┘ │ │
│ └─────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────────┤
│ ESP-IDF Log System │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────────────────┐ │
│ │ Log Levels │ │ Tag Filtering │ │ Output Routing │ │
│ │ │ │ │ │ │ │
│ │ • ESP_LOG_NONE │ │ • Per-tag level │ │ • UART Console │ │
│ │ • ESP_LOG_ERROR │ │ • Wildcard tags │ │ • JTAG Debug │ │
│ │ • ESP_LOG_WARN │ │ • Runtime ctrl │ │ • Custom outputs │ │
│ │ • ESP_LOG_INFO │ │ │ │ │ │
│ │ • ESP_LOG_DEBUG │ │ │ │ │ │
│ │ • ESP_LOG_VERBOSE│ │ │ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────────┤
│ Hardware Layer │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────────────────┐ │
│ │ UART │ │ JTAG │ │ Other I/O │ │
│ │ Controller │ │ Interface │ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
```
## Class Diagrams
### Core Logger Class Structure
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ asf::logger namespace │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ LogLevel (enum class) │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ + VERBOSE : uint8_t = 0 │ │
│ │ + DEBUG : uint8_t = 1 │ │
│ │ + INFO : uint8_t = 2 │ │
│ │ + WARNING : uint8_t = 3 │ │
│ │ + ERROR : uint8_t = 4 │ │
│ │ + NONE : uint8_t = 5 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ LoggerConfig (struct) │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ + minLevel : LogLevel │ │
│ │ + enableTimestamp : bool │ │
│ │ + enableColor : bool │ │
│ │ + enableId : bool │ │
│ │ + maxMessageLength : uint32_t │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Logger Functions (namespace) │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ Static Data: │ │
│ │ - s_config : LoggerConfig │ │
│ │ - COLOR_RESET : const char* │ │
│ │ - COLOR_VERBOSE : const char* │ │
│ │ - COLOR_DEBUG : const char* │ │
│ │ - COLOR_INFO : const char* │ │
│ │ - COLOR_WARNING : const char* │ │
│ │ - COLOR_ERROR : const char* │ │
│ │ │ │
│ │ Configuration Functions: │ │
│ │ + initialize(config: LoggerConfig) : void │ │
│ │ + setLogLevel(level: LogLevel) : void │ │
│ │ + getLogLevel() : LogLevel │ │
│ │ + enableTimestamp(enable: bool) : void │ │
│ │ + enableColor(enable: bool) : void │ │
│ │ + enableId(enable: bool) : void │ │
│ │ + getDefaultConfig() : LoggerConfig │ │
│ │ │ │
│ │ Core Logging Functions: │ │
│ │ + log(tag: char*, id: uint32_t, level: LogLevel, │ │
│ │ format: char*, ...) : void │ │
│ │ + logVerbose(tag: char*, id: uint32_t, │ │
│ │ format: char*, ...) : void │ │
│ │ + logDebug(tag: char*, id: uint32_t, │ │
│ │ format: char*, ...) : void │ │
│ │ + logInfo(tag: char*, id: uint32_t, │ │
│ │ format: char*, ...) : void │ │
│ │ + logWarning(tag: char*, id: uint32_t, │ │
│ │ format: char*, ...) : void │ │
│ │ + logError(tag: char*, id: uint32_t, │ │
│ │ format: char*, ...) : void │ │
│ │ │ │
│ │ Utility Functions: │ │
│ │ + getIsoTimestamp(buffer: char*, size: size_t) : char* │ │
│ │ + logLevelToString(level: LogLevel) : char* │ │
│ │ + logLevelToColor(level: LogLevel) : char* │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Convenience Macros │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ Long Form: │ │
│ │ • ASF_LOG_VERBOSE(tag, id, format, ...) │ │
│ │ • ASF_LOG_DEBUG(tag, id, format, ...) │ │
│ │ • ASF_LOG_INFO(tag, id, format, ...) │ │
│ │ • ASF_LOG_WARNING(tag, id, format, ...) │ │
│ │ • ASF_LOG_ERROR(tag, id, format, ...) │ │
│ │ │ │
│ │ Short Form: │ │
│ │ • ASF_LOGV(tag, id, format, ...) │ │
│ │ • ASF_LOGD(tag, id, format, ...) │ │
│ │ • ASF_LOGI(tag, id, format, ...) │ │
│ │ • ASF_LOGW(tag, id, format, ...) │ │
│ │ • ASF_LOGE(tag, id, format, ...) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
```
### Relationship with ESP-IDF
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ ASF Logger Dependencies │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ asf::logger │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ │ uses │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ ESP-IDF Log System │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ + ESP_LOGV(tag, format, ...) │ │
│ │ + ESP_LOGD(tag, format, ...) │ │
│ │ + ESP_LOGI(tag, format, ...) │ │
│ │ + ESP_LOGW(tag, format, ...) │ │
│ │ + ESP_LOGE(tag, format, ...) │ │
│ │ + esp_log_level_set(tag, level) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ │ uses │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ System Libraries │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ Standard C Library: │ │
│ │ • cstdio (printf family) │ │
│ │ • cstring (string operations) │ │
│ │ • ctime (time formatting) │ │
│ │ • cstdarg (variadic functions) │ │
│ │ │ │
│ │ POSIX Functions: │ │
│ │ • sys/time.h (gettimeofday) │ │
│ │ │ │
│ │ ESP-IDF Specific: │ │
│ │ • esp_timer.h (high resolution timing) │ │
│ │ • esp_log.h (logging infrastructure) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
```
## Sequence Diagrams
### Basic Logging Sequence
```
Application ASF_LOGI asf::logger Message ESP-IDF Console
Code Macro ::logInfo Formatter Log Sys Output
│ │ │ │ │ │
│ Log Call │ │ │ │ │
├────────────► │ │ │ │
│ │ logInfo() │ │ │ │
│ ├─────────────► │ │ │
│ │ │ Level Check │ │ │
│ │ ├─────────────┤ │ │
│ │ │ │ │ │
│ │ │ Level OK? │ │ │
│ │ ├─────────────┤ │ │
│ │ │ │ │ │
│ │ │ Format Msg │ │ │
│ │ ├─────────────► │ │
│ │ │ │ Formatted │ │
│ │ │ │ Message │ │
│ │ │ ◄─────────────┤ │
│ │ │ │ │ │
│ │ │ ESP_LOGI() │ │ │
│ │ ├─────────────────────────────► │
│ │ │ │ │ Output │
│ │ │ │ ├────────────►
│ │ │ │ │ │
│ │ Return │ │ │ │
│ ◄─────────────┤ │ │ │
│ Return │ │ │ │ │
◄────────────┤ │ │ │ │
│ │ │ │ │ │
```
### Configuration Change Sequence
```
Application asf::logger Configuration ESP-IDF
Code Functions Manager Log System
│ │ │ │
│ setLogLevel │ │ │
├─────────────► │ │
│ │ Update Config │ │
│ ├───────────────► │
│ │ │ Set ESP Level│
│ │ ├──────────────►
│ │ │ │
│ │ Config Updated│ │
│ ◄───────────────┤ │
│ Return │ │ │
◄─────────────┤ │ │
│ │ │ │
│ │ │ │
│ Next Log │ │ │
├─────────────► │ │
│ │ Check Level │ │
│ ├───────────────► │
│ │ New Level │ │
│ ◄───────────────┤ │
│ │ │ │
│ Log Output │ │ │
◄─────────────┤ │ │
│ │ │ │
```
### Error Handling Sequence
```
Application ASF_LOGE asf::logger Message ESP-IDF Console
Code Macro ::logError Formatter Log Sys Output
│ │ │ │ │ │
│ Error Log │ │ │ │ │
├────────────► │ │ │ │
│ │ logError() │ │ │ │
│ ├─────────────► │ │ │
│ │ │ Level Check │ │ │
│ │ ├─────────────┤ │ │
│ │ │ (Always OK │ │ │
│ │ │ for ERROR) │ │ │
│ │ │ │ │ │
│ │ │ Format Msg │ │ │
│ │ ├─────────────► │ │
│ │ │ │ Add Error │ │
│ │ │ │ Color Code │ │
│ │ │ │ Add Timestamp│ │
│ │ │ │ Add Message │ │
│ │ │ │ ID │ │
│ │ │ │ │ │
│ │ │ │ Formatted │ │
│ │ │ │ Error Msg │ │
│ │ │ ◄─────────────┤ │
│ │ │ │ │ │
│ │ │ ESP_LOGE() │ │ │
│ │ ├─────────────────────────────► │
│ │ │ │ │ Red Error │
│ │ │ │ │ Output │
│ │ │ │ ├────────────►
│ │ │ │ │ │
│ │ Return │ │ │ │
│ ◄─────────────┤ │ │ │
│ Return │ │ │ │ │
◄────────────┤ │ │ │ │
│ │ │ │ │ │
```
## State Diagrams
### Logger State Machine
```
┌─────────────────────────────────────────────────────────┐
│ Logger State Machine │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ [Initial State] │
│ Uninitialized │
│ │
│ • No configuration loaded │
│ • Default ESP-IDF logging active │
│ • ASF functions not available │
└─────────────────────────────────────────────────────────┘
│ initialize(config)
┌─────────────────────────────────────────────────────────┐
│ Initialized │
│ │
│ • Configuration loaded │
│ • ESP-IDF log level set │
│ • ASF functions active │
│ • Ready for logging │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────┼─────────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ Level Filter │ │ Message Format │ │ Runtime Config │
│ │ │ │ │ │
│ • Check min level │ │ • Add timestamp │ │ • Change log level │
│ • Allow/block msg │ │ • Add color codes │ │ • Toggle features │
│ • Early return │ │ • Add message ID │ │ • Update settings │
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
│ │ │
│ │ │
└─────────────────────────┼─────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Output Ready │
│ │
│ • Message formatted │
│ • Ready for ESP-IDF output │
│ • All processing complete │
└─────────────────────────────────────────────────────────┘
│ ESP_LOG*() call
┌─────────────────────────────────────────────────────────┐
│ Message Output │
│ │
│ • Sent to ESP-IDF log system │
│ • Routed to console/UART │
│ • Visible to user │
└─────────────────────────────────────────────────────────┘
```
### Configuration State Transitions
```
┌─────────────────────────────────────────────────────────┐
│ Configuration States │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Default Config │
│ │
│ minLevel = INFO │
│ enableTimestamp = true │
│ enableColor = true │
│ enableId = true │
│ maxMessageLength = 256 │
└─────────────────────────────────────────────────────────┘
│ Runtime changes
┌─────────────────────────────────────────────────────────┐
│ Custom Config │
│ │
│ User-modified settings: │
│ • setLogLevel() │
│ • enableTimestamp() │
│ • enableColor() │
│ • enableId() │
└─────────────────────────────────────────────────────────┘
│ initialize(defaultConfig)
┌─────────────────────────────────────────────────────────┐
│ Reset to Default │
│ │
│ All settings restored to default values │
└─────────────────────────────────────────────────────────┘
```
## Component Diagrams
### Internal Component Structure
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ ASF Logger Component │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Public Interface │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │ │
│ │ │ Core API │ │ Convenience │ │ Configuration │ │ │
│ │ │ Functions │ │ Macros │ │ API │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ • logInfo() │ │ • ASF_LOGI() │ │ • initialize() │ │ │
│ │ │ • logError() │ │ • ASF_LOGE() │ │ • setLogLevel() │ │ │
│ │ │ • logDebug() │ │ • ASF_LOGD() │ │ • enableColor() │ │ │
│ │ │ • logWarning() │ │ • ASF_LOGW() │ │ • getLogLevel() │ │ │
│ │ │ • logVerbose() │ │ • ASF_LOGV() │ │ │ │ │
│ │ └─────────────────┘ └─────────────────┘ └─────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Internal Components │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │ │
│ │ │ Configuration │ │ Message │ │ Utility │ │ │
│ │ │ Manager │ │ Formatter │ │ Functions │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ • Static config │ │ • Timestamp gen │ │ • Level to string │ │ │
│ │ │ • Level filter │ │ • Color codes │ │ • Level to color │ │ │
│ │ │ • Runtime ctrl │ │ • Message ID │ │ • Default config │ │ │
│ │ │ • Validation │ │ • Format string │ │ • Validation │ │ │
│ │ └─────────────────┘ └─────────────────┘ └─────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ External Dependencies │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │ │
│ │ │ ESP-IDF Log │ │ Standard C │ │ POSIX Time │ │ │
│ │ │ System │ │ Library │ │ Functions │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ • ESP_LOGI() │ │ • printf() │ │ • gettimeofday() │ │ │
│ │ │ • ESP_LOGE() │ │ • snprintf() │ │ • localtime() │ │ │
│ │ │ • ESP_LOGD() │ │ • vsnprintf() │ │ • struct timeval │ │ │
│ │ │ • ESP_LOGW() │ │ • memset() │ │ │ │ │
│ │ │ • ESP_LOGV() │ │ • strlen() │ │ │ │ │
│ │ └─────────────────┘ └─────────────────┘ └─────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
```
### Data Flow Component Diagram
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ Data Flow Architecture │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────────┐ │
│ │ Application │ │ ASF Logger │ │ ESP-IDF Log │ │
│ │ Code │ │ Macros │ │ System │ │
│ │ │ │ │ │ │ │
│ │ • Log calls │───►│ • ASF_LOGI() │───►│ • ESP_LOGI() │ │
│ │ • Error msgs │ │ • ASF_LOGE() │ │ • ESP_LOGE() │ │
│ │ • Debug info │ │ • ASF_LOGD() │ │ • Level filtering │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────────┐ │
│ │ Message ID │ │ Message │ │ Console/UART │ │
│ │ Management │ │ Formatter │ │ Output │ │
│ │ │ │ │ │ │ │
│ │ • ID validation │───►│ • Timestamp │───►│ • Serial output │ │
│ │ • Range check │ │ • Color codes │ │ • JTAG debug │ │
│ │ • Uniqueness │ │ • Format string │ │ • Custom handlers │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Configuration │ │ Level │ │
│ │ Manager │ │ Filter │ │
│ │ │ │ │ │
│ │ • Runtime cfg │───►│ • Min level │ │
│ │ • Feature flags │ │ • Early return │ │
│ │ • Buffer size │ │ • Performance │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
```
## Deployment Diagrams
### ESP32 System Deployment
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ ESP32 Device │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Flash Memory │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │ │
│ │ │ Application │ │ ASF Logger │ │ ESP-IDF │ │ │
│ │ │ Code │ │ Component │ │ Framework │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ • Main app │ │ • logger.cpp │ │ • Log system │ │ │
│ │ │ • GPIO wrapper │ │ • logger.hpp │ │ • UART drivers │ │ │
│ │ │ • UART wrapper │ │ • Macros │ │ • System libs │ │ │
│ │ │ • Other modules │ │ • Config │ │ • FreeRTOS │ │ │
│ │ └─────────────────┘ └─────────────────┘ └─────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ RAM Memory │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │ │
│ │ │ Stack │ │ Static Data │ │ Heap │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ • Log buffers │ │ • Logger config │ │ • Dynamic alloc │ │ │
│ │ │ • Function vars │ │ • Color strings │ │ • Task stacks │ │ │
│ │ │ • Call stack │ │ • Constants │ │ • Buffers │ │ │
│ │ └─────────────────┘ └─────────────────┘ └─────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Hardware Interfaces │ │
│ ├─────────────────────────────────────────────────────────────────────┤ │
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────┐ │ │
│ │ │ UART │ │ JTAG │ │ GPIO │ │ │
│ │ │ Controller │ │ Interface │ │ Pins │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ • Serial output │ │ • Debug output │ │ • Status LEDs │ │ │
│ │ │ • Console I/O │ │ • Trace data │ │ • Debug signals │ │ │
│ │ │ • Log routing │ │ • Real-time │ │ • External conn │ │ │
│ │ └─────────────────┘ └─────────────────┘ └─────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ External Connections │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────────────┐ │
│ │ Serial │ │ Debug Probe │ │ Network/WiFi │ │
│ │ Console │ │ │ │ │ │
│ │ │ │ • JTAG adapter │ │ • Remote logging │ │
│ │ • Terminal app │ │ • OpenOCD │ │ • Log aggregation │ │
│ │ • Log viewer │ │ • GDB debug │ │ • Cloud logging │ │
│ │ • Real-time │ │ • Trace viewer │ │ • Monitoring systems │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
```
## Activity Diagrams
### Logging Process Activity
```
┌─────────────────────────────────────────────────────────┐
│ Logging Activity │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ [Start] │
│ Application Log Call │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Macro Expansion │
│ │
│ ASF_LOGI(TAG, ID, format, args) │
│ ↓ │
│ asf::logger::logInfo(TAG, ID, format, args) │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Level Check │
│ │
│ Is INFO >= minLevel? │
└─────────────────────────────────────────────────────────┘
┌─────────┴─────────┐
│ │
No Yes
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────────────────────────┐
│ [End] │ │ Format Message │
│ Early Return │ │ │
│ (No Output) │ │ • Get timestamp │
└─────────────────────┘ │ • Add color codes │
│ • Add message ID │
│ • Format with args │
└─────────────────────────────────┘
┌─────────────────────────────────┐
│ Call ESP-IDF │
│ │
│ ESP_LOGI("ASF", formatted_msg) │
└─────────────────────────────────┘
┌─────────────────────────────────┐
│ Output Routing │
│ │
│ • Check ESP-IDF log level │
│ • Route to console/UART │
│ • Apply ESP-IDF formatting │
└─────────────────────────────────┘
┌─────────────────────────────────┐
│ [End] │
│ Message Output │
└─────────────────────────────────┘
```
### Configuration Change Activity
```
┌─────────────────────────────────────────────────────────┐
│ Configuration Change Activity │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ [Start] │
│ Configuration Change Request │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ Validate Parameters │
│ │
│ • Check log level range │
│ • Validate boolean flags │
│ • Check buffer size limits │
└─────────────────────────────────────────────────────────┘
┌─────────┴─────────┐
│ │
Valid Invalid
│ │
▼ ▼
┌─────────────────────────────────┐ ┌─────────────────────┐
│ Update Configuration │ │ [End] │
│ │ │ Return Error │
│ • Modify static config │ │ │
│ • Store new values │ └─────────────────────┘
└─────────────────────────────────┘
┌─────────────────────────────────┐
│ Update ESP-IDF Settings │
│ │
│ esp_log_level_set("*", level) │
└─────────────────────────────────┘
┌─────────────────────────────────┐
│ Apply Changes │
│ │
│ • New settings active │
│ • Subsequent logs affected │
└─────────────────────────────────┘
┌─────────────────────────────────┐
│ [End] │
│ Configuration Updated │
└─────────────────────────────────┘
```
This comprehensive visual documentation provides detailed UML diagrams and architectural views of the ASF Logger system, showing how all components interact and the flow of data through the system. These diagrams can be used for understanding the system architecture, debugging issues, and planning future enhancements.