Class: Denko::OneWire::Helper
- Inherits:
-
Object
- Object
- Denko::OneWire::Helper
- Defined in:
- lib/denko/one_wire/helper.rb
Class Method Summary collapse
Class Method Details
.address_to_bytes(address) ⇒ Object
4 5 6 |
# File 'lib/denko/one_wire/helper.rb', line 4 def self.address_to_bytes(address) [address].pack('Q<').split("").map(&:ord) end |
.calculate_crc(data) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/denko/one_wire/helper.rb', line 13 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 |
.crc(data) ⇒ Object
8 9 10 11 |
# File 'lib/denko/one_wire/helper.rb', line 8 def self.crc(data) calculated, received = self.calculate_crc(data) calculated == received end |