Ejemplo n.º 1
0
    def mgsms_get_pdus(self, properties):
        p = PDU()
        
        number = None if not properties.has_key("number") else properties["number"]
        text = None if not properties.has_key("text") else properties["text"]
        smsc = "" if not properties.has_key("smsc") else properties["smsc"]
        validity = "" if not properties.has_key("validity") else properties["validity"]
        sms_class = "" if not properties.has_key("class") else properties["class"]
        status_request = False if not properties.has_key("status_request") else properties["status_request"]

        if number == None or text == None :
            return []

        return p.encode_pdu(number, text, csca=smsc, request_status=status_request)
Ejemplo n.º 2
0
        def function(task) :
            self.io.com.send_query({"type" : "simple",
                                    "cmd"  : "AT+CMGF=0",
                                    "task" : task})
            
            raw_res = self.io.com.send_query({"cmd" : 'AT+CMGL=%s' % status,
                                              "task" : task})

            response = []
            p = PDU()

            if raw_res[2] == "OK" :
                for i in range(0, len(raw_res[1]), 2) :
                    if raw_res[1][i].startswith("+CMGL:") :
                        pattern = re.compile("\+CMGL:\ +(?P<index>\d*),(?P<status>\d*),")
                        matched_res = pattern.match(raw_res[1][i])
                        try:
                            sender, datestr, msg , csca, ref, cnt, seq, fmt, flash_sms = p.decode_pdu(raw_res[1][i+1])
                            msg = { "number" : sender,
                                    "text" : msg,
                                    "smsc" : csca,
                                    "date" : datestr,
                                    "reference" : int(ref),
                                    "concat_total" : int(cnt),
                                    "concat_number" : int(seq),
                                    "index": int(matched_res.group("index")),
                                    "status" : int(matched_res.group("status")),
                                    "notification" : flash_sms
                                    }
                            
                            if 'application/vnd.wap.mms-message' in  msg["text"] :
                                continue

                            if msg["concat_total"] == 0:
                                msg["completed"] = True
                            else:
                                msg["completed"] = False

                            response.append(msg)
                        except:
                            pass

            #Check completed concatenated msgs
            refs = {}

            for m in response:
                if m["concat_total"] > 0:
                    if not refs.has_key(m["reference"]):
                        refs[m["reference"]] = []

                    refs[m["reference"]].append(m)

            for r in refs.keys():
                if len(refs[r]) == refs[r][0]["concat_total"] :
                    for m in response:
                        if m["reference"] == r :
                            m["completed"] = True

            return response
Ejemplo n.º 3
0
    def mgsms_get_pdus(self, properties):
        p = PDU()

        number = None if not properties.has_key(
            "number") else properties["number"]
        text = None if not properties.has_key("text") else properties["text"]
        smsc = "" if not properties.has_key("smsc") else properties["smsc"]
        validity = "" if not properties.has_key(
            "validity") else properties["validity"]
        sms_class = "" if not properties.has_key(
            "class") else properties["class"]
        status_request = False if not properties.has_key(
            "status_request") else properties["status_request"]

        if number == None or text == None:
            return []

        return p.encode_pdu(number,
                            text,
                            csca=smsc,
                            request_status=status_request)
Ejemplo n.º 4
0
        def function(task):
            self.io.com.send_query({
                "type": "simple",
                "cmd": "AT+CMGF=0",
                "task": task
            })

            raw_res = self.io.com.send_query({
                "cmd": 'AT+CMGL=%s' % status,
                "task": task
            })

            response = []
            p = PDU()

            if raw_res[2] == "OK":
                for i in range(0, len(raw_res[1]), 2):
                    if raw_res[1][i].startswith("+CMGL:"):
                        pattern = re.compile(
                            "\+CMGL:\ +(?P<index>\d*),(?P<status>\d*),")
                        matched_res = pattern.match(raw_res[1][i])
                        try:
                            sender, datestr, msg, csca, ref, cnt, seq, fmt, flash_sms = p.decode_pdu(
                                raw_res[1][i + 1])
                            msg = {
                                "number": sender,
                                "text": msg,
                                "smsc": csca,
                                "date": datestr,
                                "reference": int(ref),
                                "concat_total": int(cnt),
                                "concat_number": int(seq),
                                "index": int(matched_res.group("index")),
                                "status": int(matched_res.group("status")),
                                "notification": flash_sms
                            }

                            if 'application/vnd.wap.mms-message' in msg[
                                    "text"]:
                                continue

                            if msg["concat_total"] == 0:
                                msg["completed"] = True
                            else:
                                msg["completed"] = False

                            response.append(msg)
                        except:
                            pass

            #Check completed concatenated msgs
            refs = {}

            for m in response:
                if m["concat_total"] > 0:
                    if not refs.has_key(m["reference"]):
                        refs[m["reference"]] = []

                    refs[m["reference"]].append(m)

            for r in refs.keys():
                if len(refs[r]) == refs[r][0]["concat_total"]:
                    for m in response:
                        if m["reference"] == r:
                            m["completed"] = True

            return response