class SpheroRequest

Attributes

checksum[RW]
cid[RW]
did[RW]
dlen[RW]
seq[RW]
sequence[RW]
sop1[RW]
sop2[RW]

Public Class Methods

new(type=:synchronous, debugval) click to toggle source
# File lib/rubysphero.rb, line 514
def initialize(type=:synchronous, debugval)
        if type==:synchronous
                @sop1=0xFF
                @sop2=0xFF 
        end # if
        @debug=debugval
        @packet_data=Array.new
        @payload_data=Array.new
end

Public Instance Methods

build_packet() click to toggle source
# File lib/rubysphero.rb, line 528
def build_packet
        packet_no_checksum=[@sop1, @sop2, @did, @cid, @seq, @dlen]

        packet_no_checksum.concat @payload_data
        packet_with_checksum=add_checksum(packet_no_checksum)
        packet_packed=packet_with_checksum.pack("C*") 
        logd(print_format_bytes(packet_with_checksum))
        @packet_data=packet_packed
        return @packet_data
end
length() click to toggle source
# File lib/rubysphero.rb, line 524
def length
        return @packet_data.length
end
push_data(data_input, length=:a8bit) click to toggle source
# File lib/rubysphero.rb, line 539
def push_data(data_input, length=:a8bit)
        # 8bit and 16bit numbers
        if data_input > 0xFF then
                logd("Greater than 255, splitting into MSB and LSB)}")
                logd("Masked: #{(data_input & 0b0000000100000000 ).to_s(2)}")
                data_input_msb =      (data_input & 0b0000000100000000) >> 8
                data_input_lsb =     data_input & 0b0000000011111111
                
                logd("data_input MSB #{data_input_msb.to_s(2)}")
                logd("data_input LSB #{data_input_lsb.to_s(2)}")             
                @payload_data.push data_input_msb
                @payload_data.push data_input_lsb
        
        else 
                if length==:a16bit
                        @payload_data.push 0x00
                end #if
                @payload_data.push data_input
        end # else
end