class Mifare::Ultralight::Tag
Public Class Methods
match?(target)
click to toggle source
Check's if our tag class is able to handle this LibNFC::Target
# File lib/ruby-nfc/tags/mifare/ultralight.rb, line 58 def self.match?(target) target.sak == Mifare::SAKS[:ULTRALIGHT] end
Public Instance Methods
connect(&block)
click to toggle source
Calls superclass method
NFC::Tag#connect
# File lib/ruby-nfc/tags/mifare/ultralight.rb, line 17 def connect(&block) @reader.set_flag(:NP_AUTO_ISO14443_4, false) res = Mifare.mifare_ultralight_connect(@pointer) if 0 == res super else raise Mifare::Error, "Can't connect to tag: #{res}" end end
disconnect()
click to toggle source
Calls superclass method
Mifare::Tag#disconnect
# File lib/ruby-nfc/tags/mifare/ultralight.rb, line 28 def disconnect Mifare.mifare_ultralight_disconnect(@pointer) super end
read(page_num = nil)
click to toggle source
block number to read
# File lib/ruby-nfc/tags/mifare/ultralight.rb, line 34 def read(page_num = nil) data_ptr = FFI::MemoryPointer.new(:uchar, 4) res = Mifare.mifare_ultralight_read(@pointer, page_num, data_ptr) raise Mifare::Error, ("Can't read page 0x%02x" % page_num) unless 0 == res data_ptr.get_bytes(0, 4).force_encoding('ASCII-8BIT') end
write(data, page_num = nil)
click to toggle source
@data - 16 bytes represented by hexadecimal string @block_num - number of block to write to
# File lib/ruby-nfc/tags/mifare/ultralight.rb, line 45 def write(data, page_num = nil) raise Mifare::Error, "Wrong data given" if data !~ /^[\da-f]{8}$/i data_ptr = FFI::MemoryPointer.new(:uchar, 4) data_ptr.put_bytes(0, [data].pack('H*')) res = Mifare.mifare_classic_write(@pointer, block_num, data_ptr) raise Mifare::Error, ("Can't write page 0x%02x" % page_num) unless 0 == res res end