Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

ATParser could not support some strings very well.

Abierto
#7 4 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
cpp
Área
embedded-iot

Línea de trabajo

Comienza con la implementación de recv de ATParser y reproduce los casos entre comillas y sin comillas de verify_sscanf(), especialmente los ejemplos de BC95 que usan sscanf(). Compara el recuento de caracteres observado y el valor de destino con los resultados esperados; después, ejecuta las pruebas relevantes del parser o añade cobertura que demuestre que ambas formas de entrada se analizan correctamente sin introducir regresiones en el caso de ESP8266.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement

I am working to integrate a NBIoT module and found that this ATParser could not support some strings.
After debugging, I found it is caused by the poor sscanf().

For example,
_parser.recv("\"%15[^\n]\"", dev_info.imsi); from ESP8266 driver as reference , it could work.
_parser.recv("%15[^\n]", dev_info.imsi); with no quotes does not work well. it will return the first char in the string to imsi.

Below is a simple test code, would you help to share comments if any idea?

void verify_sscanf()
{
   //Verify the AT format for esp8266 with quotes
    int count = -1;
    char test[] = "0\"123456789\"";
    char test1[] = "0\"%*9[^\n]\"%n0";
    char test2[] = "0\"1234\"";
    sscanf(test2, test1, &count);
    printf("\nESP8266: expect -1 -  count = %d\n", count);
    count = -1;
    sscanf(test, test1, &count);
    printf("\nESP8266: expect 12 -  count = %d\n", count);
    //Verify the AT format for BC95 without quotes
    char test_bc95[] = "0123456789";
    char test1_bc95[] = "0%*9[^\n]%n0";
    char test2_bc95[] = "01234";
    count = -1;
    sscanf(test2_bc95, test1_bc95, &count);
    printf("\nBC95: expect -1 - count = %d\n", count);
    count = -1;
    sscanf(test_bc95, test1_bc95, &count);
    printf("\nBC95: expect 10 BUT fail- count = %d\n", count);
}

Lenguaje dominante
C++
Estrellas
39
Forks
24
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ARMmbed/ATParser

Todos los issues de ARMmbed/ATParser

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.