Sirshark10

librednet

Apr 25th, 2017
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. openSides = {}
  2.  
  3. local function getPath(side)
  4. local periphs = {}
  5. for k,v in pairs(fs.list("/dev/")) do
  6. if v:find("ttyS") then
  7. local A = fs.open("/dev/"..v,"r")
  8. local B = fs.open("/dev/"..v,"w")
  9. B.write("getSide")
  10. periphs[v] = A.readAll()
  11. end
  12. end
  13. for k,v in pairs(periphs) do
  14. if v == side then
  15. return "/dev/"..k
  16. end
  17. end
  18. end
  19.  
  20. local function cap()
  21. modem.close(os.getComputerID())
  22. modem.close(65535)
  23. modem.open(65533)
  24. modem.open(65534)
  25. event, side, sChannel, rChannel, data, dist = os.pullEvent("modem_message")
  26. local table = {
  27. event = event,
  28. side = side,
  29. recipient = sChannel,
  30. sender = rChannel,
  31. data = data,
  32. distance = dist}
  33. modem.close(65533)
  34. modem.close(65534)
  35. modem.open(65535)
  36. modem.open(os.getComputerID())
  37. return table
  38. end
  39.  
  40. local function send(msg, to, from)
  41. id = math.random(1, 800000)
  42. local message = {
  43. nMessageID = id,
  44. nRecipient = to,
  45. message = msg,
  46. sProtocol = nil,
  47. }
  48. modem.transmit(to, from, message)
  49. end
  50.  
  51. function open(side)
  52. local periph = getPath(side)
  53. local file = fs.open(periph,"w")
  54. file.write("open",os.getComputerID())
  55. file.close()
  56. table.insert(openSides,side)
  57. end
  58.  
  59. function close(side)
  60. for k,v in pairs(openSides) do
  61. if v == "side" then
  62. local path = getPath(side)
  63. local file = fs.open(path,"w")
  64. file.write("close",os.getComputerID())
  65. file.close()
  66. table.remove(openSides,k)
  67. end
  68. end
  69. end
Advertisement
Add Comment
Please, Sign In to add comment