diff --git a/lib/cw_to_symbol_impl.cc b/lib/cw_to_symbol_impl.cc
index 7eebb0e..c2ad18e 100644
--- a/lib/cw_to_symbol_impl.cc
+++ b/lib/cw_to_symbol_impl.cc
@@ -91,10 +91,10 @@ namespace gr
* a false alarm. As we use the window size for setting the history
* it should have a reasonably size.
*/
- size_t i = 10;
+ size_t i = 1;
d_window_size = d_dot_samples / i;
- while(d_window_size > 200) {
- i += 10;
+ while(d_window_size > 256) {
+ i++;
d_window_size = d_dot_samples / i;
}
@@ -103,6 +103,9 @@ namespace gr
d_window_size++;
}
+ LOG_DEBUG("Dot samples: %lu", d_dot_samples);
+ LOG_DEBUG("Window size: %lu", d_window_size);
+
/* Set the duration of each symbol in multiples of the window size */
d_dot_windows_num = d_dot_samples / d_window_size;
d_dash_windows_num = 3 * d_dot_windows_num;
diff --git a/lib/morse_decoder_impl.cc b/lib/morse_decoder_impl.cc
index 0e4e543..75d6b1c 100644
--- a/lib/morse_decoder_impl.cc
+++ b/lib/morse_decoder_impl.cc
@@ -41,7 +41,7 @@ namespace gr
void
morse_decoder_impl::symbol_msg_handler (pmt::pmt_t msg)
{
- bool res;
+ bool res = false;
std::string str;
morse_symbol_t s;
s = (morse_symbol_t) pmt::to_long (msg);
@@ -85,16 +85,14 @@ namespace gr
* If the decoding return false, it means that either an non decode-able
* character situation occurred or the maximum word limit reached
*/
- if (!s) {
+ if (!res) {
if (d_morse_tree.get_max_word_len () == d_morse_tree.get_word_len ()) {
str = d_morse_tree.get_word ();
d_morse_tree.reset ();
- std::cout << "Received word: " << str << std::endl;
+ message_port_pub (pmt::mp ("out"),
+ pmt::make_blob (str.c_str (), str.length ()));
}
}
- else {
- LOG_DEBUG("Something went wrong");
- }
}
/*
diff --git a/lib/morse_tree.cc b/lib/morse_tree.cc
index b4bf901..ce08a00 100644
--- a/lib/morse_tree.cc
+++ b/lib/morse_tree.cc
@@ -2,7 +2,8 @@
/*
* gr-satnogs: SatNOGS GNU Radio Out-Of-Tree Module
*
- * Copyright (C) 2016, Libre Space Foundation
+ * Copyright (C) 2016,2017
+ * Libre Space Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -36,12 +37,12 @@ namespace gr
* Constructs a Morse code tree for Morse code decoding
*/
morse_tree::morse_tree () :
- d_unrecognized_symbol('#'),
- d_root (new tree_node(0)),
- d_current (d_root),
- d_buff_len(4096),
- d_word_len(0),
- d_word_buffer(new char[d_buff_len])
+ d_unrecognized_symbol ('#'),
+ d_root (new tree_node (0)),
+ d_current (d_root),
+ d_buff_len (4096),
+ d_word_len (0),
+ d_word_buffer (new char[d_buff_len])
{
construct_tree ();
}
@@ -52,12 +53,12 @@ namespace gr
* in the place of unrecognized symbols
*/
morse_tree::morse_tree (char unrecognized) :
- d_unrecognized_symbol(unrecognized),
- d_root (new tree_node(0)),
- d_current (d_root),
- d_buff_len(4096),
- d_word_len(0),
- d_word_buffer(new char[d_buff_len])
+ d_unrecognized_symbol (unrecognized),
+ d_root (new tree_node (0)),
+ d_current (d_root),
+ d_buff_len (4096),
+ d_word_len (0),
+ d_word_buffer (new char[d_buff_len])
{
construct_tree ();
}
@@ -200,46 +201,46 @@ namespace gr
bool ret = false;
/* Check for overflow */
if (d_word_len == d_buff_len) {
- return false;
+ return false;
}
switch (s)
- {
- case MORSE_DOT:
- if (d_current->get_left_child ()) {
- d_current = d_current->get_left_child ();
- ret = true;
- }
- break;
- case MORSE_DASH:
- if (d_current->get_right_child ()) {
- d_current = d_current->get_right_child ();
- ret = true;
- }
- break;
- case MORSE_S_SPACE:
- /*
- * A short space received, but the decoder is still at the root.
- * This is not in general an error so we return true
- */
- if(d_current == d_root){
- return true;
- }
- c = d_current->get_char ();
- d_current = d_root;
- /*
- * Some nodes are null transitions and do not correspond to
- * a specific character
- */
- if (c != 0) {
- d_word_buffer[d_word_len] = c;
- d_word_len++;
- ret = true;
- }
- break;
- default:
- LOG_ERROR("Unsupported Morse symbol");
- return false;
- }
+ {
+ case MORSE_DOT:
+ if (d_current->get_left_child ()) {
+ d_current = d_current->get_left_child ();
+ ret = true;
+ }
+ break;
+ case MORSE_DASH:
+ if (d_current->get_right_child ()) {
+ d_current = d_current->get_right_child ();
+ ret = true;
+ }
+ break;
+ case MORSE_S_SPACE:
+ /*
+ * A short space received, but the decoder is still at the root.
+ * This is not in general an error so we return true
+ */
+ if (d_current == d_root) {
+ return true;
+ }
+ c = d_current->get_char ();
+ d_current = d_root;
+ /*
+ * Some nodes are null transitions and do not correspond to
+ * a specific character
+ */
+ if (c != 0) {
+ d_word_buffer[d_word_len] = c;
+ d_word_len++;
+ ret = true;
+ }
+ break;
+ default:
+ LOG_ERROR("Unsupported Morse symbol");
+ return false;
+ }
return ret;
}
@@ -265,7 +266,7 @@ namespace gr
morse_tree::delete_tree (tree_node *node)
{
if (!node) {
- return;
+ return;
}
delete_tree (node->get_left_child ());
delete_tree (node->get_right_child ());
@@ -273,7 +274,9 @@ namespace gr
}
tree_node::tree_node (char c) :
- d_char (c), d_left (NULL), d_right (NULL)
+ d_char (c),
+ d_left (NULL),
+ d_right (NULL)
{
}