Files
Pi Developer 6af9fcad7e
Build Docker Image for Raspberry Pi / build-and-push (push) Failing after 4m42s
feat(v2.0): Auto-discovery, correzione bug critici, e documentazione completa
🆕 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
2026-01-25 15:00:48 +01:00

165 lines
4.2 KiB
Markdown

# 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