class Samsung::Protocol::Frame

Attributes

data[RW]

Public Class Methods

new(data = '') click to toggle source
# File lib/samsung/protocol/frame.rb, line 8
def initialize data = ''
  @data = data
end

Public Instance Methods

hex() click to toggle source
# File lib/samsung/protocol/frame.rb, line 16
def hex
  data.split('').map do |c|
    "0x%.2x" % c.ord
  end.join(' ')
end
pop_frame() click to toggle source
# File lib/samsung/protocol/frame.rb, line 82
def pop_frame
  frame_size = pop_int16
  Frame.new(data.slice!(0..frame_size-1))
end
pop_int16() click to toggle source
# File lib/samsung/protocol/frame.rb, line 61
def pop_int16
  data.slice!(0..1).unpack('S<').first
end
pop_int32() click to toggle source
# File lib/samsung/protocol/frame.rb, line 71
def pop_int32
  data.slice!(0..1).unpack('L<').first
end
pop_int8() click to toggle source
# File lib/samsung/protocol/frame.rb, line 51
def pop_int8
  data.slice!(0).unpack('C').first
end
pop_string() click to toggle source
# File lib/samsung/protocol/frame.rb, line 29
def pop_string
  len = pop_int16
  data.slice!(0..len-1)
end
pop_string64() click to toggle source
# File lib/samsung/protocol/frame.rb, line 40
def pop_string64
  len = pop_int16
  Base64.decode64(data.slice!(0..len-1))
end
push_frame(frame) click to toggle source

Frames

# File lib/samsung/protocol/frame.rb, line 77
def push_frame(frame)
  push_int16(frame.size)
  self.data += frame.data
end
push_int16(v) click to toggle source

16-bit integer

# File lib/samsung/protocol/frame.rb, line 57
def push_int16(v)
  self.data += [v].pack('S<')
end
push_int32(v) click to toggle source

32-bit integer

# File lib/samsung/protocol/frame.rb, line 67
def push_int32(v)
  self.data += [v].pack('L<')
end
push_int8(v) click to toggle source

8-bit integer

# File lib/samsung/protocol/frame.rb, line 47
def push_int8(v)
  self.data += [v].pack('C')
end
push_string(s) click to toggle source

String

# File lib/samsung/protocol/frame.rb, line 24
def push_string(s)
  push_int16(s.size)
  self.data += s
end
push_string64(s) click to toggle source

Base64 string

# File lib/samsung/protocol/frame.rb, line 36
def push_string64(s)
  push_string(Base64.encode64(s))
end
size() click to toggle source
# File lib/samsung/protocol/frame.rb, line 12
def size
  @data.size
end