Sha256: 80517bb8e0266c0c8c4db190b9f5e93e69f84e7c743ab4cc0a2bc7cd75e04edc

Contents?: true

Size: 841 Bytes

Versions: 1

Compression:

Stored size: 841 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)
                      #"8d08"   36104   "1000110100001000"   make it 16 bits
      binary_string = hex_str   .hex     .to_s(2)             .rjust(hex_str.size*4, '0')
      binary_string.reverse.split("").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-0.0.5 lib/wifly/calculations.rb