From 9adcb32af31d22a046881f5d690d068e232be773 Mon Sep 17 00:00:00 2001 From: Joe Zhao Date: Mon, 9 Jun 2014 20:24:43 +0800 Subject: Comments & maintenance --- cmdiface.erl | 8 ++++---- devicemon.erl | 9 +++++++-- rsbusserv.erl | 2 +- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/cmdiface.erl b/cmdiface.erl index 3113c03..b44e0f4 100644 --- a/cmdiface.erl +++ b/cmdiface.erl @@ -21,7 +21,7 @@ reg_feedbackOps(Addr,Name,T,MsgReq,MsgRes,To) -> fun () -> rsbusserv ! {devicemon,comm,Addr,[]} end, - Pid = spawn(?MODULE,res_manip,[Init,Exit,To]), + Pid = spawn(?MODULE,res_manip,[Init,Exit,To,[0,Addr,MsgReq]]), Call = fun () -> Pid ! rsbusserv:rsbusreq(Addr,MsgRes) @@ -32,10 +32,10 @@ invoke_cmd(Addr,Name,MsgReq) -> io:format("Command: ~p ~n",[Name]), rsbusserv! {devicemon,comm,Addr,MsgReq}. -res_manip(Init,Exit,To) -> +res_manip(Init,Exit,To,Pre) -> Init(), receive - {stat,_Type,Stat} -> To ! {self(),comm,Stat}; - {error,_Cause} -> ok + {stat,Type,Msg} -> To ! {self(),comm,Pre++[Type]++Msg}; + {error,_Reason} -> ok end, Exit(). \ No newline at end of file diff --git a/devicemon.erl b/devicemon.erl index 703dca5..d56043b 100644 --- a/devicemon.erl +++ b/devicemon.erl @@ -18,7 +18,10 @@ %% API %% -export([]). +%% @todo This module is not fault-safe, abrupt death will halt all operations + -define(QTOUT,100). +-define(STNULL,[0,255,0,0,0]). cleanloop() -> %% Cleanup the message queue -> Don't call it @@ -56,8 +59,10 @@ deviceloop(Devices) -> Pid ! {self(),comm,orddict:fold(fun(Key,Val,Acc) -> [Key,Val#device.type]++Val#device.state++Acc end, [],Devices)}, deviceloop(Devices); {Pid,comm,[0,Addr]} -> % Specific query, this also shouldn't happen. - Dev=orddict:fetch(Addr,Devices), - Pid ! {self(),comm,[Dev#device.type]++Dev#device.state}, + case orddict:find(Addr,Devices) of + error -> Pid ! {self(),comm,[Addr]++?STNULL}; + {ok,Value} -> Pid ! {self(),comm,[Addr,Value#device.type]++Value#device.state} + end, deviceloop(Devices); %% Messages received from rsbus diff --git a/rsbusserv.erl b/rsbusserv.erl index b9eec5b..2753bb0 100644 --- a/rsbusserv.erl +++ b/rsbusserv.erl @@ -19,7 +19,7 @@ -define(DEVICE,"/dev/ttyACM0"). -define(SPEED,9600). --define(TIMEOUT,10). % Timeout in milisec +-define(TIMEOUT,10). % Timeout in milisec -> Also affect slaves' timeslice -define(REQTIMEOUT,1000). -define(STARTBIT,[16#5B,16#AD]). -- cgit v1.2.3-70-g09d2