class PduSms::UserDataLength
Public Class Methods
cut_off_pdu(pdu, part=:all, type=:ms)
click to toggle source
# File lib/pdu_sms/user_data_length.rb, line 42 def UserDataLength.cut_off_pdu(pdu, part=:all, type=:ms) # tail current if type == :ms part_pdu = ValidityPeriod.cut_off_pdu(pdu, :tail, :ms) elsif type == :sc part_pdu = ServiceCenterTimeStamp.cut_off_pdu(pdu, :tail, :sc) else raise ArgumentError, 'The "pdu" is incorrect' end raise ArgumentError, 'The "pdu" is incorrect' if part_pdu.length < 2 current = part_pdu[0..1] tail = part_pdu[2..-1] case part when :current then current when :tail then tail else [current,tail] end end
decode_ms(pdu_str)
click to toggle source
# File lib/pdu_sms/user_data_length.rb, line 24 def UserDataLength.decode_ms(pdu_str) pdu = UserDataLength.cut_off_pdu(pdu_str, :current, :ms) new(:decode_ms, pdu).freeze end
decode_sc(pdu_str)
click to toggle source
# File lib/pdu_sms/user_data_length.rb, line 33 def UserDataLength.decode_sc(pdu_str) pdu = UserDataLength.cut_off_pdu(pdu_str, :current, :sc) new(:decode_sc, pdu).freeze end
encode_ms(ud)
click to toggle source
# File lib/pdu_sms/user_data_length.rb, line 20 def UserDataLength.encode_ms(ud) new(:encode_ms, ud).freeze end
encode_sc(ud)
click to toggle source
# File lib/pdu_sms/user_data_length.rb, line 29 def UserDataLength.encode_sc(ud) new(:encode_sc, ud).freeze end
new(type, ud)
click to toggle source
# File lib/pdu_sms/user_data_length.rb, line 4 def initialize(type, ud) if type == :encode_ms raise ArgumentError, 'Parameter "ud" must be an instance of UserData' unless UserData == ud.class @udl = _count_message(ud) elsif type == :decode_ms @udl = ud elsif type == :encode_sc raise ArgumentError, 'Parameter "ud" must be an instance of UserData' unless UserData == ud.class @udl = _count_message(ud) elsif type == :decode_sc @udl = ud else raise ArgumentError, 'The "type" is incorrect' end end
Public Instance Methods
get_hex()
click to toggle source
# File lib/pdu_sms/user_data_length.rb, line 38 def get_hex @udl end
Private Instance Methods
_count_message(ud)
click to toggle source
# File lib/pdu_sms/user_data_length.rb, line 62 def _count_message(ud) case ud.get_coding when ALPHABET_7BIT count_sms = ud.get_message.length count_sms += 8 if ud.is_udh? when ALPHABET_8BIT count_sms = ud.get_message.length count_sms += 6 if ud.is_udh? when ALPHABET_16BIT count_sms = ud.get_message.length * 2 count_sms += 6 if ud.is_udh? else raise ArgumentError, 'The "ud" is incorrect' end '%02X' % count_sms end