From 7b9b8582d43a6a30d18cf6337c661e4582c17483 Mon Sep 17 00:00:00 2001 From: neru Date: Tue, 6 May 2025 19:05:59 -0300 Subject: [PATCH] fix: handle modem messages --- lua/CC Tweaked/tutel/tutel-host.lua | 52 +++++++++++++++-------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/lua/CC Tweaked/tutel/tutel-host.lua b/lua/CC Tweaked/tutel/tutel-host.lua index afe5e62..cfeaff2 100644 --- a/lua/CC Tweaked/tutel/tutel-host.lua +++ b/lua/CC Tweaked/tutel/tutel-host.lua @@ -161,38 +161,40 @@ declareCommandHandler("SCAN", handleScan, local function handleMessages(side, channel, replyChannel, message, dist) if channel ~= HOST_CHANNEL then return end + -- msg validation if type(message) ~= "table" then return end if not message.header or message.header ~= MSG_HEADER then return end if not message.data then message.data = {} end + + -- cmd validation + if not message.name then + log.warning("received nameless command?") + return + end + + if not commands[message.name] then + log.error("unhandled command (%s)", message.name) + return + end + + local cmd = commands[message.name] + for i, v in pairs(cmd.keys) do + if type(message.data[i]) ~= v and v ~= "optional" then + log.error("command %s requires key %s of type %s (was %s)", message.name, i, v, type(message[i])) + return + end + end + + -- cmd execution + local success, err = pcall(cmd.handler, message.data, message.id) + if not success then + log.error("error occurred while executing command %s: %s", message.name, err) + end end +declareCommandHandler("modem_message", handleMessages) --[[ main ]] --- function pollAndProcessMessages() --- -- command validation --- if not message.name then --- log.warning("received nameless message") --- return --- end - --- if not commands[message.name] then --- log.error("unhandled message (%s)", message.name) --- return --- end - --- local cmd = commands[message.name] --- for i, v in pairs(cmd.keys) do --- if type(message.data[i]) ~= v and v ~= "optional" then --- log.error("command %s requires key %s of type %s (was %s)", message.name, i, v, type(message[i])) --- return --- end --- end - --- cmd.handler(message.data, message.id) - --- -- message handling --- log.info("received command (%s)", message.name) --- end log.general("tutel host init")