Commit 7197fcd5 authored by Federico Asara's avatar Federico Asara

Bugfixes and GPL adoption.

parent acbdb473
from Utilities import *
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from Utilities import *
from Item import *
"""This class manages a generic waveform generator."""
"""This class manages a generic ADC.
Please implement all its methods when you are subclassing it. In particular,
you must provide a way to select the sampling frequency among a list of them, a
property with the number of bits and a function that reads data from the ADC."""
class ADC(Item):
def get(self, what):
"""Get an attribute value. Supports Pyro4."""
......@@ -13,7 +24,7 @@ class ADC(Item):
self.__setattr__(what, how)
def clockFrequency():
doc = "Clock frequency used by the ADC"
doc = "Clock frequency used by the ADC."
def fget(self): return 0
def fset(self, value): return
......@@ -21,7 +32,7 @@ class ADC(Item):
@Property
def clockFrequencies():
doc = "Clock frequencies"
doc = "Clock frequencies, in a tuple."
def fget(self): return tuple()
def fset(self, value): return
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from Generator import *
from SineWaveform import SineWaveform
from TTWaveform import TTWaveform
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from Utilities import *
from Item import *
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
"""This class just represent an API item. An item is configurable and has two
methods, get and set, which actually wrap getattribute and setattr."""
class Item(object):
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
import sys
import Pyro4
import Item
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
import Waveform
from Utilities import *
from numpy import *
......
#
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from ctypes import *
from ADC import *
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
import Waveform
from Utilities import *
from numpy import *
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
def Property(func):
return property(**func())
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from numpy import array
from Item import *
"""This class represent a generic waveform."""
"""This class represent a generic waveform.
You must implement the generate and generatePeriod methods in order to subclass
this. Refer to their docstrings."""
class Waveform(Item):
def get(self, what):
"""Get an attribute value. Supports Pyro4."""
......
__author__="Federico"
__date__ ="$Aug 17, 2011 4:43:08 PM$"
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
# PAGE: Python ADC and GEnerators API
......
# To change this template, choose Tools | Templates
# and open the template in the editor.
__author__="Federico Asara"
__date__ ="$Jul 11, 2011 2:39:38 PM$"
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
__doc__= """This module offers the Signal class, which simply store the output
signal of an ADC, fed with a sinewave, with some other useful informations.
It is also capable to reverse incoherent sampling, in order to get more accurate
......
# To change this template, choose Tools | Templates
# and open the template in the editor.
__author__="federico"
__date__ ="$Jul 11, 2011 2:40:18 PM$"
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from numpy import *
from scipy import optimize
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from Signal import *
# For frequency detection and unit-testin
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from Signal import *
def gcd(a, b):
......@@ -90,8 +99,37 @@ class TwoToneSignal(Signal):
N2 = floor(0.5 + 2*pi*self.rate/self.w2)
N0 = lcm(N1, N2)
N = N -(N%N0)
# while (N0 % 2) == 1 and N
N = self.nsamples -(self.nsamples%N0)
if N0 % 2:
print N0, 'is odd'
while ((N/N1 -N/N2) % 2) == 1:
print (N/N1 -N/N2), 'is odd'
N -= N0
else:
print N0, 'is even'
ff = abs(fft.fft(self.fulldata))
lbnd = max(ff) * 10e-12
self.fft = ff = where(ff < lbnd, 10e-12, ff)
hff = ff[:len(ff)/2]
self.lfft = lff = 10*log10(ff)
self.m1 = m1 = argmax(hff);
self.m2 = m2 = argmax(hstack([hff[:m1-1], array([0, 0, 0]), hff[m1+2:]]))
self.tow1 = tow1 = 2*pi*self.rate*float(m1)/self.nsamples
self.tow2 = tow2 = 2*pi*self.rate*float(m2)/self.nsamples
(self.w1, self.a1, self.b1), (self.w2, self.a2, self.b2), self.c0 = \
Sinefit.doubleSinefit4matrix(self.fulldata, self.rate**-1, tow1, tow2)
self.amplitude1 = hypot(self.a1, self.b1)
self.amplitude2 = hypot(self.a2, self.b2)
self.phase1 = arctan2(self.b1, self.a1)
self.phase2 = arctan2(self.b2, self.a2)
delta = abs(self.w1 - self.w2)
......@@ -111,20 +149,4 @@ class TwoToneSignal(Signal):
self.imd = 10*log10(meaningful/interferences)
# fix incoherency
# self.report()
fd = abs(self.w1 + self.w2)/4./pi
print "fd is", fd
wModIndex = self.nsamples * fd / self.rate
print "wModIndex is", wModIndex
factor = (wModIndex -(wModIndex % 2))/wModIndex
limit = floor(self.nsamples*factor)
print "limit is", limit
return
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from ConfigParser import RawConfigParser
from numpy import max, abs, sum, sqrt, log10
from time import time
......
# To change this template, choose Tools | Templates
# and open the template in the editor.
__author__="federico"
__date__ ="$Jul 11, 2011 2:42:12 PM$"
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from numpy import ones, bartlett, blackman, hamming, hanning, kaiser
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from numpy import *
class WindowedSignal:
......
__author__="federico"
__date__ ="$Jul 11, 2011 2:39:08 PM$"
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
import qtGUI as GUI
GUI.start()
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.Qwt5 import *
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from PyQt4.QtCore import *
from PyQt4.QtGui import *
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
from PyQt4.QtCore import *
from PyQt4.QtGui import *
......
__author__="Federico Asara"
__date__ ="$Jul 11, 2011 5:22:02 PM$"
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
def start():
import sys
......
__author__ = "Federico Asara"
__copyright__ = "Copyright 2007, The Cogent Project"
__credits__ = ["Federico Asara", "Juan David Gonzalez Cobas"]
__license__ = "GPL2"
__version__ = "1.0.0"
__maintainer__ = "Federico Asara"
__email__ = "federico.asara@gmail.com"
__status__ = "Production"
import sys
import commands
import PAGE
import PAGE.Agilent33250A, PAGE.Sis33, PAGE.SineWaveform
import Pyro4
print 'Agilent'
agilent = PAGE.Agilent33250A.target()
agilent.device = sys.argv[1]
agSerial = sys.argv[1]
sis33Device = int(sys.argv[2])
agName, sis33name, sineName = 'agilent', 'sis33', 'sine'
print 'Agilent 33250A, via %s: %s' % (agSerial, agName)
agilent = PAGE.Agilent33250A.target(device = agSerial)
agilent.connect()
print 'Sis33'
sis33 = PAGE.Sis33.target(sys.argv[2])
print 'SiS 33xx, via %s: %s' % (sis33Device, sis33Name)
sis33 = PAGE.Sis33.target(index = sis33Device)
print 'Sine'
print 'SineWaveform:', sineName
sine = PAGE.SineWaveform.target()
print 'Daemon'
......@@ -24,7 +36,7 @@ uris = map(daemon.register, (agilent, sis33, sine))
print 'Nameserver'
ns = Pyro4.locateNS()
map(ns.register, ('agilent', 'sis33', 'sine'), uris)
map(ns.register, (agName, sis33Name, sineName), uris)
print 'Run'
daemon.requestLoop()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment