import processing.serial.*;
import g4p_controls.*;

final String PORT_NAME = "/dev/ttyACM0";

Serial  port;
GButton btnToggle;
GLabel  lblStatus;
boolean ledOn = false;

void setup() {
  size(400, 280);
  G4P.setGlobalColorScheme(GCScheme.BLUE_SCHEME);
  port = new Serial(this, PORT_NAME, 9600);
  port.bufferUntil('\n');
  btnToggle = new GButton(this, 140, 110, 120, 45, "Turn LED ON");
  lblStatus = new GLabel(this, 80, 175, 240, 30, "Waiting for board...");
  lblStatus.setTextAlign(GAlign.CENTER, GAlign.MIDDLE);
}

void draw() {
  background(245);
  fill(60);
  textAlign(CENTER);
  textSize(17);
  text("XIAO RP2040 — LED Control", width / 2, 65);
}

void handleButtonEvents(GButton button, GEvent event) {
  if (button == btnToggle && event == GEvent.CLICKED) {
    ledOn = !ledOn;
    port.write(ledOn ? "LED_ON\n" : "LED_OFF\n");
    btnToggle.setText(ledOn ? "Turn LED OFF" : "Turn LED ON");
  }
}

void serialEvent(Serial p) {
  String msg = trim(p.readStringUntil('\n'));
  if (msg != null) {
    lblStatus.setText(msg);
    println("From board: " + msg);
  }
}
