feat(v2.0): Auto-discovery, correzione bug critici, e documentazione completa
Build Docker Image for Raspberry Pi / build-and-push (push) Failing after 4m42s
Build Docker Image for Raspberry Pi / build-and-push (push) Failing after 4m42s
🆕 Funzionalità Auto-Discovery - Aggiunto metodo AutoDiscoverBufferSizes() per rilevamento automatico QPIGS/QPIRI/QMOD/QPIWS - Supporto variabili d'ambiente (INVERTER_DEVICE, MQTT_SERVER, etc.) - Caching persistente buffer sizes in /cache/inverter.conf.cache - Flag -a/--auto-discover per modalità auto-detection 🐛 Bug Fixes Critici - **Parsing interi**: Aggiunta attemptAddSettingInt() con stoi() invece di stof() - Fix: stof('98') = 98.0f → 97 (int), ora stoi('98') = 98 direttamente - Applicato a: qpiri, qpiws, qmod, qpigs - **Thread sync**: Aggiunto ups_qpiws_changed a main loop e condizione exit poll() - Fix: loop principale controllava solo 3 flag su 4, causava hang - Fix: thread poll() non usciva in runOnce perché mancava controllo QPIWS - **Config accuracy**: Corretti buffer sizes (qpiri: 98→103, qpiws: 36→40) - Rimosso sources/inverter-cli/inverter.conf che sovrascriveva config globale - Validato con test: inverter_poller -1 completa in 6s con JSON completo 📚 Documentazione Completa - Creato documentation/CODE_ARCHITECTURE.md (38KB) - Mappa logica variabili globali - Flusso esecuzione main() con diagrammi ASCII - Sequence diagram classe cInverter (poll, query, auto-discovery) - Thread synchronization diagrams - MQTT integration bash scripts flow - Mappa concettuale 5-layer system architecture - Error handling e performance optimizations - Organizzati file .md in documentation/ (AUTO_DISCOVERY, IMPLEMENTATION, QUICKSTART, DEBUG) - Aggiornato README.md con sezione v2.0 e indice documentazione - Aggiornato .github/copilot-instructions.md con novità v2.0 🔧 Miglioramenti Build & CI/CD - Gitea Actions per build multi-arch (arm/v6, arm/v7, arm64, amd64, 386) - Configurazione VS Code completa (tasks, launch, debug GDB) - Script test-autodiscovery.sh e test-device.sh ✅ Testing Validato - inverter_poller -1 completa in 6 secondi - Output JSON completo con tutte le metriche - Exit pulito senza timeout (exit code 0) - Tutte le 4 query QMOD/QPIGS/QPIRI/QPIWS funzionanti
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
# VS Code Configuration
|
||||
|
||||
Questa directory contiene le configurazioni per sviluppo e debug del progetto in VS Code.
|
||||
|
||||
## File di Configurazione
|
||||
|
||||
### launch.json
|
||||
Configurazioni di debug per inverter-cli con GDB:
|
||||
- Debug con build Release
|
||||
- Debug con build completa (simboli debug)
|
||||
- Debug in modalità loop
|
||||
- Debug comandi raw
|
||||
- Attach a processo esistente
|
||||
|
||||
### tasks.json
|
||||
Task automatizzati per:
|
||||
- Build (Release/Debug)
|
||||
- Clean e Rebuild
|
||||
- Esecuzione diretta
|
||||
- Gestione container Docker
|
||||
|
||||
### c_cpp_properties.json
|
||||
Configurazione IntelliSense per C/C++:
|
||||
- Include paths
|
||||
- Standard C++11
|
||||
- Compiler settings
|
||||
|
||||
### settings.json
|
||||
Impostazioni workspace:
|
||||
- Configurazione CMake
|
||||
- File associations
|
||||
- Esclusioni ricerca e explorer
|
||||
|
||||
### extensions.json
|
||||
Estensioni raccomandate per il progetto:
|
||||
- C/C++ tools
|
||||
- CMake tools
|
||||
- Docker
|
||||
- ShellCheck
|
||||
- YAML support
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Prima Build
|
||||
|
||||
1. Apri il progetto in VS Code:
|
||||
```bash
|
||||
code /home/pi/Progetti
|
||||
```
|
||||
|
||||
2. Installa estensioni raccomandate (popup VS Code)
|
||||
|
||||
3. Build del progetto:
|
||||
- Premi `Ctrl+Shift+B` per build default
|
||||
- Oppure `Tasks: Run Task` → `build-inverter-cli-debug`
|
||||
|
||||
### Debug Rapido
|
||||
|
||||
1. Apri `sources/inverter-cli/main.cpp`
|
||||
2. Imposta breakpoint (F9 su riga)
|
||||
3. Premi `F5` e seleziona configurazione debug
|
||||
4. Usa `F10` (step over) e `F11` (step into)
|
||||
|
||||
### Testare Modifiche
|
||||
|
||||
1. Modifica codice in `sources/inverter-cli/`
|
||||
2. Build: `Ctrl+Shift+B`
|
||||
3. Run: Tasks → `run-inverter-cli-once`
|
||||
4. Verifica output JSON
|
||||
|
||||
## Documentazione Dettagliata
|
||||
|
||||
Vedi [DEBUG.md](DEBUG.md) per guida completa al debug e troubleshooting.
|
||||
|
||||
## Configurazioni Disponibili
|
||||
|
||||
### Debug Configurations (F5)
|
||||
- **(gdb) Debug inverter_poller** - Debug rapido con Release build
|
||||
- **(gdb) Debug inverter_poller - Run Once with Debug** - Debug completo, esecuzione singola
|
||||
- **(gdb) Debug inverter_poller - Loop Mode** - Debug in modalità continua
|
||||
- **(gdb) Debug inverter_poller - Raw Command** - Debug comandi specifici
|
||||
- **(gdb) Attach to running inverter_poller** - Attach a processo esistente
|
||||
|
||||
### Build Tasks (Ctrl+Shift+B)
|
||||
- **build-inverter-cli** (default) - Build Release ottimizzato
|
||||
- **build-inverter-cli-debug** - Build con simboli debug
|
||||
- **clean-inverter-cli** - Pulizia file di build
|
||||
- **rebuild-inverter-cli** - Clean + Build
|
||||
|
||||
### Run Tasks
|
||||
- **run-inverter-cli-once** - Esegui una volta
|
||||
- **run-inverter-cli-loop** - Esegui in loop
|
||||
- **docker-build** - Build immagine Docker
|
||||
- **docker-run** - Avvia container
|
||||
- **docker-logs** - Visualizza log container
|
||||
- **docker-stop** - Ferma container
|
||||
|
||||
## Shortcuts Utili
|
||||
|
||||
| Shortcut | Azione |
|
||||
|----------|--------|
|
||||
| `F5` | Start Debugging |
|
||||
| `Ctrl+F5` | Run Without Debugging |
|
||||
| `F9` | Toggle Breakpoint |
|
||||
| `F10` | Step Over |
|
||||
| `F11` | Step Into |
|
||||
| `Shift+F11` | Step Out |
|
||||
| `Ctrl+Shift+B` | Run Build Task |
|
||||
| `Ctrl+Shift+P` | Command Palette |
|
||||
| `Ctrl+` ` | Toggle Terminal |
|
||||
|
||||
## Estensioni Consigliate
|
||||
|
||||
### Essenziali
|
||||
- **C/C++** - IntelliSense, debugging, browsing
|
||||
- **CMake Tools** - Integrazione CMake
|
||||
|
||||
### Utili
|
||||
- **Docker** - Gestione container
|
||||
- **ShellCheck** - Linting script bash
|
||||
- **YAML** - Syntax per configurazioni
|
||||
|
||||
### Opzionali
|
||||
- **GitHub Copilot** - AI code assistant
|
||||
- **GitLens** - Git supercharged
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### IntelliSense non funziona
|
||||
1. Ricarica window: `Ctrl+Shift+P` → "Reload Window"
|
||||
2. Verifica estensione C/C++ installata
|
||||
3. Build il progetto almeno una volta
|
||||
|
||||
### GDB non trovato
|
||||
```bash
|
||||
sudo apt-get install gdb
|
||||
```
|
||||
|
||||
### Permission denied su device
|
||||
```bash
|
||||
sudo usermod -a -G dialout $USER
|
||||
# Logout e login necessari
|
||||
```
|
||||
|
||||
### Task build fallisce
|
||||
```bash
|
||||
cd sources/inverter-cli
|
||||
rm -rf CMakeFiles CMakeCache.txt
|
||||
cmake . && make
|
||||
```
|
||||
|
||||
## Tips
|
||||
|
||||
1. **Multiple Debug Windows**: Puoi avere più configurazioni debug attive contemporaneamente
|
||||
2. **Watch Variables**: Usa il pannello Watch per monitorare variabili durante debug
|
||||
3. **Debug Console**: Esegui comandi GDB direttamente nel Debug Console
|
||||
4. **Logpoints**: Usa logpoints invece di printf per non modificare codice
|
||||
|
||||
## Risorse
|
||||
|
||||
- [VS Code C++ Docs](https://code.visualstudio.com/docs/cpp/cpp-debug)
|
||||
- [CMake Tools Extension](https://github.com/microsoft/vscode-cmake-tools)
|
||||
- [GDB Documentation](https://sourceware.org/gdb/documentation/)
|
||||
- [DEBUG.md](DEBUG.md) - Guida debug completa del progetto
|
||||
Reference in New Issue
Block a user