私は、32ビットプロトコルをデコードしたArduinoを使用して、IRリモコンで制御される小型の3.5chUSeriesヘリコプターを持っています。何らかの形のチェックサムのように見える最後の3ビットを除いて。リモートからのチャネルのデコードに成功したので、対応するコントロールを追跡するという点で、コントロールのわずかな変更により、3ビットに特定の変更が生じ、非常に再現性が高く、決定論的であることがわかります。想定されるチェックサムを再現するための共通のテーマや正式なものはまだ見つかりませんでした。パリティやチェックサムの追加などの簡単なことを試しました。特定のビットを変更した場合のcksumへの影響を確認できますが、変更を組み合わせると、3ビット値に単純に追加されるわけではありません。
struct Useries // bit structure recieved from 32 bit IR command
{
unsigned cksum : 3; // 0..2
unsigned Rbutton : 1; // 3
unsigned Lbutton : 1; // 4
unsigned Turbo : 1; // 5
unsigned Channel : 2; // 6,7
unsigned Trim : 6; // 8..13
unsigned Yaw : 5; // 14..18
unsigned Pitch : 6; // 19..24
unsigned Throttle : 7; // 25..31
};
したがって、問題は「chksumの式をどのように決定できますか?」です。またはそれが何であれ、それのレクリエーションをプログラムすることに関して。
決定論的であるように見えるので、cksumと他の27ビットの記録された出力を取得し、その式を導き出すことができるはずです。PLDロジックによく似ています。刺激は2^27ビットまたは128Mの可能性ですが、出力は2 ^ 3または8しかないのに対し、1%未満の小さなサンプルでも式が得られると思います。
別の方法は、それを暗号の問題と見なすことであり、3ビットのcksumはハッシュです。
どちらにしても。解決策を決定するための方法やガイダンスは大歓迎です。
参考までに-USeriesはSymaではありません。Symaのデコードにはcksumがありません。USeries chksumを決定したら、KenShirriffのフォークからオープンソース化します。
参考までに
Struct SymaR5// bit structure recieved from 32 bit IR command
{
unsigned Trim : 8; // 0..7 0x7F
unsigned Throttle : 7; // 8..15 0x7F
unsigned Channel : 1; // 16 0x01
unsigned Pitch : 8; // 17..24 0x7F
unsigned Yaw : 8; // 25..31 0x7F
};