简化逻辑
This commit is contained in:
parent
f6cf564780
commit
ec392e1795
@ -113,7 +113,6 @@
|
|||||||
|
|
||||||
-record(ast, {
|
-record(ast, {
|
||||||
modbus,
|
modbus,
|
||||||
device_ios = [],
|
|
||||||
devices = [],
|
devices = [],
|
||||||
processors = [],
|
processors = [],
|
||||||
alarms = []
|
alarms = []
|
||||||
|
|||||||
@ -66,7 +66,8 @@ parse(Input) when is_binary(Input) ->
|
|||||||
|
|
||||||
case length(Modbus) == 1 of
|
case length(Modbus) == 1 of
|
||||||
true ->
|
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};
|
{ok, AST};
|
||||||
false ->
|
false ->
|
||||||
{error, modbus_block_error}
|
{error, modbus_block_error}
|
||||||
@ -358,4 +359,21 @@ strip_quotes(Str) when is_list(Str) ->
|
|||||||
Str1 = string:trim(Str, leading, "\""),
|
Str1 = string:trim(Str, leading, "\""),
|
||||||
Str2 = string:trim(Str1, trailing, "\""),
|
Str2 = string:trim(Str1, trailing, "\""),
|
||||||
Str3 = string:trim(Str2, leading, "'"),
|
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
|
%% @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
|
%% gen_statem:start_link/[3,4], this function is called by the new
|
||||||
%% process to initialize.
|
%% 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] 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),
|
DevicesMap = start_devices(Devices),
|
||||||
%% 建立连接
|
%% 建立连接
|
||||||
@ -317,19 +316,3 @@ create_log_file(FileName) when is_binary(FileName) ->
|
|||||||
undefined
|
undefined
|
||||||
end.
|
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