[pkg-fso-commits] [SCM] framworkd debian packageing branch, master, updated. milestone2-89-geb27523

Daniel Willmann daniel at totalueberwachung.de
Sat Aug 23 14:06:19 UTC 2008


The following commit has been merged in the master branch:
commit bfcd83eafb4f9b259a059d64ba0083b53bce6d80
Author: Daniel Willmann <daniel at totalueberwachung.de>
Date:   Thu Aug 14 13:32:33 2008 +0200

    ogsmd: Move PDU conversion functions to convert.py
    Return a datetime object when parsing the time
    Rename functions for consistency

diff --git a/framework/subsystems/ogsmd/gsm/convert.py b/framework/subsystems/ogsmd/gsm/convert.py
index 602dc0a..d7011c3 100644
--- a/framework/subsystems/ogsmd/gsm/convert.py
+++ b/framework/subsystems/ogsmd/gsm/convert.py
@@ -13,9 +13,10 @@ Module: convert
 
 GSM conversion functions.
 """
+from datetime import datetime
 
 #=========================================================================#
-def PDUNumberToTuple(bs):
+def decodePDUNumber(bs):
 #=========================================================================#
     num_type = (bs[0] & 0x70) >> 4
     num_plan = (bs[0] & 0x0F)
@@ -29,6 +30,27 @@ def PDUNumberToTuple(bs):
     return (num_type, num_plan, number)
 
 #=========================================================================#
+def bcd_decode(bs):
+#=========================================================================#
+  s = "".join(["%1x%1x" % (b & 0xF, b >> 4) for b in bs])
+  if s[-1] == "f":
+    s = s[:-1]
+  return s
+
+#=========================================================================#
+def decodePDUTime(bs):
+#=========================================================================#
+  bs = [((n & 0xf) * 10) + (n >> 4) for n in bs]
+  if bs[0] >= 90: # I don't know if this is the right cut-off point...
+    year = 1900 + bs[0]
+  else:
+    year = 2000 + bs[0]
+  timezone = bs[6]
+  sign = (timezone >> 7) * -2 + 1
+  zone = (timezone & 0x7f) / -4. * sign
+  return ( datetime(year, bs[1], bs[2], bs[3], bs[4], bs[5]), zone )
+
+#=========================================================================#
 def tobinary( n ):
 #=========================================================================#
     s = ""
diff --git a/framework/subsystems/ogsmd/gsm/sms.py b/framework/subsystems/ogsmd/gsm/sms.py
index 8f93b8c..855a71d 100644
--- a/framework/subsystems/ogsmd/gsm/sms.py
+++ b/framework/subsystems/ogsmd/gsm/sms.py
@@ -35,7 +35,7 @@ def decodeSMS( pdu ):
     # SCA - Service Center address
     sca_len = bytes[offset]
     offset += 1
-    sms.sca = PDUNumberToTuple( bytes[offset:offset+sca_len] )
+    sms.sca = decodePDUNumber( bytes[offset:offset+sca_len] )
 
     offset += sca_len
     # PDU type
@@ -60,7 +60,7 @@ def decodeSMS( pdu ):
     # WARNING, the length is coded in digits of the number, not in octets occupied!
     oa_len = 1 + (bytes[offset] + 1) / 2
     offset += 1
-    sms.oa = PDUNumberToTuple( bytes[offset:offset+oa_len] )
+    sms.oa = decodePDUNumber( bytes[offset:offset+oa_len] )
     sms.da = sms.oa
 
     offset += oa_len
@@ -74,7 +74,7 @@ def decodeSMS( pdu ):
     offset += 1
     if sms.pdu_mti == 0:
         # SCTS - Service Centre Time Stamp
-        sms.scts = parse_time( bytes[offset:offset+7] )
+        sms.scts = decodePDUTime( bytes[offset:offset+7] )
         offset += 7
     else:
         # VP - Validity Period FIXME
@@ -84,7 +84,7 @@ def decodeSMS( pdu ):
             offset += 1
         elif sms.pdu_vpf == 3:
             # Absolute
-            sms.vp = parse_time( bytes[offset:offset+7] )
+            sms.vp = decodePDUTime( bytes[offset:offset+7] )
             offset += 7
 
     # UD - User Data
@@ -141,27 +141,6 @@ Headers: %s
 Message: %s
 """ % (self.sca, self.scts, self.pid, self.oa, self.udh, self.ud)
 
-def bcd_decode(bs):
-  s = "".join(["%1x%1x" % (b & 0xF, b >> 4) for b in bs])
-  if s[-1] == "f":
-    s = s[:-1]
-  return s
-
-def parse_time(bs):
-  if len(bs) != 7:
-    return "timestamp-length-not-7"
-  bs = [((n & 0xf) * 10) + (n >> 4) for n in bs]
-  if bs[0] >= 90: # I don't know if this is the right cut-off point...
-    year = 1900 + bs[0]
-  else:
-    year = 2000 + bs[0]
-  timezone = bs[6]
-  if timezone > 0x80:
-    zone = "-%.2f" % ((timezone - 0x80) / 4,)
-  else:
-    zone = "+%.2f" % (timezone / 4,)
-  return "%04d-%02d-%02d %02d:%02d:%02d GMT%s" % (year, bs[1], bs[2], bs[3], bs[4], bs[5], zone)
-
 if __name__ == "__main__":
     pdus = [
     "0791448720900253040C914497035290960000500151614414400DD4F29C9E769F41E17338ED06",

-- 
framworkd debian packageing



More information about the pkg-fso-commits mailing list