aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorVasil Velichkov <vvvelichkov@gmail.com>2018-08-31 00:59:48 +0300
committerPiotr Krysik <ptrkrysik@gmail.com>2018-09-11 09:12:02 +0000
commit75ae9cc3613a8fd6aed168aefb31bc3fdb3d39ad (patch)
tree3c481f51ce672fcb1a3c943741f437b5f643665c /lib
parentfb1f65c572e210e222edef564c6e739bac3f7ec0 (diff)
Format the output into ostringstream and then write it at once.
This fixes the garbled output when multiple printers are used in a flowgraph. closes #255 closes #420 Change-Id: I1012ed26371b4c67163545652f0a1ce0f576af9e
Diffstat (limited to 'lib')
-rw-r--r--lib/misc_utils/bursts_printer_impl.cc20
-rw-r--r--lib/misc_utils/message_printer_impl.cc17
2 files changed, 21 insertions, 16 deletions
diff --git a/lib/misc_utils/bursts_printer_impl.cc b/lib/misc_utils/bursts_printer_impl.cc
index c22e60b..ab9c319 100644
--- a/lib/misc_utils/bursts_printer_impl.cc
+++ b/lib/misc_utils/bursts_printer_impl.cc
@@ -66,48 +66,50 @@ namespace gr {
return;
}
- std::cout << d_prepend_string;
+ std::ostringstream out;
+ out << d_prepend_string;
if (d_prepend_fnr)
{
- std::cout << frame_nr;
+ out << frame_nr;
}
if (d_prepend_fnr && d_prepend_frame_count)
{
- std::cout << " ";
+ out << " ";
}
if (d_prepend_frame_count)
{
// calculate fn count using libosmogsm
- std::cout << osmo_a5_fn_count(frame_nr);
+ out << osmo_a5_fn_count(frame_nr);
}
if (d_prepend_fnr || d_prepend_frame_count)
{
- std::cout << ": ";
+ out << ": ";
}
if (d_print_payload_only)
{
for (int ii=0; ii<57; ii++)
{
- std::cout << std::setprecision(1) << static_cast<int>(burst[ii + 3]);
+ out << std::setprecision(1) << static_cast<int>(burst[ii + 3]);
}
for (int ii=0; ii<57; ii++)
{
- std::cout << std::setprecision(1) << static_cast<int>(burst[ii + 88]);
+ out << std::setprecision(1) << static_cast<int>(burst[ii + 88]);
}
}
else
{
for(int ii=0; ii<burst_len; ii++)
{
- std::cout << std::setprecision(1) << static_cast<int>(burst[ii]);
+ out << std::setprecision(1) << static_cast<int>(burst[ii]);
}
}
- std::cout << std::endl;
+ out << std::endl;
+ std::cout << out.str() << std::flush;
}
bool bursts_printer_impl::is_dummy_burst(int8_t *burst, size_t burst_len)
diff --git a/lib/misc_utils/message_printer_impl.cc b/lib/misc_utils/message_printer_impl.cc
index e8aa2d3..8342946 100644
--- a/lib/misc_utils/message_printer_impl.cc
+++ b/lib/misc_utils/message_printer_impl.cc
@@ -46,26 +46,27 @@ namespace gr {
gsmtap_hdr * header = (gsmtap_hdr *)message_plus_header;
uint32_t frame_nr = be32toh(header->frame_number);
- std::cout << d_prepend_string;
+ std::ostringstream out;
+ out << d_prepend_string;
if (d_prepend_fnr)
{
- std::cout << frame_nr;
+ out << frame_nr;
}
if (d_prepend_fnr && d_prepend_frame_count)
{
- std::cout << " ";
+ out << " ";
}
if (d_prepend_frame_count)
{
// calculate fn count using libosmogsm
- std::cout << osmo_a5_fn_count(frame_nr);
+ out << osmo_a5_fn_count(frame_nr);
}
if (d_prepend_fnr || d_prepend_frame_count)
{
- std::cout << ": ";
+ out << ": ";
}
int start_index = sizeof(gsmtap_hdr);
@@ -77,9 +78,11 @@ namespace gr {
for(int ii=start_index; ii<message_plus_header_len; ii++)
{
- printf(" %02x", message_plus_header[ii]);
+ out<<" "<<(std::hex)<<std::setw(2)<<std::setfill('0')<<(uint32_t)message_plus_header[ii];
}
- std::cout << std::endl;
+
+ out << std::endl;
+ std::cout << out.str() << std::flush;
}
message_printer::sptr