diff options
author | Johnathan Corgan | 2010-05-11 18:00:19 -0700 |
---|---|---|
committer | Johnathan Corgan | 2010-05-11 18:00:19 -0700 |
commit | c1c29651e8a13c090228723684d6f693a6ae8c34 (patch) | |
tree | 7f38fa94a51e68be60243e5a2bd3bb3acc1e700d /gnuradio-core/src/lib/io/gri_logger.cc | |
parent | c76897abcbfe1c149bffd27fba0224d3ebc83503 (diff) | |
parent | 1fc7c57f778a9f05ded1d216247242ee13632d03 (diff) | |
download | gnuradio-c1c29651e8a13c090228723684d6f693a6ae8c34.tar.gz gnuradio-c1c29651e8a13c090228723684d6f693a6ae8c34.tar.bz2 gnuradio-c1c29651e8a13c090228723684d6f693a6ae8c34.zip |
Merge branch 'master' into wip/burx_support
* master: (39 commits)
Add gru.hexshort to deal with short hex constants
Assign USB PID for Hans de Bok
Add missing buffer allocator hint to gr_ofdm_sampler.cc
Really fix the missing include for boost::bind
gr-wxgui: Added additional color table entries
Missed updates for omnithread/mblock removal
Remove omnithreads library.
Remove mblock library. We hardly knew 'ye.
Convert gr-audio-portaudio to Boost via gruel
Further updates for removing omnithreads
Update build configuration for OSX omnithreads changeover
Add missing include file for boost::bind
Convert gcell to use boost::threads instead of omnithread.
Fix sequence error indication after stopping then restarting streaming on USRP2.
initial move from mld_threads to gruel:: namespace threads and such
Initial changes to remove mld_thread and instead use gruel:: namespace classes
Fixing doxygen warnings from arb_resampler. Also, removed set_taps from public
Fixing doxygen warnings from channelizer block.
Fixing documentation to get rid of doxygen warnings.
Adding documentation for fff version of othe PFB clock sync algorithm.
...
Diffstat (limited to 'gnuradio-core/src/lib/io/gri_logger.cc')
-rw-r--r-- | gnuradio-core/src/lib/io/gri_logger.cc | 178 |
1 files changed, 0 insertions, 178 deletions
diff --git a/gnuradio-core/src/lib/io/gri_logger.cc b/gnuradio-core/src/lib/io/gri_logger.cc deleted file mode 100644 index 473a7c5ed..000000000 --- a/gnuradio-core/src/lib/io/gri_logger.cc +++ /dev/null @@ -1,178 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2006,2009 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#if 0 // This needs reimplementation with boost threads and synchronization - -#include <gri_logger.h> -#include <stdio.h> -#include <stdarg.h> -#include <stdexcept> -#include <boost/weak_ptr.hpp> -#include <string.h> - - -/* - * This class creates the thread that reads from the ringbuffer and - * and writes to the file. This is opaque to the user. - */ -class gri_log_poster : public omni_thread -{ - FILE *d_fp; - gr_buffer_sptr d_writer; - gr_buffer_reader_sptr d_reader; - omni_semaphore d_ringbuffer_ready; - volatile bool d_time_to_die; - volatile bool d_writer_overrun; - - virtual void* run_undetached(void * arg); - -public: - gri_log_poster(const char *filename); - ~gri_log_poster(); - - void kill() { d_time_to_die = true; post(); } - gr_buffer_sptr writer() const { return d_writer; } - void post() { d_ringbuffer_ready.post(); } - void note_writer_overrun() { d_writer_overrun = true; } -}; - -gri_log_poster::gri_log_poster(const char *filename) - : omni_thread(), - d_ringbuffer_ready(1, 1), // binary semaphore - d_time_to_die(false), - d_writer_overrun(false) -{ - if ((d_fp = fopen(filename, "w")) == 0){ - perror (filename); - throw std::runtime_error("can't open file"); - } - - // Create a 1MB buffer. - d_writer = gr_make_buffer(1 * 1024 * 1024, sizeof(unsigned char)); - d_reader = gr_buffer_add_reader(d_writer, 0); - - start_undetached(); // start the thread -} - -gri_log_poster::~gri_log_poster() -{ - if (d_fp != 0){ - fclose(d_fp); - d_fp = 0; - } -} - -/* - * This is the body of the logging thread. - */ -void * -gri_log_poster::run_undetached(void *arg) -{ - int nbytes; - - //fprintf(stderr, "Enter: run_undetached!\n"); - - while (!d_time_to_die){ - while ((nbytes = d_reader->items_available()) > 0){ - fwrite(d_reader->read_pointer(), 1, nbytes, d_fp); - d_reader->update_read_pointer(nbytes); - } - fflush(d_fp); - d_ringbuffer_ready.wait(); - - if (d_writer_overrun){ - fputs(">>>>> gri_logger: writer overrun. Info lost <<<<<\n", d_fp); - d_writer_overrun = false; - } - } - - // fprintf(stderr, "Exit: run_undetached!\n"); - return 0; -} - -// ------------------------------------------------------------------------ - -static boost::weak_ptr<gri_logger> s_singleton; // weak pointer IQ test ;-) -static omni_mutex s_singleton_mutex; - -gri_logger_sptr -gri_logger::singleton() -{ - omni_mutex_lock l(s_singleton_mutex); - gri_logger_sptr r; - - if (r = s_singleton.lock()) - return r; - - r = gri_logger_sptr(new gri_logger("gri_logger.log")); - s_singleton = r; - return r; -} - - -gri_logger::gri_logger(const char *filename) -{ - d_poster = new gri_log_poster(filename); -} - -gri_logger::~gri_logger() -{ - d_poster->kill(); - d_poster->join(NULL); -} - -void -gri_logger::write(const void *buf, size_t count) -{ - omni_mutex_lock l(d_write_mutex); - gr_buffer_sptr writer = d_poster->writer(); - - // either write it all, or drop it on the ground - if (count <= (size_t) writer->space_available()){ - memcpy(writer->write_pointer(), buf, count); - writer->update_write_pointer(count); - d_poster->post(); - } - else { - d_poster->note_writer_overrun(); - } -} - -void -gri_logger::printf(const char *format, ...) -{ - va_list ap; - char buf[4096]; - int n; - - va_start(ap, format); - n = vsnprintf(buf, sizeof(buf), format, ap); - va_end(ap); - if (n > -1 && n < (ssize_t) sizeof(buf)) - write(buf, n); -} - -#endif |