6af9fcad7e
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
165 lines
4.2 KiB
Markdown
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
|