From 4bc50e4bada3cc7302c4ad159e0214e793d3c552 Mon Sep 17 00:00:00 2001 From: Mikayla Fischler Date: Mon, 2 May 2022 13:15:08 -0400 Subject: [PATCH] #41 RTU comms closing --- rtu/rtu.lua | 12 +++++++++++- rtu/startup.lua | 2 +- rtu/threads.lua | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/rtu/rtu.lua b/rtu/rtu.lua index a35770d..fc32fac 100644 --- a/rtu/rtu.lua +++ b/rtu/rtu.lua @@ -249,6 +249,10 @@ function rtu_comms(modem, local_port, server_port) send_modbus(reply) elseif protocol == PROTOCOLS.SCADA_MGMT then -- SCADA management packet + if packet.type == SCADA_MGMT_TYPES.CLOSE then + -- close connection + conn_watchdog.cancel() + unlink(rtu_state) if packet.type == SCADA_MGMT_TYPES.REMOTE_LINKED then -- acknowledgement rtu_state.linked = true @@ -317,6 +321,11 @@ function rtu_comms(modem, local_port, server_port) self.r_seq_num = nil end + local close = function (rtu_state) + unlink(rtu_state) + _send(SCADA_MGMT_TYPES.CLOSE, {}) + end + return { send_modbus = send_modbus, reconnect_modem = reconnect_modem, @@ -324,6 +333,7 @@ function rtu_comms(modem, local_port, server_port) handle_packet = handle_packet, send_advertisement = send_advertisement, send_heartbeat = send_heartbeat, - unlink = unlink + unlink = unlink, + close = close } end diff --git a/rtu/startup.lua b/rtu/startup.lua index 59c4354..e73eab6 100644 --- a/rtu/startup.lua +++ b/rtu/startup.lua @@ -19,7 +19,7 @@ os.loadAPI("dev/boiler_rtu.lua") os.loadAPI("dev/imatrix_rtu.lua") os.loadAPI("dev/turbine_rtu.lua") -local RTU_VERSION = "alpha-v0.4.9" +local RTU_VERSION = "alpha-v0.4.10" local print = util.print local println = util.println diff --git a/rtu/threads.lua b/rtu/threads.lua index c5af330..9cb2923 100644 --- a/rtu/threads.lua +++ b/rtu/threads.lua @@ -169,6 +169,7 @@ function thread__comms(smem) -- check for termination request if rtu_state.shutdown then + rtu_comms.close() log._info("comms thread exiting") break end