diff options
author | Joe Zhao <ztuowen@gmail.com> | 2014-05-16 20:16:33 +0800 |
---|---|---|
committer | Joe Zhao <ztuowen@gmail.com> | 2014-05-16 20:16:33 +0800 |
commit | 859179718904a1824082fdbbf77192bd1ce762e7 (patch) | |
tree | 2869db33b8c21416676d6fc01eb65a079c318f83 /startscript.erl | |
download | local-859179718904a1824082fdbbf77192bd1ce762e7.tar.gz local-859179718904a1824082fdbbf77192bd1ce762e7.tar.bz2 local-859179718904a1824082fdbbf77192bd1ce762e7.zip |
First commit
Diffstat (limited to 'startscript.erl')
-rw-r--r-- | startscript.erl | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/startscript.erl b/startscript.erl new file mode 100644 index 0000000..a281211 --- /dev/null +++ b/startscript.erl @@ -0,0 +1,73 @@ +%%%------------------------------------------------------------------- +%%% @author joe +%%% @copyright (C) 2014, <COMPANY> +%%% @doc +%%% +%%% @end +%%% Created : 15. May 2014 下午2:29 +%%%------------------------------------------------------------------- +-module(startscript). +-author("joe"). + +-compile([debug_info,export_all]). +%% API +%% -export([]). + +-include("devicemon.hrl"). + +-define(HBPERIOD,500). +-define(SCANPERIOD,2000). + +busbeater(Pid,Addr) -> + case devicemon:getStaus(Addr) of + error -> + spawnscanner(Addr), + Pid ! {self(),shutdown}; + busy -> ok; + ready -> + case rsbusserv:rsbusreq(Addr,[]) of + {stat,Type,Stat} -> + devicemon ! {self(),reg,Addr,Type,Stat}; + {error,Cause} -> + devicemon ! {self(),dereg,Addr}, + spawnscanner(Addr), + Pid ! {self(),shutdown} + end + end. + +busscanner(Pid,Addr) -> + %% if devicemon:getStat(Addr) + %% Add device status multiplexer here + case devicemon:getStaus(Addr) of + error -> + case rsbusserv:rsbusreq(Addr,[]) of + {stat,Type,Stat} -> + devicemon ! {self(),reg,Addr,Type,Stat}, + spawnbeater(Addr), + Pid ! {self(),shutdown}; + {error,Cause} -> + devicemon ! {self(),dereg,Addr} + end; + _Else -> + spawnbeater(Addr), + Pid ! {self(),shutdown} + end. + +spawnscanner(Addr) -> + eventserv:reg_periodic("Scanner",fun (Pid) -> busscanner(Pid,Addr) end,?SCANPERIOD). +spawnbeater(Addr) -> + eventserv:reg_periodic("Heartbeat",fun (Pid) -> busbeater(Pid,Addr) end,?HBPERIOD). + +runrange(Ed,Ed,Fun) -> + Fun(Ed); +runrange(St,Ed,Fun) -> + Fun(St), + runrange(St+1,Ed,Fun). + +start() -> + Tcp=tcpserv:start(5575), + Rsbus=rsbusserv:start(), + Evserv=eventserv:start(), + Devmon=devicemon:start(), + runrange(1,10,fun (Addr)->spawnscanner(Addr) end). + |