tree 20eff5f61f6065690eff6306ee5217dc1b0366c5
parent 6c4304da43346150d00b2bdc5a520746c2f45906
author Petter Reinholdtsen <pere@hungry.com> 1503564403 +0200
committer Petter Reinholdtsen <pere@hungry.com> 1503564403 +0200

Restructure grgsm_scanner to allow its reuse from python

Split the main() function into do_scan() and argument_parser() and
move the result printing into a function pointer passed to do_scan().
This allow the scanner to be reused as a library from python.

Here is one way to reuse it:

  import imp
  scanner = imp.load_source('scanner', '/usr/bin/grgsm_scanner')
  (options, args) = scanner.argument_parser().parse_args()
  list = scanner.do_scan(options.samp_rate, options.band, options.speed,
                         options.ppm, options.gain, options.args)
  print list
