""" GNU Radio Companion is a graphical interface into the GNU Radio project. Copyright (C) 2007 Josh Blum GNU Radio Companion 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 2 of the License, or (at your option) any later version. GNU Radio Companion 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 this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA """ """ SignalBlockDefs/__init__.py Josh Blum Build a signal block represented by a specific tag. """ from Elements import SignalBlock from DataType import * all_choices = [ ('Complex', Complex()), ('Float', Float()), ('Int', Int()), ('Short', Short()), ('Byte', Byte()),] all_vector_choices = [('Complex Vector', (ComplexVector(), Complex())), ('Float Vector', (FloatVector(), Float())), ('Int Vector', (IntVector(), Int())), ('Short Vector', (ShortVector(), Short())), ('Byte Vector', (ByteVector(), Byte()))] default_samp_rate = '$samp_rate' audio_rates = [('16KHz', int(16e3)), ('22.05KHz', int(22.05e3)), ('24KHz', int(24e3)), ('32KHz', int(32e3)), ('44.1KHz', int(44.1e3)), ('48KHz', int(48e3)),] default_audio_rate_index = 3 import Sources import Sinks import Conversions import Operators import Filters import Modulators import Misc import USRP import Coders import Trellis TAGS = ( ('Sources', [ ('Signal Source', Sources.SignalSource), ('Noise Source', Sources.NoiseSource), ('Vector Source', Sources.VectorSource), ('Random Source', Sources.RandomVector), ('Null Source', Sources.NullSource), ('File Source', Sources.FileSource), ('Audio Source', Sources.AudioSource), ('USRP Source', USRP.USRPSource), ]), ('Sinks', [ ('Scope Sink', Sinks.ScopeSink), ('FFT Sink', Sinks.FFTSink), ('Constellation Sink', Sinks.ConstellationSink), ('Null Sink', Sinks.NullSink), ('File Sink', Sinks.FileSink), ('Audio Sink', Sinks.AudioSink), ('USRP Sink', USRP.USRPSink), ]), ('Operations', [ ('Add Constant', Operators.AddConstant), ('Add Constant Vector', Operators.AddConstantVector), ('Add', Operators.Add), ('Add Vector', Operators.AddVector), ('Subtract', Operators.Subtract), ('Multiply Constant', Operators.MultiplyConstant), ('Multiply Constant Vector', Operators.MultiplyConstantVector), ('Multiply', Operators.Multiply), ('Multiply Vector', Operators.MultiplyVector), ('Divide', Operators.Divide), ('nLog10', Operators.nLog10), ('nLog10 Vector', Operators.nLog10Vector), ]), ('Conversions', [ ('Complex Components', Conversions.ComplexComponents), ('Complex Conjugate', Conversions.ComplexConjugate), ('Float to Complex', Conversions.FloatToComplex), ('Complex to Float', Conversions.ComplexToFloat), ('Float to Short', Conversions.FloatToShort), ('Short to Float', Conversions.ShortToFloat), ('Float to Char', Conversions.FloatToChar), ('Char to Float', Conversions.CharToFloat), ('Float to UChar', Conversions.FloatToUChar), ('UChar to Float', Conversions.UCharToFloat), ('Complex to IShort', Conversions.ComplexToIShort), ('IShort to Complex', Conversions.IShortToComplex), ('Unpacked to Packed', Conversions.UnpackedToPacked), ('Packed to Unpacked', Conversions.PackedToUnpacked), ('Unpack k Bits', Conversions.UnpackKBits), ('Binary Slicer', Conversions.BinarySlicer), ('Chunks to Symbols', Conversions.ChunksToSymbols), ('Chunks to Symbols1', Conversions.ChunksToSymbols1), ('Interleave', Conversions.Interleave), ('Deinterleave', Conversions.Deinterleave), ('Streams to Stream', Conversions.StreamsToStream), ('Stream to Streams', Conversions.StreamToStreams), ('Streams to Vector', Conversions.StreamsToVector), ('Vector to Streams', Conversions.VectorToStreams), ('Stream to Vector', Conversions.StreamToVector), ('Vector to Stream', Conversions.VectorToStream), ]), ('Coders', [('Constellation Decoder', Coders.ConstellationDecoder), ('Differential Encoder', Coders.DifferentialEncoder), ('Differential Decoder', Coders.DifferentialDecoder), ('Differential Phasor', Coders.DifferentialPhasor), ('Coorelate Access Code', Coders.CoorelateAccessCode), ]), ('Filters', [ ('Low Pass Filter', Filters.LowPassFilter), ('High Pass Filter', Filters.HighPassFilter), ('Band Pass Filter', Filters.BandPassFilter), ('Band Reject Filter', Filters.BandRejectFilter), ('Window', Filters.Window), ('Root Raised Cosine', Filters.RootRaisedCosine), ('Single Pole IIR Filter', Filters.SinglePoleIIRFilter), ('Hilbert', Filters.Hilbert), ('Power Squelch', Filters.PowerSquelch), ('Decimate', Filters.Decimate), ('Interpolate', Filters.Interpolate), ('Automatic Gain Control', Filters.AutomaticGainControl), ('CMA Filter', Filters.CMAFilter), ('Costas Loop', Filters.CostasLoop), ('Clock Recovery', Filters.ClockRecovery), ('FFT', Filters.FFT), ('IFFT', Filters.IFFT), ]), ('Modulators', [ ('Frequency Modulation', Modulators.FrequencyModulation), ('Phase Modulation', Modulators.PhaseModulation), ('Quadrature Demodulation', Modulators.QuadratureDemodulation), ('WFM Receive', Modulators.WFMReceive), ('WFM Transmit', Modulators.WFMTransmit), ('NBFM Receive', Modulators.NBFMReceive), ('NBFM Transmit', Modulators.NBFMTransmit), ('AM Demodulation', Modulators.AMDemod), ('FM Demodulation', Modulators.FMDemod), ('PSK Modulation', Modulators.PSKMod), ('PSK Demodulation', Modulators.PSKDemod), ('GMSK Modulation', Modulators.GMSKMod), ('GMSK Demodulation', Modulators.GMSKDemod), ]), ('Misc', [ ('Throttle', Misc.Throttle), ('Head', Misc.Head), ('About', Misc.About), ('Note', Misc.Note), ]), ('Trellis', [ ('Trellis Encoder', Trellis.Encoder), ('Metrics', Trellis.Metrics), ('Viterbi Decoder', Trellis.Viterbi), ('Viterbi Decoder Combined with Metric', Trellis.Viterbi_Combined), ]) ,) def get_signal_block(parent, coor, rot, lookup_tag, id): """ Create a new signal based on a few input parameters. """ sb = SignalBlock(parent, coor, rot, lookup_tag, id) for category, signal_blocks in TAGS: for tag, builder in signal_blocks: if lookup_tag == tag: return builder(sb) raise TagNotFoundException(lookup_tag) # remove the bad tags # for category,tags in TAGS: tags_to_remove = list() for tag in tags: try: get_signal_block(None, (0,0), 0, tag[0], '') except (ImportError, AttributeError), e: print e, " in %s! -> continuing..."%tag[0] tags_to_remove.append(tag) for tag in tags_to_remove: tags.remove(tag) class TagNotFoundException(Exception): def __init__(self, value): self.value = value def __str__(self): return 'Exception! The tag: %s could not be found'%repr(self.value)