-
Notifications
You must be signed in to change notification settings - Fork 0
Sincronizacion LAN
David Mendez edited this page Jul 18, 2026
·
1 revision
Archivo:
ui/sync_dialog.py· Clase:SyncDialog· 276 líneas
La sincronización LAN permite transferir sesiones de telemetría entre dos dispositivos conectados a la misma red local, de forma bidireccional y automática.
┌──────────────────────────────────────────────────┐
│ Dispositivos en tu Red Local │
│ │
│ 🔍 Buscando... │
│ │
│ ┌────────────────────────────────────────────┐ │
│ │ 🖥️ MacBook-Pro (192.168.1.105) │ │
│ │ — 47 sesiones │ │
│ ├────────────────────────────────────────────┤ │
│ │ 🖥️ Gaming-PC (192.168.1.110) │ │
│ │ — 23 sesiones │ │
│ └────────────────────────────────────────────┘ │
│ │
│ ┌─ Resumen de Sincronización ───────────────┐ │
│ │ → Sesiones a enviar: 12 │ │
│ │ ← Sesiones a recibir: 8 │ │
│ └───────────────────────────────────────────┘ │
│ │
│ ████████████████████████░░░░░ 67% │
│ │
│ ✅ Sincronización completada │
│ │
│ [🔄 Sincronizar] [Cerrar] │
└──────────────────────────────────────────────────┘
| Propiedad | Valor |
|---|---|
| Tamaño mínimo | 520 × 480 px |
| Tipo |
QDialog modal |
| Elemento | Widget | Descripción |
|---|---|---|
| Título |
QLabel bold 16pt |
"Dispositivos en tu Red Local" |
| Estado búsqueda | QLabel |
"🔍 Buscando..." → "✅ X dispositivo(s) encontrado(s)" |
| Lista de peers | QListWidget |
Items con formato: 🖥️ hostname (ip) — N sesiones
|
| Resumen sync | QGroupBox |
Oculto hasta comparar. Muestra envío (azul) y recepción (verde) |
| Barra progreso | QProgressBar |
Oculta hasta iniciar sync. Estilo acento azul. |
| Estado |
QLabel centrado |
Mensajes de conexión, transferencia, completado o error |
| Sincronizar |
QPushButton verde |
Deshabilitado hasta seleccionar un peer |
| Cerrar |
QPushButton gris |
Cierra el diálogo |
| Puerto | Protocolo | Dirección | Función |
|---|---|---|---|
| 33741 | UDP | Broadcast bidireccional | Descubrimiento de peers |
| 33742 | TCP | Bidireccional punto a punto | Transferencia de datos |
⚠️ Estos puertos están reservados para GT7 Telemetry Pro. No deben reutilizarse.
- Envía beacons UDP broadcast en el puerto 33741
- Escucha beacons de otros dispositivos
- Filtra IPs locales para evitar auto-descubrimiento
- Emite
peer_found(hostname, ip, session_count, port)ypeer_lost(ip)
- Servidor TCP escuchando en el puerto 33742
- Acepta conexiones entrantes de otros peers
- Atiende solicitudes de comparación y transferencia
- Se crea al hacer click en "Sincronizar"
- Conecta al peer seleccionado vía TCP 33742
- Ejecuta el protocolo de sincronización bidireccional
Client Server
│ │
│── LIST_SESSIONS ──────────► │
│ │
│ ◄────── SESSION_LIST ─── │ (lista de (start_time, car_id))
│ │
│── COMPARISON_RESULT ──────► │ (sesiones faltantes en cada lado)
│ │
│ ◄── SEND_SESSION_DATA ── │ ← Recibir sesiones del peer
│ (por cada sesión) │
│ │
│── SEND_SESSION_DATA ──────► │ → Enviar sesiones al peer
│ (por cada sesión) │
┌──────────────┬──────────────────────────┐
│ 4 bytes │ N bytes │
│ (big-endian) │ (zlib compressed) │
│ longitud │ JSON payload │
└──────────────┴──────────────────────────┘
- Los BLOBs de telemetría (
raw_packet) se serializan como hex strings dentro del JSON - El paquete completo se comprime con
zlibnivel 6 - Detección de duplicados por clave natural:
(start_time, car_id)
| Regla | Descripción |
|---|---|
| Bidireccional | Primero recibe del peer, luego envía |
| Sin duplicados | Usa (start_time, car_id) como clave natural |
| Protección de bloqueo | Sesiones con is_locked = 1 se sincronizan pero NUNCA se sobrescriben |
| Re-mapeo de IDs | Los session_id autoincrementales se re-mapean al importar |
| Señal | Datos | UI Update |
|---|---|---|
comparison_ready |
(to_send, to_receive) |
Muestra resumen de sync |
transfer_progress |
percent (int) |
Actualiza barra de progreso |
sync_complete |
(sent_count, received_count) |
Mensaje de éxito |
error_occurred |
error_message (str) |
Diálogo de error |
Al cerrar el diálogo (closeEvent):
- Detiene
SyncClient(si existe) + espera 2s - Detiene
PeerDiscovery+ espera 2s - Detiene
SyncServer+ espera 2s