arduino / arduino/ArduinoCore-API
Ambiguous timeout return value of `Stream::parseInt` and `Stream::parseFloat`
- Langage dominant
- C++
- Étoiles
- 306
- Forks
- 150
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
### 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
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Commencez par Stream.cpp, au niveau des implémentations de parseInt et parseFloat référencées dans l’issue, puis lisez l’issue associée #70 ainsi que les rapports Arduino supplémentaires pour le contexte de compatibilité. Comparez le comportement du timeout avec des résultats valides égaux à zéro et définissez la fin du traitement comme un résultat de timeout non ambigu pour les deux fonctions d’analyse, en vérifiant le comportement au niveau des appelants d’API concernés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- cpp
- Domaine
- api, embedded-iot
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100