AndroidのATコマンド

Emulatorを起動した状態で、SDKのtoolsにあるDalvik Debug Monitor (ddms)で[Device] - [Dump device state]するか、シェルで

$ ./adb shell /system/bin/dumpstate
$ ./adb pull /tmp/state state.txt

すると、RADIO LOGっぅ項目にAndroidが/dev/ttyS0に吐いているATコマンドのログが拾える。ので、
3GPP TS 27.007 - AT command set for User Equipment
と照合して何してんのかざっくり調査。

初期化

+CMEE=1 リザルトもエラーも数値形式
+CGREG=2 詳細なネットワーク登録情報
+CCWA=1 呼び出し待ちを許可
+CMOD=0 呼はシングル(通常)モード
+CMUT=0 上り音声のミュートをオフ
+CSSN=0,1 呼接続の追加情報なし、呼切断の追加情報あり
+COLP=0 発呼時に相手の詳細情報を取得しない
+CSCS="HEX" 16進数形式
+CUSD=1 Unstructured Supplementary Service Dataのリザルトコードは数値形式
+CGEREP=1,0 Packet Domainの状態変化コードをクリア
+CMGF=0 未定義(SMSメッセージフォーマット)
+CFUN? 現在の省電力モードを取得
+CPIN? PINパスワード待ち状態を取得
+CNMI? 未定義(新規SMSメッセージ問い合わせ)
+CSMS=1 未定義(SMS関連)
+CNMI=1,2,2,1 未定義(SMS関連)
+CGSN シリアル番号を取得
+COPS=3,0; +COPS=3,1; +COPS=3,2; +COPS? ネットワークオペレータを取得
+CGREG? GPRSネットワークの登録状況を取得
+CREG? ネットワークの登録状況を取得
+CSQ 無線信号強度とBERを取得
+CIMI International Mobile Subscriber Identity (IMSI)を取得
+CRSM= 制限つきSIMアクセス
+CGDCONT=1,"IP","internet",,0,0 パケット通信コンテキストを設定
+CGQREQ=1 QoS設定
+CGQMIN=1 最小QoS設定
+CGEREP=1,0 3G QoS設定
+CGACT=1,0 パケット通信コンテキストのアクティベート
D*99***1# パケット通信で発呼(PPPは/dev/omap_csmi_tty1)

発呼

D0355551111 0355551111に音声で発呼
+CLCC 現在の呼状態を取得
+CSQ 無線信号強度とBERを取得
+CHLD=1 現在の呼を切断し、バックグラウンドの呼をレジューム

着呼

RINGインディケーションを受信
+CLCC 現在の呼状態を取得
A 着呼
+CSQ 無線信号強度とBERを取得
+CHLD=1 現在の呼を切断し、バックグラウンドの呼をレジューム

SMS関連はGSMのコマンドぽいので、GSMの標準で調べたほうがいいかもしれないけど、GSMは方言も多いのでパス。まぁ何やってるか大体分かればいいし。呼接続中にもずっと+CSQしてるのがGSMぽい。あとは、普通に+CGDCONTとかATD/ATAとか。音声通話は+CHLD=1で呼切断、というかパケット通信にレジュームしてる(ぽい)。