Sha256: 6325bd475e7a7690853ef2b107d6ee2535fa996e76e1055ead7fdf07dffbb93f

Contents?: true

Size: 797 Bytes

Versions: 4

Compression:

Stored size: 797 Bytes

Contents

module NabaztagHackKit
  module Message
    extend self

    def build(*commands)
      commands = if commands.first.is_a?(Hash)
        commands.first
      elsif !commands.first.is_a?(Array)
        [commands]
      else
        commands
      end

      pack full_message commands.map { |cmd, *data|
        data = convert_data(data)
        [cmd.to_i] + to_3b(data.size) + data.map(&:to_i)
      }
    end

    def to_3b(int)
      [int >> 16, int >> 8, int].map { |i| i & 0xFF }
    end

    def convert_data(data)
      if data.first.is_a?(String)
        data.first.each_byte.to_a
      else
        data.flatten
      end
    end

    private
    def full_message(*data)
      [0x7F] + data.flatten + [0xFF, 0x0A]
    end

    def pack(message)
      message.pack('c*')
    end
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
nabaztag_hack_kit-0.1.0.beta8 lib/nabaztag_hack_kit/message.rb
nabaztag_hack_kit-0.1.0.beta3 lib/nabaztag_hack_kit/message.rb
nabaztag_hack_kit-0.1.0.beta2 lib/nabaztag_hack_kit/message.rb
nabaztag_hack_kit-0.1.0.beta1 lib/nabaztag_hack_kit/message.rb