5.6 KiB
Hardware Abstraction Features
Feature Group ID: FG-HW
Version: 1.0
Date: 2025-01-19
Scope: Sensor Hub (Sub-Hub only)
Target Platform: ESP32-S3–based Sensor Hub, ESP-IDF v5.4
1 Feature Overview
The Hardware Abstraction Features provide a clean separation between application logic and hardware interfaces. These features ensure hardware independence, maintainability, and testability of the system.
Architecture Principle: Application layer SHALL NOT access hardware directly (CFC-ARCH-01).
2 Scope and Assumptions
In Scope
- Sensor Abstraction Layer (SAL)
- Hardware interface abstraction (I2C, SPI, UART, ADC, GPIO)
- Storage interface abstraction (SD Card, NVM)
- Display interface abstraction (OLED I2C)
Out of Scope
- Hardware driver implementation details (ESP-IDF drivers)
- Hardware-specific optimizations (deferred to implementation)
3 Sub-Feature Breakdown
3.1 F-HW-01: Sensor Abstraction Layer (SAL)
Description
The system provides a Sensor Abstraction Layer (SAL) to ensure hardware independence and maintainability.
Interface Functions:
sensor_read(): Retrieve the latest valuesensor_calibrate(): Perform sensor-specific calibrationsensor_validate(): Check if the reading is within physical boundssensor_health_check(): Verify the operational status of the hardwaresensor_getMetadata(): Get sensor capabilities (range, accuracy, etc.)sensor_reset(): Recovery from fault states
Sensor State Management:
- INIT: Sensor initialization
- WARMUP: Sensor warming up (not yet stable)
- STABLE: Sensor operational and stable
- DEGRADED: Sensor operational but degraded
- FAILED: Sensor failed, not operational
Responsibilities
- Abstract sensor hardware interfaces
- Provide uniform sensor API
- Manage sensor state
- Handle sensor-specific calibration
- Validate sensor readings
Constraints
- All sensor access must go through SAL
- Application layer must not access sensor hardware directly
- Sensor state must be tracked and reported
3.2 F-HW-02: Hardware Interface Abstraction
Description
The system abstracts all hardware interfaces through driver layers.
Abstraction Layers:
- I2C Interface: Abstracted via ESP-IDF I2C driver wrapper
- SPI Interface: Abstracted via ESP-IDF SPI driver wrapper
- UART Interface: Abstracted via ESP-IDF UART driver wrapper
- ADC Interface: Abstracted via ESP-IDF ADC driver wrapper
- GPIO Interface: Abstracted via ESP-IDF GPIO driver wrapper
- Storage Interfaces: SD Card (SDMMC), NVM (NVS)
- Display Interface: OLED I2C
GPIO Discipline:
- No Strapping Pins: Avoid using strapping pins (GPIO 0, 3, 45, 46) for general-purpose I/O
- I2C Pull-up Audit: Ensure all shared I2C buses have appropriate physical pull-up resistors (2.2kΩ - 4.7kΩ for 3.3V)
- No ADC2 with Wi-Fi: ADC2 unit cannot be used when Wi-Fi is active. All analog sensors must be connected to ADC1 pins
- Canonical GPIO Map: Single authoritative GPIO map document must be maintained
Responsibilities
- Abstract hardware interfaces
- Provide uniform API for hardware access
- Enforce GPIO discipline
- Manage hardware resource conflicts
Constraints
- Application layer must not access hardware directly
- GPIO usage must follow canonical GPIO map
- Hardware conflicts must be detected and reported
4 System Requirements (Formal SHALL Statements)
Sensor Abstraction Layer Requirements
- SR-HW-001: The system shall provide a Sensor Abstraction Layer (SAL) for all sensor access.
- SR-HW-002: The system shall prevent application layer from directly accessing sensor hardware.
- SR-HW-003: The system shall track sensor state (INIT, WARMUP, STABLE, DEGRADED, FAILED).
- SR-HW-004: The system shall provide sensor validation and health check functions.
Hardware Interface Abstraction Requirements
- SR-HW-005: The system shall abstract all hardware interfaces (I2C, SPI, UART, ADC, GPIO) through driver layers.
- SR-HW-006: The system shall enforce GPIO discipline (no strapping pins, proper pull-ups, ADC1/ADC2 separation).
- SR-HW-007: The system shall maintain a canonical GPIO map document.
- SR-HW-008: The system shall detect and report hardware resource conflicts.
5 Traceability Matrix (Feature → System Requirements)
| Feature ID | Related System Requirements |
|---|---|
| F-HW-01 | SR-HW-001, SR-HW-002, SR-HW-003, SR-HW-004 |
| F-HW-02 | SR-HW-005, SR-HW-006, SR-HW-007, SR-HW-008 |
6 Design & Implementation Notes (Non-Normative)
- SAL Implementation: Each sensor type implements SAL interface
- Driver Wrappers: ESP-IDF drivers wrapped in application-specific abstraction layer
- GPIO Map: Must be maintained as single source of truth
- Hardware Conflicts: Runtime detection and reporting via diagnostics
7 Dependencies
- ESP-IDF Drivers: I2C, SPI, UART, ADC, GPIO, SDMMC, NVS
- System Management Features: Hardware initialization and teardown
- Diagnostics Features: Hardware fault reporting
8 GPIO Map Guidelines
Strapping Pins (DO NOT USE):
- GPIO 0: Boot mode selection
- GPIO 3: JTAG
- GPIO 45: Strapping pin
- GPIO 46: Strapping pin
ADC Constraints:
- ADC1: Available when Wi-Fi is active
- ADC2: NOT available when Wi-Fi is active (use ADC1 for all analog sensors)
I2C Pull-up Requirements:
- Physical Pull-ups: 2.2kΩ - 4.7kΩ for 3.3V
- Software Pull-ups: Not recommended for production (use physical pull-ups)