リアルタイムデコード

EP4のUSBパケットサイズを1バイトにしたら、ほぼリアルタイムでデコードできる。よくよく考えたら、2バイトも32バイトもレイテンシはほぼ変わらず、1バイトにこそ意味が有るんだな。つまり、ECMリクエストに対する鍵のレスポンスが流れてから次のECMリクエストまでは1バイトもデータが流れないから(例外もあるが)、例えばパケットサイズ2バイトでレスポンスの末尾1バイトが半端にバッファに溜まってしまうと、次のECMリクエストが来るまでその1バイトが転送できない。ECMリクエストは39バイトぐらいだから、2〜32バイトではレイテンシは一切変わらないわけだ。でも、パケットサイズ1バイトにすると、さすがに1分に1回くらいの頻度で取りこぼす。
理想的にはAuto-Inに頼らずFX2のファームウェア側でB-CASデータの解析をやって、B-CASパケット単位でBulk/Intterupt転送するのがいいっぽいな。現状、FX2のCPUは完全に空いているわけだし、FX2側の512バイトのFIFOがオーバーフローすることは無いだろう。
うん、取り組む価値はありそうだ。lとりあえずファームウェアLinuxでビルド出来るようにsdcc化しないとな。