mfrc522 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|