diff --git a/projects/core/src/main/resources/data/computercraft/lua/rom/apis/gps.lua b/projects/core/src/main/resources/data/computercraft/lua/rom/apis/gps.lua index e9c33b833..302803719 100644 --- a/projects/core/src/main/resources/data/computercraft/lua/rom/apis/gps.lua +++ b/projects/core/src/main/resources/data/computercraft/lua/rom/apis/gps.lua @@ -107,15 +107,9 @@ function locate(_nTimeout, _bDebug) end -- Find a modem - local sModemSide = nil - for _, sSide in ipairs(rs.getSides()) do - if peripheral.getType(sSide) == "modem" and peripheral.call(sSide, "isWireless") then - sModemSide = sSide - break - end - end - - if sModemSide == nil then + local modem = peripheral.find("modem", function(_, m) return m.isWireless() end) + + if modem == nil then if _bDebug then print("No wireless modem attached") end @@ -127,7 +121,7 @@ function locate(_nTimeout, _bDebug) end -- Open GPS channel to listen for ping responses - local modem = peripheral.wrap(sModemSide) + local sModemSide = peripheral.getName(modem) local bCloseChannel = false if not modem.isOpen(CHANNEL_GPS) then modem.open(CHANNEL_GPS) diff --git a/projects/core/src/test/resources/test-rom/spec/apis/gps_spec.lua b/projects/core/src/test/resources/test-rom/spec/apis/gps_spec.lua index 8a2cdcb61..837359551 100644 --- a/projects/core/src/test/resources/test-rom/spec/apis/gps_spec.lua +++ b/projects/core/src/test/resources/test-rom/spec/apis/gps_spec.lua @@ -24,6 +24,7 @@ describe("The gps library", function() local computer = fake_computer.make_computer(1, fn) computer.position = vector.new(x, y, z) fake_computer.add_api(computer, "rom/apis/gps.lua") + fake_computer.add_api(computer, "rom/apis/peripheral.lua") fake_computer.add_api(computer, "rom/apis/vector.lua") local modem = fake_computer.add_modem(computer, "back") @@ -39,6 +40,7 @@ describe("The gps library", function() end) host.position = position fake_computer.add_api(host, "rom/apis/gps.lua") + fake_computer.add_api(computer, "rom/apis/peripheral.lua") fake_computer.add_api(host, "rom/apis/vector.lua") local host_modem = fake_computer.add_modem(host, "back") diff --git a/projects/core/src/test/resources/test-rom/spec/support/fake_computer.lua b/projects/core/src/test/resources/test-rom/spec/support/fake_computer.lua index e6d3a7d3e..557384119 100644 --- a/projects/core/src/test/resources/test-rom/spec/support/fake_computer.lua +++ b/projects/core/src/test/resources/test-rom/spec/support/fake_computer.lua @@ -28,6 +28,7 @@ local function make_computer(id, fn) getNames = function() return keys(peripherals) end, isPresent = function(name) return peripherals[name] ~= nil end, getType = function(name) return peripherals[name] and getmetatable(peripherals[name]).type end, + hasType = function(name, typ) return peripherals[name] and getmetatable(peripherals[name]).type == typ end, getMethods = function(name) return peripherals[name] and keys(peripherals[name]) end, call = function(name, method, ...) local p = peripherals[name]