Class: Mifare::Ultralight::Tag
- Defined in:
- lib/ruby-nfc/tags/mifare/ultralight.rb
Class Method Summary collapse
-
.match?(target) ⇒ Boolean
Check’s if our tag class is able to handle this LibNFC::Target.
Instance Method Summary collapse
- #connect(&block) ⇒ Object
- #disconnect ⇒ Object
-
#read(page_num = nil) ⇒ Object
block number to read.
- #write(data, page_num = nil) ⇒ Object
Methods inherited from Tag
#initialize, #name, #sak, #to_s
Methods inherited from NFC::Tag
#initialize, #present?, #processed!, #processed?, #to_s, #uid, #uid_hex
Constructor Details
This class inherits a constructor from Mifare::Tag
Class Method Details
Instance Method Details
#connect(&block) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# 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 ⇒ Object
28 29 30 31 |
# File 'lib/ruby-nfc/tags/mifare/ultralight.rb', line 28 def disconnect Mifare.mifare_ultralight_disconnect(@pointer) super end |
#read(page_num = nil) ⇒ Object
block number to read
34 35 36 37 38 39 40 41 |
# 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) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 |
# 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 |