From f0d40d7a43816a6b79d04215005b1e3d182ed2a0 Mon Sep 17 00:00:00 2001 From: Alexander Lerach Date: Tue, 9 Dec 2025 18:42:46 +0100 Subject: [PATCH] [SerialImpl]: add function to return pollfd --- platforms/common/Serial.cpp | 5 +++++ .../common/include/px4_platform_common/Serial.hpp | 3 +++ platforms/nuttx/src/px4/common/SerialImpl.cpp | 12 ++++++++++++ .../nuttx/src/px4/common/include/SerialImpl.hpp | 3 +++ platforms/posix/include/SerialImpl.hpp | 3 +++ platforms/qurt/include/SerialImpl.hpp | 3 +++ 6 files changed, 29 insertions(+) diff --git a/platforms/common/Serial.cpp b/platforms/common/Serial.cpp index 748dcba9b2..250293c96d 100644 --- a/platforms/common/Serial.cpp +++ b/platforms/common/Serial.cpp @@ -69,6 +69,11 @@ bool Serial::close() return _impl.close(); } +bool Serial::getPollFd(const px4_pollevent_t events, px4_pollfd_struct_t *pfd) +{ + return _impl.getPollFd(events, pfd); +} + ssize_t Serial::bytesAvailable() { return _impl.bytesAvailable(); diff --git a/platforms/common/include/px4_platform_common/Serial.hpp b/platforms/common/include/px4_platform_common/Serial.hpp index 983834ccf6..af5284499c 100644 --- a/platforms/common/include/px4_platform_common/Serial.hpp +++ b/platforms/common/include/px4_platform_common/Serial.hpp @@ -35,6 +35,7 @@ #include +#include #include using device::SerialConfig::ByteSize; @@ -61,6 +62,8 @@ public: bool close(); + bool getPollFd(const px4_pollevent_t events, px4_pollfd_struct_t *pfd); + ssize_t bytesAvailable(); ssize_t read(uint8_t *buffer, size_t buffer_size); ssize_t readAtLeast(uint8_t *buffer, size_t buffer_size, size_t character_count = 1, uint32_t timeout_ms = 0); diff --git a/platforms/nuttx/src/px4/common/SerialImpl.cpp b/platforms/nuttx/src/px4/common/SerialImpl.cpp index f8968e4881..668da297a2 100644 --- a/platforms/nuttx/src/px4/common/SerialImpl.cpp +++ b/platforms/nuttx/src/px4/common/SerialImpl.cpp @@ -289,6 +289,18 @@ bool SerialImpl::close() return true; } +bool SerialImpl::getPollFd(const px4_pollevent_t events, px4_pollfd_struct_t *pfd) +{ + if (!_open) { + PX4_ERR("Device not open!"); + return false; + } + + pfd->fd = _serial_fd; + pfd->events = events; + return true; +} + ssize_t SerialImpl::bytesAvailable() { if (!_open) { diff --git a/platforms/nuttx/src/px4/common/include/SerialImpl.hpp b/platforms/nuttx/src/px4/common/include/SerialImpl.hpp index 82e4ddd29d..3062e27827 100644 --- a/platforms/nuttx/src/px4/common/include/SerialImpl.hpp +++ b/platforms/nuttx/src/px4/common/include/SerialImpl.hpp @@ -36,6 +36,7 @@ #include #include +#include #include using device::SerialConfig::ByteSize; @@ -59,6 +60,8 @@ public: bool close(); + bool getPollFd(const px4_pollevent_t events, px4_pollfd_struct_t *pfd); + ssize_t bytesAvailable(); ssize_t read(uint8_t *buffer, size_t buffer_size); ssize_t readAtLeast(uint8_t *buffer, size_t buffer_size, size_t character_count = 1, uint32_t timeout_us = 0); diff --git a/platforms/posix/include/SerialImpl.hpp b/platforms/posix/include/SerialImpl.hpp index 82e4ddd29d..ddd5756398 100644 --- a/platforms/posix/include/SerialImpl.hpp +++ b/platforms/posix/include/SerialImpl.hpp @@ -36,6 +36,7 @@ #include #include +#include #include using device::SerialConfig::ByteSize; @@ -59,6 +60,8 @@ public: bool close(); + bool getPollFd(px4_pollevent_t event, px4_pollfd_struct_t *pfd); + ssize_t bytesAvailable(); ssize_t read(uint8_t *buffer, size_t buffer_size); ssize_t readAtLeast(uint8_t *buffer, size_t buffer_size, size_t character_count = 1, uint32_t timeout_us = 0); diff --git a/platforms/qurt/include/SerialImpl.hpp b/platforms/qurt/include/SerialImpl.hpp index c7739429ef..ace86edd9e 100644 --- a/platforms/qurt/include/SerialImpl.hpp +++ b/platforms/qurt/include/SerialImpl.hpp @@ -35,6 +35,7 @@ #include +#include #include using device::SerialConfig::ByteSize; @@ -58,6 +59,8 @@ public: bool close(); + bool getPollFd(const px4_pollevent_t events, px4_pollfd_struct_t *pfd); + ssize_t bytesAvailable(); ssize_t read(uint8_t *buffer, size_t buffer_size); ssize_t readAtLeast(uint8_t *buffer, size_t buffer_size, size_t character_count = 1, uint32_t timeout_us = 0);