summaryrefslogtreecommitdiff
path: root/decode
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2012-01-21 15:10:59 -0600
committerDan Williams <dcbw@redhat.com>2012-01-21 15:10:59 -0600
commit365666da01095dfb1529aaf6a5f08418677605ac (patch)
treeae3f101d093850b036f9f700baf782aae8c31948 /decode
parentfac80b70027f4c74b9552a8a48e61e388f455871 (diff)
decode: update for WMC timestamps
Diffstat (limited to 'decode')
-rw-r--r--decode/wmc.py96
1 files changed, 65 insertions, 31 deletions
diff --git a/decode/wmc.py b/decode/wmc.py
index 1a64c80f..0db1775a 100644
--- a/decode/wmc.py
+++ b/decode/wmc.py
@@ -208,36 +208,46 @@ def show_network_info(data, prefix, direction):
return
fmt = "<"
- fmt = fmt + "B" # unknown1
- fmt = fmt + "3s" # unknown2
- fmt = fmt + "B" # service
- fmt = fmt + "B" # unknown4
- fmt = fmt + "10s" # magic
- fmt = fmt + "H" # counter1
- fmt = fmt + "H" # counter2
- fmt = fmt + "B" # unknown5
- fmt = fmt + "3s" # unknown6
- fmt = fmt + "B" # 2g_dbm
- fmt = fmt + "3s" # unknown7
- fmt = fmt + "16s" # cdma_opname
- fmt = fmt + "18s" # unknown8
- fmt = fmt + "B" # 3g_dbm
- fmt = fmt + "3s" # unknown9
- fmt = fmt + "B" # unknown10
- fmt = fmt + "3s" # unknown11
- fmt = fmt + "B" # unknown12
- fmt = fmt + "8s" # 3gpp_opname
- fmt = fmt + "4s" # unknown13
- fmt = fmt + "I" # unknown14
- fmt = fmt + "I" # unknown15
- fmt = fmt + "44s" # unknown16
- fmt = fmt + "I" # mcc/mnc
+ fmt += "B" # unknown1
+ fmt += "3s" # unknown2
+ fmt += "B" # service
+ fmt += "B" # unknown3
+ fmt += "H" # year
+ fmt += "B" # month
+ fmt += "B" # zero
+ fmt += "B" # day
+ fmt += "B" # zero
+ fmt += "B" # hours
+ fmt += "B" # zero
+ fmt += "B" # minutes
+ fmt += "B" # zero
+ fmt += "B" # seconds
+ fmt += "H" # counter1
+ fmt += "H" # counter2
+ fmt += "3s" # unknown4
+ fmt += "B" # 2g_dbm
+ fmt += "3s" # unknown5
+ fmt += "16s" # cdma_opname
+ fmt += "18s" # unknown6
+ fmt += "B" # 3g_dbm
+ fmt += "3s" # unknown7
+ fmt += "B" # unknown8
+ fmt += "3s" # unknown9
+ fmt += "B" # unknown10
+ fmt += "8s" # 3gpp_opname
+ fmt += "4s" # unknown11
+ fmt += "I" # unknown12
+ fmt += "I" # unknown13
+ fmt += "44s" # unknown14
+ fmt += "I" # mcc/mnc
expected = struct.calcsize(fmt)
if len(data) >= expected:
- (u1, u2, service, u4, magic, counter1, counter2, u5, u6, two_g_dbm, u7, \
- cdma_opname, u8, three_g_dbm, u9, u10, u11, u12, tgpp_opname, u13, u14, \
- u15, u16, mccmnc) = struct.unpack(fmt, data[:expected])
+ (u1, u2, service, u3, year, month, z1, day, z2, hours, z3, minutes, z4, \
+ seconds, counter1, counter2, u4, two_g_dbm, u5, \
+ cdma_opname, u6, three_g_dbm, u7, u8, u9, u10, tgpp_opname, u11, u12, \
+ u13, u14, mccmnc) = struct.unpack(fmt, data[:expected])
+ print prefix + " Time: %04d/%02d/%02d %02d:%02d:%02d" % (year, month, day, hours, minutes, seconds)
print prefix + " Counter1: %s" % counter1
print prefix + " Counter2: %s" % counter2
print prefix + " Service: %d (%s)" % (service, service_to_string (service))
@@ -259,9 +269,9 @@ def show_network_info(data, prefix, direction):
raise ValueError("Unexpected Network Info command response len (got %d expected %d)" % (len(data), expected))
fmt3 = "<"
- fmt3 = fmt3 + "B" # lte_dbm
- fmt3 = fmt3 + "3s" # unknown17
- fmt3 = fmt3 + "4s" # unknown18
+ fmt3 += "B" # lte_dbm
+ fmt3 += "3s" # unknown15
+ fmt3 += "4s" # unknown16
expected3 = struct.calcsize(fmt3)
if len(data) >= expected + expected3:
(lte_dbm, u17, u18) = struct.unpack(fmt3, data[expected:])
@@ -269,7 +279,31 @@ def show_network_info(data, prefix, direction):
def show_init(data, prefix, direction):
- show_data(data, prefix)
+ if len(data) == 0:
+ # PC5740/old format
+ return
+
+ if direction == defs.TO_HOST:
+ show_data(data, prefix)
+ return
+
+ fmt = "<"
+ fmt += "H" # year
+ fmt += "B" # month
+ fmt += "B" # zero
+ fmt += "B" # day
+ fmt += "B" # zero
+ fmt += "B" # hours
+ fmt += "B" # zero
+ fmt += "B" # minutes
+ fmt += "B" # zero
+ fmt += "B" # seconds
+ expected = struct.calcsize(fmt)
+ if len(data) >= expected:
+ (year, month, z1, day, z2, hours, z3, minutes, z4, seconds) = struct.unpack(fmt, data[:expected])
+ print prefix + " Time: %04d/%02d/%02d %02d:%02d:%02d" % (year, month, day, hours, minutes, seconds)
+ else:
+ raise ValueError ("Unexpected Init command length (got %d expected %d)" % (len(data), expected))
def show_bearer_info(data, prefix, direction):
pass