from lbind import IRef, localBind
from fc2 import FC2
from amcomp import AmComp

import sys
import time
import random
#random = random.random()

class Out:
    def __init__(self, name):
        self.iref = IRef(self, ["event"], [])
        self.name = name
    def event(self):
        print "Event sent: %s" % (self.name,)

f = FC2(open("mytest.fc2"))
a = AmComp(f.fc2py)
a.DEBUG = 1

ctrl = IRef(None, [], ["print_state", "run", "stop"])
localBind(ctrl, a.interfaces["a_ctrl"])

pmap = ["+", "-"]
imap = [IRef(None, [], ["event"]), IRef(None, [], ["event"])]
localBind(imap[0], a.interfaces["a_in_on"])
localBind(imap[1], a.interfaces["a_in_off"])

on_out = Out("t_on")
localBind(a.interfaces["a_out_t_on"], on_out.iref)
off_out = Out("t_off")
localBind(a.interfaces["a_out_t_off"], off_out.iref)

ctrl.print_state()
ctrl.run()
start = time.clock()
while (time.clock() - start) < 15.0:
    r = random.randint(0,1)
    sys.stdout.write(pmap[r])
    imap[r].event()
    time.sleep(random.random())
ctrl.stop()
