Sha256: bfff95df9668253d9225c698e9b0e99225c7236fb557ad04b82594e34b47239a

Contents?: true

Size: 1.58 KB

Versions: 7

Compression:

Stored size: 1.58 KB

Contents

module Denko
  class Board
    def spi_bb_header(clock, input, output, write, read, mode, bit_order)
      # Validate clock and data pins
      raise ArgumentError, "no clock pin given" unless clock
      raise ArgumentError, "no input or output pin given. Require either or both" unless(input || output)

      # Set the other to disabled if only one given.
      input  ||= 255
      ouptut ||= 255

      # Get the generic part of the SPI header. 
      header = spi_header_generic(write, read, mode, bit_order)

      # Generic header + packed pins + empty byte = bit bang SPI bheader.
      header = header + pack(:uint8, [clock, input, output, 0])
    end

    # CMD = 21
    def spi_bb_transfer(select_pin, clock: nil, output: nil, input: nil, write: [], read: 0, frequency: nil, mode: nil, bit_order: nil)
      raise ArgumentError, "no bytes given to read or write" if (read == 0) && (write.empty?)

      header = spi_bb_header(clock, input, output, write, read, mode, bit_order)

      self.write Message.encode command: 21,
                                pin: select_pin,
                                aux_message: header + pack(:uint8, write)
    end

    # CMD = 22
    def spi_bb_listen(select_pin, clock: nil, input: nil, read: 0, frequency: nil, mode: nil, bit_order: nil)
      raise ArgumentError, 'no bytes to read. Give read: argument > 0' unless (read > 0)

      header = spi_bb_header(clock, input, nil, [], read, mode, bit_order)

      self.write Message.encode command: 22,
                                pin: select_pin,
                                aux_message: header
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
denko-0.13.6 lib/denko/board/spi_bit_bang.rb
denko-0.13.5 lib/denko/board/spi_bit_bang.rb
denko-0.13.4 lib/denko/board/spi_bit_bang.rb
denko-0.13.3 lib/denko/board/spi_bit_bang.rb
denko-0.13.2 lib/denko/board/spi_bit_bang.rb
denko-0.13.1 lib/denko/board/spi_bit_bang.rb
denko-0.13.0 lib/denko/board/spi_bit_bang.rb