Add minimum frame length on the morse decoder
This commit is contained in:
parent
de05c3f1c4
commit
12a2aa0090
|
@ -1,5 +1,5 @@
|
||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<?grc format='1' created='3.7.10'?>
|
<?grc format='1' created='3.7.11'?>
|
||||||
<flow_graph>
|
<flow_graph>
|
||||||
<timestamp>Fri Jan 22 20:01:21 2016</timestamp>
|
<timestamp>Fri Jan 22 20:01:21 2016</timestamp>
|
||||||
<block>
|
<block>
|
||||||
|
@ -131,6 +131,14 @@
|
||||||
<key>debug_seq</key>
|
<key>debug_seq</key>
|
||||||
<value>"SATNOGS HELLO EARTH WORLD 123456789"</value>
|
<value>"SATNOGS HELLO EARTH WORLD 123456789"</value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>seq_pause_ms</key>
|
||||||
|
<value>1000</value>
|
||||||
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>wpm</key>
|
||||||
|
<value>20</value>
|
||||||
|
</param>
|
||||||
</block>
|
</block>
|
||||||
<block>
|
<block>
|
||||||
<key>satnogs_morse_decoder</key>
|
<key>satnogs_morse_decoder</key>
|
||||||
|
@ -170,6 +178,10 @@
|
||||||
<key>minoutbuf</key>
|
<key>minoutbuf</key>
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
</param>
|
</param>
|
||||||
|
<param>
|
||||||
|
<key>min_frame_len</key>
|
||||||
|
<value>3</value>
|
||||||
|
</param>
|
||||||
<param>
|
<param>
|
||||||
<key>unrecognized_char</key>
|
<key>unrecognized_char</key>
|
||||||
<value>ord('#')</value>
|
<value>ord('#')</value>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<name>Morse Decoder</name>
|
<name>Morse Decoder</name>
|
||||||
<key>satnogs_morse_decoder</key>
|
<key>satnogs_morse_decoder</key>
|
||||||
<import>import satnogs</import>
|
<import>import satnogs</import>
|
||||||
<make>satnogs.morse_decoder($unrecognized_char)</make>
|
<make>satnogs.morse_decoder($unrecognized_char, $min_frame_len)</make>
|
||||||
|
|
||||||
<param>
|
<param>
|
||||||
<name>Unrecognized character</name>
|
<name>Unrecognized character</name>
|
||||||
|
@ -11,6 +11,13 @@
|
||||||
<value>ord('#')</value>
|
<value>ord('#')</value>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
</param>
|
</param>
|
||||||
|
|
||||||
|
<param>
|
||||||
|
<name>Minimum frame length</name>
|
||||||
|
<key>min_frame_len</key>
|
||||||
|
<value>3</value>
|
||||||
|
<type>int</type>
|
||||||
|
</param>
|
||||||
|
|
||||||
|
|
||||||
<sink>
|
<sink>
|
||||||
|
|
|
@ -42,8 +42,10 @@ namespace gr {
|
||||||
* @param unrecognized_char the character that will be placed
|
* @param unrecognized_char the character that will be placed
|
||||||
* in situations where the decoder can not decide which character
|
* in situations where the decoder can not decide which character
|
||||||
* was received.
|
* was received.
|
||||||
|
* @param min_frame_len the minimum frame length in order to reduce
|
||||||
|
* false alarms
|
||||||
*/
|
*/
|
||||||
static sptr make(char unrecognized_char = '#');
|
static sptr make(char unrecognized_char = '#', size_t min_frame_len = 3);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace satnogs
|
} // namespace satnogs
|
||||||
|
|
|
@ -32,10 +32,10 @@ namespace gr
|
||||||
{
|
{
|
||||||
|
|
||||||
morse_decoder::sptr
|
morse_decoder::sptr
|
||||||
morse_decoder::make (char unrecognized_char)
|
morse_decoder::make (char unrecognized_char, size_t min_frame_len)
|
||||||
{
|
{
|
||||||
return gnuradio::get_initial_sptr (
|
return gnuradio::get_initial_sptr (
|
||||||
new morse_decoder_impl (unrecognized_char));
|
new morse_decoder_impl (unrecognized_char, min_frame_len));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -69,9 +69,11 @@ namespace gr
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
str = d_morse_tree.get_word ();
|
str = d_morse_tree.get_word ();
|
||||||
d_morse_tree.reset ();
|
if (str.length () > d_min_frame_len) {
|
||||||
message_port_pub (pmt::mp ("out"),
|
d_morse_tree.reset ();
|
||||||
pmt::make_blob (str.c_str (), str.length ()));
|
message_port_pub (pmt::mp ("out"),
|
||||||
|
pmt::make_blob (str.c_str (), str.length ()));
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case MORSE_INTRA_SPACE:
|
case MORSE_INTRA_SPACE:
|
||||||
/*Ignore it */
|
/*Ignore it */
|
||||||
|
@ -98,10 +100,13 @@ namespace gr
|
||||||
/*
|
/*
|
||||||
* The private constructor
|
* The private constructor
|
||||||
*/
|
*/
|
||||||
morse_decoder_impl::morse_decoder_impl (char unrecognized_char) :
|
morse_decoder_impl::morse_decoder_impl (char unrecognized_char,
|
||||||
|
size_t min_frame_len) :
|
||||||
gr::block ("morse_decoder", gr::io_signature::make (0, 0, 0),
|
gr::block ("morse_decoder", gr::io_signature::make (0, 0, 0),
|
||||||
gr::io_signature::make (0, 0, 0)),
|
gr::io_signature::make (0, 0, 0)),
|
||||||
d_morse_tree (unrecognized_char)
|
d_morse_tree (unrecognized_char),
|
||||||
|
d_min_frame_len (min_frame_len)
|
||||||
|
|
||||||
{
|
{
|
||||||
/* Register the input and output msg handler */
|
/* Register the input and output msg handler */
|
||||||
message_port_register_in (pmt::mp ("in"));
|
message_port_register_in (pmt::mp ("in"));
|
||||||
|
|
|
@ -31,12 +31,13 @@ namespace gr {
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
morse_tree d_morse_tree;
|
morse_tree d_morse_tree;
|
||||||
|
size_t d_min_frame_len;
|
||||||
|
|
||||||
void
|
void
|
||||||
symbol_msg_handler(pmt::pmt_t msg);
|
symbol_msg_handler(pmt::pmt_t msg);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
morse_decoder_impl(char unrecognized_char);
|
morse_decoder_impl(char unrecognized_char, size_t min_frame_len);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue