module NetworkedRFID::ReaderControlMethods

Public Class Methods

included(klass) click to toggle source
# File lib/networked_rfid/rfid_controller_service.rb, line 9
def included(klass)
  methods = {
    beep: {
      once: {
        short: [ 0x02, 0xa0, 0x00, 0x26, 0x07, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x01, 0x85, 0x03 ],
        long:  [ 0x02, 0xe0, 0x00, 0x26, 0x07, 0x00, 0x04, 0x05, 0x00, 0x00, 0x00, 0x01, 0xc1, 0x03 ]
      },
      twice: [ 0x02, 0xe0, 0x00, 0x26, 0x07, 0x00, 0x04, 0x01, 0x00, 0x01, 0x01, 0x01, 0xc5, 0x03 ]
    },
    lights: {
      off:      [ 0x02, 0xb0, 0x00, 0x24, 0x02, 0x00, 0x00, 0x96, 0x03 ],
      red_on:   [ 0x02, 0xa0, 0x00, 0x24, 0x02, 0x00, 0x01, 0x87, 0x03 ],
      green_on: [ 0x02, 0xb0, 0x00, 0x24, 0x02, 0x00, 0x02, 0x94, 0x03 ],
      both_on:  [ 0x02, 0xb0, 0x00, 0x24, 0x02, 0x00, 0x03, 0x94, 0x03 ]
    }
  }
    
  load_methods methods, [ ] do |method, packet|
    klass.send :define_method, method do |ip|
      socket = UDPSocket.new
      socket.send packet.pack("C*"), 0, ip, 2000
      socket.recv 16
      socket.close
    end
  end
    
end

Private Class Methods

load_methods(methods, path) { |path| ... } click to toggle source
# File lib/networked_rfid/rfid_controller_service.rb, line 39
def load_methods(methods, path, &block)
  methods.each do |key, value|
    if value.kind_of?(Array)
      yield (path + [ key ]).join("_"), value
    else
      load_methods(value, path + [ key ], &block)
    end
  end
end