Sha256: fb5043ac0f142f54ae74db08810e1577ab25556b6c086d566e6036eebf6b7ab3
Contents?: true
Size: 794 Bytes
Versions: 1
Compression:
Stored size: 794 Bytes
Contents
module Denko module OneWire class Helper def self.address_to_bytes(address) [address].pack('Q<').split("").map(&:ord) end def self.crc_check(data) calculated, received = self.calculate_crc(data) calculated == received end def self.calculate_crc(data) if data.class == Integer bytes = address_to_bytes(data) else bytes = data end crc = 0b00000000 bytes.take(bytes.length - 1).each do |byte| for bit in (0..7) xor = byte[bit] ^ crc[0] crc = crc ^ ((xor * (2 ** 3)) | (xor * (2 ** 4))) crc = crc >> 1 crc = crc | (xor * (2 ** 7)) end end [crc, bytes.last] end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
denko-0.13.0 | lib/denko/one_wire/helper.rb |