GNU Radio デスクランブリング ブロックを使用しようとしています。デスクランブルを行う第三者によって書かれたブロックがあります。使用される多項式は x 17 + x 12 + 1 です。
コードを以下に示します
descrambler_cc_impl::descrambler_cc_impl()
: gr::sync_block("descrambler_cc",
gr::io_signature::make(1, 1, sizeof(unsigned char)),
gr::io_signature::make(1, 1, sizeof(unsigned char)))
{
lsr = 0;
}
/*
* Our virtual destructor.
*/
descrambler_cc_impl::~descrambler_cc_impl()
{
}
int
descrambler_cc_impl::work(int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
const unsigned char *in = (const unsigned char *) input_items[0];
unsigned char *out = (unsigned char *) output_items[0];
int i;
for (i = 0; i < noutput_items; i++) {
out[i] = (lsr & 1) ^ ((lsr >> 12) & 1) ^ ((lsr >> 17) & 1);
lsr = lsr << 1;
lsr = lsr | (in[i] & 1);
}
// Tell runtime system how many output items we produced.
return i;
}
ここで、GNU Radio デスクランブラー ブロックを使用したいと考えています。
このリンクから、デスクランブリング パラメータを次のように計算しました。シード - 0x00; 長さ - 24。
残念ながら、上記のコードの対応するものとしては機能していません。これが機能しない理由について誰かがガイダンスを提供できますか?