new_contents: """
  This is a wrapper for gnu radio generated python script
  
  When heavy computations is done in the same thread as the sending and
  receiving it gets disturbed. This server wraps the gnu radio script in order to
  run the sending and receiving in a separate process. It gives a tcp interface
  to control the parameter of the script during runtime.
  """
  
  import time
  import numpy as np
  import src.ReceiveDictTcp as rdt
  
  from grc.parallel_measurement import parallel_measurement
  top = parallel_measurement()
  
  top.start()
  
  receiver = rdt.ReceiveDictTcp('127.0.0.1', 1112)
  receiver.start()
  
  top.dpd_memless_poly_0.set_a1(1)
  top.dpd_memless_poly_0.set_a2(0.0)
  top.dpd_memless_poly_0.set_a3(0.0)
  top.dpd_memless_poly_0.set_a4(0.0)
  top.dpd_memless_poly_0.set_a5(0.0)
  top.dpd_memless_poly_0.set_a6(0.0)
  top.dpd_memless_poly_0.set_a7(0.0)
  top.dpd_memless_poly_0.set_a8(0.0)
  
  while True:
      d = receiver.queue.get()
      time.sleep(0.01)
  
      print(d)
      k = d.keys()[0]
      if k == "a1":
          print(d)
          top.dpd_memless_poly_0.set_a1(d[k])
      if k == "a2":
          top.dpd_memless_poly_0.set_a2(d[k])
      if k == "a3":
          top.dpd_memless_poly_0.set_a3(d[k])
      if k == "a4":
          top.dpd_memless_poly_0.set_a4(d[k])
      if k == "a5":
          top.dpd_memless_poly_0.set_a5(d[k])
      if k == "a6":
          top.dpd_memless_poly_0.set_a6(d[k])
      if k == "a7":
          top.dpd_memless_poly_0.set_a7(d[k])
      if k == "a8":
          top.dpd_memless_poly_0.set_a8(d[k])
      if k == "txgain":
          top.uhd_usrp_sink_0_0.set_gain(d[k])
      if k == "rxgain":
          top.uhd_usrp_source_0.set_gain(d[k])
      if k == "input_path":
          top.blocks_file_source_0.open(str(d[k]), True)
      if k == "quit":
          break
  
  top.stop()
  top.wait()
  
subject: Add gr_server to wrap gr scripts for live parameter changes