Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- local robot = require("robot");
- local event = require("event");
- local component = require("component");
- local modem = component.modem;
- local term = require("term");
- local thread = require("thread");
- local filesystem = require("filesystem");
- local serialization = require("serialization");
- local computer = require("computer");
- local data = {};
- function close()
- os.exit();
- end
- function send()
- modem.send(data["server-address"], 60, "Confirmed. Communications locked.");
- end
- function saveData()
- local file = io.open("data.dat", "w");
- file:write(serialization.serialize(data));
- file:close();
- end
- if filesystem.exists("/usr/CM_Automator/data.dat") then
- print("Loading Data...");
- local file = io.open("data.dat", "r");
- local fileIn = file:read("*a");
- file:close();
- data = serialization.unserialize(fileIn);
- if data["verify"] == nil then
- print("Error loading file...closing.");
- close();
- end
- else
- print("No data found. Assuming to be new.");
- data["verify"] = true;
- saveData();
- end
- term.clear();
- print("Started.");
- function send(message1, message2, message3)
- modem.send(data["server-address"], 60, message1, message2, message3);
- end
- function recieve(timeout)
- local _, _, _, _, _, message1, message2, message3
- if timeout ~= nil then
- _, _, _, _, _, message1, message2, message3 = event.pull(timeout, "modem_message", nil, data["server-address"]);
- else
- _, _, _, _, _, message1, message2, message3 = event.pull("modem_message", nil, data["server-address"]);
- end
- return message1, message2, message3;
- end
- function modemHandler()
- modem.open(60);
- if modem.isOpen(60) then
- print("Opened port 60!");
- else
- print("Failed to open port 60! Closing");
- close();
- end
- if data["server-address"] == nil then
- print("No server address found. Assuming new.");
- local shouldLoop = true;
- while shouldLoop do
- local _, _, from, _, _, message, message2 = event.pull("modem_message");
- if message == "WhoIs" then
- if message2 == "CM_Auto_Robot" then
- print("Found a potential match!")
- for i=1, 5 do
- modem.send(from, 60, "I am!");
- _, _, from, _, _, message, message2 = event.pull(1, "modem_message");
- if message == "Confirmed. I am server." then
- modem.send(from, 60, "Confirmed. Communications locked.");
- data["server-address"] = from;
- saveData();
- shouldLoop = false;
- print("Successfully paired with server \"" .. data["server-address"] .. "\".");
- break;
- end
- end
- end
- end
- end
- end
- print("Wireless Handler Started.");
- while true do
- local message1, message2, message3 = recieve();
- if message1 == "getData" then
- send("heres data", serialization.serialize(data));
- end
- print(message1);
- os.sleep(0);
- end
- end
- local handlerThread = thread.create(modemHandler);
- function updateData()
- data["energy"] = computer.energy();
- data["max-energy"] = computer.maxEnergy();
- end
- while true do
- updateData();
- os.sleep(0);
- end
Advertisement
Add Comment
Please, Sign In to add comment