# Software Components Overview
**Document ID:** COMP-OVERVIEW-001
**Version:** 1.0
**Date:** 2025-02-01
**Project:** ASF Sensor Hub (Sub-Hub) Embedded System
## 1. Introduction
This document provides a comprehensive overview of all software components in the ASF Sensor Hub embedded system. Each component is designed following the layered architecture principles with clear separation of concerns, well-defined interfaces, and specific responsibilities.
## 2. Component Architecture Overview
```mermaid
graph TB
subgraph "Application Layer"
subgraph "Business Stack"
STM[System State Manager
C-STM-001]
SensorMgr[Sensor Manager
C-SENSOR-001]
CommMgr[Communication Manager
C-COM-001]
OTAMgr[OTA Manager
C-OTA-001]
MCMgr[Machine Constants Manager
C-MC-001]
SecurityMgr[Security Manager
C-SEC-001]
DiagMgr[Diagnostics Manager
C-DIAG-001]
EventSys[Event System
C-EVENT-001]
end
subgraph "DP Stack"
DataPool[Data Pool
C-DATA-POOL]
Persistence[Data Persistence
C-DP-001]
end
end
subgraph "Driver Layer"
SensorDrivers[Sensor Drivers]
NetworkStack[Network Stack]
StorageDrivers[Storage Drivers]
end
subgraph "OSAL Layer"
ESPIDFWrappers[ESP-IDF Wrappers]
end
subgraph "HAL Layer"
ESPIDFFramework[ESP-IDF Framework]
end
```
## 3. Existing Components
### 3.1 Application Layer Components
#### 3.1.1 Business Stack Components
| Component ID | Component Name | Primary Purpose | Key Responsibilities |
|--------------|----------------|-----------------|---------------------|
| C-STM-001 | System State Manager | System lifecycle coordination | FSM implementation, state transitions, teardown coordination |
| C-SENSOR-001 | Sensor Manager | Sensor data acquisition | Multi-sensor management, high-frequency sampling, data filtering |
| C-COM-001 | Communication Manager | External communication | MQTT/TLS, ESP-NOW, message routing, connection management |
| C-OTA-001 | OTA Manager | Firmware updates | A/B partitioning, secure updates, automatic rollback |
| C-MC-001 | Machine Constants Manager | Configuration management | Static configuration, remote updates, validation |
| C-SEC-001 | Security Manager | System security | Secure boot, flash encryption, TLS, key management |
| C-DIAG-001 | Diagnostics Manager | System health monitoring | Diagnostic codes, health monitoring, watchdog management |
| C-EVENT-001 | Event System | Inter-component communication | Publish/subscribe, event queuing, asynchronous delivery |
#### 3.1.2 DP Stack Components
| Component ID | Component Name | Primary Purpose | Key Responsibilities |
|--------------|----------------|-----------------|---------------------|
| C-DATA-POOL | Data Pool | Centralized data storage | Thread-safe data access, real-time data exchange |
| C-DP-001 | Data Persistence | Persistent storage | Storage abstraction, serialization, wear management |
### 3.2 Component Descriptions
#### 3.2.1 System State Manager (C-STM-001)
**Location:** `application_layer/business_stack/STM/`
The System State Manager implements the central finite state machine for the Sensor Hub, managing system lifecycle states (INIT, RUNNING, WARNING, FAULT, OTA_PREP, etc.) and coordinating controlled teardown sequences.
**Key Features:**
- System FSM with 11 defined states
- State transition validation and enforcement
- Teardown coordination for OTA and MC updates
- State change notifications via Event System
- State-aware execution enforcement
#### 3.2.2 Sensor Manager (C-SENSOR-001)
**Location:** `application_layer/business_stack/sensor_manager/`
The Sensor Manager coordinates all sensor-related operations including lifecycle management, data acquisition scheduling, high-frequency sampling, and local filtering.
**Key Features:**
- Support for 7 environmental sensor types
- High-frequency sampling (10 samples per cycle)
- Configurable filtering algorithms (median, moving average, rate-limited)
- Sensor state management and fault detection
- 1-second acquisition cycles with timestamped data
#### 3.2.3 Communication Manager (C-COM-001)
**Location:** `application_layer/business_stack/communication_manager/`
The Communication Manager handles all external communication including MQTT-based Main Hub communication and ESP-NOW peer communication.
**Key Features:**
- MQTT over TLS communication with Main Hub
- ESP-NOW peer-to-peer communication
- Message formatting and encoding (CBOR)
- Connection management with automatic reconnection
- Heartbeat and keepalive mechanisms
#### 3.2.4 OTA Manager (C-OTA-001)
**Location:** `application_layer/business_stack/ota_manager/`
The OTA Manager provides secure, reliable firmware update functionality with A/B partitioning and automatic rollback capabilities.
**Key Features:**
- A/B partition management
- Secure firmware validation (SHA-256, RSA-3072/ECDSA-P256)
- Automatic rollback on boot failures
- Controlled teardown coordination
- Update progress tracking and reporting
#### 3.2.5 Machine Constants Manager (C-MC-001)
**Location:** `application_layer/business_stack/machine_constants_manager/`
The Machine Constants Manager handles static and semi-static configuration parameters including sensor configuration, calibration data, and system identity.
**Key Features:**
- JSON-based configuration management
- Remote configuration updates from Main Hub
- Configuration validation and integrity checking
- Version control and rollback capability
- Controlled reinitialization for updates
#### 3.2.6 Security Manager (C-SEC-001)
**Location:** `application_layer/business_stack/security_manager/`
The Security Manager implements comprehensive security mechanisms including secure boot, flash encryption, and communication security.
**Key Features:**
- Secure Boot V2 with RSA-3072/ECDSA-P256
- Flash encryption with AES-256
- TLS/mTLS communication security
- Cryptographic key management
- Security violation detection and response
#### 3.2.7 Diagnostics Manager (C-DIAG-001)
**Location:** `application_layer/business_stack/diagnostics_manager/`
The Diagnostics Manager provides comprehensive system health monitoring, fault detection, and diagnostic data collection.
**Key Features:**
- Structured diagnostic code framework
- System health monitoring and performance metrics
- Layered watchdog system management
- Engineering diagnostic sessions
- Persistent diagnostic data storage
#### 3.2.8 Event System (C-EVENT-001)
**Location:** `application_layer/business_stack/event_system/`
The Event System provides a publish/subscribe event bus for cross-component communication, enabling loose coupling and asynchronous event delivery.
**Key Features:**
- Non-blocking event publishing and delivery
- Priority-based subscriber management
- Event filtering and queuing
- ISR-safe event publishing
- Overflow handling with oldest-event dropping
#### 3.2.9 Data Pool (C-DATA-POOL)
**Location:** `application_layer/DP_stack/data_pool/`
The Data Pool provides centralized, thread-safe data storage and access for sensor readings, system parameters, and operational data.
**Key Features:**
- Thread-safe data access and modification
- Real-time data exchange between components
- Data validation and type checking
- Event-driven data change notifications
- Memory-efficient data organization
#### 3.2.10 Data Persistence (C-DP-001)
**Location:** `application_layer/DP_stack/persistence/`
The Data Persistence component provides the sole interface for persistent data access, abstracting storage media and managing data serialization.
**Key Features:**
- Storage media abstraction (SD card, NVM)
- Data serialization/deserialization
- Wear-aware storage management
- Data integrity verification
- Critical data flushing before state transitions
## 4. Newly Added Components (Gap Resolution)
The following components have been added to close identified gaps:
### 4.1 OSAL Layer Components
| Component ID | Component Name | Purpose | Status |
|--------------|----------------|---------|--------|
| C-OSAL-I2C | I2C Wrapper | I2C bus abstraction | ✅ Specified |
| C-OSAL-SPI | SPI Wrapper | SPI bus abstraction | ✅ Specified |
| C-OSAL-UART | UART Wrapper | UART communication abstraction | ✅ Specified |
| C-OSAL-ADC | ADC Wrapper | Analog-to-digital conversion abstraction | ✅ Specified |
| C-OSAL-GPIO | GPIO Wrapper | GPIO operations with discipline enforcement | ✅ Specified |
| C-OSAL-TASK | Task Wrapper | FreeRTOS task abstraction | ✅ Specified |
| C-OSAL-TIMER | Timer Wrapper | Hardware timer abstraction | ✅ Specified |
| C-OSAL-MUTEX | Mutex Wrapper | Mutual exclusion abstraction | ✅ Specified |
| C-OSAL-QUEUE | Queue Wrapper | Inter-task communication abstraction | ✅ Specified |
| C-OSAL-SEM | Semaphore Wrapper | Synchronization abstraction | ✅ Specified |
### 4.2 Sensor Driver Components
| Component ID | Component Name | Sensor Type | Interface | Status |
|--------------|----------------|-------------|-----------|--------|
| C-SENSOR-DRV-TEMP | Temperature Driver | SHT40 | I2C | ✅ Specified |
| C-SENSOR-DRV-HUM | Humidity Driver | SHT40 | I2C | ✅ Specified |
| C-SENSOR-DRV-CO2 | CO2 Driver | SCD40 | I2C | ✅ Specified |
| C-SENSOR-DRV-NH3 | NH3 Driver | Analog | ADC | ✅ Specified |
| C-SENSOR-DRV-VOC | VOC Driver | SGP40 | I2C | ✅ Specified |
| C-SENSOR-DRV-PM | PM Driver | SPS30 | UART | ✅ Specified |
| C-SENSOR-DRV-LIGHT | Light Driver | TSL2591 | I2C | ✅ Specified |
### 4.3 Network Stack Components
| Component ID | Component Name | Purpose | Status |
|--------------|----------------|---------|--------|
| C-NET-WIFI | Wi-Fi Manager | Wi-Fi connection management | ✅ Specified |
| C-NET-MQTT | MQTT Client | MQTT protocol implementation | ✅ Specified |
| C-NET-TLS | TLS Manager | TLS 1.2 encryption | ✅ Specified |
| C-NET-ESPNOW | ESP-NOW Handler | ESP-NOW peer communication | ✅ Specified |
### 4.4 Storage Driver Components
| Component ID | Component Name | Purpose | Status |
|--------------|----------------|---------|--------|
| C-STORAGE-SD | SD Card Driver | SD card file system access | ✅ Specified |
| C-STORAGE-NVM | NVM Driver | Non-volatile storage access | ✅ Specified |
### 4.5 Service Components
| Component ID | Component Name | Purpose | Status |
|--------------|----------------|---------|--------|
| C-TIME-SYNC-001 | Time Synchronization Service | Time sync with Main Hub/NTP | ✅ Specified |
| C-WATCHDOG-001 | Watchdog Manager | Layered watchdog system | ✅ Specified |
### 4.6 Utility Components
| Component ID | Component Name | Purpose | Status |
|--------------|----------------|---------|--------|
| C-CRYPTO-001 | Crypto Utils | Cryptographic functions | ✅ Specified |
| C-MSG-FMT-001 | Message Formatter | CBOR encoding/decoding | ✅ Specified |
| C-FILTER-001 | Filter Engine | Sensor data filtering | ✅ Specified |
| C-HMI-001 | HMI Controller | OLED display and buttons | ✅ Specified |
## 5. Missing Components Analysis (Resolved)
All previously identified missing components have been specified:
### 5.1 Previously Missing Components (Now Specified)
All components listed in section 4 have been fully specified with complete component documentation.
## 5. Component Dependencies
### 5.1 Dependency Matrix
| Component | Depends On | Provides To |
|-----------|------------|-------------|
| System State Manager | Event System, Error Handler, Persistence | All Components |
| Sensor Manager | Sensor Drivers, Event System, Time Utils, MC Manager | Data Pool, Communication Manager |
| Communication Manager | Network Stack, TLS Manager, Event System | Main Hub APIs, OTA Manager |
| OTA Manager | Communication Manager, System State Manager, Security Manager | System State Manager |
| Machine Constants Manager | Persistence, Communication Manager, System State Manager | All Components |
| Security Manager | Crypto Utils, Hardware Security, Diagnostics Manager | All Components |
| Diagnostics Manager | Persistence, Event System, Security Manager | All Components |
| Event System | Time Utils, Logger | All Components |
| Data Pool | Persistence, Event System | Sensor Manager, Communication Manager |
| Data Persistence | Storage Drivers, Error Handler | Data Pool, Machine Constants Manager |
### 5.2 Interface Dependencies
All components follow the dependency inversion principle, depending on interfaces rather than concrete implementations. This enables:
- Testability through mock implementations
- Flexibility in implementation changes
- Clear contract definitions
- Reduced coupling between components
## 6. Component Implementation Status
### 6.1 Completed Components (Specification Phase)
- ✅ System State Manager (C-STM-001)
- ✅ Sensor Manager (C-SENSOR-001)
- ✅ Communication Manager (C-COM-001)
- ✅ OTA Manager (C-OTA-001)
- ✅ Machine Constants Manager (C-MC-001)
- ✅ Security Manager (C-SEC-001)
- ✅ Diagnostics Manager (C-DIAG-001)
- ✅ Event System (C-EVENT-001)
- ✅ Data Pool (C-DATA-POOL)
- ✅ Data Persistence (C-DP-001)
### 6.2 Component Status Summary
**Total Components:** 40+
**Fully Specified:** 40+ (100%)
**Implementation Status:** Not Started (all components)
**Component Categories:**
- Application Layer: 14 components ✅
- OSAL Layer: 10 components ✅
- Sensor Drivers: 7 components ✅
- Network Stack: 4 components ✅
- Storage Drivers: 2 components ✅
- Services: 2 components ✅
- Utilities: 5 components ✅
## 7. Next Steps
1. **Create Missing Component Specifications**: Develop detailed component specifications for all missing components following the same format as existing components.
2. **Validate Component Interfaces**: Review and validate all component interfaces to ensure proper abstraction and minimal coupling.
3. **Implementation Planning**: Create implementation roadmap prioritizing critical path components.
4. **Integration Testing Strategy**: Develop comprehensive integration testing strategy for component interactions.
5. **Performance Validation**: Validate that the component architecture meets all performance and resource constraints.
---
**Document Status:** Complete - Component Analysis
**Next Review:** After missing component specifications are created
**Dependencies:** Component specifications, architecture requirements