[Peak Detect]

- added second output

git-svn-id: http://moon:8086/svn/software/trunk/projects/GnuRadio@462 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2019-05-25 08:20:13 +00:00
parent fcbd29eccd
commit 1e0259a4f6
2 changed files with 16 additions and 7 deletions
+5
View File
@@ -74,4 +74,9 @@
<type>float</type>
<vlen>$vlen</vlen>
</source>
<source>
<name>pbox</name>
<type>float</type>
<vlen>$vlen</vlen>
</source>
</block>
+11 -7
View File
@@ -41,7 +41,7 @@ namespace gr {
peak_detect_impl::peak_detect_impl(int vlen, float framerate, float peak_height_min, int peak_width_min, int peak_width_max, float alpha_s, float alpha_m)
: gr::sync_block("peak_detect"
, gr::io_signature::make(1, 1, vlen*sizeof(float))
, gr::io_signature::make(1, 1, vlen*sizeof(float)))
, gr::io_signature::make(2, 2, vlen*sizeof(float)))
, m_framerate (framerate)
, m_peak_height_min (peak_height_min)
, m_peak_width_min (peak_width_min)
@@ -136,10 +136,14 @@ namespace gr {
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
const int DATA = 0;
const int PBOX = 1;
int nitems_per_block = this->output_signature()->sizeof_stream_item(0)/sizeof(float);
float *iptr = (float *)input_items[0];
float *optr = (float *)output_items[0];
float *iptr = (float *)input_items[DATA];
float *optr_data = (float *)output_items[DATA];
float *optr_pbox = (float *)output_items[PBOX];
for (int k = 0; k < noutput_items; k++)
{
@@ -195,7 +199,6 @@ namespace gr {
// Create peak distances by subtracting Xm
float Xd = m_pX[i]-m_pXm[i];
m_pXd[i] = Xd;
// *(optr++) = Xd;
}
// -----------------------------------------------------------------
@@ -360,7 +363,8 @@ namespace gr {
// -----------------------------------------------------------------
for (int i = 0; i < nitems_per_block; i++)
{
*(optr++) = m_pPeakBox_abs[i];
*(optr_data++) = m_pX[i];
*(optr_pbox++) = m_pPeakBox_abs[i];
}
// -----------------------------------------------------------------
@@ -371,10 +375,10 @@ namespace gr {
// Create peak tags
pmt::pmt_t tag_key = pmt::string_to_symbol("id");
pmt::pmt_t tag_value = pmt::from_long(i);
add_item_tag(0, nitems_written(0) + m_pPeakPos_final[i], tag_key, tag_value, m_tag_id);
add_item_tag(DATA, nitems_written(DATA) + m_pPeakPos_final[i], tag_key, tag_value, m_tag_id);
tag_key = pmt::string_to_symbol("pos");
tag_value = pmt::from_long(m_pPeakPos_final[i]);
add_item_tag(0, nitems_written(0) + m_pPeakPos_final[i], tag_key, tag_value, m_tag_id);
add_item_tag(DATA, nitems_written(DATA) + m_pPeakPos_final[i], tag_key, tag_value, m_tag_id);
}
m_frameCount++;