#!/usr/bin/env python3
"""
Simple polling-based button test for GPIO6
No edge detection - just polls the pin state
"""

import RPi.GPIO as GPIO
import time
import signal
import sys

BUTTON_PIN = 6

def signal_handler(signum, frame):
    print("Cleaning up GPIO...")
    GPIO.cleanup()
    sys.exit(0)

def main():
    print("Simple Button Test - Polling GPIO6")
    print("Press the button connected to GPIO6 (GND when pressed)")
    print("Press Ctrl+C to exit")
    
    # Clean up any existing GPIO setup
    try:
        GPIO.cleanup()
    except:
        pass
    
    # Set up GPIO
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
    
    # Set up signal handler
    signal.signal(signal.SIGINT, signal_handler)
    signal.signal(signal.SIGTERM, signal_handler)
    
    print(f"GPIO{BUTTON_PIN} setup complete. Current state: {GPIO.input(BUTTON_PIN)}")
    print("Monitoring for button presses (1=released, 0=pressed)...")
    
    last_state = GPIO.input(BUTTON_PIN)
    button_press_count = 0
    
    try:
        while True:
            current_state = GPIO.input(BUTTON_PIN)
            
            # Detect falling edge (button press)
            if last_state == 1 and current_state == 0:
                button_press_count += 1
                print(f"Button press #{button_press_count} detected!")
                time.sleep(0.5)  # Simple debounce
            
            last_state = current_state
            time.sleep(0.01)  # Poll every 10ms
            
    except KeyboardInterrupt:
        pass
    finally:
        GPIO.cleanup()

if __name__ == "__main__":
    main()