web-dev-qa-db-ja.com

音声通話を行うときにHuawei GSMモデムから音声を出し入れするにはどうすればよいですか?

Huawei E160EとHuawei K3765 "GSM"モデムを持っています。

問題は、これらのモデムで電話/音声通話を発信または受信するオーディオデータを送受信する方法ですか?

仕様( E160EK3765 )およびATコマンドによると、どちらも音声通話をサポートしているようです。

発行中

AT^CVOICE?

結果は

^CVOICE:0,8000,16,20

OK

(どちらのモデムも同じ)。

両方のモデムは3つのUSBポートを提供します。これらを/dev/ttyUSB0/dev/ttyUSB1/dev/ttyUSB2と呼びます(システムに他のUSBシリアルデバイスが存在しない場合)。 K3765はさらにcdc_etherethernetデバイスを登録します。 Linuxを使用しています。

/dev/ttyUSB0/dev/ttyUSB2の両方で、ATコマンドを配置してその回答を受け取ることができます。さらに、/dev/ttyUSB2はステータスメッセージを報告します(^RSSI:23^BOOT:38021325,0,0,0,77^SIMST:1^SRVST:2など)。また、K3765は、(RING)を呼び出す人がいる場合にデフォルトでレポートしますが、E160Eはレポートしません。

両方のモデムで、ATD<number>;を使用して通話を発信したり、ATAを使用して通話をピックアップしたりできます。

/dev/ttyUSB1は何もしないようです。このファイルに書き込むだけではデータは取得されず、ファイルから読み取るとデータが取得されません。

オーディオデータをモデムに出し入れするにはどうすればよいですか?

私はすでに このstackexchangeの質問Sai Chaitanya による回答、およびffmpeg/ffplayを使用するためのコメントを見つけました。 ffplayは私のためにただ停止するだけで、コードを省略しても、それを試してみるほど多くを作ることはできません(ただし、プログラマーではなく、特にCにはありません)。これは私のモデムにも当てはまります)。

インターネットでは、大きなソフトウェアパッケージ(たとえば、アスタリスク)を使用する以外に、実際にこれらのデバイスにオーディオを出し入れする方法についての情報は見つかりません。基本的な方法で動作します。

それでは、オーディオ通信は(これらの)Huawei GSMモデムでどのように機能しますか?

モデム情報:ATI- commandの出力:

E160E:

Manufacturer: huawei
Model: E160X
Revision: 11.609.10.02.432
IMEI: 354765038021325
+GCAP: +CGSM,+DS,+ES

OK

K3765:

Manufacturer: huawei
Model: K3765
Revision: 11.126.03.06.00
IMEI: 353142047899771
+GCAP: +CGSM,+DS,+ES

OK
4
Golar Ramblar

呼び出し後に電話をかけたり受けたりした後、次のコマンドを発行して、シリアルデバイスのオーディオ出力を有効にする必要があります(呼び出しごとに)

AT^DDSETEX=<number>

(私のデバイスでは、AT^DDSETEX=2のみがサポートされ、2番目のシリアルインターフェイスとの間でオーディオを送信します。つまり、/dev/ttyUSB1)。

次に、/dev/ttyUSB1から読み取るとデータが得られ、/dev/ttyUSB1にデータを書き込むと相手の電話に通知が届きます。

ノイズだけでなく、正しいものが聞こえるようにオーディオデータを正しく読み書きする方法を見つけることは、技術的な演習として残します;-)。

http://lists.ofono.org/pipermail/ofono/2012-March/012551.html のおかげで、これを試すアイデアを得ました。

2
Golar Ramblar