CDMA PDU解析在Android(CDMA PDU parsing on Android)

2019-07-30 02:29发布

我已经写了一个程序,解码CDMA 3GPP2点至点短信。 我测试了它的一对夫妇CDMA PDU串的十六进制我发现在互联网上,它完美的作品。 然而,当我尝试实施它在Android平台上的所有传入的文本信息,它总是失败。

我接过一看进来的PDU,它似乎并没有跟随我一直在看惯了相同的模式。 谁能解释这PDU是什么格式,或者什么,我缺少正确解码此PDU? 是否有额外的头或字段我没有考虑到?

例如PDU从我的电话上的来电短信拉:

000000000000100200000000000000000A36373839313031363734000000000000000000001B000310864D000306120624205611010B104C2CF9F3F5EBD73E7000

所有CDMA的PDU,我发现和测试我的解析器上看起来更像是:

00000210020207028CE95DCC65800601FC08150003168D3001061024183060800306101004044847

运营商: Verizon手机: Samsung Galaxy S Fascinate运行Android 2.3.3

Answer 1:

请参阅从$ SDK /来源/ Android的16 / COM /安卓/内部/电话/ CDMA / SmsMessage的Javadoc:

/**
 * Creates byte array (pseudo pdu) from SMS object.
 * Note: Do not call this method more than once per object!
 */

...所以它不遵循任何特定的CDMA标准。 但是,您可以对其进行解码; 所以罚款ASCII艺术: -

000000000000100200000000000000000A36373839313031363734000000000000000000001B000310864D000306120624205611010B104C2CF9F3F5EBD73E7000
--------messageType     --digitMode                   --------bearerReply   ------------------------------------------------------bearer data
        --------teleService --ton --------------------src     --replySeqNo  --messageID --msts          --userdata
                --------serviceCategory                         --errorClass  --len   --XX--len           --len
                          --numberMode                            --causeCode   ------      ------------2012/06/24 20:56:11
                              --npi                                 --------bearerDataLength                ----------------------userdata
                                --len                                           

请注意,我觉得你在你的消息做了剪切/粘贴错误 - 00字节的标有“XX”,我认为不应该有 - 幸运的是,它很容易被发现的日期和向后工作。 因此,这是6789101674与用户数据的消息:

104C2CF9F3F5EBD73E7000,其中第一五个比特表明,它是编码的7位(0×02)。 已移至了用户数据的5位到左侧的其余部分,我们还剩下要:

09859f3e7ebd7ae7ce00
--len(septets) 9 septets == 63 bits, so we expect 8 bytes of body
  ----------------7bit-body

所以,你的解码7位体是“Bggguuugg”。



文章来源: CDMA PDU parsing on Android