wifi 986 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. local batman_adv = require 'gluon.batman_adv'
  2. local iwinfo = require 'iwinfo'
  3. function neighbours(iface)
  4. local stations = {}
  5. for k, v in pairs(iface.iw.assoclist(iface.ifname)) do
  6. stations[k:lower()] = { signal = v.signal
  7. , noise = v.noise
  8. , inactive = v.inactive
  9. }
  10. end
  11. if next(stations) then
  12. return stations
  13. end
  14. end
  15. function interfaces()
  16. local interfaces = {}
  17. for ifname in batman_adv.interfaces('bat0') do
  18. pcall(function()
  19. local address = util.readline(io.open('/sys/class/net/' .. ifname .. '/address'))
  20. local wifitype = iwinfo.type(ifname)
  21. if wifitype ~= nil then
  22. interfaces[address] = { ifname = ifname, iw = iwinfo[wifitype] }
  23. end
  24. end)
  25. end
  26. return interfaces
  27. end
  28. local wifi = {}
  29. for address, iface in pairs(interfaces()) do
  30. wifi[address] = { [{}] = true, neighbours = neighbours(iface) }
  31. end
  32. if next(wifi) then
  33. return wifi
  34. end