1.2 KiB
1.2 KiB
Decoder PA12
Decisión final
El decoder correcto para leer PA12 en este kit es:
- byte objetivo:
byte6 - bit objetivo:
bit1 - máscara:
0x02
Expresión correcta:
const byte6 = (b.length > 6) ? b[6] : 0x00;
const pa12 = (byte6 & 0x02) ? 1 : 0;
Lo que se descartó
Se descartó el uso de byte5 como indicador fiable del estado de PA12.
Durante una fase del diagnóstico parecía que dos tramas diferían en byte5, pero la prueba determinista sin sensor demostró que ese byte variaba por otros motivos y no era el bit correcto.
Prueba determinista que cerró el diagnóstico
Forzando PA12 a VDD
raw_hex: "0e647fff003f02ffffffff"byte6 = 0x02PA12 = 1
Forzando PA12 a GND
raw_hex: "0e647fff003700ffffffff"byte6 = 0x00PA12 = 0
Decoder limpio mínimo
function decodeUplink(input) {
const b = input.bytes;
const byte6 = (b.length > 6) ? b[6] : 0;
const pa12 = (byte6 & 0x02) ? 1 : 0;
return {
data: {
pa12,
drenaje: pa12,
drenaje_inv: pa12 ? 0 : 1,
byte6,
raw_hex: b.map(x => x.toString(16).padStart(2, '0')).join('')
}
};
}
Conclusión
En este kit:
byte6 = 0x02->drenaje = 1byte6 = 0x00->drenaje = 0