| 156 | } |
| 157 | |
| 158 | fl::string SerialPort::readStringUntil(char delimiter) { |
| 159 | fl::string result; |
| 160 | u32 startTime = fl::millis(); |
| 161 | |
| 162 | while (fl::millis() - startTime < mTimeoutMs) { |
| 163 | if (available() > 0) { |
| 164 | int c = read(); |
| 165 | if (c == -1) { |
| 166 | continue; // No data |
| 167 | } |
| 168 | if (c == delimiter) { |
| 169 | break; // Found delimiter, stop reading |
| 170 | } |
| 171 | result += static_cast<char>(c); |
| 172 | startTime = fl::millis(); // Reset timeout on successful read |
| 173 | } |
| 174 | } |
| 175 | |
| 176 | return result; |
| 177 | } |
| 178 | |
| 179 | size_t SerialPort::readBytes(u8* buffer, size_t length) { |
| 180 | if (!buffer || length == 0) { |