diff --git a/grc/satnogs_decoder_8b10b.xml b/grc/satnogs_decoder_8b10b.xml
index 3432851..03c9b95 100644
--- a/grc/satnogs_decoder_8b10b.xml
+++ b/grc/satnogs_decoder_8b10b.xml
@@ -4,8 +4,9 @@
satnogs_decoder_8b10b
[SatNOGS]
import satnogs
- satnogs.decoder_8b10b($control_symbol, $max_frame_len,
- $comp_type)
+ satnogs.decoder_8b10b($control_symbol, $max_frame_len
+ )
+
Control symbols
@@ -17,24 +18,10 @@
Maximum frame length
max_frame_len
- 1500
+ 960
int
-
- Comparison type
- comp_type
- enum
-
-
-
-
in
byte
diff --git a/include/satnogs/decoder_8b10b.h b/include/satnogs/decoder_8b10b.h
index cc53b64..415214b 100644
--- a/include/satnogs/decoder_8b10b.h
+++ b/include/satnogs/decoder_8b10b.h
@@ -47,7 +47,7 @@ namespace gr
* class. satnogs::decoder_8b10b::make is the public interface for
* creating new instances.
*/
- static sptr make(const std::string& control_symbol,size_t max_frame_len,int comp_type);
+ static sptr make(const std::string& control_symbol,size_t max_frame_len);
};
}
diff --git a/lib/decoder_8b10b_impl.cc b/lib/decoder_8b10b_impl.cc
index ae4f6e3..d555bd7 100644
--- a/lib/decoder_8b10b_impl.cc
+++ b/lib/decoder_8b10b_impl.cc
@@ -33,22 +33,21 @@ namespace gr
decoder_8b10b::sptr
decoder_8b10b::make (const std::string& control_symbol,
- size_t max_frame_len, int comp_type)
+ size_t max_frame_len)
{
return gnuradio::get_initial_sptr (
- new decoder_8b10b_impl (control_symbol, max_frame_len, comp_type));
+ new decoder_8b10b_impl (control_symbol, max_frame_len));
}
/*
* The private constructor
*/
decoder_8b10b_impl::decoder_8b10b_impl (const std::string& control_symbol,
- size_t max_frame_len, int comp_type) :
+ size_t max_frame_len) :
gr::sync_block ("decoder_8b10b",
gr::io_signature::make (1, 1, sizeof(char)),
gr::io_signature::make (0, 0, 0)),
d_max_frame_len (max_frame_len),
- d_comp_type (comp_type),
d_control_symbol_pos (0),
d_control_symbol_neg (0),
d_data_reg (0),
@@ -56,15 +55,19 @@ namespace gr
d_wrong_bits_neg (0),
d_nwrong (0),
d_nwrong_neg (0),
- d_10b_cnt (0),
+ d_10b_cnt (1),
d_word (0),
d_state (IN_SYNC)
{
message_port_register_out (pmt::mp ("pdu"));
+
if (!set_access_code (control_symbol)) {
GR_LOG_ERROR(d_logger, "control_symbol is not 10 bits");
throw std::out_of_range ("control_symbol is not 10 bits");
}
+
+ d_8b_words = (uint8_t*) malloc (d_max_frame_len / 10);
+ d_erasures = (uint8_t*) malloc (d_max_frame_len / 10);
}
/*
@@ -93,12 +96,49 @@ namespace gr
return true;
}
+ uint8_t
+ decoder_8b10b_impl::process_10b (int write_pos)
+ {
+ uint16_t diff_bits = 0;
+ uint8_t min_pos = 0, temp_min_pos_rd = 0, min_pos_rd = 0;
+ uint8_t min_dist = 11;
+ uint8_t curr_dist = 0;
+ size_t i = 0;
+
+ while ((i < 256) || (min_dist > 0)) {
+
+ diff_bits = (d_word ^ (d_lookup_8b10b[0][i])) & 0x3FF;
+ curr_dist = gr::blocks::count_bits16 (diff_bits);
+
+ if (curr_dist > 5) {
+ curr_dist = 10 - curr_dist;
+ temp_min_pos_rd = 1;
+ }
+ else {
+ temp_min_pos_rd = 0;
+ }
+
+ if (curr_dist < min_dist) {
+ min_dist = curr_dist;
+ min_pos = i;
+ min_pos_rd = temp_min_pos_rd;
+ }
+
+ i++;
+ }
+
+ /* report that there is erasure to this 10 bits */
+ d_8b_words[write_pos - 1] = min_pos;
+ d_erasures[write_pos - 1] = (min_dist != 0);
+ }
+
int
decoder_8b10b_impl::work (int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
const uint8_t *in = (const uint8_t *) input_items[0];
+
for (int i = 0; i < noutput_items; i++) {
d_data_reg = (d_data_reg << 1) | (in[i] & 0x1);
@@ -109,32 +149,42 @@ namespace gr
d_wrong_bits = (d_data_reg ^ d_control_symbol_pos) & 0x3FF;
d_wrong_bits_neg = (d_data_reg ^ d_control_symbol_neg) & 0x3FF;
- d_nwrong = gr::blocks::count_bits64 (d_wrong_bits);
- d_nwrong_neg = gr::blocks::count_bits64 (d_wrong_bits_neg);
+ d_nwrong = gr::blocks::count_bits16 (d_wrong_bits);
+ d_nwrong_neg = gr::blocks::count_bits16 (d_wrong_bits_neg);
/* we found the controls symbol */
if ((d_nwrong == 0) || (d_nwrong_neg == 0)) {
d_state = DECODING;
- d_word = 0;
- printf ("Packet start found! Begin decoding! \n");
}
- //GR_LOG_DEBUG(d_logger, boost::format ("Wrong number: %u") % wrong_bits);
-
break;
case DECODING:
- if (d_10b_cnt < 10) {
+ if (d_10b_cnt <= d_max_frame_len) {
+ if ((d_10b_cnt % 10 == 0) && (d_10b_cnt < d_max_frame_len)) {
- d_word = (d_word << 1) | (d_data_reg & 0x1);
- d_10b_cnt++;
+ d_word = (d_data_reg & 0x3FF);
- if(d_10b_cnt == 10){
- d_state = IN_SYNC;
- d_10b_cnt = 0;
- printf("DECODING FINISHED! BEGIN SYNC!!\n");
+ /* Revert 10b to 8b and accumulate! */
+ process_10b (d_10b_cnt / 10);
}
+
+ if (d_10b_cnt == d_max_frame_len) {
+ d_state = IN_SYNC;
+ d_10b_cnt = 0; // one is added after the if
+ d_word = 0; // zero it after you use it to prepare for next round
+
+ pmt::pmt_t data = pmt::init_u8vector (d_max_frame_len / 10,
+ d_8b_words);
+ pmt::pmt_t erasures = pmt::init_u8vector (d_max_frame_len / 10,
+ d_erasures);
+
+ pmt::pmt_t out = pmt::cons (data, erasures);
+ message_port_pub (pmt::mp ("pdu"), out);
+ }
+
+ d_10b_cnt++;
}
break;
diff --git a/lib/decoder_8b10b_impl.h b/lib/decoder_8b10b_impl.h
index 3667cc4..4bcf91a 100644
--- a/lib/decoder_8b10b_impl.h
+++ b/lib/decoder_8b10b_impl.h
@@ -32,15 +32,535 @@ namespace gr
{
private:
size_t d_max_frame_len;
- int d_comp_type;
uint16_t d_control_symbol_pos;
uint16_t d_control_symbol_neg;
uint16_t d_data_reg;
- unsigned long long d_wrong_bits, d_wrong_bits_neg;
- unsigned int d_nwrong, d_nwrong_neg;
- uint d_10b_cnt;
+ uint16_t d_wrong_bits, d_wrong_bits_neg;
+ uint8_t d_nwrong, d_nwrong_neg;
+ uint16_t d_10b_cnt;
uint16_t d_word;
+ uint8_t *d_8b_words;
+ uint8_t *d_erasures;
+
+ int d_lookup_8b10b[2][256] =
+ {
+ // RD = -1 cases
+ {
+ /* 00 */0x274,
+ /* 01 */0x1d4,
+ /* 02 */0x2d4,
+ /* 03 */0x71b,
+ /* 04 */0x354,
+ /* 05 */0x69b,
+ /* 06 */0x59b,
+ /* 07 */0x78b,
+ /* 08 */0x394,
+ /* 09 */0x65b,
+ /* 0a */0x55b,
+ /* 0b */0x74b,
+ /* 0c */0x4db,
+ /* 0d */0x6cb,
+ /* 0e */0x5cb,
+ /* 0f */0x174,
+ /* 10 */0x1b4,
+ /* 11 */0x63b,
+ /* 12 */0x53b,
+ /* 13 */0x72b,
+ /* 14 */0x4bb,
+ /* 15 */0x6ab,
+ /* 16 */0x5ab,
+ /* 17 */0x3a4,
+ /* 18 */0x334,
+ /* 19 */0x66b,
+ /* 1a */0x56b,
+ /* 1b */0x364,
+ /* 1c */0x4eb,
+ /* 1d */0x2e4,
+ /* 1e */0x1e4,
+ /* 1f */0x2b4,
+ /* 20 */0x679,
+ /* 21 */0x5d9,
+ /* 22 */0x6d9,
+ /* 23 */0x319,
+ /* 24 */0x759,
+ /* 25 */0x299,
+ /* 26 */0x199,
+ /* 27 */0x389,
+ /* 28 */0x799,
+ /* 29 */0x259,
+ /* 2a */0x159,
+ /* 2b */0x349,
+ /* 2c */0x0d9,
+ /* 2d */0x2c9,
+ /* 2e */0x1c9,
+ /* 2f */0x579,
+ /* 30 */0x5b9,
+ /* 31 */0x239,
+ /* 32 */0x139,
+ /* 33 */0x329,
+ /* 34 */0x0b9,
+ /* 35 */0x2a9,
+ /* 36 */0x1a9,
+ /* 37 */0x7a9,
+ /* 38 */0x739,
+ /* 39 */0x269,
+ /* 3a */0x169,
+ /* 3b */0x769,
+ /* 3c */0x0e9,
+ /* 3d */0x6e9,
+ /* 3e */0x5e9,
+ /* 3f */0x6b9,
+ /* 40 */0x675,
+ /* 41 */0x5d5,
+ /* 42 */0x6d5,
+ /* 43 */0x315,
+ /* 44 */0x755,
+ /* 45 */0x295,
+ /* 46 */0x195,
+ /* 47 */0x385,
+ /* 48 */0x795,
+ /* 49 */0x255,
+ /* 4a */0x155,
+ /* 4b */0x345,
+ /* 4c */0x0d5,
+ /* 4d */0x2c5,
+ /* 4e */0x1c5,
+ /* 4f */0x575,
+ /* 50 */0x5b5,
+ /* 51 */0x235,
+ /* 52 */0x135,
+ /* 53 */0x325,
+ /* 54 */0x0b5,
+ /* 55 */0x2a5,
+ /* 56 */0x1a5,
+ /* 57 */0x7a5,
+ /* 58 */0x735,
+ /* 59 */0x265,
+ /* 5a */0x165,
+ /* 5b */0x765,
+ /* 5c */0x0e5,
+ /* 5d */0x6e5,
+ /* 5e */0x5e5,
+ /* 5f */0x6b5,
+ /* 60 */0x673,
+ /* 61 */0x5d3,
+ /* 62 */0x6d3,
+ /* 63 */0x31c,
+ /* 64 */0x753,
+ /* 65 */0x29c,
+ /* 66 */0x19c,
+ /* 67 */0x38c,
+ /* 68 */0x793,
+ /* 69 */0x25c,
+ /* 6a */0x15c,
+ /* 6b */0x34c,
+ /* 6c */0x0dc,
+ /* 6d */0x2cc,
+ /* 6e */0x1cc,
+ /* 6f */0x573,
+ /* 70 */0x5b3,
+ /* 71 */0x23c,
+ /* 72 */0x13c,
+ /* 73 */0x32c,
+ /* 74 */0x0bc,
+ /* 75 */0x2ac,
+ /* 76 */0x1ac,
+ /* 77 */0x7a3,
+ /* 78 */0x733,
+ /* 79 */0x26c,
+ /* 7a */0x16c,
+ /* 7b */0x763,
+ /* 7c */0x0ec,
+ /* 7d */0x6e3,
+ /* 7e */0x5e3,
+ /* 7f */0x6b3,
+ /* 80 */0x272,
+ /* 81 */0x1d2,
+ /* 82 */0x2d2,
+ /* 83 */0x71d,
+ /* 84 */0x352,
+ /* 85 */0x69d,
+ /* 86 */0x59d,
+ /* 87 */0x78d,
+ /* 88 */0x392,
+ /* 89 */0x65d,
+ /* 8a */0x55d,
+ /* 8b */0x74d,
+ /* 8c */0x4dd,
+ /* 8d */0x6cd,
+ /* 8e */0x5cd,
+ /* 8f */0x172,
+ /* 90 */0x1b2,
+ /* 91 */0x63d,
+ /* 92 */0x53d,
+ /* 93 */0x72d,
+ /* 94 */0x4bd,
+ /* 95 */0x6ad,
+ /* 96 */0x5ad,
+ /* 97 */0x3a2,
+ /* 98 */0x332,
+ /* 99 */0x66d,
+ /* 9a */0x56d,
+ /* 9b */0x362,
+ /* 9c */0x4ed,
+ /* 9d */0x2e2,
+ /* 9e */0x1e2,
+ /* 9f */0x2b2,
+ /* a0 */0x67a,
+ /* a1 */0x5da,
+ /* a2 */0x6da,
+ /* a3 */0x31a,
+ /* a4 */0x75a,
+ /* a5 */0x29a,
+ /* a6 */0x19a,
+ /* a7 */0x38a,
+ /* a8 */0x79a,
+ /* a9 */0x25a,
+ /* aa */0x15a,
+ /* ab */0x34a,
+ /* ac */0x0da,
+ /* ad */0x2ca,
+ /* ae */0x1ca,
+ /* af */0x57a,
+ /* b0 */0x5ba,
+ /* b1 */0x23a,
+ /* b2 */0x13a,
+ /* b3 */0x32a,
+ /* b4 */0x0ba,
+ /* b5 */0x2aa,
+ /* b6 */0x1aa,
+ /* b7 */0x7aa,
+ /* b8 */0x73a,
+ /* b9 */0x26a,
+ /* ba */0x16a,
+ /* bb */0x76a,
+ /* bc */0x0ea,
+ /* bd */0x6ea,
+ /* be */0x5ea,
+ /* bf */0x6ba,
+ /* c0 */0x676,
+ /* c1 */0x5d6,
+ /* c2 */0x6d6,
+ /* c3 */0x316,
+ /* c4 */0x756,
+ /* c5 */0x296,
+ /* c6 */0x196,
+ /* c7 */0x386,
+ /* c8 */0x796,
+ /* c9 */0x256,
+ /* ca */0x156,
+ /* cb */0x346,
+ /* cc */0x0d6,
+ /* cd */0x2c6,
+ /* ce */0x1c6,
+ /* cf */0x576,
+ /* d0 */0x5b6,
+ /* d1 */0x236,
+ /* d2 */0x136,
+ /* d3 */0x326,
+ /* d4 */0x0b6,
+ /* d5 */0x2a6,
+ /* d6 */0x1a6,
+ /* d7 */0x7a6,
+ /* d8 */0x736,
+ /* d9 */0x266,
+ /* da */0x166,
+ /* db */0x766,
+ /* dc */0x0e6,
+ /* dd */0x6e6,
+ /* de */0x5e6,
+ /* df */0x6b6,
+ /* e0 */0x271,
+ /* e1 */0x1d1,
+ /* e2 */0x2d1,
+ /* e3 */0x71e,
+ /* e4 */0x351,
+ /* e5 */0x69e,
+ /* e6 */0x59e,
+ /* e7 */0x78e,
+ /* e8 */0x391,
+ /* e9 */0x65e,
+ /* ea */0x55e,
+ /* eb */0x74e,
+ /* ec */0x4de,
+ /* ed */0x6ce,
+ /* ee */0x5ce,
+ /* ef */0x171,
+ /* f0 */0x1b1,
+ /* f1 */0x637,
+ /* f2 */0x537,
+ /* f3 */0x72e,
+ /* f4 */0x4b7,
+ /* f5 */0x6ae,
+ /* f6 */0x5ae,
+ /* f7 */0x3a1,
+ /* f8 */0x331,
+ /* f9 */0x66e,
+ /* fa */0x56e,
+ /* fb */0x361,
+ /* fc */0x4ee,
+ /* fd */0x2e1,
+ /* fe */0x1e1,
+ /* ff */0x2b1, }, // RD = +1 cases
+ {
+ /* 00 */0x58b,
+ /* 01 */0x62b,
+ /* 02 */0x52b,
+ /* 03 */0x314,
+ /* 04 */0x4ab,
+ /* 05 */0x294,
+ /* 06 */0x194,
+ /* 07 */0x074,
+ /* 08 */0x46b,
+ /* 09 */0x254,
+ /* 0a */0x154,
+ /* 0b */0x344,
+ /* 0c */0x0d4,
+ /* 0d */0x2c4,
+ /* 0e */0x1c4,
+ /* 0f */0x68b,
+ /* 10 */0x64b,
+ /* 11 */0x234,
+ /* 12 */0x134,
+ /* 13 */0x324,
+ /* 14 */0x0b4,
+ /* 15 */0x2a4,
+ /* 16 */0x1a4,
+ /* 17 */0x45b,
+ /* 18 */0x4cb,
+ /* 19 */0x264,
+ /* 1a */0x164,
+ /* 1b */0x49b,
+ /* 1c */0x0e4,
+ /* 1d */0x51b,
+ /* 1e */0x61b,
+ /* 1f */0x54b,
+ /* 20 */0x189,
+ /* 21 */0x229,
+ /* 22 */0x129,
+ /* 23 */0x719,
+ /* 24 */0x0a9,
+ /* 25 */0x699,
+ /* 26 */0x599,
+ /* 27 */0x479,
+ /* 28 */0x069,
+ /* 29 */0x659,
+ /* 2a */0x559,
+ /* 2b */0x749,
+ /* 2c */0x4d9,
+ /* 2d */0x6c9,
+ /* 2e */0x5c9,
+ /* 2f */0x289,
+ /* 30 */0x249,
+ /* 31 */0x639,
+ /* 32 */0x539,
+ /* 33 */0x729,
+ /* 34 */0x4b9,
+ /* 35 */0x6a9,
+ /* 36 */0x5a9,
+ /* 37 */0x059,
+ /* 38 */0x0c9,
+ /* 39 */0x669,
+ /* 3a */0x569,
+ /* 3b */0x099,
+ /* 3c */0x4e9,
+ /* 3d */0x119,
+ /* 3e */0x219,
+ /* 3f */0x149,
+ /* 40 */0x185,
+ /* 41 */0x225,
+ /* 42 */0x125,
+ /* 43 */0x715,
+ /* 44 */0x0a5,
+ /* 45 */0x695,
+ /* 46 */0x595,
+ /* 47 */0x475,
+ /* 48 */0x065,
+ /* 49 */0x655,
+ /* 4a */0x555,
+ /* 4b */0x745,
+ /* 4c */0x4d5,
+ /* 4d */0x6c5,
+ /* 4e */0x5c5,
+ /* 4f */0x285,
+ /* 50 */0x245,
+ /* 51 */0x635,
+ /* 52 */0x535,
+ /* 53 */0x725,
+ /* 54 */0x4b5,
+ /* 55 */0x6a5,
+ /* 56 */0x5a5,
+ /* 57 */0x055,
+ /* 58 */0x0c5,
+ /* 59 */0x665,
+ /* 5a */0x565,
+ /* 5b */0x095,
+ /* 5c */0x4e5,
+ /* 5d */0x115,
+ /* 5e */0x215,
+ /* 5f */0x145,
+ /* 60 */0x18c,
+ /* 61 */0x22c,
+ /* 62 */0x12c,
+ /* 63 */0x713,
+ /* 64 */0x0ac,
+ /* 65 */0x693,
+ /* 66 */0x593,
+ /* 67 */0x473,
+ /* 68 */0x06c,
+ /* 69 */0x653,
+ /* 6a */0x553,
+ /* 6b */0x743,
+ /* 6c */0x4d3,
+ /* 6d */0x6c3,
+ /* 6e */0x5c3,
+ /* 6f */0x28c,
+ /* 70 */0x24c,
+ /* 71 */0x633,
+ /* 72 */0x533,
+ /* 73 */0x723,
+ /* 74 */0x4b3,
+ /* 75 */0x6a3,
+ /* 76 */0x5a3,
+ /* 77 */0x05c,
+ /* 78 */0x0cc,
+ /* 79 */0x663,
+ /* 7a */0x563,
+ /* 7b */0x09c,
+ /* 7c */0x4e3,
+ /* 7d */0x11c,
+ /* 7e */0x21c,
+ /* 7f */0x14c,
+ /* 80 */0x58d,
+ /* 81 */0x62d,
+ /* 82 */0x52d,
+ /* 83 */0x312,
+ /* 84 */0x4ad,
+ /* 85 */0x292,
+ /* 86 */0x192,
+ /* 87 */0x072,
+ /* 88 */0x46d,
+ /* 89 */0x252,
+ /* 8a */0x152,
+ /* 8b */0x342,
+ /* 8c */0x0d2,
+ /* 8d */0x2c2,
+ /* 8e */0x1c2,
+ /* 8f */0x68d,
+ /* 90 */0x64d,
+ /* 91 */0x232,
+ /* 92 */0x132,
+ /* 93 */0x322,
+ /* 94 */0x0b2,
+ /* 95 */0x2a2,
+ /* 96 */0x1a2,
+ /* 97 */0x45d,
+ /* 98 */0x4cd,
+ /* 99 */0x262,
+ /* 9a */0x162,
+ /* 9b */0x49d,
+ /* 9c */0x0e2,
+ /* 9d */0x51d,
+ /* 9e */0x61d,
+ /* 9f */0x54d,
+ /* a0 */0x18a,
+ /* a1 */0x22a,
+ /* a2 */0x12a,
+ /* a3 */0x71a,
+ /* a4 */0x0aa,
+ /* a5 */0x69a,
+ /* a6 */0x59a,
+ /* a7 */0x47a,
+ /* a8 */0x06a,
+ /* a9 */0x65a,
+ /* aa */0x55a,
+ /* ab */0x74a,
+ /* ac */0x4da,
+ /* ad */0x6ca,
+ /* ae */0x5ca,
+ /* af */0x28a,
+ /* b0 */0x24a,
+ /* b1 */0x63a,
+ /* b2 */0x53a,
+ /* b3 */0x72a,
+ /* b4 */0x4ba,
+ /* b5 */0x6aa,
+ /* b6 */0x5aa,
+ /* b7 */0x05a,
+ /* b8 */0x0ca,
+ /* b9 */0x66a,
+ /* ba */0x56a,
+ /* bb */0x09a,
+ /* bc */0x4ea,
+ /* bd */0x11a,
+ /* be */0x21a,
+ /* bf */0x14a,
+ /* c0 */0x186,
+ /* c1 */0x226,
+ /* c2 */0x126,
+ /* c3 */0x716,
+ /* c4 */0x0a6,
+ /* c5 */0x696,
+ /* c6 */0x596,
+ /* c7 */0x476,
+ /* c8 */0x066,
+ /* c9 */0x656,
+ /* ca */0x556,
+ /* cb */0x746,
+ /* cc */0x4d6,
+ /* cd */0x6c6,
+ /* ce */0x5c6,
+ /* cf */0x286,
+ /* d0 */0x246,
+ /* d1 */0x636,
+ /* d2 */0x536,
+ /* d3 */0x726,
+ /* d4 */0x4b6,
+ /* d5 */0x6a6,
+ /* d6 */0x5a6,
+ /* d7 */0x056,
+ /* d8 */0x0c6,
+ /* d9 */0x666,
+ /* da */0x566,
+ /* db */0x096,
+ /* dc */0x4e6,
+ /* dd */0x116,
+ /* de */0x216,
+ /* df */0x146,
+ /* e0 */0x58e,
+ /* e1 */0x62e,
+ /* e2 */0x52e,
+ /* e3 */0x311,
+ /* e4 */0x4ae,
+ /* e5 */0x291,
+ /* e6 */0x191,
+ /* e7 */0x071,
+ /* e8 */0x46e,
+ /* e9 */0x251,
+ /* ea */0x151,
+ /* eb */0x348,
+ /* ec */0x0d1,
+ /* ed */0x2c8,
+ /* ee */0x1c8,
+ /* ef */0x68e,
+ /* f0 */0x64e,
+ /* f1 */0x231,
+ /* f2 */0x131,
+ /* f3 */0x321,
+ /* f4 */0x0b1,
+ /* f5 */0x2a1,
+ /* f6 */0x1a1,
+ /* f7 */0x45e,
+ /* f8 */0x4ce,
+ /* f9 */0x261,
+ /* fa */0x161,
+ /* fb */0x49e,
+ /* fc */0x0e1,
+ /* fd */0x51e,
+ /* fe */0x61e,
+ /* ff */0x54e, } };
+
typedef enum
{
IN_SYNC, DECODING
@@ -50,12 +570,15 @@ namespace gr
public:
decoder_8b10b_impl (const std::string& control_symbol,
- size_t max_frame_len, int comp_type);
+ size_t max_frame_len);
~decoder_8b10b_impl ();
bool
set_access_code (const std::string &access_code);
+ uint8_t
+ process_10b (int write_pos);
+
// Where all the action really happens
int
work (int noutput_items, gr_vector_const_void_star &input_items,