arduino / arduino/ArduinoCore-API
Ambiguous timeout return value of `Stream::parseInt` and `Stream::parseFloat`
- Lenguaje dominante
- C++
- Estrellas
- 306
- Forks
- 150
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
### 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
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
Comienza con Stream.cpp, en las implementaciones de parseInt y parseFloat enlazadas en el issue, y después lee el issue relacionado #70 y los informes adicionales de Arduino para conocer el contexto de compatibilidad. Compara el comportamiento del timeout con resultados válidos de cero y define la finalización como un resultado de timeout inequívoco para ambas funciones de análisis, comprobando el comportamiento en los llamadores de API relevantes.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp
- Área
- api, embedded-iot
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100