arduino / arduino/ArduinoCore-API

Ambiguous timeout return value of `Stream::parseInt` and `Stream::parseFloat`

Offen
#88 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug
Vorherrschende Sprache
C++
Sterne
306
Forks
150
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

### Describe the problem

The parsing functions of the `Stream` class have a timeout mechanism. If the operation does not complete prior to the expiration of the timeout, the functions return `0`:

`Stream::parseInt`:

https://github.com/arduino/ArduinoCore-API/blob/0f4e57ea193a00163ae59f0f0ff478feae7eb5db/api/Stream.cpp#L141

`Stream::parseFloat`:

https://github.com/arduino/ArduinoCore-API/blob/0f4e57ea193a00163ae59f0f0ff478feae7eb5db/api/Stream.cpp#L172

🐛 The function does not provide the user with an unambiguous indicator that the parsing failed.

### ArduinoCore-API version

Last verified with: 0f4e57ea193a00163ae59f0f0ff478feae7eb5db

### Additional context

I suggest that these functions be changed to return `(int)NAN` or `(float)NAN` on timeout.

#### Additional reports

- https://github.com/arduino/Arduino/issues/1796
- https://github.com/arduino/Arduino/issues/7177

#### Related

- https://github.com/arduino/ArduinoCore-API/issues/70

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne mit Stream.cpp bei den im Issue verlinkten Implementierungen von parseInt und parseFloat und lies anschließend zur Kompatibilität die verwandte Issue #70 sowie die zusätzlichen Arduino-Berichte. Vergleiche das Timeout-Verhalten mit gültigen Ergebnissen von null und definiere den Abschluss für beide Parsing-Funktionen als ein eindeutiges Timeout-Ergebnis, wobei das Verhalten über die relevanten API-Aufrufer hinweg geprüft wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp
Bereich
api, embedded-iot
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.