-- High level abstraction for our serial connection net = require("internet") handle = 0 STOP = false -- io = require("io") buffer = "" function cleanup() end function serial_nextline() buffer = "" while buffer == "" do buffer = handle:read("*l") end return buffer end function modem_connect() handle = net.open("192.168.1.10", 8889) if handle == nil then return false end return true end function modem_initialize() if handle == nil then print("Modem connect fail!") return false end handle:flush() print("Initializing modem...\n") print("[SERVER]ATZ...") handle:write("ATZ\r") --Disable echo modemin = "" while modemin ~= "OK" do modemin = serial_nextline() io.stdout:write("[MODEM]") print(modemin) end handle:setTimeout(math.huge) print("\nModem Ready!\nIdle for ring...") while modemin ~= "RING" do modemin = serial_nextline() print("[MODEM]" .. modemin) end print("Answering...\n[SERVER]ATA") handle:write("ATA\r") while string.find(modemin, "CONNECT") == nil do modemin = serial_nextline() print("[MODEM]" .. modemin) end print("CONNECTED!") handle:flush() io.stdout:flush() -- we're connected! Say hi :) handle:write("MCBBS0.1a\r\n") return true end function read_thread() while STOP == false do input = serial_nextline() print("[REMOTE]" .. input) end end