-- how backwards is this!? We are using tq as faked above for tmr support
-- since it's not obvious to me how to remove pending events in cqueues.
tmr = {}
-tmr.ALARM_AUTO = 0
-function tmr.unregister(self)
+tmr.ALARM_SINGLE = 0
+tmr.ALARM_SEMI = 1
+tmr.ALARM_AUTO = 2
+function tmr._start(self)
+ if self.fn then self.tqe = tq:queue(self.period,self.fn) end
+end
+function tmr.stop(self)
if self.tqe then tq:dequeue(self.tqe); self.tqe = nil end
end
+function tmr.unregister(self)
+ self.fn = nil
+end
function tmr.register(self,period,mode,fn)
- tmr.unregister(self)
+ tmr.stop(self)
- local fnwrap
+ self.period = period
if mode == tmr.ALARM_AUTO then
- -- persist by re-registering after fire
- fnwrap = function() tmr.register(self,period,mode,fn); fn() end
+ self.fn = function() tmr._start(self); fn() end
else
- fnwrap = fn
+ self.fn = fn
end
-
- self.tqe = tq:queue(period,fnwrap)
end
+function tmr.start(self)
+ tmr.stop(self)
+ tmr._start(self)
+end
+tmr_mt = { __index = tmr }
-remotetmr = {}
-remotetmr.tqe = nil
-remotetmr.register = tmr.register
-remotetmr.unregister = tmr.unregister
+remotetmr = setmetatable({}, tmr_mt)
remotefb = {}