#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Controlador de parada para robô de balanceamento
Verifica se arquivo robo.stop existe e permite parada graciosa

Integração em robo_balanceamento.py:
    import controlador_stop
    
    # No seu loop principal:
    if controlador_stop.deve_parar():
        print("Sinal de parada recebido")
        break  # Sai do loop
"""

import os
import json
from pathlib import Path

script_dir = Path(__file__).parent.absolute()
stop_file = script_dir / 'robo.stop'

def deve_parar():
    """
    Verifica se o arquivo robo.stop existe
    Se existir, o robô deve encerrar gracefully
    """
    return stop_file.exists()

def obter_info_parada():
    """
    Lê informações sobre o pedido de parada
    """
    if not stop_file.exists():
        return None
    
    try:
        with open(stop_file, 'r') as f:
            return json.load(f)
    except:
        return None

def limpar_stop():
    """
    Remove o arquivo de sinal de parada
    Chamado ao fim do ciclo de parada
    """
    if stop_file.exists():
        try:
            stop_file.unlink()
        except:
            pass

# Exemplo de uso no main loop do robô:
"""
while True:
    # Sua lógica de robô aqui
    try:
        # ... processar ciclo ...
        pass
    except Exception as e:
        logger.error(f"Erro: {e}")
    
    # Verificar se deve parar
    if controlador_stop.deve_parar():
        info = controlador_stop.obter_info_parada()
        if info:
            logger.info(f"Parada solicitada por: {info.get('pedido_por')} em {info.get('timestamp')}")
        
        logger.info("Encerrando robô gracefully...")
        controlador_stop.limpar_stop()
        break  # Sai do loop
    
    # Pequeno delay
    time.sleep(1)
"""
