[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Patch-gnuradio] gr_sig_source_X phase
From: |
Patrick Strasser |
Subject: |
[Patch-gnuradio] gr_sig_source_X phase |
Date: |
Tue, 06 Mar 2007 18:57:44 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.6) Gecko/20050602 Thunderbird/1.0.2 Mnenhy/0.7.2.0 |
Hello!
Added phase parameter to gr_sig_source_X. This should be compatible with
Josh Blum's new wave forms.
Phase is in radians, like in the NCO.
Patrick
--
Engineers motto: cheap, good, fast: choose any two
Patrick Strasser <patrick dot strasser at tugraz dot at>
Student of Telematik, Techn. University Graz, Austria
Index: gr_sig_source_X.cc.t
===================================================================
--- gr_sig_source_X.cc.t (revision 4483)
+++ gr_sig_source_X.cc.t (working copy)
@@ -33,21 +33,21 @@
@NAME@::@NAME@ (double sampling_freq, gr_waveform_t waveform,
- double frequency, double ampl, @TYPE@ offset)
+ double frequency, double ampl, @TYPE@ offset, double phase)
: gr_sync_block ("@BASE_NAME@",
gr_make_io_signature (0, 0, 0),
gr_make_io_signature (1, 1, sizeof (@TYPE@))),
d_sampling_freq (sampling_freq), d_waveform (waveform), d_frequency
(frequency),
- d_ampl (ampl), d_offset (offset)
+ d_ampl (ampl), d_offset (offset), d_phase (phase)
{
d_nco.set_freq (2 * M_PI * d_frequency / d_sampling_freq);
}
@address@hidden
address@hidden@ (double sampling_freq, gr_waveform_t waveform,
- double frequency, double ampl, @TYPE@ offset)
+ double frequency, double ampl, @TYPE@ offset, double phase)
{
- return @address@hidden (new @NAME@ (sampling_freq, waveform, frequency,
ampl, offset));
+ return @address@hidden (new @NAME@ (sampling_freq, waveform, frequency,
ampl, offset, phase));
}
int
@@ -147,3 +147,12 @@
d_offset = offset;
}
+void
address@hidden@::set_phase (double phase)
+{
+ double diff_phase = phase - d_phase;
+ d_phase = fmod ((d_phase + diff_phase), M_PI);
+ // We want an absolute phase, gr_fxt_nco has only relative phase
+ // thus we adjust the phase of the running NCO
+ d_nco.adjust_phase (diff_phase);
+}
Index: gr_sig_source_X.h.t
===================================================================
--- gr_sig_source_X.h.t (revision 4483)
+++ gr_sig_source_X.h.t (working copy)
@@ -40,18 +40,19 @@
class @NAME@ : public gr_sync_block {
friend @address@hidden
address@hidden@ (double sampling_freq, gr_waveform_t waveform,
- double frequency, double ampl, @TYPE@ offset);
+ double frequency, double ampl, @TYPE@ offset, double
phase);
double d_sampling_freq;
gr_waveform_t d_waveform;
double d_frequency;
double d_ampl;
@TYPE@ d_offset;
+ double d_phase; /// Phase offset in radians
gr_fxpt_nco d_nco;
@NAME@ (double sampling_freq, gr_waveform_t waveform,
- double wave_freq, double ampl, @TYPE@ offset);
+ double wave_freq, double ampl, @TYPE@ offset, double phase);
public:
virtual int work (int noutput_items,
@@ -64,6 +65,7 @@
double frequency () const { return d_frequency; }
double amplitude () const { return d_ampl; }
@TYPE@ offset () const { return d_offset; }
+ double phase () const {return d_phase; }
// MANIPULATORS
void set_sampling_freq (double sampling_freq);
@@ -71,11 +73,12 @@
void set_frequency (double frequency);
void set_amplitude (double ampl);
void set_offset (@TYPE@ offset);
+ void set_phase (double phase);
};
@address@hidden
address@hidden@ (double sampling_freq, gr_waveform_t waveform,
- double wave_freq, double ampl, @TYPE@ offset = 0);
+ double wave_freq, double ampl, @TYPE@ offset = 0, double
phase = 0);
#endif
Index: gr_sig_source_X.i.t
===================================================================
--- gr_sig_source_X.i.t (revision 4483)
+++ gr_sig_source_X.i.t (working copy)
@@ -26,13 +26,13 @@
@address@hidden
address@hidden@ (double sampling_freq, gr_waveform_t waveform,
- double wave_freq, double ampl, @TYPE@ offset = 0);
+ double wave_freq, double ampl, @TYPE@ offset = 0, double
phase = 0);
class @NAME@ : public gr_sync_block {
private:
@NAME@ (double sampling_freq, gr_waveform_t waveform,
- double wave_freq, double ampl, @TYPE@ offset);
+ double wave_freq, double ampl, @TYPE@ offset, double phase);
public:
@@ -42,6 +42,7 @@
double frequency () const { return d_frequency; }
double amplitude () const { return d_ampl; }
@TYPE@ offset () const { return d_offset; }
+ double phase () const { return d_phase; }
// MANIPULATORS
void set_sampling_freq (double sampling_freq);
@@ -49,4 +50,5 @@
void set_frequency (double frequency);
void set_amplitude (double ampl);
void set_offset (@TYPE@ offset);
+ void set_phase (double phase);
};
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Patch-gnuradio] gr_sig_source_X phase,
Patrick Strasser <=