using Microsoft.AspNetCore.Mvc; using YD_TrainingCompetition_Api.Serial; namespace YD_TrainingCompetition_Api.Controllers; [ApiController] [Route("api/[controller]")] public sealed class SerialController : ControllerBase { private readonly ISerialGateway _serial; public SerialController(ISerialGateway serial) { _serial = serial; } [HttpGet("ports")] public IActionResult GetPorts() => Ok(_serial.GetAvailablePorts()); [HttpGet("status")] public IActionResult GetStatus() => Ok(new { isOpen = _serial.IsOpen, port = _serial.CurrentPort }); [HttpPost("open/{portName}")] public async Task Open(string portName, CancellationToken cancellationToken) { await _serial.OpenAsync(portName, cancellationToken); return Ok(new { message = "opened", port = portName }); } [HttpPost("close")] public async Task Close(CancellationToken cancellationToken) { await _serial.CloseAsync(cancellationToken); return Ok(new { message = "closed" }); } }