# 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: ```js 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 ```js 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`