diff --git a/gr-jay/grc/jay_peak_detect.xml b/gr-jay/grc/jay_peak_detect.xml index a23ab2a..8eb14b3 100644 --- a/gr-jay/grc/jay_peak_detect.xml +++ b/gr-jay/grc/jay_peak_detect.xml @@ -74,4 +74,9 @@ float $vlen + + pbox + float + $vlen + diff --git a/gr-jay/lib/peak_detect_impl.cc b/gr-jay/lib/peak_detect_impl.cc index a7cb4ac..19092c2 100644 --- a/gr-jay/lib/peak_detect_impl.cc +++ b/gr-jay/lib/peak_detect_impl.cc @@ -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++;