class PduSms::DataCodingScheme

Public Class Methods

cut_off_pdu(pdu, part=:all, type=:ms) click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 43
def DataCodingScheme.cut_off_pdu(pdu, part=:all, type=:ms) # tail current
  part_pdu = ProtocolIdentifier.cut_off_pdu(pdu, :tail, type)
  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/data_coding_scheme.rb, line 27
def DataCodingScheme.decode_ms(pdu_str)
  pdu = '%08b' % DataCodingScheme.cut_off_pdu(pdu_str, :current, :ms).to_i(16)
  message_class = (pdu[1].to_i == MESSAGE_CLASS_ON) ? pdu[6..7].to_i(2) : false
  new(:decode_ms, compressed:pdu[2].to_i(2), message_class:message_class, alphabet:pdu[4..5].to_i(2)).freeze
end
decode_sc(pdu_str) click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 37
def DataCodingScheme.decode_sc(pdu_str)
  pdu = '%08b' % DataCodingScheme.cut_off_pdu(pdu_str, :current, :sc).to_i(16)
  message_class = (pdu[3].to_i == MESSAGE_CLASS_ON) ? pdu[6..7].to_i(2) : false
  new(:decode_sc, compressed:pdu[2].to_i(2), message_class:message_class, alphabet:pdu[4..5].to_i(2)).freeze
end
encode_ms(compressed: UNCOMPRESSED, message_class: false, alphabet: ALPHABET_16BIT) click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 23
def DataCodingScheme.encode_ms(compressed: UNCOMPRESSED, message_class: false, alphabet: ALPHABET_16BIT)
  new(:encode_ms, compressed:compressed, message_class:message_class, alphabet:alphabet).freeze
end
encode_sc(compressed: UNCOMPRESSED, message_class: false, alphabet: ALPHABET_16BIT) click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 33
def DataCodingScheme.encode_sc(compressed: UNCOMPRESSED, message_class: false, alphabet: ALPHABET_16BIT)
  new(:encode_sc, compressed:compressed, message_class:message_class, alphabet:alphabet).freeze
end
new(type, compressed: UNCOMPRESSED, message_class: false, alphabet: ALPHABET_16BIT) click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 5
def initialize(type, compressed: UNCOMPRESSED, message_class: false, alphabet: ALPHABET_16BIT)
  raise ArgumentError, 'The "compresses" is incorrect' unless compressed and (UNCOMPRESSED..COMPRESSED).include?(compressed)
  raise ArgumentError, 'The "alphabet" is incorrect' unless alphabet and (ALPHABET_7BIT..RESERVED).include?(alphabet)
  @compressed = compressed
  @alphabet = alphabet
  if message_class
    if (CLASS_0_IMMEDIATE_DISPLAY..CLASS_3_TE_SPECIFIC).include?(message_class)
      @message_class_trigger = MESSAGE_CLASS_ON
      @message_class = message_class
    else
      raise ArgumentError, 'The "message_class" is incorrect'
    end
  else
    @message_class_trigger = MESSAGE_CLASS_OFF
    @message_class = 0b00
  end
end

Public Instance Methods

alphabet_16bit?() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 67
def alphabet_16bit?
  @alphabet == ALPHABET_16BIT
end
alphabet_7bit?() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 59
def alphabet_7bit?
  @alphabet == ALPHABET_7BIT
end
alphabet_8bit?() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 63
def alphabet_8bit?
  @alphabet == ALPHABET_8BIT
end
alphabet_reserved?() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 71
def alphabet_reserved?
  @alphabet == RESERVED
end
compressed?() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 55
def compressed?
  @compressed == COMPRESSED
end
get_alphabet() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 99
def get_alphabet
  '%02b' % @alphabet
end
get_bit0() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 111
def get_bit0
  '%02b' % BIT0
end
get_compressed() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 95
def get_compressed
  '%b' % @compressed
end
get_hex() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 115
def get_hex
  '%02X' % (get_bit0 << get_compressed << get_message_class_trigger << get_alphabet << get_message_class).to_i(2)
end
get_message_class() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 107
def get_message_class
  '%02b' % @message_class
end
get_message_class_trigger() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 103
def get_message_class_trigger
  '%b' % @message_class_trigger
end
message_class?() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 75
def message_class?
  @message_class_trigger == MESSAGE_CLASS_ON
end
message_class_immediate_display?() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 79
def message_class_immediate_display?
  @message_class == CLASS_0_IMMEDIATE_DISPLAY
end
message_class_me?() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 83
def message_class_me?
  @message_class == CLASS_1_ME_SPECIFIC
end
message_class_sim?() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 87
def message_class_sim?
  @message_class == CLASS_2_SIM_SPECIFIC
end
message_class_te?() click to toggle source
# File lib/pdu_sms/data_coding_scheme.rb, line 91
def message_class_te?
  @message_class == CLASS_3_TE_SPECIFIC
end