From 1e54b4ca10b734be50f6f2eafa7c3e3a9a203031 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 7 Aug 2025 03:17:42 +0000 Subject: [PATCH] Add SerialController with GET /api/serial/ports endpoint Co-authored-by: ekinnee <1707617+ekinnee@users.noreply.github.com> --- Server/Controllers/SerialController.cs | 59 ++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Server/Controllers/SerialController.cs diff --git a/Server/Controllers/SerialController.cs b/Server/Controllers/SerialController.cs new file mode 100644 index 0000000..640dbd1 --- /dev/null +++ b/Server/Controllers/SerialController.cs @@ -0,0 +1,59 @@ +using Microsoft.AspNetCore.Mvc; +using Server.Models; +using Server.Services; + +namespace Server.Controllers +{ + /// + /// Controller for serial port management operations + /// + [ApiController] + [Route("api/[controller]")] + [Produces("application/json")] + public class SerialController : ControllerBase + { + private readonly ISerialCommunicationService _serialService; + private readonly ILogger _logger; + + public SerialController(ISerialCommunicationService serialService, ILogger logger) + { + _serialService = serialService ?? throw new ArgumentNullException(nameof(serialService)); + _logger = logger ?? throw new ArgumentNullException(nameof(logger)); + } + + /// + /// Gets all available serial ports on the server + /// + /// JSON array of available serial port names + /// Returns the list of available serial ports + /// Internal server error + [HttpGet("ports")] + [ProducesResponseType(typeof(PortListResponse), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(ErrorResponse), StatusCodes.Status500InternalServerError)] + public ActionResult GetPorts() + { + try + { + _logger.LogInformation("Getting available serial ports"); + var ports = _serialService.GetAvailablePorts(); + + var response = new PortListResponse + { + Ports = ports + }; + + _logger.LogInformation("Found {PortCount} available ports", response.Count); + return Ok(response); + } + catch (Exception ex) + { + _logger.LogError(ex, "Error getting available ports"); + return StatusCode(500, new ErrorResponse + { + Error = "Internal server error while getting ports", + Details = ex.Message + }); + } + } + } +} \ No newline at end of file