import socket
import time

# Questo è uno dei frame AMBE reali estratti dal tuo log
ambe_frame = bytes.fromhex("88 1D 2E 13 85 CD 00")
server = ('127.0.0.1', 2470)

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(2.0)

test_cases = {
    "1_Busta_Little_Endian": b'\x00\x07\x00' + ambe_frame,
    "2_Busta_Big_Endian": b'\x00\x00\x07' + ambe_frame,
    "3_Dati_Raw_Senza_Busta": ambe_frame,
    "4_Busta_Tipo_1": b'\x01\x07\x00' + ambe_frame,
    "5_Busta_Tipo_1_Big": b'\x01\x00\x07' + ambe_frame,
}

print("Inizio test diagnostico UDP verso AMBEServer3003 sulla porta 2470...\n")

for name, pkt in test_cases.items():
    print(f"---> Eseguo test: [{name}]")
    
    # Inviamo 3 frame identici in rapida successione. 
    # (Alcuni chip AMBE hardware bufferizzano 2-3 frame prima di sputare fuori il primo pacchetto PCM)
    for _ in range(3):
        sock.sendto(pkt, server)
        time.sleep(0.02)
    
    try:
        # Attendiamo la risposta
        resp, addr = sock.recvfrom(2048)
        print(f"     BINGO! Risposta ricevuta ({len(resp)} bytes): {resp[:12].hex(' ')}...\n")
    except socket.timeout:
        print("     FALLITO: Nessuna risposta dal server.\n")

sock.close()
