From 90da960ef362438a9fdea67d3fccee5e09f86874 Mon Sep 17 00:00:00 2001 From: Jacob Gilbert Date: Sat, 13 Dec 2014 10:51:55 -0800 Subject: Slightly reorganized layout of GRC flographs to be consistant with snap-to-grid spacing for GR 3.7.5 --- examples/experimental_receiver_components_test.grc | 2255 +++++--------------- 1 file changed, 508 insertions(+), 1747 deletions(-) (limited to 'examples') diff --git a/examples/experimental_receiver_components_test.grc b/examples/experimental_receiver_components_test.grc index c733858..18747d6 100644 --- a/examples/experimental_receiver_components_test.grc +++ b/examples/experimental_receiver_components_test.grc @@ -1,12 +1,12 @@ - + - Wed Aug 13 14:23:19 2014 + Sat Dec 13 10:45:10 2014 options id - test_rtl_taggery_pythonowe + rtl_grgsm_receiver_experimental _enabled @@ -58,7 +58,7 @@ _coordinate - (10, 10) + (16, 11) _rotation @@ -69,7 +69,7 @@ variable id - samp_rate2 + samp_rate _enabled @@ -77,7 +77,7 @@ value - 13e6/12 + 100e6/100 alias @@ -85,7 +85,7 @@ _coordinate - (21, 245) + (384, 11) _rotation @@ -96,7 +96,7 @@ variable id - samp_rate + samp_rate2 _enabled @@ -104,109 +104,15 @@ value - 100e6/100 - - - alias - - - - _coordinate - (10, 169) - - - _rotation - 0 - - - - blocks_null_sink - - id - blocks_null_sink_0 - - - _enabled - False - - - type - complex - - - vlen - 1 - - - num_inputs - 1 - - - bus_conns - [[0,],] - - - alias - - - - affinity - - - - _coordinate - (927, 140) - - - _rotation - 0 - - - - blocks_tag_debug - - id - blocks_tag_debug_0 - - - _enabled - False - - - type - complex - - - name - - - - filter - "" - - - num_inputs - 1 - - - vlen - 1 - - - display - True + 13e6/12 alias - - affinity - - _coordinate - (1012, 103) + (488, 11) _rotation @@ -245,7 +151,7 @@ _coordinate - (253, 34) + (216, 11) _rotation @@ -304,7 +210,7 @@ _coordinate - (764, 42) + (928, 11) _rotation @@ -315,7 +221,7 @@ variable_qtgui_range id - g + fc _enabled @@ -323,23 +229,23 @@ label - g + fc value - 20 + 938.4e6 start - 0 + 900e6 stop - 100 + 1000e6 step - 1 + 200e3 widget @@ -363,7 +269,7 @@ _coordinate - (619, 45) + (664, 11) _rotation @@ -374,7 +280,7 @@ variable_qtgui_range id - fc + g _enabled @@ -382,23 +288,23 @@ label - fc + g value - 938.4e6 + 20 start - 900e6 + 0 stop - 1000e6 + 100 step - 200e3 + 1 widget @@ -422,7 +328,7 @@ _coordinate - (472, 52) + (808, 11) _rotation @@ -430,26 +336,57 @@ - fractional_resampler_xx + blocks_complex_to_mag id - fractional_resampler_xx_0 + blocks_complex_to_mag_0 _enabled True - type - complex + vlen + 1 - phase_shift + alias + + + + affinity + + + + minoutbuf 0 - resamp_ratio - samp_rate/samp_rate2 + maxoutbuf + 0 + + + _coordinate + (912, 248) + + + _rotation + 0 + + + + gsm_sch_detector + + id + gsm_sch_detector_0 + + + _enabled + True + + + OSR + OSR alias @@ -469,7 +406,7 @@ _coordinate - (417, 249) + (720, 243) _rotation @@ -477,50 +414,57 @@ - low_pass_filter + blocks_complex_to_mag id - low_pass_filter_0 + blocks_complex_to_mag_0_0 _enabled True - type - fir_filter_ccf + vlen + 1 - decim - 1 + alias + - interp - 1 + affinity + - gain - 1 + minoutbuf + 0 - samp_rate - samp_rate + maxoutbuf + 0 - cutoff_freq - 200e3 + _coordinate + (728, 320) - width - 10e3 + _rotation + 0 + + + + gsm_fcch_detector + + id + gsm_fcch_detector_0 - win - firdes.WIN_HAMMING + _enabled + True - beta - 6.76 + OSR + OSR alias @@ -540,7 +484,7 @@ _coordinate - (250, 197) + (504, 243) _rotation @@ -548,10 +492,10 @@ - qtgui_freq_sink_x + qtgui_time_sink_x id - qtgui_freq_sink_x_0 + qtgui_time_sink_x_0 _enabled @@ -559,31 +503,27 @@ type - complex + float name - "" - - - fftsize - 1024 + QT GUI Plot - freqhalf - True + ylabel + Amplitude - wintype - firdes.WIN_BLACKMAN_hARRIS + yunit + "" - fc - 0 + size + int(51*4*8*156.25) - bw - samp_rate + srate + samp_rate2 grid @@ -593,49 +533,53 @@ autoscale False - - average - 1.0 - ymin - -140 + -0.00001 ymax - 10 + 2 nconnections - 1 + 2 update_time - 0.10 + (51.0*4*8*156.25)/samp_rate + + + entags + True gui_hint - showports - True + tr_mode + qtgui.TRIG_MODE_TAG - tr_mode - qtgui.TRIG_MODE_FREE + tr_slope + qtgui.TRIG_SLOPE_POS tr_level 0.0 - tr_chan + tr_delay + 0 + + + tr_chan 0 tr_tag - "" + "fcch" label1 @@ -649,6 +593,14 @@ color1 "blue" + + style1 + 1 + + + marker1 + -1 + alpha1 1.0 @@ -665,6 +617,14 @@ color2 "red" + + style2 + 1 + + + marker2 + -1 + alpha2 1.0 @@ -681,6 +641,14 @@ color3 "green" + + style3 + 1 + + + marker3 + -1 + alpha3 1.0 @@ -697,6 +665,14 @@ color4 "black" + + style4 + 1 + + + marker4 + -1 + alpha4 1.0 @@ -713,6 +689,14 @@ color5 "cyan" + + style5 + 1 + + + marker5 + -1 + alpha5 1.0 @@ -729,6 +713,14 @@ color6 "magenta" + + style6 + 1 + + + marker6 + -1 + alpha6 1.0 @@ -745,6 +737,14 @@ color7 "yellow" + + style7 + 1 + + + marker7 + -1 + alpha7 1.0 @@ -761,6 +761,14 @@ color8 "dark red" + + style8 + 1 + + + marker8 + -1 + alpha8 1.0 @@ -777,6 +785,14 @@ color9 "dark green" + + style9 + 1 + + + marker9 + -1 + alpha9 1.0 @@ -791,7 +807,15 @@ color10 - "dark blue" + "blue" + + + style10 + 1 + + + marker10 + -1 alpha10 @@ -805,17 +829,9 @@ affinity - - minoutbuf - 0 - - - maxoutbuf - 0 - _coordinate - (287, 419) + (1120, 275) _rotation @@ -823,18 +839,26 @@ - blocks_complex_to_mag + fractional_resampler_xx id - blocks_complex_to_mag_0_0 + fractional_resampler_xx_0 _enabled True - vlen - 1 + type + complex + + + phase_shift + 0 + + + resamp_ratio + samp_rate/samp_rate2 alias @@ -854,7 +878,7 @@ _coordinate - (866, 460) + (448, 312) _rotation @@ -862,1846 +886,556 @@ - gsm_fcch_detector + rtlsdr_source id - gsm_fcch_detector_0 + rtlsdr_source_0 _enabled True - OSR - OSR + type + fc32 - alias + args - affinity - + nchan + 1 - minoutbuf - 0 + sample_rate + samp_rate - maxoutbuf - 0 + freq0 + fc - _coordinate - (623, 263) + corr0 + ppm - _rotation + dc_offset_mode0 0 - - - gsm_sch_detector - id - gsm_sch_detector_0 + iq_balance_mode0 + 0 - _enabled - True + gain_mode0 + False - OSR - OSR + gain0 + g - alias - + if_gain0 + 20 - affinity + bb_gain0 + 20 + + + ant0 - minoutbuf - 0 + bw0 + 250e3 - maxoutbuf + freq1 + 100e6 + + + corr1 0 - _coordinate - (818, 263) + dc_offset_mode1 + 0 - _rotation + iq_balance_mode1 0 - - - blocks_complex_to_mag - id - blocks_complex_to_mag_0 + gain_mode1 + False - _enabled - True + gain1 + 10 - vlen - 1 + if_gain1 + 20 - alias - + bb_gain1 + 20 - affinity + ant1 - minoutbuf + bw1 0 - maxoutbuf + freq2 + 100e6 + + + corr2 0 - _coordinate - (968, 267) + dc_offset_mode2 + 0 - _rotation + iq_balance_mode2 0 - - - qtgui_time_sink_x - id - qtgui_time_sink_x_0 + gain_mode2 + False - _enabled - True + gain2 + 10 - type - float + if_gain2 + 20 - name - QT GUI Plot + bb_gain2 + 20 - ylabel - Amplitude + ant2 + - yunit - "" + bw2 + 0 - size - int(51*4*8*156.25) + freq3 + 100e6 - srate - samp_rate2 + corr3 + 0 - grid - False + dc_offset_mode3 + 0 - autoscale - False + iq_balance_mode3 + 0 - ymin - -0.00001 - - - ymax - 2 - - - nconnections - 2 - - - update_time - (51.0*4*8*156.25)/samp_rate - - - entags - True - - - gui_hint - - - - tr_mode - qtgui.TRIG_MODE_TAG - - - tr_slope - qtgui.TRIG_SLOPE_POS - - - tr_level - 0.0 - - - tr_delay - 0 - - - tr_chan - 0 - - - tr_tag - "fcch" - - - label1 - - - - width1 - 1 - - - color1 - "blue" - - - style1 - 1 - - - marker1 - -1 - - - alpha1 - 1.0 - - - label2 - - - - width2 - 1 - - - color2 - "red" - - - style2 - 1 - - - marker2 - -1 - - - alpha2 - 1.0 - - - label3 - - - - width3 - 1 - - - color3 - "green" - - - style3 - 1 - - - marker3 - -1 - - - alpha3 - 1.0 - - - label4 - - - - width4 - 1 - - - color4 - "black" - - - style4 - 1 - - - marker4 - -1 - - - alpha4 - 1.0 - - - label5 - - - - width5 - 1 - - - color5 - "cyan" - - - style5 - 1 - - - marker5 - -1 - - - alpha5 - 1.0 - - - label6 - - - - width6 - 1 - - - color6 - "magenta" - - - style6 - 1 - - - marker6 - -1 - - - alpha6 - 1.0 - - - label7 - - - - width7 - 1 - - - color7 - "yellow" - - - style7 - 1 - - - marker7 - -1 - - - alpha7 - 1.0 - - - label8 - - - - width8 - 1 - - - color8 - "dark red" - - - style8 - 1 - - - marker8 - -1 - - - alpha8 - 1.0 - - - label9 - - - - width9 - 1 - - - color9 - "dark green" - - - style9 - 1 - - - marker9 - -1 - - - alpha9 - 1.0 - - - label10 - - - - width10 - 1 - - - color10 - "blue" - - - style10 - 1 - - - marker10 - -1 - - - alpha10 - 1.0 - - - alias - - - - affinity - - - - _coordinate - (1123, 415) - - - _rotation - 0 - - - - rtlsdr_source - - id - rtlsdr_source_0 - - - _enabled - True - - - type - fc32 - - - args - - - - sync - - - - num_mboards - 1 - - - clock_source0 - - - - time_source0 - - - - clock_source1 - - - - time_source1 - - - - clock_source2 - - - - time_source2 - - - - clock_source3 - - - - time_source3 - - - - clock_source4 - - - - time_source4 - - - - clock_source5 - - - - time_source5 - - - - clock_source6 - - - - time_source6 - - - - clock_source7 - - - - time_source7 - - - - nchan - 1 - - - sample_rate - samp_rate - - - freq0 - fc - - - corr0 - ppm - - - dc_offset_mode0 - 0 - - - iq_balance_mode0 - 0 - - - gain_mode0 - False - - - gain0 - g - - - if_gain0 - 20 - - - bb_gain0 - 20 - - - ant0 - - - - bw0 - 250e3 - - - freq1 - 100e6 - - - corr1 - 0 - - - dc_offset_mode1 - 0 - - - iq_balance_mode1 - 0 - - - gain_mode1 - False - - - gain1 - 10 - - - if_gain1 - 20 - - - bb_gain1 - 20 - - - ant1 - - - - bw1 - 0 - - - freq2 - 100e6 - - - corr2 - 0 - - - dc_offset_mode2 - 0 - - - iq_balance_mode2 - 0 - - - gain_mode2 - False - - - gain2 - 10 - - - if_gain2 - 20 - - - bb_gain2 - 20 - - - ant2 - - - - bw2 - 0 - - - freq3 - 100e6 - - - corr3 - 0 - - - dc_offset_mode3 - 0 - - - iq_balance_mode3 - 0 - - - gain_mode3 - False - - - gain3 - 10 - - - if_gain3 - 20 - - - bb_gain3 - 20 - - - ant3 - - - - bw3 - 0 - - - freq4 - 100e6 - - - corr4 - 0 - - - dc_offset_mode4 - 0 - - - iq_balance_mode4 - 0 - - - gain_mode4 - False - - - gain4 - 10 - - - if_gain4 - 20 - - - bb_gain4 - 20 - - - ant4 - - - - bw4 - 0 - - - freq5 - 100e6 - - - corr5 - 0 - - - dc_offset_mode5 - 0 - - - iq_balance_mode5 - 0 - - - gain_mode5 - False - - - gain5 - 10 - - - if_gain5 - 20 - - - bb_gain5 - 20 - - - ant5 - - - - bw5 - 0 - - - freq6 - 100e6 - - - corr6 - 0 - - - dc_offset_mode6 - 0 - - - iq_balance_mode6 - 0 - - - gain_mode6 - False - - - gain6 - 10 - - - if_gain6 - 20 - - - bb_gain6 - 20 - - - ant6 - - - - bw6 - 0 - - - freq7 - 100e6 - - - corr7 - 0 - - - dc_offset_mode7 - 0 - - - iq_balance_mode7 - 0 - - - gain_mode7 - False - - - gain7 - 10 - - - if_gain7 - 20 - - - bb_gain7 - 20 - - - ant7 - - - - bw7 - 0 - - - freq8 - 100e6 - - - corr8 - 0 - - - dc_offset_mode8 - 0 - - - iq_balance_mode8 - 0 - - - gain_mode8 - False - - - gain8 - 10 - - - if_gain8 - 20 - - - bb_gain8 - 20 - - - ant8 - - - - bw8 - 0 - - - freq9 - 100e6 - - - corr9 - 0 - - - dc_offset_mode9 - 0 - - - iq_balance_mode9 - 0 - - - gain_mode9 - False - - - gain9 - 10 - - - if_gain9 - 20 - - - bb_gain9 - 20 - - - ant9 - - - - bw9 - 0 - - - freq10 - 100e6 - - - corr10 - 0 - - - dc_offset_mode10 - 0 - - - iq_balance_mode10 - 0 - - - gain_mode10 - False - - - gain10 - 10 - - - if_gain10 - 20 - - - bb_gain10 - 20 - - - ant10 - - - - bw10 - 0 - - - freq11 - 100e6 - - - corr11 - 0 - - - dc_offset_mode11 - 0 - - - iq_balance_mode11 - 0 - - - gain_mode11 - False - - - gain11 - 10 - - - if_gain11 - 20 - - - bb_gain11 - 20 - - - ant11 - - - - bw11 - 0 - - - freq12 - 100e6 - - - corr12 - 0 - - - dc_offset_mode12 - 0 - - - iq_balance_mode12 - 0 - - - gain_mode12 - False - - - gain12 - 10 - - - if_gain12 - 20 - - - bb_gain12 - 20 - - - ant12 - - - - bw12 - 0 - - - freq13 - 100e6 - - - corr13 - 0 - - - dc_offset_mode13 - 0 - - - iq_balance_mode13 - 0 - - - gain_mode13 - False - - - gain13 - 10 - - - if_gain13 - 20 - - - bb_gain13 - 20 - - - ant13 - - - - bw13 - 0 - - - freq14 - 100e6 - - - corr14 - 0 - - - dc_offset_mode14 - 0 - - - iq_balance_mode14 - 0 - - - gain_mode14 - False - - - gain14 - 10 - - - if_gain14 - 20 - - - bb_gain14 - 20 - - - ant14 - - - - bw14 - 0 - - - freq15 - 100e6 - - - corr15 - 0 - - - dc_offset_mode15 - 0 - - - iq_balance_mode15 - 0 - - - gain_mode15 - False - - - gain15 - 10 - - - if_gain15 - 20 - - - bb_gain15 - 20 - - - ant15 - - - - bw15 - 0 - - - freq16 - 100e6 - - - corr16 - 0 - - - dc_offset_mode16 - 0 - - - iq_balance_mode16 - 0 - - - gain_mode16 - False - - - gain16 - 10 - - - if_gain16 - 20 - - - bb_gain16 - 20 - - - ant16 - - - - bw16 - 0 - - - freq17 - 100e6 - - - corr17 - 0 - - - dc_offset_mode17 - 0 - - - iq_balance_mode17 - 0 - - - gain_mode17 - False - - - gain17 - 10 - - - if_gain17 - 20 - - - bb_gain17 - 20 - - - ant17 - - - - bw17 - 0 - - - freq18 - 100e6 - - - corr18 - 0 - - - dc_offset_mode18 - 0 - - - iq_balance_mode18 - 0 - - - gain_mode18 - False - - - gain18 - 10 - - - if_gain18 - 20 - - - bb_gain18 - 20 - - - ant18 - - - - bw18 - 0 - - - freq19 - 100e6 - - - corr19 - 0 - - - dc_offset_mode19 - 0 - - - iq_balance_mode19 - 0 - - - gain_mode19 - False - - - gain19 - 10 - - - if_gain19 - 20 - - - bb_gain19 - 20 - - - ant19 - - - - bw19 - 0 - - - freq20 - 100e6 - - - corr20 - 0 - - - dc_offset_mode20 - 0 - - - iq_balance_mode20 - 0 - - - gain_mode20 + gain_mode3 False - gain20 + gain3 10 - if_gain20 + if_gain3 20 - bb_gain20 + bb_gain3 20 - ant20 + ant3 - bw20 + bw3 0 - freq21 + freq4 100e6 - corr21 + corr4 0 - dc_offset_mode21 + dc_offset_mode4 0 - iq_balance_mode21 + iq_balance_mode4 0 - gain_mode21 + gain_mode4 False - gain21 + gain4 10 - if_gain21 + if_gain4 20 - bb_gain21 + bb_gain4 20 - ant21 + ant4 - bw21 - 0 - - - freq22 - 100e6 - - - corr22 - 0 - - - dc_offset_mode22 - 0 - - - iq_balance_mode22 + bw4 0 - gain_mode22 - False - - - gain22 - 10 - - - if_gain22 - 20 - - - bb_gain22 - 20 - - - ant22 + alias - bw22 - 0 - - - freq23 - 100e6 - - - corr23 - 0 - - - dc_offset_mode23 - 0 - - - iq_balance_mode23 - 0 - - - gain_mode23 - False - - - gain23 - 10 - - - if_gain23 - 20 - - - bb_gain23 - 20 - - - ant23 + affinity - bw23 + minoutbuf 0 - freq24 - 100e6 - - - corr24 + maxoutbuf 0 - dc_offset_mode24 - 0 + _coordinate + (16, 235) - iq_balance_mode24 + _rotation 0 + + + low_pass_filter - gain_mode24 - False - - - gain24 - 10 - - - if_gain24 - 20 + id + low_pass_filter_0 - bb_gain24 - 20 + _enabled + True - ant24 - + type + fir_filter_ccf - bw24 - 0 + decim + 1 - freq25 - 100e6 + interp + 1 - corr25 - 0 + gain + 1 - dc_offset_mode25 - 0 + samp_rate + samp_rate - iq_balance_mode25 - 0 + cutoff_freq + 200e3 - gain_mode25 - False + width + 10e3 - gain25 - 10 + win + firdes.WIN_HAMMING - if_gain25 - 20 + beta + 6.76 - bb_gain25 - 20 + alias + - ant25 + affinity - bw25 + minoutbuf 0 - freq26 - 100e6 + maxoutbuf + 0 - corr26 - 0 + _coordinate + (256, 259) - dc_offset_mode26 + _rotation 0 + + + qtgui_freq_sink_x - iq_balance_mode26 - 0 + id + qtgui_freq_sink_x_0 - gain_mode26 - False + _enabled + True - gain26 - 10 + type + complex - if_gain26 - 20 + name + "" - bb_gain26 - 20 + fftsize + 1024 - ant26 - + wintype + firdes.WIN_BLACKMAN_hARRIS - bw26 + fc 0 - freq27 - 100e6 + bw + samp_rate - corr27 - 0 + grid + False - dc_offset_mode27 - 0 + autoscale + False - iq_balance_mode27 - 0 + average + 1.0 - gain_mode27 - False + ymin + -140 - gain27 + ymax 10 - if_gain27 - 20 + nconnections + 1 - bb_gain27 - 20 + update_time + 0.10 - ant27 + gui_hint - bw27 - 0 + showports + True - freq28 - 100e6 + label1 + - corr28 - 0 + width1 + 1 - dc_offset_mode28 - 0 + color1 + "blue" - iq_balance_mode28 - 0 + alpha1 + 1.0 - gain_mode28 - False + label2 + - gain28 - 10 + width2 + 1 - if_gain28 - 20 + color2 + "red" - bb_gain28 - 20 + alpha2 + 1.0 - ant28 + label3 - bw28 - 0 + width3 + 1 - freq29 - 100e6 + color3 + "green" - corr29 - 0 + alpha3 + 1.0 - dc_offset_mode29 - 0 + label4 + - iq_balance_mode29 - 0 + width4 + 1 - gain_mode29 - False + color4 + "black" - gain29 - 10 + alpha4 + 1.0 - if_gain29 - 20 + label5 + - bb_gain29 - 20 + width5 + 1 - ant29 - + color5 + "cyan" - bw29 - 0 + alpha5 + 1.0 - freq30 - 100e6 + label6 + - corr30 - 0 + width6 + 1 - dc_offset_mode30 - 0 + color6 + "magenta" - iq_balance_mode30 - 0 + alpha6 + 1.0 - gain_mode30 - False + label7 + - gain30 - 10 + width7 + 1 - if_gain30 - 20 + color7 + "yellow" - bb_gain30 - 20 + alpha7 + 1.0 - ant30 + label8 - bw30 - 0 + width8 + 1 - freq31 - 100e6 + color8 + "dark red" - corr31 - 0 + alpha8 + 1.0 - dc_offset_mode31 - 0 + label9 + - iq_balance_mode31 - 0 + width9 + 1 - gain_mode31 - False + color9 + "dark green" - gain31 - 10 + alpha9 + 1.0 - if_gain31 - 20 + label10 + - bb_gain31 - 20 + width10 + 1 - ant31 - + color10 + "dark blue" - bw31 - 0 + alpha10 + 1.0 alias @@ -2721,7 +1455,34 @@ _coordinate - (-2, 363) + (256, 163) + + + _rotation + 0 + + + + note + + id + note_0 + + + _enabled + True + + + note + Intentionally avoid gr-gsm input adapter block + + + alias + + + + _coordinate + (424, 411) _rotation @@ -2729,26 +1490,26 @@ - rtlsdr_source_0 - low_pass_filter_0 + blocks_complex_to_mag_0 + qtgui_time_sink_x_0 0 0 - fractional_resampler_xx_0 - gsm_fcch_detector_0 + gsm_sch_detector_0 + blocks_complex_to_mag_0 0 0 - low_pass_filter_0 - fractional_resampler_xx_0 + blocks_complex_to_mag_0_0 + qtgui_time_sink_x_0 0 - 0 + 1 - rtlsdr_source_0 - qtgui_freq_sink_x_0 + gsm_fcch_detector_0 + blocks_complex_to_mag_0_0 0 0 @@ -2759,26 +1520,26 @@ 0 - gsm_fcch_detector_0 - blocks_complex_to_mag_0_0 + fractional_resampler_xx_0 + gsm_fcch_detector_0 0 0 - blocks_complex_to_mag_0_0 - qtgui_time_sink_x_0 + low_pass_filter_0 + fractional_resampler_xx_0 0 - 1 + 0 - gsm_sch_detector_0 - blocks_complex_to_mag_0 + rtlsdr_source_0 + low_pass_filter_0 0 0 - blocks_complex_to_mag_0 - qtgui_time_sink_x_0 + rtlsdr_source_0 + qtgui_freq_sink_x_0 0 0 -- cgit v1.2.3