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 = 0x02
  • PA12 = 1

Forzando PA12 a GND

  • raw_hex: "0e647fff003700ffffffff"
  • byte6 = 0x00
  • PA12 = 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 = 1
  • byte6 = 0x00 -> drenaje = 0