Sha256: 770eb654ed80ec3bb1cd779212012188d7d242edf40e2bb04860622200045dcb

Contents?: true

Size: 767 Bytes

Versions: 1

Compression:

Stored size: 767 Bytes

Contents

module Wifly
  module Calculations
    ##
    # Parse the hexadecimal string returned from the show_io command
    # into an array of pins that are high 
    #
    def parse_io(hex_str)
      # use sprintf to pad with 0's to 16 bits
      binary_string = "%016b"  % hex_str.hex.to_i
      binary_string.reverse.chars.each_with_index.map do |value, pin|
        pin if value == "1"
      end.compact
    end

    ## 
    # Given a pin number, return the hex code that corresponds to it
    #
    def pin_to_hex(pin)
      return "0x0" if pin == 0
      binstr = "0b1" + ("0" * pin) # make a binary string with a 1 in `pin` position
      base10 = binstr.to_i(2)      # convert to base 10
      "0x" + base10.to_s(16)       # return hexadecimal string
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
wifly-1.0.0 lib/wifly/calculations.rb