83 lines
1.5 KiB
Lua
83 lines
1.5 KiB
Lua
-- 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
|