root / README.organization @ 0bf2128a
History | View | Annotate | Download (7.1 kB)
| 1 | 050f4b33 | gdt | [This file is currently not baked and does not claim to represent |
|---|---|---|---|
| 2 | 050f4b33 | gdt | consensus.] |
| 3 | 050f4b33 | gdt | |
| 4 | 0b81b300 | gdt | * Introduction |
| 5 | 0b81b300 | gdt | |
| 6 | 050f4b33 | gdt | This file describes the current organization of the GNU Radio source |
| 7 | 050f4b33 | gdt | tree. It is intended to be both descriptive and normative. |
| 8 | 050f4b33 | gdt | |
| 9 | 0b81b300 | gdt | * Unresolved issues in organization |
| 10 | 0b81b300 | gdt | |
| 11 | 050f4b33 | gdt | The big issues are: |
| 12 | 050f4b33 | gdt | |
| 13 | 050f4b33 | gdt | 1) Should we separate by "code needed to implement protocol/modulation |
| 14 | 050f4b33 | gdt | foo", or related blocks. to (that are therefore not so likely to be |
| 15 | 050f4b33 | gdt | used together). |
| 16 | 050f4b33 | gdt | |
| 17 | 050f4b33 | gdt | 2) How do m-blocks impact organization? If m-blocks are in a separate |
| 18 | 050f4b33 | gdt | module, which seems reasonable, then do we have most modules depend on |
| 19 | 050f4b33 | gdt | m-blocks rather than just core, or do we have two versions of blocks - |
| 20 | 050f4b33 | gdt | the classic continuous block and the m-block wrapped block? If |
| 21 | 050f4b33 | gdt | m-blocks become the main path, what will be less awkward? |
| 22 | 050f4b33 | gdt | |
| 23 | 050f4b33 | gdt | 3) Because some (ADROIT at BBN) have proposed to implement MACs in |
| 24 | 050f4b33 | gdt | click instead of GNU Radio, should we have a clean separation of |
| 25 | 050f4b33 | gdt | MAC/PHY within GNU Radio, to facilitate using MACs implemented in |
| 26 | 050f4b33 | gdt | various places? |
| 27 | 050f4b33 | gdt | |
| 28 | 0b81b300 | gdt | 4) Examples abound, and many are in gnuradio-examples. It might be |
| 29 | 0b81b300 | gdt | better to put examples near the code they use, and to separate useful |
| 30 | 0b81b300 | gdt | programs (like USRP benchmarks) from true examples. Examples should |
| 31 | 0b81b300 | gdt | probably be installed in $prefix/share/examples/gnuradio. |
| 32 | 0b81b300 | gdt | |
| 33 | 0b81b300 | gdt | * Plan (normative) [[NOT BAKED!!! NO CONSENSUS!!!]] |
| 34 | 0b81b300 | gdt | |
| 35 | 0b81b300 | gdt | Create a new module gr-packet, to hold blocks generally relevant to |
| 36 | 0b81b300 | gdt | sending blocks of data. Create subdirectories within gr-packet for |
| 37 | 0b81b300 | gdt | specific protocols (e.g. 802.11, GNU Radio's GMSK "protocol"). |
| 38 | 0b81b300 | gdt | |
| 39 | 0b81b300 | gdt | Convert tunnel.py to be OS-independent and a general source/sink |
| 40 | 0b81b300 | gdt | block, decoupling modulation from OS plumbing. |
| 41 | 0b81b300 | gdt | |
| 42 | 0b81b300 | gdt | * Pointers to code to be integrated |
| 43 | 050f4b33 | gdt | |
| 44 | 050f4b33 | gdt | The immediate question is how to integrate the 802.11 implementation |
| 45 | 0b81b300 | gdt | done by BBN (and assigned to FSF), available at: |
| 46 | 050f4b33 | gdt | |
| 47 | 050f4b33 | gdt | http://acert.ir.bbn.com/viewvc/adroitgrdevel/adroitgrdevel/gr-bbn/ |
| 48 | 050f4b33 | gdt | |
| 49 | 050f4b33 | gdt | This contains blocks at various places in the stack, and gdt believs |
| 50 | 050f4b33 | gdt | that putting them in an 802.11 module will lead to less reuse and less |
| 51 | 050f4b33 | gdt | of a tendency to generalize. |
| 52 | 050f4b33 | gdt | |
| 53 | 0b81b300 | gdt | * Organization of the GNU Radio source tree (mostly descriptive) |
| 54 | 0b81b300 | gdt | |
| 55 | 0b81b300 | gdt | The GNU Radio source tree is rooted at the directory containing this |
| 56 | 0b81b300 | gdt | file; see README for how to get it if you're using a release or |
| 57 | 0b81b300 | gdt | tarball. |
| 58 | 0b81b300 | gdt | |
| 59 | 0b81b300 | gdt | Within this directory, there are a number of subdirectories, most of |
| 60 | 0b81b300 | gdt | which can be enabled or disabled independently. See README for how to |
| 61 | 0b81b300 | gdt | do that; this document is concerned with describing what each module |
| 62 | 0b81b300 | gdt | does enough to help someone who is familiar enough with GNU Radio to |
| 63 | 0b81b300 | gdt | write new code to choose where to put it. The list is not exhaustive. |
| 64 | 0b81b300 | gdt | The description of some modules also lists things that don't belong, |
| 65 | 0b81b300 | gdt | tagged with ?M. |
| 66 | 0b81b300 | gdt | |
| 67 | 0b81b300 | gdt | ** gnuradio-core [foundational code for the rest of GNU Radio] |
| 68 | 0b81b300 | gdt | |
| 69 | 0b81b300 | gdt | (gen_interpolator_taps is not installed. Why? How is it used?) |
| 70 | 0b81b300 | gdt | |
| 71 | 0b81b300 | gdt | doc: glue to use with doxygen |
| 72 | 0b81b300 | gdt | |
| 73 | 0b81b300 | gdt | ?M doc/other/tv-channel-frequencies: (TV specific) |
| 74 | 0b81b300 | gdt | |
| 75 | 0b81b300 | gdt | ?M src/lib/g72x: |
| 76 | 0b81b300 | gdt | G.711 family codec |
| 77 | 0b81b300 | gdt | |
| 78 | 0b81b300 | gdt | src/lib/filter: |
| 79 | 0b81b300 | gdt | implementation and coefficient generation |
| 80 | 0b81b300 | gdt | src/lib/general: |
| 81 | 0b81b300 | gdt | foundational blocks not specific to any technology: |
| 82 | 0b81b300 | gdt | type conversion, {de,}vectorization, add, sub
|
| 83 | 0b81b300 | gdt | rms power, throttle, sources, sinks, squelch base class |
| 84 | 0b81b300 | gdt | |
| 85 | 0b81b300 | gdt | general blocks: |
| 86 | 0b81b300 | gdt | agc, pll, sync, costas loop, power squelch, quadrature demod |
| 87 | 0b81b300 | gdt | |
| 88 | 0b81b300 | gdt | ?M framer/correlator |
| 89 | 0b81b300 | gdt | ?M packet source/sink |
| 90 | 0b81b300 | gdt | |
| 91 | 0b81b300 | gdt | src/lib/io: |
| 92 | 0b81b300 | gdt | basic file io, message io |
| 93 | 0b81b300 | gdt | oscope (trigger support) |
| 94 | 0b81b300 | gdt | i2c bus |
| 95 | 0b81b300 | gdt | ?M microtune eval board (like USRP; should probably have own module) |
| 96 | 0b81b300 | gdt | ?M SDR1000 |
| 97 | 0b81b300 | gdt | |
| 98 | 0b81b300 | gdt | src/lib/omnithread: |
| 99 | 0b81b300 | gdt | portable threading library (for when POSIX isn't portable enough) |
| 100 | 0b81b300 | gdt | |
| 101 | 0b81b300 | gdt | src/lib/reed-solomon: |
| 102 | 0b81b300 | gdt | reed-solomon implementation. Unclear how/whether it's wrapped into |
| 103 | 0b81b300 | gdt | blocks. |
| 104 | 0b81b300 | gdt | |
| 105 | 0b81b300 | gdt | src/lib/runtime: |
| 106 | 0b81b300 | gdt | blocks (basic, hier) and associated buffering |
| 107 | 0b81b300 | gdt | flowgraphs |
| 108 | 0b81b300 | gdt | timers |
| 109 | 0b81b300 | gdt | doubly-mapped circular buffers |
| 110 | 0b81b300 | gdt | |
| 111 | 0b81b300 | gdt | src/lib/swig: |
| 112 | 0b81b300 | gdt | code to wrap the rest in python |
| 113 | 0b81b300 | gdt | ?M atsc.i (cruft? moved?) |
| 114 | 0b81b300 | gdt | |
| 115 | 0b81b300 | gdt | src/python: |
| 116 | 0b81b300 | gdt | build utilities |
| 117 | 0b81b300 | gdt | |
| 118 | 0b81b300 | gdt | src/python/bin: |
| 119 | 0b81b300 | gdt | ?M microtune.py: microtune control program (installed and EXTRA_DIST!) |
| 120 | 0b81b300 | gdt | |
| 121 | 0b81b300 | gdt | src/python/gnuradio: |
| 122 | 0b81b300 | gdt | audio base class |
| 123 | 0b81b300 | gdt | engineering notation support |
| 124 | 0b81b300 | gdt | test harness support |
| 125 | 0b81b300 | gdt | test code (not installed) |
| 126 | 0b81b300 | gdt | basic block/flow_graph |
| 127 | 0b81b300 | gdt | |
| 128 | 0b81b300 | gdt | src/tests: |
| 129 | 0b81b300 | gdt | test code |
| 130 | 0b81b300 | gdt | ?M test_atsc.cc (# in Makefile.am, but still present) |
| 131 | 0b81b300 | gdt | |
| 132 | 0b81b300 | gdt | src/utils: |
| 133 | 0b81b300 | gdt | octave and Scheme scripts (not installed) |
| 134 | 0b81b300 | gdt | |
| 135 | 0b81b300 | gdt | ** usrp |
| 136 | 0b81b300 | gdt | |
| 137 | 0b81b300 | gdt | This contains code to deal with the USRP, but not GNU Radio support. |
| 138 | 0b81b300 | gdt | |
| 139 | 0b81b300 | gdt | ?M fusb |
| 140 | 0b81b300 | gdt | The "fusb" abstraction is arguably useful for all interface devices |
| 141 | 0b81b300 | gdt | that use USB, not just the USRP. |
| 142 | 0b81b300 | gdt | |
| 143 | 0b81b300 | gdt | ** gr-usrp |
| 144 | 0b81b300 | gdt | |
| 145 | 0b81b300 | gdt | Code to use the USRP with GNU Radio. |
| 146 | 0b81b300 | gdt | |
| 147 | 0b81b300 | gdt | ?M Arguably the Gnu Radio/USRP benchmarks belong here, but are in -examples |
| 148 | 0b81b300 | gdt | |
| 149 | 0b81b300 | gdt | ** gr-audio-alsa |
| 150 | 0b81b300 | gdt | ** gr-audio-jack |
| 151 | 0b81b300 | gdt | ** gr-audio-oss |
| 152 | 0b81b300 | gdt | ** gr-audio-osx |
| 153 | 0b81b300 | gdt | ** gr-audio-portaudio |
| 154 | 0b81b300 | gdt | ** gr-audio-windows |
| 155 | 0b81b300 | gdt | [All of these support audio for some particular audio backend. |
| 156 | 0b81b300 | gdt | |
| 157 | 0b81b300 | gdt | ** gr-atsc |
| 158 | 0b81b300 | gdt | ATSC (HDTV) transmitter and receiver. |
| 159 | 0b81b300 | gdt | All blocks seem to be specific to ATSC. |
| 160 | 0b81b300 | gdt | ?M Perhaps some blocks should be abstracted out for reuse with other |
| 161 | 0b81b300 | gdt | than ATSC parameters. |
| 162 | 0b81b300 | gdt | |
| 163 | 0b81b300 | gdt | ** gr-comedi |
| 164 | 0b81b300 | gdt | This module is missing a README that explains what it does. |
| 165 | 0b81b300 | gdt | http://www.comedi.org/ |
| 166 | 0b81b300 | gdt | |
| 167 | 0b81b300 | gdt | ** gr-gsm-fr-vocoder |
| 168 | 0b81b300 | gdt | GSM 06.10 full rate vocoder, and gsm library |
| 169 | 0b81b300 | gdt | (Note that the presence of this argues for moving the G.711 code discussed above.) |
| 170 | 0b81b300 | gdt | |
| 171 | 0b81b300 | gdt | ** gr-pager |
| 172 | 0b81b300 | gdt | POCSAG and FLEX |
| 173 | 0b81b300 | gdt | (gdt suspects there are blocks in here that could be generalized.) |
| 174 | 0b81b300 | gdt | |
| 175 | 0b81b300 | gdt | ** gr-radio-astronomy |
| 176 | 0b81b300 | gdt | seems to use only standard blocks from python |
| 177 | 0b81b300 | gdt | |
| 178 | 0b81b300 | gdt | ** gr-trellis |
| 179 | 0b81b300 | gdt | This module provides trellis code support, and appears generic. |
| 180 | 0b81b300 | gdt | |
| 181 | 0b81b300 | gdt | ** gr-video-sdl |
| 182 | 0b81b300 | gdt | This appears to be like the audio modules, but for video and |
| 183 | 0b81b300 | gdt | specifically for SDL. Unlike audio which has a base class, there |
| 184 | 0b81b300 | gdt | does not appear to be an abstract video class in gnuradio-core. |
| 185 | 0b81b300 | gdt | |
| 186 | 0b81b300 | gdt | ** gr-wxgui |
| 187 | 0b81b300 | gdt | Support for using wxwidgets from python. |
| 188 | 0b81b300 | gdt | ?M (Linux-specific??) code to use the Griffin Powermate (and hook it to a GUI) |
| 189 | 0b81b300 | gdt | glue to connect FFT and scope to gui |
| 190 | 0b81b300 | gdt | |
| 191 | 0b81b300 | gdt | ** pmt |
| 192 | 0b81b300 | gdt | polymorphic types (building block) |
| 193 | 0b81b300 | gdt | |
| 194 | 0b81b300 | gdt | ** mblock |
| 195 | 0b81b300 | gdt | Message block implementation. |
| 196 | 0b81b300 | gdt | Note that mblock being a module means that signal processing blocks |
| 197 | 0b81b300 | gdt | that are mblock-aware must depend on this module and thus probably |
| 198 | 0b81b300 | gdt | cannot be in gnuradio-core. Thus, m-block wrappers for the blocks |
| 199 | 0b81b300 | gdt | in gnuradio-core must be elsewhere and it is maybe a good idea to |
| 200 | 0b81b300 | gdt | move them to someplace like gnuradio-common where the streaming and |
| 201 | 0b81b300 | gdt | m-block versions can be together. |
| 202 | 0b81b300 | gdt | |
| 203 | 0b81b300 | gdt | ** ezdop |
| 204 | 0b81b300 | gdt | Code to deal with the ezdop direction-finding hardware. |
| 205 | 0b81b300 | gdt | |
| 206 | 0b81b300 | gdt | ** gr-ezdop |
| 207 | 0b81b300 | gdt | Glue code to use the ezdop from GNU Radio. |
| 208 | 0b81b300 | gdt | |
| 209 | 0b81b300 | gdt | ** gr-rdf |
| 210 | 0b81b300 | gdt | (Currently empty) code to perform direction finding. |
| 211 | 0b81b300 | gdt | |
| 212 | 0b81b300 | gdt | ** gnuradio-examples |
| 213 | 0b81b300 | gdt | |
| 214 | 0b81b300 | gdt | It's arguable that all of these are misplaced, and that examples |
| 215 | 0b81b300 | gdt | belong with the code that they use. |
| 216 | 0b81b300 | gdt | |
| 217 | 0b81b300 | gdt | Bona fide examples (code not intended to be useful except for reading): |
| 218 | 0b81b300 | gdt | c++/dial_tone (how to do things only in C++) |
| 219 | 0b81b300 | gdt | python/audio |
| 220 | 0b81b300 | gdt | |
| 221 | 0b81b300 | gdt | Test programs: |
| 222 | 0b81b300 | gdt | python/channel-coding |
| 223 | 0b81b300 | gdt | python/digital-voice |
| 224 | 0b81b300 | gdt | python/multi-antenna (?) |
| 225 | 0b81b300 | gdt | |
| 226 | 0b81b300 | gdt | Programs in between test and useful: |
| 227 | 0b81b300 | gdt | python/digital |
| 228 | 0b81b300 | gdt | ?M tunnel.py: glue to get packets to Linux, conflates modulation |
| 229 | 0b81b300 | gdt | and packet handling |
| 230 | 0b81b300 | gdt | python/multi_usrp |
| 231 | 0b81b300 | gdt | python/networking/measurement_slave (goes with what?) |
| 232 | 0b81b300 | gdt | |
| 233 | 0b81b300 | gdt | ?M Programs intended to be useful |
| 234 | 0b81b300 | gdt | python/apps/hf_{explorer,radio}
|
| 235 | 0b81b300 | gdt | |
| 236 | 0b81b300 | gdt | ?M Kitchen sink: |
| 237 | 0b81b300 | gdt | python/usrp |
| 238 | 0b81b300 | gdt | benchmarks, test, basic fm/wfm/tv receivers, spectrum sensing, |
| 239 | 0b81b300 | gdt | fft, oscope |