GNU Radio 3.6.2 C++ API
gr_top_block_impl.h
Go to the documentation of this file.
1
/* -*- c++ -*- */
2
/*
3
* Copyright 2007,2008 Free Software Foundation, Inc.
4
*
5
* This file is part of GNU Radio
6
*
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 3, or (at your option)
10
* any later version.
11
*
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.
16
*
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.
21
*/
22
23
#ifndef INCLUDED_GR_TOP_BLOCK_IMPL_H
24
#define INCLUDED_GR_TOP_BLOCK_IMPL_H
25
26
#include <
gr_core_api.h
>
27
#include <
gr_scheduler.h
>
28
#include <
gruel/thread.h
>
29
30
/*!
31
*\brief Abstract implementation details of gr_top_block
32
* \ingroup internal
33
*
34
* The actual implementation of gr_top_block. Separate class allows
35
* decoupling of changes from dependent classes.
36
*
37
*/
38
class
GR_CORE_API
gr_top_block_impl
39
{
40
public
:
41
gr_top_block_impl
(
gr_top_block
*owner);
42
~
gr_top_block_impl
();
43
44
// Create and start scheduler threads
45
void
start(
int
max_noutput_items=100000);
46
47
// Signal scheduler threads to stop
48
void
stop();
49
50
// Wait for scheduler threads to exit
51
void
wait();
52
53
// Lock the top block to allow reconfiguration
54
void
lock();
55
56
// Unlock the top block at end of reconfiguration
57
void
unlock();
58
59
// Dump the flowgraph to stdout
60
void
dump();
61
62
// Get the number of max noutput_items in the flowgraph
63
int
max_noutput_items();
64
65
// Set the maximum number of noutput_items in the flowgraph
66
void
set_max_noutput_items(
int
nmax);
67
68
protected
:
69
70
enum
tb_state
{ IDLE, RUNNING };
71
72
gr_top_block
*
d_owner
;
73
gr_flat_flowgraph_sptr
d_ffg
;
74
gr_scheduler_sptr
d_scheduler
;
75
76
gruel::mutex
d_mutex
;
// protects d_state and d_lock_count
77
tb_state
d_state
;
78
int
d_lock_count
;
79
int
d_max_noutput_items
;
80
81
private
:
82
void
restart();
83
};
84
85
#endif
/* INCLUDED_GR_TOP_BLOCK_IMPL_H */
gnuradio-core
src
lib
runtime
gr_top_block_impl.h
Generated by
1.8.1.2