#!/usr/bin/python
from vesna import alh
from vesna.alh import common
from vesna.alh.signalgenerator import SignalGenerator, SignalGeneratorProgram, TxConfig

from optparse import OptionParser
import sys
import time

def get_neigbors(node):
	neighbors = []

	try:
		r = node.get("radio/neighbors")
	except Exception, e:
		sys.excepthook(*sys.exc_info())
		return neighbors

	for line in r.split("\r\n"):
		fields = line.split(" | ")
		if len(fields) == 6:
			try:
				neighbors.append(int(fields[3]))
			except ValueError:
				pass

	return neighbors

def main():
	parser = OptionParser(usage="%prog [options]")
	common.add_communication_options(parser)

	(options, args) = parser.parse_args()

	coordinator = common.get_coordinator(options)
	coordinator.post("prog/firstcall", "1")

	for node_id in get_neigbors(coordinator):
		node = alh.ALHProxy(coordinator, node_id)
		node.post("prog/firstcall", "1")

		generator = SignalGenerator(node)

		config_list = generator.get_config_list()
		device_config = config_list.get_config(0, 0)

		time_start = time.time() + 1

		generator.program( SignalGeneratorProgram(
			TxConfig(device_config, 127, 0),
			time_start=time_start,
			time_duration=10))

main()
