3 * Copyright 2002 Free Software Foundation, Inc.
5 * This file is part of GNU Radio
7 * GNU Radio is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
12 * GNU Radio is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with GNU Radio; see the file COPYING. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street,
20 * Boston, MA 02110-1301, USA.
23 #ifndef _GR_CIRCULAR_FILE_H_
24 #define _GR_CIRCULAR_FILE_H_
27 * writes input data into a circular buffer on disk.
29 * the file contains a fixed header:
30 * 0x0000: int32 magic (0xEB021026)
31 * 0x0004: int32 size in bytes of header (constant 4096)
32 * 0x0008: int32 size in bytes of circular buffer (not including header)
33 * 0x000C: int32 file offset to beginning of circular buffer
34 * 0x0010: int32 byte offset from beginning of circular buffer to
35 * current start of data
38 class gr_circular_file {
41 unsigned char *d_buffer;
46 gr_circular_file (const char *filename, bool writable = false, int size = 0);
49 bool write (void *data, int nbytes);
51 // returns # of bytes actually read or 0 if end of buffer, or -1 on error.
52 int read (void *data, int nbytes);
54 // reset read pointer to beginning of buffer.
55 void reset_read_pointer ();
58 #endif /* _GR_CIRCULAR_FILE_H_ */