Module: LibNFC

Extended by:
FFI::Library
Defined in:
lib/ruby-nfc/libnfc.rb

Defined Under Namespace

Classes: DepInfo, Felica, ISO14443a, ISO14443b, ISO14443b2ct, ISO14443b2sr, ISO14443bi, Jewel, Modulation, Target, TargetInfo

Constant Summary collapse

PROPERTIES =

please refer to nfc-types.h for description

[ # please refer to nfc-types.h for description
	:NP_TIMEOUT_COMMAND,
	:NP_TIMEOUT_ATR,
	:NP_TIMEOUT_COM,
	:NP_HANDLE_CRC,
	:NP_HANDLE_PARITY,
	:NP_ACTIVATE_FIELD,
	:NP_ACTIVATE_CRYPTO1,
	:NP_INFINITE_SELECT,
	:NP_ACCEPT_INVALID_FRAMES,
	:NP_ACCEPT_MULTIPLE_FRAMES,
	:NP_AUTO_ISO14443_4,
	:NP_EASY_FRAMING,
	:NP_FORCE_ISO14443_A,
	:NP_FORCE_ISO14443_B,
	:NP_FORCE_SPEED_106
]
DEP_MODE =
[
  :NDM_UNDEFINED,
  :NDM_PASSIVE,
  :NDM_ACTIVE
]
BAUD_RATE =
[
  :NBR_UNDEFINED,
  :NBR_106,
  :NBR_212,
  :NBR_424,
  :NBR_847
]
MODULATION_TYPE =
[
  :NMT_ISO14443A, 1,
  :NMT_JEWEL,
  :NMT_ISO14443B,
  :NMT_ISO14443BI, # pre-ISO14443B aka ISO/IEC 14443 B' or Type B'
  :NMT_ISO14443B2SR, # ISO14443-2B ST SRx
  :NMT_ISO14443B2CT, # ISO14443-2B ASK CTx
  :NMT_FELICA,
  :NMT_DEP
]
DepEnum =
enum(DEP_MODE)
ModulationType =
enum(MODULATION_TYPE)
BaudRate =
enum(BAUD_RATE)

Class Method Summary collapse

Class Method Details

.crc(data) ⇒ Object



272
273
274
275
276
277
278
279
280
281
# File 'lib/ruby-nfc/libnfc.rb', line 272

def self.crc(data)
data_ptr = FFI::MemoryPointer.new(:uint8, data.length)
data_ptr.put_bytes(0, data)

crc_ptr = FFI::MemoryPointer.new(:uint8, 2)
crc_ptr.put_bytes(0, "\x0\x0")

iso14443a_crc(data_ptr, data.length, crc_ptr)
crc_ptr.get_bytes(0, 2).to_s
end

.crc_hex(data) ⇒ Object



283
284
285
# File 'lib/ruby-nfc/libnfc.rb', line 283

def self.crc_hex(data)
	crc(data).unpack('H*').pop
end

.debug_target(target) ⇒ Object



287
288
289
290
291
# File 'lib/ruby-nfc/libnfc.rb', line 287

def self.debug_target(target)
	str_pointer = FFI::MemoryPointer.new(:pointer)
str_nfc_target(str_pointer, target, true)
puts str_pointer.get_pointer(0).get_string(0)
end