简化逻辑
This commit is contained in:
parent
f6cf564780
commit
ec392e1795
@ -113,7 +113,6 @@
|
||||
|
||||
-record(ast, {
|
||||
modbus,
|
||||
device_ios = [],
|
||||
devices = [],
|
||||
processors = [],
|
||||
alarms = []
|
||||
|
||||
@ -66,7 +66,8 @@ parse(Input) when is_binary(Input) ->
|
||||
|
||||
case length(Modbus) == 1 of
|
||||
true ->
|
||||
AST = #ast{modbus = hd(Modbus), device_ios = Templates, devices = Devices, processors = Processors, alarms = Alarms },
|
||||
NDevices = lists:map(fun(Device) -> merge_io(Device, Templates) end, Devices),
|
||||
AST = #ast{modbus = hd(Modbus), devices = NDevices, processors = Processors, alarms = Alarms },
|
||||
{ok, AST};
|
||||
false ->
|
||||
{error, modbus_block_error}
|
||||
@ -358,4 +359,21 @@ strip_quotes(Str) when is_list(Str) ->
|
||||
Str1 = string:trim(Str, leading, "\""),
|
||||
Str2 = string:trim(Str1, trailing, "\""),
|
||||
Str3 = string:trim(Str2, leading, "'"),
|
||||
string:trim(Str3, trailing, "'").
|
||||
string:trim(Str3, trailing, "'").
|
||||
|
||||
merge_io(Device = #modbus_device{device_io = undefined}, _Templates) ->
|
||||
Device;
|
||||
merge_io(Device = #modbus_device{device_io = IOName}, Templates) ->
|
||||
case lists:search(fun(#modbus_device_io{name = T0}) -> IOName =:= T0 end, Templates) of
|
||||
{value, #modbus_device_io{poll_interval = PollInterval, retries = Retries, retry_timeout = RetryTimeout, metrics = Metrics, controls = Controls}} ->
|
||||
%% 合并配置项目
|
||||
Device#modbus_device{
|
||||
poll_interval = PollInterval,
|
||||
retries = Retries,
|
||||
retry_timeout = RetryTimeout,
|
||||
metrics = Metrics,
|
||||
controls = Controls
|
||||
};
|
||||
false ->
|
||||
Device
|
||||
end.
|
||||
@ -88,10 +88,9 @@ start_link(AST = #ast{}) ->
|
||||
%% @doc Whenever a gen_statem is started using gen_statem:start/[3,4] or
|
||||
%% gen_statem:start_link/[3,4], this function is called by the new
|
||||
%% process to initialize.
|
||||
init([AST = #ast{modbus = Modbus = #modbus{transport = Transport, error_log = ErrorLog, access_log = AccessLog}, device_ios = IOs, devices = Devices, alarms = Alarms}]) ->
|
||||
init([AST = #ast{modbus = Modbus = #modbus{transport = Transport, error_log = ErrorLog, access_log = AccessLog}, devices = Devices, alarms = Alarms}]) ->
|
||||
%lager:debug("[modbus_service] ast is: ~p", [AST]),
|
||||
lager:debug("[modbus_service] io is: ~p", [IOs]),
|
||||
%lager:debug("[modbus_service] devices is: ~p", [Devices]),
|
||||
lager:debug("[modbus_service] devices is: ~p", [Devices]),
|
||||
|
||||
DevicesMap = start_devices(Devices),
|
||||
%% 建立连接
|
||||
@ -317,19 +316,3 @@ create_log_file(FileName) when is_binary(FileName) ->
|
||||
undefined
|
||||
end.
|
||||
|
||||
merge_io(Device = #modbus_device{device_io = undefined}, _Templates) ->
|
||||
Device;
|
||||
merge_io(Device = #modbus_device{device_io = IOName}, Templates) ->
|
||||
case lists:search(fun(#modbus_device_io{name = T0}) -> IOName =:= T0 end, Templates) of
|
||||
{value, #modbus_device_io{poll_interval = PollInterval, retries = Retries, retry_timeout = RetryTimeout, metrics = Metrics, controls = Controls}} ->
|
||||
%% 合并配置项目
|
||||
Device#modbus_device{
|
||||
poll_interval = PollInterval,
|
||||
retries = Retries,
|
||||
retry_timeout = RetryTimeout,
|
||||
metrics = Metrics,
|
||||
controls = Controls
|
||||
};
|
||||
false ->
|
||||
Device
|
||||
end.
|
||||
Loading…
x
Reference in New Issue
Block a user