#!/usr/bin/env python

from gnuradio import gr
from gnuradio import audio
import math
import time

def build_graph ():
	sampling_freq = 16000
	frm_payload_len = 200;
	sw_interp = 8
	audio_interp = 1
	data_rate = sampling_freq / audio_interp / sw_interp;
	fs = sampling_freq / audio_interp
	max_deviation = data_rate / 4

	fg = gr.flow_graph()
	src = gr.file_source(gr.sizeof_char, "./data.txt", 0)
	frmer = gr.simple_framer(frm_payload_len)
	enbit = gr.bytes_to_syms()
	
	interp_taps =  gr.firdes.low_pass (sw_interp,      # gain
                                               fs,             # sampling rate
                                               data_rate/ 2 * 1.2, # cutoff
                                               data_rate/2 * 0.4,   # trans width
                                               gr.firdes.WIN_HANN)
	interp = gr.interp_fir_filter_fff (sw_interp, interp_taps)
	
	k = 2 * math.pi * max_deviation / fs
        fmmod = gr.frequency_modulator_fc (k)
	gain = gr.multiply_const_cc (1)
	
	c2f = gr.complex_to_float ()
	
	audio_dst = audio.sink(sampling_freq)
	
	fg.connect(src, frmer, enbit, interp, fmmod, gain, c2f, audio_dst)
	
	return fg

if __name__ == '__main__':
    fg = build_graph ()
    fg.start ()
    raw_input ('Press Enter to quit: ')
    fg.stop ()
