diff --git a/utils/serial/src/serial/unix.cpp b/utils/serial/src/serial/unix.cpp index d65eab54..867f9db9 100644 --- a/utils/serial/src/serial/unix.cpp +++ b/utils/serial/src/serial/unix.cpp @@ -5,6 +5,9 @@ uint32_t DPSerial::getAvailableByteCount(FILEHANDLE s_handle) { + if (!s_handle) + return 0; + uint32_t available = 0; if (ioctl(fileno(s_handle), FIONREAD, &available) < 0) { @@ -15,11 +18,15 @@ uint32_t DPSerial::getAvailableByteCount(FILEHANDLE s_handle) void DPSerial::tearDown() { - fclose(s_handle); + if (s_handle) + fclose(s_handle); } -bool DPSerial::readBytesFromSerial(void* target, uint32_t length) +bool DPSerial::readBytesFromSerial(void *target, uint32_t length) { + if (!s_handle) + return false; + const uint32_t result = fread(target, 1, length, s_handle); const bool valid = result == length; if (!valid) @@ -40,9 +47,10 @@ bool DPSerial::readBytesFromSerial(void* target, uint32_t length) return valid; } -void DPSerial::write(const uint8_t* const data, const uint32_t length) +void DPSerial::write(const uint8_t *const data, const uint32_t length) { - ::write(fileno(s_handle), data, length); + if (s_handle) + ::write(fileno(s_handle), data, length); } bool DPSerial::setup(std::string path) diff --git a/utils/serial/src/serial/win.cpp b/utils/serial/src/serial/win.cpp index ed63bd1e..3277a410 100644 --- a/utils/serial/src/serial/win.cpp +++ b/utils/serial/src/serial/win.cpp @@ -2,6 +2,8 @@ uint32_t DPSerial::getAvailableByteCount(FILEHANDLE s_handle) { + if (!s_handle) + return 0; DWORD commerr; COMSTAT comstat; if (!ClearCommError(s_handle, &commerr, &comstat)) @@ -13,20 +15,27 @@ uint32_t DPSerial::getAvailableByteCount(FILEHANDLE s_handle) void DPSerial::tearDown() { - CloseHandle(s_handle); + if (s_handle) + CloseHandle(s_handle); } -bool DPSerial::readBytesFromSerial(void* target, uint32_t length) +bool DPSerial::readBytesFromSerial(void *target, uint32_t length) { + if (!s_handle) + return false; + DWORD bytesRead; ReadFile(s_handle, target, length, &bytesRead, NULL); return bytesRead == length; } -void DPSerial::write(const uint8_t* const data, const uint32_t length) +void DPSerial::write(const uint8_t *const data, const uint32_t length) { - DWORD bytesWritten = 0; - WriteFile(s_handle, data, length, &bytesWritten, NULL); + if (s_handle) + { + DWORD bytesWritten = 0; + WriteFile(s_handle, data, length, &bytesWritten, NULL); + } } bool DPSerial::setup(std::string path)