37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
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<IActionResult> Open(string portName, CancellationToken cancellationToken)
|
|
{
|
|
await _serial.OpenAsync(portName, cancellationToken);
|
|
return Ok(new { message = "opened", port = portName });
|
|
}
|
|
|
|
[HttpPost("close")]
|
|
public async Task<IActionResult> Close(CancellationToken cancellationToken)
|
|
{
|
|
await _serial.CloseAsync(cancellationToken);
|
|
return Ok(new { message = "closed" });
|
|
}
|
|
}
|