class RushButton::Server

Public Class Methods

new(iface) click to toggle source
# File lib/rush_button/server.rb, line 6
def initialize iface
  @iface = iface
  @buttons = []
end

Public Instance Methods

add(mac_addr, &block) click to toggle source
# File lib/rush_button/server.rb, line 11
def add mac_addr, &block
  @buttons << DashButton.new(mac_addr).on_press(&block)
end
start() click to toggle source
# File lib/rush_button/server.rb, line 15
def start
  puts "Dash Button capturing..." if $DEBUG
  cap = Capture.new(iface:@iface, filter:Protocol::ARP, promisc:true)
  cap.stream.each do |pkt|
    if ARPPacket.can_parse?(pkt)
      src_mac = ARPPacket.parse(pkt).eth_src_readable
      @buttons.find {|e| e.mac == src_mac}&.press
    end
  end
end