2012-06-25 2 views
2

Я написал программу для декодирования SMS-сообщения CDMA 3GPP2 «точка-точка». Я тестировал его на пару шестнадцатеричных строк CDMA PDU, которые я нашел в Интернете, и он отлично работает. Однако, когда я пытаюсь реализовать его во всех входящих текстовых сообщениях на платформе Android, он всегда терпит неудачу.Разбор CDMA PDU на Android

Я взглянул на входящий PDU, и он, похоже, не соответствует тому же шаблону, который я использовал для просмотра. Может ли кто-нибудь объяснить, в каком формате этот PDU находится, или что мне не хватает, чтобы правильно декодировать этот PDU? Есть ли дополнительный заголовок или поля, которые я не учитываю?

Пример PDU вытащил из входящего текстового сообщения на мой телефон:

000000000000100200000000000000000A36373839313031363734000000000000000000001B000310864D000306120624205611010B104C2CF9F3F5EBD73E7000 

Все о CDMA БРП я нашел и проверил мой синтаксический выглядеть как:

00000210020207028CE95DCC65800601FC08150003168D3001061024183060800306101004044847 

Carrier: Verizon Телефон: Samsung Galaxy S FascinateAndroid 2.3.3

ответ

2

Просмотреть javadoc из $ SDK/sources/android-16/com/и Roid/внутренний/телефония/CDMA/SMSMessage:

/** 
* 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 с userdata:

104C2CF9F3F5EBD73E7000, первые пять бит которого показывают, что это 7-битный код (0x02). Сдвинув остаток от USERDATA 5 бит влево, мы остались с:

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

Таким образом, ваш 7bit телом декодирования «Bggguuugg».

 Смежные вопросы

  • Нет связанных вопросов^_^