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
         |