# id_porta_com.py
# Descrição: Este script identifica em qual porta COM está conectado o hardware
#            "Silicon Labs CP210x USB to UART Bridge".

import serial.tools.list_ports

from .app_console import fc_log
def encontrar_porta_do_reader():
    """
    Verifica todas as portas seriais conectadas e procura pelo hardware específico.
    """
    fc_log("id_porta_com", "🔍  Procurando por hardware 'Silicon Labs CP210x' nas portas COM...")

    # Obtém uma lista de todos os dispositivos de porta serial disponíveis
    portas_disponiveis = serial.tools.list_ports.comports()

    porta_encontrada = None

    for porta in portas_disponiveis:
        # A descrição da porta geralmente contém o nome do driver, como visto no Gerenciador de Dispositivos.
        # Procuramos por 'CP210x', que é a parte principal do nome do seu dispositivo.
        if porta.description and 'CP210x' in porta.description:
            porta_encontrada = porta
            break  # Para a busca assim que encontrar o primeiro dispositivo correspondente

    if porta_encontrada:
        fc_log("id_porta_com", "\n" + "="*40)
        fc_log("id_porta_com", "✅  Hardware encontrado!")
        fc_log("id_porta_com", f"    - Dispositivo: {porta_encontrada.description}")
        fc_log("id_porta_com", f"    - Porta COM: {porta_encontrada.device}")
        fc_log("id_porta_com", "="*40)
    else:
        fc_log("id_porta_com", "\n" + "="*40)
        fc_log("id_porta_com", "❌  Hardware não encontrado.")
        fc_log("id_porta_com", "    Verifique se o leitor RFID está conectado corretamente ao computador.")
        fc_log("id_porta_com", "="*40)

if __name__ == "__main__":
    try:
        encontrar_porta_do_reader()
    except Exception as e:
        fc_log("id_porta_com", f"\nOcorreu um erro inesperado: {e}")
        fc_log("id_porta_com", "Certifique-se de que a biblioteca 'pyserial' está instalada.")
        fc_log("id_porta_com", "Use o comando: pip install pyserial")