LTE 系统信息SI解帧
希望下面这篇文章对你有帮助。
http://blog.sina.com.cn/s/blog_927cff0101019rfs.html
另:ASN.1应该已经实现了SI的解码,你可以参考一下其实现。
如果现在已知一个SI里面包含有SIB3、SIB4两个SIB,但是只需要SIB4的信息(SIB3的数据长度是不定的),能否从SI信息中提取出SIB4的数据,再对相应的数据进行解帧,还是只能用这一段数据先解帧SIB3再用剩下的数据解帧SIB4呢?
明白
学习了,感谢大家的共享
这个是可以通过读ASN.1编码后的码流来确定的,ASN编码后的SI消息的码流头部会指示当前SI发送的SIB的个数及每个SIB消息的长度,通过这些指示信息滑取相应的offset位就可找到SIB4消息内容编码后对应的各个bit。
很好,非常感谢楼主!
SystemInformation ::= SEQUENCE {
criticalExtensions CHOICE {
systemInformation-r8 SystemInformation-r8-IEs,
criticalExtensionsFuture SEQUENCE {}
}
}
SystemInformation-r8-IEs ::= SEQUENCE {
sib-TypeAndInfo SEQUENCE (SIZE (1..maxSIB)) OF CHOICE {
sib2 SystemInformationBlockType2,
sib3 SystemInformationBlockType3,
sib4 SystemInformationBlockType4,
sib5 SystemInformationBlockType5,
sib6 SystemInformationBlockType6,
sib7 SystemInformationBlockType7,
sib8 SystemInformationBlockType8,
sib9 SystemInformationBlockType9,
sib10 SystemInformationBlockType10,
sib11 SystemInformationBlockType11,
...,
sib12-v920 SystemInformationBlockType12-r9,
sib13-v920 SystemInformationBlockType13-r9
},
nonCriticalExtension SystemInformation-v8a0-IEs OPTIONAL
}
根据协议来看,SI中并没有关于所包含的的每一个SIB的个数及长度的指示,你能说的再详细一点么
学习了
编码的时候,会将消息的长度放在真正消息流的前面,在解码时读到该信息就知道每条SI消息的长度了
:)