Android手机的时区设置为+8,那么理论上对比AP侧和Modem侧日志,只需要将AP侧logcat中的时间减去8小时即可匹配上Modem侧日志的时间。
[persist.sys.timezone]: [Asia/Shanghai]
在分析日志过程中,发现AP侧匹配Modem侧时间对不上。
# AP侧日志
06-16 19:33:47.184 - **** delete aiding data 65535
# QXDM读出的Modem日志
11:34:07.412313 Deleting aiding data
时间对不上的话,那就是Modem时间相比AP时间整体发生了偏移,不可能只有一处对不上。
因此,我们可以找到一处能够提供这段差异的日志即可。
下面以添加GPS mask相关的qxdm日志为例。
在卫星定位成功后,会有相关的packet提供gps time和utc时间。
用QCAT打开日志文件,过滤packet 0x1482和0x1544
然后,点击Packets,再点击Type栏目按照Type进行排序,即可迅速地找到第一个0x1482 packet,选中右击选择BookMark进行标记,再点击Time回到按照时间默认排序。
选中0x1482后紧接着的0x1544 packet
双击该0x1544 packet,可以查看该packet的详细内容。
根据该packet,我们有两种方法去判断当前的UTC:
第一种,根据UTC timestamp来转换,打开转换的工具网页,将utc输入,单位改成毫秒,再点击转换按钮,即可得到需要的时间2022-06-17 12:03:05,再看这个packet对应的时间为2022 Jun 17 04:03:26.285。我们将算出来的UTC时间减去8小时(设置的时区),得到04:03:05,对比modem侧时间04:03:26,发现modem时间多了21秒,记住这个偏移,后面就可以对应AP和Modem的日志了。
qmiLocEventPositionReportIndTlvs[20] {
Type = 0x25
Length = 8
timestampUtc {
timestampUtc = 1655438585000
}
}
第二种,根据GPS week,打开GPS Time Calculator网页,将对应的参数输入。需要注意的是,packet中给的时间单位为毫秒,网页中的时间入参单位为秒。这种方法我们一样可以得出当前的UTC为2022-6-17 04:03:05,为什么不是12:03:05呢,因为gps time是没有时区概念的,基准为0时区,可以自行增加相应时区。
qmiLocEventPositionReportIndTlvs[22] {
Type = 0x27
Length = 6
gpsTime {
gpsWeek = 2214
gpsTimeOfWeekMs = 446603000
}
}