Eu me deparei com esse problema ao chegar a essa página do RemoteCentral que lista os comandos como sendo compostos de dispositivo, sub-dispostitivo e função.
Depois eu me deparei com esta outra que faz o mesmo.
Por exemplo, o código para Power é descrito como:
Protocol NECx2, device 7, subdevice 7, OBC 2
Mas de onde vem isso? Eu sempre decodifiquei esse código como sendo E0E040BF. Como um número tão complexo esconde apenas os números 7, 7 e 2?
Eu encontrei a resposta ao analisar o funcionamento do programa SamsungBlinkie para Arduino
O código hexadecimal é dividido em três partes (as duas primeiras em conjunto formam o chamado “endereço”):
E0 -> dispositivo 7
E0 -> sub-dispositivo 7
40BF -> função 2
Vendo esses números em binário a coisa começa a fazer sentido.
E0 = 11100000. Note que se você espelhar esse número, vira 00000111, que é 7. Já sabemos então de onde vem o dispositivo e o sub-dispositivo.
A função é codificada de forma ainda mais confusa, mas se você olhar em binário rapidamente entende.
1 2 |
40 = 01000000 BF = 10111111 |
O primeiro byte corresponde a um 2 binário espelhado e o segundo byte é uma inversão bit a bit do primeiro e funciona como um “checksum” para que o dispositivo tenha certeza de que leu corretamente.
Note que a Samsung usa um código NEC estendido. Nos códigos NEC tradicionais ou a segunda parte do endereço também é um checksum da primeira ou não existe segunda parte no endereço.
Leave a Comment