aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2013-01-08 22:29:38 +0000
committerPascal Quantin <pascal.quantin@gmail.com>2013-01-08 22:29:38 +0000
commitc872b1258c425e234403d97afa5d1ff6c7fefef4 (patch)
treed0a8e322ffe16455fed908cb545e49b92ac19487 /asn1
parent30fdbd6da6dfae4224a7b1393fd1d90b4be9ea7d (diff)
Dissect CDMA2000 system time
svn path=/trunk/; revision=47001
Diffstat (limited to 'asn1')
-rw-r--r--asn1/lte-rrc/lte-rrc.cnf34
1 files changed, 34 insertions, 0 deletions
diff --git a/asn1/lte-rrc/lte-rrc.cnf b/asn1/lte-rrc/lte-rrc.cnf
index cca1731ec8..99d1b5676a 100644
--- a/asn1/lte-rrc/lte-rrc.cnf
+++ b/asn1/lte-rrc/lte-rrc.cnf
@@ -715,6 +715,40 @@ if(ue_cap_tvb){
}
}
+#.FN_BODY SystemTimeInfoCDMA2000/cdma-SystemTime/asynchronousSystemTime VAL_PTR=&async_system_time_tvb
+ tvbuff_t *async_system_time_tvb = NULL;
+%(DEFAULT_BODY)s
+
+#.FN_FTR SystemTimeInfoCDMA2000/cdma-SystemTime/asynchronousSystemTime
+ if (async_system_time_tvb) {
+ guint64 bits;
+ nstime_t ts;
+ proto_tree *subtree;
+ subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_timeInfo);
+ bits = tvb_get_bits64(async_system_time_tvb, 0, 49, ENC_BIG_ENDIAN);
+ ts.secs = (time_t)((bits*8)/1228800) + 315964800; /* CDMA2000 epoch is 00:00 (midnight) UTC on 1980-01-06 */
+ ts.nsecs = (int)(((bits%153600)*8*1000000000)/1228800);
+ proto_tree_add_text(subtree, async_system_time_tvb, 0, -1, "CDMA time: %s", abs_time_to_str(&ts, ABSOLUTE_TIME_UTC, FALSE));
+ proto_tree_add_text(subtree, async_system_time_tvb, 0, -1, "Local time: %s", abs_time_to_str(&ts, ABSOLUTE_TIME_LOCAL, TRUE));
+ }
+
+#.FN_BODY SystemTimeInfoCDMA2000/cdma-SystemTime/synchronousSystemTime VAL_PTR=&sync_system_time_tvb
+ tvbuff_t *sync_system_time_tvb = NULL;
+%(DEFAULT_BODY)s
+
+#.FN_FTR SystemTimeInfoCDMA2000/cdma-SystemTime/synchronousSystemTime
+ if (sync_system_time_tvb) {
+ guint64 bits;
+ nstime_t ts;
+ proto_tree *subtree;
+ subtree = proto_item_add_subtree(actx->created_item, ett_lte_rrc_timeInfo);
+ bits = tvb_get_bits64(sync_system_time_tvb, 0, 39, ENC_BIG_ENDIAN);
+ ts.secs = (time_t)(bits/100) + 315964800; /* CDMA2000 epoch is 00:00 (midnight) UTC on 1980-01-06 */
+ ts.nsecs = (int)(bits%100)*10000000;
+ proto_tree_add_text(subtree, sync_system_time_tvb, 0, -1, "CDMA time: %s", abs_time_to_str(&ts, ABSOLUTE_TIME_UTC, FALSE));
+ proto_tree_add_text(subtree, sync_system_time_tvb, 0, -1, "Local time: %s", abs_time_to_str(&ts, ABSOLUTE_TIME_LOCAL, TRUE));
+ }
+
#.FN_BODY CellInfoUTRA-FDD-r9/utra-BCCH-Container-r9 VAL_PTR = &utra_bcch_cont_tvb
tvbuff_t *utra_bcch_cont_tvb = NULL;
proto_tree *subtree;