Changed Serial readAtLeast timeout from microseconds to milliseconds

This commit is contained in:
Eric Katzfey
2024-06-18 09:18:58 -07:00
committed by Daniel Agar
parent e33ba810e9
commit c334e488e4
5 changed files with 9 additions and 6 deletions
+2 -2
View File
@@ -74,9 +74,9 @@ ssize_t Serial::read(uint8_t *buffer, size_t buffer_size)
return _impl.read(buffer, buffer_size); return _impl.read(buffer, buffer_size);
} }
ssize_t Serial::readAtLeast(uint8_t *buffer, size_t buffer_size, size_t character_count, uint32_t timeout_us) ssize_t Serial::readAtLeast(uint8_t *buffer, size_t buffer_size, size_t character_count, uint32_t timeout_ms)
{ {
return _impl.readAtLeast(buffer, buffer_size, character_count, timeout_us); return _impl.readAtLeast(buffer, buffer_size, character_count, timeout_ms);
} }
ssize_t Serial::write(const void *buffer, size_t buffer_size) ssize_t Serial::write(const void *buffer, size_t buffer_size)
@@ -62,7 +62,7 @@ public:
bool close(); bool close();
ssize_t read(uint8_t *buffer, size_t buffer_size); 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); ssize_t readAtLeast(uint8_t *buffer, size_t buffer_size, size_t character_count = 1, uint32_t timeout_ms = 0);
ssize_t write(const void *buffer, size_t buffer_size); ssize_t write(const void *buffer, size_t buffer_size);
@@ -251,7 +251,7 @@ ssize_t SerialImpl::read(uint8_t *buffer, size_t buffer_size)
return ret; return ret;
} }
ssize_t SerialImpl::readAtLeast(uint8_t *buffer, size_t buffer_size, size_t character_count, uint32_t timeout_us) ssize_t SerialImpl::readAtLeast(uint8_t *buffer, size_t buffer_size, size_t character_count, uint32_t timeout_ms)
{ {
if (!_open) { if (!_open) {
PX4_ERR("Cannot readAtLeast from serial device until it has been opened"); PX4_ERR("Cannot readAtLeast from serial device until it has been opened");
@@ -264,6 +264,7 @@ ssize_t SerialImpl::readAtLeast(uint8_t *buffer, size_t buffer_size, size_t char
} }
const hrt_abstime start_time_us = hrt_absolute_time(); const hrt_abstime start_time_us = hrt_absolute_time();
hrt_abstime timeout_us = timeout_ms * 1000;
int total_bytes_read = 0; int total_bytes_read = 0;
while ((total_bytes_read < (int) character_count) && (hrt_elapsed_time(&start_time_us) < timeout_us)) { while ((total_bytes_read < (int) character_count) && (hrt_elapsed_time(&start_time_us) < timeout_us)) {
@@ -244,7 +244,7 @@ ssize_t SerialImpl::read(uint8_t *buffer, size_t buffer_size)
return ret; return ret;
} }
ssize_t SerialImpl::readAtLeast(uint8_t *buffer, size_t buffer_size, size_t character_count, uint32_t timeout_us) ssize_t SerialImpl::readAtLeast(uint8_t *buffer, size_t buffer_size, size_t character_count, uint32_t timeout_ms)
{ {
if (!_open) { if (!_open) {
PX4_ERR("Cannot readAtLeast from serial device until it has been opened"); PX4_ERR("Cannot readAtLeast from serial device until it has been opened");
@@ -257,6 +257,7 @@ ssize_t SerialImpl::readAtLeast(uint8_t *buffer, size_t buffer_size, size_t char
} }
const hrt_abstime start_time_us = hrt_absolute_time(); const hrt_abstime start_time_us = hrt_absolute_time();
hrt_abstime timeout_us = timeout_ms * 1000;
int total_bytes_read = 0; int total_bytes_read = 0;
while ((total_bytes_read < (int) character_count) && (hrt_elapsed_time(&start_time_us) < timeout_us)) { while ((total_bytes_read < (int) character_count) && (hrt_elapsed_time(&start_time_us) < timeout_us)) {
+2 -1
View File
@@ -173,7 +173,7 @@ ssize_t SerialImpl::read(uint8_t *buffer, size_t buffer_size)
return ret_read; return ret_read;
} }
ssize_t SerialImpl::readAtLeast(uint8_t *buffer, size_t buffer_size, size_t character_count, uint32_t timeout_us) ssize_t SerialImpl::readAtLeast(uint8_t *buffer, size_t buffer_size, size_t character_count, uint32_t timeout_ms)
{ {
if (!_open) { if (!_open) {
PX4_ERR("Cannot readAtLeast from serial device until it has been opened"); PX4_ERR("Cannot readAtLeast from serial device until it has been opened");
@@ -186,6 +186,7 @@ ssize_t SerialImpl::readAtLeast(uint8_t *buffer, size_t buffer_size, size_t char
} }
const hrt_abstime start_time_us = hrt_absolute_time(); const hrt_abstime start_time_us = hrt_absolute_time();
hrt_abstime timeout_us = timeout_ms * 1000;
int total_bytes_read = 0; int total_bytes_read = 0;
while (total_bytes_read < (int) character_count) { while (total_bytes_read < (int) character_count) {