mfrc522 2.0.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/mfrc522.rb +30 -50
- data/lib/picc.rb +4 -4
- metadata +8 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b180534b3c1fff35f759792d021ba7005b460838e82b43782341f358d314ae5c
|
4
|
+
data.tar.gz: 77f1e85d84082d57ed27dbba18aea6b6e1e9949327f62ed135e2ec1389e12efe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d558480f55924d0e55e6028f87186008ed51346ab8cb1720dd2330613fe3c34ec1c6c8c33575d4e9bc228e9a9bd3be2f6826da3349c67ab12a4006c744e5ea49
|
7
|
+
data.tar.gz: 75554b9bcb105507d74f18ae96552bc1dd93b1d5b813f0dc5fba1e5cfdbf3ace56a54f25b623a5948ee268c1ea936b87466e87101900efba49da2d94ac763168
|
data/lib/mfrc522.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'fubuki'
|
2
2
|
|
3
3
|
require 'openssl'
|
4
4
|
require 'securerandom'
|
@@ -16,8 +16,6 @@ require 'mifare/ultralight'
|
|
16
16
|
require 'mifare/ultralight_c'
|
17
17
|
require 'mifare/ultralight_ev1'
|
18
18
|
|
19
|
-
include PiPiper
|
20
|
-
|
21
19
|
class MFRC522
|
22
20
|
|
23
21
|
# PICC commands used by the PCD to manage communication with several PICCs (ISO 14443-3, Type A, section 6.4)
|
@@ -99,19 +97,11 @@ class MFRC522
|
|
99
97
|
TestDAC2Reg = 0x3A # defines the test value for TestDAC2
|
100
98
|
TestADCReg = 0x3B # shows the value of ADC I and Q channels
|
101
99
|
|
102
|
-
def initialize(
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
@spi_chip = chip_option[chip]
|
108
|
-
@spi_spd = spd
|
109
|
-
@timer = timer
|
110
|
-
|
111
|
-
# Power it up
|
112
|
-
nrstpd_pin = PiPiper::Pin.new(pin: nrstpd, direction: :out)
|
113
|
-
nrstpd_pin.on
|
114
|
-
sleep 1.0 / 20.0 # Wait 50ms
|
100
|
+
def initialize(spi_bus: 0, spi_chip: 0, spi_spd: 1_000_000, spi_delay: 1, pcd_timer: 256)
|
101
|
+
@spi_driver = Fubuki::SPI.new(spi_bus, spi_chip)
|
102
|
+
@spi_speed = spi_spd
|
103
|
+
@spi_delay = spi_delay
|
104
|
+
@pcd_timer = pcd_timer
|
115
105
|
|
116
106
|
soft_reset # Perform software reset
|
117
107
|
|
@@ -148,7 +138,7 @@ class MFRC522
|
|
148
138
|
transceiver_baud_rate(:rx, 0)
|
149
139
|
|
150
140
|
# Set PCD timer value for 302us default timer
|
151
|
-
internal_timer(@
|
141
|
+
internal_timer(@pcd_timer)
|
152
142
|
end
|
153
143
|
|
154
144
|
# Control transceive timeout value
|
@@ -268,13 +258,7 @@ class MFRC522
|
|
268
258
|
# Validate buffer content against non-numeric classes and incorrect size
|
269
259
|
buffer = buffer[0..5]
|
270
260
|
dirty_buffer = buffer.size != 6
|
271
|
-
dirty_buffer ||= buffer.any?
|
272
|
-
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.0')
|
273
|
-
!byte.is_a?(Numeric)
|
274
|
-
else
|
275
|
-
!byte.is_a?(Fixnum)
|
276
|
-
end
|
277
|
-
end
|
261
|
+
dirty_buffer ||= buffer.any?{|byte| !byte.is_a?(Integer) }
|
278
262
|
|
279
263
|
# Retry reading UID when buffer is dirty, but don't reset loop count to prevent infinite loop
|
280
264
|
if dirty_buffer
|
@@ -443,35 +427,33 @@ class MFRC522
|
|
443
427
|
return received_data, valid_bits
|
444
428
|
end
|
445
429
|
|
446
|
-
private
|
447
|
-
|
448
430
|
# Read from SPI communication
|
449
431
|
def read_spi(reg)
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
432
|
+
read_spi_bulk(reg).first
|
433
|
+
end
|
434
|
+
|
435
|
+
def read_spi_bulk(*regs)
|
436
|
+
regs.flatten!
|
437
|
+
|
438
|
+
payload = regs.map{ |reg| ((reg & 0x3F) << 1) | 0x80 }
|
439
|
+
payload << 0x00
|
440
|
+
|
441
|
+
result = @spi_driver.transfer(payload, @spi_speed, @spi_delay)
|
442
|
+
|
443
|
+
# discard first byte
|
444
|
+
result.shift
|
445
|
+
|
446
|
+
result
|
462
447
|
end
|
463
448
|
|
464
449
|
# Write to SPI communication
|
465
450
|
def write_spi(reg, values)
|
466
|
-
|
467
|
-
|
468
|
-
spi.bit_order Spi::MSBFIRST
|
469
|
-
spi.clock @spi_spd
|
451
|
+
spi_addr = (reg & 0x3F) << 1
|
452
|
+
payload = [spi_addr, *values]
|
470
453
|
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
end
|
454
|
+
@spi_driver.transfer(payload, @spi_speed, @spi_delay)
|
455
|
+
|
456
|
+
true
|
475
457
|
end
|
476
458
|
|
477
459
|
# Set bits by mask
|
@@ -522,10 +504,8 @@ class MFRC522
|
|
522
504
|
# Receiving data
|
523
505
|
received_data = []
|
524
506
|
data_length = read_spi(FIFOLevelReg)
|
525
|
-
|
526
|
-
|
527
|
-
received_data << data
|
528
|
-
data_length -=1
|
507
|
+
if data_length > 0
|
508
|
+
received_data = read_spi_bulk(Array.new(data_length, FIFODataReg))
|
529
509
|
end
|
530
510
|
valid_bits = read_spi(ControlReg) & 0x07
|
531
511
|
|
data/lib/picc.rb
CHANGED
@@ -92,11 +92,11 @@ class PICC
|
|
92
92
|
# Collect INF from chain
|
93
93
|
inf = []
|
94
94
|
received_chained_data.each do |data|
|
95
|
-
|
96
|
-
|
97
|
-
|
95
|
+
flag = data.shift
|
96
|
+
data.shift if flag & 0x08 != 0 # CID present
|
97
|
+
data.shift if flag & 0x04 != 0 # NAD present
|
98
98
|
|
99
|
-
inf.concat(data
|
99
|
+
inf.concat(data)
|
100
100
|
end
|
101
101
|
inf
|
102
102
|
end
|
metadata
CHANGED
@@ -1,35 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mfrc522
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- atitan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: fubuki
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 2.0.0
|
19
|
+
version: 1.0.1
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 2.0.0
|
30
|
-
- - ">="
|
24
|
+
- - '='
|
31
25
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
26
|
+
version: 1.0.1
|
33
27
|
description:
|
34
28
|
email: commit@atifans.net
|
35
29
|
executables: []
|
@@ -70,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
70
64
|
version: '0'
|
71
65
|
requirements: []
|
72
66
|
rubyforge_project:
|
73
|
-
rubygems_version: 2.6.
|
67
|
+
rubygems_version: 2.7.6.2
|
74
68
|
signing_key:
|
75
69
|
specification_version: 4
|
76
70
|
summary: MFRC522 RFID Reader Library for RaspberryPi
|