Exemple #1
0
    def __init__(self, number, type=UNKNOWN):

        if type == ALPHANUMERIC:
            self.type_of_number = ALPHANUMERIC
            septets = unpack_7bit_bytes(number)
            self.number = gsm_decoder(septets)

            self.numbering_plan_id = UNKNOWN

        elif type == INTERNATIONAL:
            self.type_of_number = INTERNATIONAL
            if number.startswith('+'):
                self.number = number[1:]
            else:
                self.number = number

            self.numbering_plan_id = ISDNORTELEPHONE

        else:
            if number.startswith('+'):
                self.type_of_number = INTERNATIONAL
                self.number = number[1:]
            else:
                self.type_of_number = UNKNOWN
                self.number = number

            self.numbering_plan_id = ISDNORTELEPHONE
    def __init__(self, number, type=UNKNOWN):

        if type == ALPHANUMERIC:
            self.type_of_number = ALPHANUMERIC
            septets = unpack_7bit_bytes(number)
            self.number = gsm_decoder(septets)

            self.numbering_plan_id = UNKNOWN

        elif type == INTERNATIONAL:
            self.type_of_number = INTERNATIONAL
            if number.startswith('+'):
                self.number = number[1:]
            else:
                self.number = number

            self.numbering_plan_id = ISDNORTELEPHONE

        else:
            if number.startswith('+'):
                self.type_of_number = INTERNATIONAL
                self.number = number[1:]
            else:
                self.type_of_number = UNKNOWN
                self.number = number

            self.numbering_plan_id = ISDNORTELEPHONE
Exemple #3
0
    def user_data_from_octets(self, flags, octets, coding_scheme):
        user_data_len = octets.pop(0)

        if flags & 0x40:  # user data header indicator
            header_len8 = octets[0] + 1
            self.header = octets[1:header_len8]
        else:
            header_len8 = 0

        compressed = (coding_scheme & 0xE0 == 0x20)
        if compressed:
            raise NotImplementedError()

        if (coding_scheme & 0xEC == 0x00 or  # general data coding
                coding_scheme & 0xE0 == 0xC0 or  # message waiting indication
                coding_scheme & 0xF4 == 0xF0):  # data coding/message class
            coding = DEFAULT_ALPHABET
        elif (coding_scheme & 0xEC == 0x04 or  # general data coding
              coding_scheme & 0xF4 == 0xF4):  # data coding/message class
            coding = EIGHT_BIT
        elif (coding_scheme & 0xEC == 0x08 or  # general data coding
              coding_scheme & 0xF0 == 0xE0):  # message waiting indication
            coding = UCS2
        else:
            raise ValueError("Unsupported coding scheme: %d" % coding_scheme)

        if coding == DEFAULT_ALPHABET:
            header_len7 = (header_len8 * 8 + 6) / 7  # ceil(int*8/7)
            septets = unpack_7bit_bytes(octets)[header_len7:user_data_len]
            self.text = gsm_decoder(septets)
        else:
            octets = octets[header_len8:user_data_len]
            user_data = "".join(chr(o) for o in octets)
            if coding == UCS2:
                self.text = ucs2_decoder(user_data)[0]
            else:
                self.text = user_data
    def user_data_from_octets(self, flags, octets, coding_scheme):
        user_data_len = octets.pop(0)

        if flags & 0x40: # user data header indicator
            header_len8 = octets[0] + 1
            self.header = octets[1:header_len8]
        else:
            header_len8 = 0

        compressed = (coding_scheme & 0xE0 == 0x20)
        if compressed:
            raise NotImplementedError()

        if (coding_scheme & 0xEC == 0x00 or     # general data coding
            coding_scheme & 0xE0 == 0xC0 or     # message waiting indication
            coding_scheme & 0xF4 == 0xF0):      # data coding/message class
            coding = DEFAULT_ALPHABET
        elif (coding_scheme & 0xEC == 0x04 or   # general data coding
              coding_scheme & 0xF4 == 0xF4):    # data coding/message class
            coding = EIGHT_BIT
        elif (coding_scheme & 0xEC == 0x08 or   # general data coding
              coding_scheme & 0xF0 == 0xE0):    # message waiting indication
            coding = UCS2
        else:
            raise ValueError("Unsupported coding scheme: %d" % coding_scheme)

        if coding == DEFAULT_ALPHABET:
            header_len7 = (header_len8 * 8 + 6) / 7 # ceil(int*8/7)
            septets = unpack_7bit_bytes(octets)[header_len7:user_data_len]
            self.text = gsm_decoder(septets)
        else:
            octets = octets[header_len8:user_data_len]
            user_data = "".join(chr(o) for o in octets)
            if coding == UCS2:
                self.text = ucs2_decoder(user_data)[0]
            else:
                self.text = user_data