import sys
import os
from machine import Pin
import time

class Board:
    class BoardType:
        PICO_W = 'Raspberry Pi Pico W'
        PICO = 'Raspberry Pi Pico'
        RP2040 = 'RP2040'
        ESP8266 = 'ESP8266'
        ESP32 = 'ESP32'
        UNKNOWN = 'Unknown'

    def __init__(self):
        self.type = self.detect_board_type()

    def detect_board_type(self):
        sysname = os.uname().sysname.lower()
        machine = os.uname().machine.lower()

        # Detectar Raspberry Pi Pico W y Pico
        if sysname == 'rp2' and 'pico w' in machine:
            return self.BoardType.PICO_W
        elif sysname == 'rp2' and 'pico' in machine:
            return self.BoardType.PICO
        elif sysname == 'rp2' and 'rp2040' in machine:
            return self.BoardType.RP2040

        # Detectar ESP8266
        elif sysname == 'esp8266':
            return self.BoardType.ESP8266

        # Detectar ESP32
        elif sysname == 'esp32' and 'esp32' in machine:
            return self.BoardType.ESP32

        # Desconocido
        else:
            return self.BoardType.UNKNOWN

# Detectar tipo de placa
BOARD_TYPE = Board().type
print("Board type: " + BOARD_TYPE)

# Configuración de los pines según la tarjeta detectada
if BOARD_TYPE == Board.BoardType.PICO_W:
    led = Pin("LED", Pin.OUT)  # LED interno para Raspberry Pi Pico W
elif BOARD_TYPE == Board.BoardType.PICO or BOARD_TYPE == Board.BoardType.RP2040:
    led = Pin(25, Pin.OUT)  # LED interno para Raspberry Pi Pico o RP2040
elif BOARD_TYPE == Board.BoardType.ESP8266:
    led = Pin(2, Pin.OUT)  # GPIO 2 para el ESP8266 (LED interno)
elif BOARD_TYPE == Board.BoardType.ESP32:
    led = Pin(2, Pin.OUT)  # GPIO 2 para el ESP32 (LED integrado)
else:
    print("Placa desconocida, usando GPIO 2 por defecto.")
    led = Pin(2, Pin.OUT)  # Pin por defecto para placas desconocidas

# Alternar el estado del LED (prueba sencilla)
print("Alternando el LED")
led.value(1)  # Encender LED
print("LED Encendido")
time.sleep(1)  # Pausa por un segundo
led.value(0)  # Apagar LED
print("LED Apagado")