diff --git a/gate.lua b/gate.lua index e691c66..4ba0528 100644 --- a/gate.lua +++ b/gate.lua @@ -1,9 +1,11 @@ local DEFAULT_SERVER_BASE = "http://ticket.fse-media.group" local DEFAULT_SERVER_PATH = "/api/tickets/check" local GATE_OPEN_SECONDS = 2 -local VERSION = "v1.5.18" +local VERSION = "v1.5.20" local VERSION_CHECK_INTERVAL = 5 +local serverURL = nil + local CONFIG_PATH = "gate_config.json" local function readFile(path) @@ -164,7 +166,7 @@ local function checkAndApplyUpdate() if not remoteTs or remoteTs <= 0 then return end - local attemptFile = ".last_update_ts" + local attemptFile = ".last_update_ts_gate" if fs.exists(attemptFile) then local f = fs.open(attemptFile, "r") local tried = tonumber(f and f.readAll() or "0") or 0 @@ -175,7 +177,9 @@ local function checkAndApplyUpdate() end isUpdating = true - pcall(drawReadyScreen) + if type(drawReadyScreen) == "function" then + pcall(drawReadyScreen) + end sleep(0.5) local f = fs.open(attemptFile, "w") @@ -203,7 +207,7 @@ local function checkAndApplyUpdate() end isUpdating = false - if pcall then + if type(drawReadyScreen) == "function" then pcall(drawReadyScreen) end @@ -784,7 +788,7 @@ end local cfg = loadConfig() local stationSet = stationSetFromList(cfg.station_codes) -local serverURL = resolveServerURL(cfg) +serverURL = resolveServerURL(cfg) local cardServerURL = resolveCardServerURL(cfg, serverURL) local cardSyncBaseURL = resolveCardSyncBaseURL(cfg, serverURL, cardServerURL) local fareQueryURL = resolveFareQueryURL(serverURL) @@ -1500,19 +1504,24 @@ end local versionTimer = os.startTimer(VERSION_CHECK_INTERVAL) - - -while true do - local ev = pack(os.pullEvent()) - if ev[1] == "ticket_scanned" or ev[1] == "ic_card_scanned" then - processInspectionEvent(ev[1], ev) - os.sleep(0.35) - drawReadyScreen() - elseif ev[1] == "timer" and ev[2] == versionTimer then - pcall(function() - refreshRemoteLuaVersion(guessBaseFromStatusURL(serverURL)) - end) - pcall(checkAndApplyUpdate) - versionTimer = os.startTimer(VERSION_CHECK_INTERVAL) +local function mainLoop() + while true do + local ev = pack(os.pullEvent()) + if ev[1] == "ticket_scanned" or ev[1] == "ic_card_scanned" then + processInspectionEvent(ev[1], ev) + os.sleep(0.35) + drawReadyScreen() + end end end + +local function backgroundSyncTask() + pcall(function() refreshRemoteLuaVersion(guessBaseFromStatusURL(serverURL)) end) + while true do + sleep(VERSION_CHECK_INTERVAL) + pcall(function() refreshRemoteLuaVersion(guessBaseFromStatusURL(serverURL)) end) + pcall(checkAndApplyUpdate) + end +end + +parallel.waitForAny(mainLoop, backgroundSyncTask) diff --git a/refillmachine.lua b/refillmachine.lua index 646cb30..f96c97c 100644 --- a/refillmachine.lua +++ b/refillmachine.lua @@ -1,4 +1,4 @@ -local VERSION = "v1.5.18" +local VERSION = "v1.5.20" local MACHINE_SIDE = "bottom" local PAYMENT_SIDE = "right" local PRESET_AMOUNTS = { 5, 10, 15, 20 } diff --git a/ticketmachine.lua b/ticketmachine.lua index 4f0d874..ee8b78a 100644 --- a/ticketmachine.lua +++ b/ticketmachine.lua @@ -1,6 +1,6 @@ local CURRENT_STATION_CODE = 'Ticket-Machine' local API_BASE = 'http://ticket.fse-media.group/api' -local VERSION = 'v1.5.18' +local VERSION = 'v1.5.20' local UPDATE_CHECK_INTERVAL = 5 -- ###########################