11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/pdu_tools/decoder.rb', line 11
def decode
@sca_length = take(2, :integer) * 2
if @sca_length > 0
@sca_type = parse_address_type take(2)
@sca = parse_address take(@sca_length - 2), @sca_type, @sca_length
end
@pdu_type = parse_pdu_type take(2, :binary)
@message_reference = take(2) if @pdu_type[:mti] == :sms_submit
@address_length = take(2, :integer)
@address_type = parse_address_type take(2)
@address_length = @address_length.odd? ? @address_length + 1 : @address_length
@address = parse_address take(@address_length), @address_type, @address_length
@pid = take(2)
@data_coding_scheme = parse_data_coding_scheme take(2, :binary)
@sc_timestamp = parse_7byte_timestamp take(14) if [:sms_deliver, :sms_deliver_report].include? @pdu_type[:mti]
case @pdu_type[:vpf]
when :absolute
@validity_period = parse_7byte_timestamp take(14)
when :relative
@validity_period = parse_validity_period take(2, :integer)
end
@user_data_length = take(2, :integer)
parse_user_data @user_data_length
MessagePart.new @address, @message, @sc_timestamp, @validity_period,
end
|