短いメッセージにgsm cellidsを埋め込む
質問
WML関数「Providelocalinfo」を使用して、GSMハンドセット上のWIBメニューを介して送信される短いメッセージに位置情報を配置しています。
SmartTrustのWig WML V.4 Specを使用しています。関連するセクションは「9.4 Providelocalinfo要素」です
この例のようにコードを使用してから、SMSを介して変数を送信し、Kannelを使用してSMSCからメッセージを取得します。
MyServicecentre]が私の実際のサービスセンターであることを除いて、私が使用しているコードは次のとおりです。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE wml PUBLIC "-//SmartTrust//DTD WIG-WML 4.0//EN"
"http://www.smarttrust.com/DTD/WIG-WML4.0.dtd">
<wml wibletenc="UCS2">
<card id="s">
<p>
<providelocalinfo cmdqualifier="location" destvar="LOC"/>
<setvar name="X" value="loc=" class="binary"/>
<sendsm>
<destaddress value="367"/>
<userdata docudenc="hex-binary" dcs="245">
$(X)$(LOC)
</userdata>
<servicecentreaddress value="[myservicecentre]"/>
</sendsm>
</p>
</card>
</wml>
受信したメッセージで表示されているのは、「loc =」に続いて7バイト(オクテット)またはバイナリデータです。このデータをデコードする方法を説明するドキュメントを見つけようとしましたが、これを明確に説明するものは何も見つかりませんでした。
デコードされた7オクテットのうち、最初の3オクテットは常に同じです。次の2オクテットは3つの一意の値の間で変化する傾向があり、最後の2オクテットはCellidのように見えます。
そこで、レシーバーをコード化して、最後の2オクテットを引いて16ビットGSM Cellidを構築しました。ほとんどの場合、ネットワークから既知のCellidsと一致します。しかし、多くの場合、値は一致しません。
だから私は次の情報を見つけようとしています:
- 安全な方法で位置情報を適切に送信する方法(エンコーディング、キャストなど)
- 情報を適切にデコードする方法
- バイナリの位置データを尊重するようにカネルを構成する方法
私は無駄な検索で次のドキュメントを調べましたが、関連するデータは見つかりませんでした:GSM 03.38、GSM 04.07、GSM 04.08、GSM 11.15、およびWig WML Spec v .4 .4
私が間違っているかもしれないことについての洞察は大歓迎です!
解決
位置情報をデコードするには、GSM 11.14 Page 48を見る必要があります
1.19位置情報
Byte(s) Description Length
1 Location Information tag 1
2 Length (X) of bytes following 1
3-5 Mobile Country & Network Codes (MCC & MNC) 3
6-7 Location Area Code (LAC) 2
8-9 Cell Identity Value (Cell ID) 2
モバイルカントリーコード(MCC)、モバイルネットワークコード(MNC)、ロケーションエーカーコード(LAC)、およびセルIDは、TS GSM 04.08 [8]のようにコーディングされています。
個人的な経験から、ここで述べた最初のオクテットは通常中断されているため、最初の3つの変更されていないバイトは長さと国です。次の2は、ネットワークオペレーターコードです。
他のヒント
この質問についてはあまり噛まれません!他の人が有用であると感じることができる場合に備えて、私の発見を要約したかった:
0に等しくないDCS設定でメッセージを送信する必要があります。DCS= "0"はデータパックされたデータを送信します(各オクテットの7ビットを尊重します。
データをバイナリ安全な方法で解析する必要があります。0x0Aに遭遇したときに検索を停止する正規表現式は、バイナリデータ自体がその値になると失敗します。
Kannelのデフォルト構成を変更する必要はありませんでした。
乾杯
免責事項:16ビットGSM Cell-IDの安全な送信では、デフォルトで構成されていないという理由だけで、私が理解しているいくつかの設定を扱う必要があります。おそらく私が依存していた他のデフォルトはありますが、それらが異なる可能性があることに気づいていません。