diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2013-01-08 22:29:38 +0000 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2013-01-08 22:29:38 +0000 |
commit | c872b1258c425e234403d97afa5d1ff6c7fefef4 (patch) | |
tree | d0a8e322ffe16455fed908cb545e49b92ac19487 /asn1 | |
parent | 30fdbd6da6dfae4224a7b1393fd1d90b4be9ea7d (diff) |
Dissect CDMA2000 system time
svn path=/trunk/; revision=47001
Diffstat (limited to 'asn1')
-rw-r--r-- | asn1/lte-rrc/lte-rrc.cnf | 34 |
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; |