60 min + 10 de entregable. En esta sesión circula el nodo viajero: 10 min por persona para identificar físicamente los buses vistos en simulación.
Paso 0 · Preparación (5 min)
Duplicar el proyecto saboteado. El proyecto escribe registros a SD y permite forzar un reset a media escritura.
Paso 1 · Caza de bugs (20 min)
Síntoma: al resetear a media corrida, el archivo aparece vacío o cortado mucho antes de donde debería — se pierden muchos más datos de los esperados.
Bug raíz (uno solo): la política de flush es cada 500 registros, que a la frecuencia de este log equivale a decenas de segundos de datos en RAM sin escribir.
Procedimiento:
- Calcular primero, con lápiz: a la frecuencia del log, ¿cuántos segundos representan 500 registros? Ese número es la respuesta.
- Forzar el reset y contar cuántos registros sobrevivieron. Comparar con el cálculo.
- Hipótesis por escrito.
- Cambiar a flush por tiempo. Barrer: 5 s, 1 s, 250 ms. Para cada valor, medir datos perdidos en el reset y el impacto en el jitter de la tarea de adquisición (la medición de la Sesión 4 se reutiliza aquí).
- Elegir un valor y defenderlo con los dos números. No hay respuesta única correcta; hay respuestas justificadas.
Paso 2 · Prueba de recuperación (15 min)
- Correr con el formato original y resetear a media escritura. Intentar leer el archivo. Documentar exactamente qué se ve.
- Cambiar a registros de longitud fija con marcador de inicio y checksum.
- Repetir el reset. Escribir el procedimiento de lectura tolerante: recorrer buscando marcadores, validar checksum, descartar el último registro incompleto, reportar cuántos se recuperaron.
- Reportar: registros escritos / recuperados / perdidos, en ambos formatos.
Paso 3 · Especificación del formato de log (20 min)
| Campo |
Offset |
Bytes |
Tipo |
Escala |
Notas |
| Marcador |
0 |
2 |
u16 |
— |
valor fijo, improbable en datos |
| Timestamp |
2 |
4 |
u32 |
ms |
… |
| … |
… |
… |
… |
… |
… |
| Checksum |
… |
2 |
u16 |
— |
cubre desde marcador |
Más: tamaño de registro, registros/segundo, MB por hora de carrera, convención de nombre de archivo, y el runbook de recuperación en pasos numerados — escrito para que alguien lo ejecute en pits con prisa.