マイコン工作実験日記

Microcontroller を用いての工作、実験記録

配達遅延

2010-11-09 00:23:13 | Weblog
画面準備の記事ばかり書いていて、基板を発注したことをまだ書いていませんでした。先月のP板のキャンペーンには間に合いませんでしたが、先週Fusion PCBにデータ出ししました。



今回もEagleの自動ルーティングまかせですし、基板サイズもEagle freewareライセンスの制限いっぱいの100mm x 80mm。つまりは、部品の配置を決めただけで、あとは全てEagleまかせの手抜きみたいなもんです。前回と比べてほとんど進歩がないのですが、いちおうClass定義をしてGNDとVCCの線だけはちょっとだけ太目に引いてみました。今回もちゃんと実物合わせをしていないので、実際に実装する段になって問題が見つかるかもしれません。パターンミスもすでに1箇所見つけてしましました。カットするだけで済む軽微なものでしたが、他にミスの無いことを祈りたい気もちです。

さて、基板もできたらしく、"shipped" の連絡が入ったのですが、クリスマスシーズンに向けて郵便物の量が増えており、実際に飛行機に乗るまで何日もかかるらしいです。

画面の準備 -- 通話中画面

2010-11-07 16:49:18 | Weblog
なんとかヘッドセットとタッチパネルのどちらの操作でも着信応答できるようになったので、続いて通話中画面を用意。こちらもいたって簡素なもので、通話時間の表示機能と、切断ボタンしかありません。



通話中は通話時間をカウントアップするだけです。通話音声のPCMストリームはW-SIMとWT32の間で直接やりとりされ、LPC2388はまったく介在しません。そのため、ほとんどの時間はアイドル状態に遷移しているはずです。

切断操作はヘッドセットとタッチパネルのどちらからでも何の問題もなくできることを確認。切断後は、いったん時計表示の待ちうけ画面に遷移することにしました。これで、着信操作はひととおりできるようになったので、次は発信画面の用意です。

無理やりつなげる

2010-11-05 23:36:52 | Weblog
WT32側から着信応答をしようとすると音声リンクが切れてしまう問題の続きです。HFPのプロトコル・トレースが採れれば調査もやりやすいのですが、残念ながらそのような機能はiWRAPにはありません。CSRの開発ツールとか揃えれば、もっと下位のレイヤでのトレースが採れるのかもしれませんが、個人で買うものではなさそうです。そんなわけで、いろいろとiWRAPのコマンドを試行錯誤してみたところ、次のような手順でつなげられることが確認できました。



answerコマンドで応答すると着信音が止まるとともに音声パスのリンクが切れてしまうのですが、その後でsco openコマンドを使って音声パス用のSCOリンクを強制的に張りなおしてやるという方法です。ほんとはリンクが一度も切れずに続いてくれるのが好ましいところです。A2DPのストリームが止まったり、再開されたりしているのも、なんだかドタバタしている感じでスマートじゃありません。

この方法以外にも、HFP AG側の状態変化をHFP Device側に通知する+CIEVを生成するstatusコマンドを使って、callやcallsetupの状態変化通知をしてみたりしたのですが、着信音が止まるのに時間がかかったりして、いまひとつ動作がつかみきれませんでした。結局、現時点ではsco openを使うのが確実に安定して動作する方法なので、これを使うことにしました。

ようやくと、ヘッドセット操作とタッチパネル操作のどちらでも着信応答ができるようになりました。


画面の準備 -- 着信画面

2010-11-04 01:30:56 | Weblog
再生画面に続いて、W-SIMの着信画面を用意。単に、発信者番号を表示するとともに、ボタンを2つ表示するだけのシンプルな画面です。なんか動きをつけるといいのでしょうが、まだまだそこまでは手が廻りそうもありません。



もちろん発信者番号の表示はできるのですが、画像編集が面倒なので画像は非通知の場合を示しています。この状態で、Bluetoothヘッドセット側のスイッチを操作することで、応答あるいは着信拒否が動作することを確認。続いて、画面上からの操作を確認してみると、着信拒否は動作するのですが、応答の場合のBluetooth側手順をちゃんと検証していなかったために、こいつが動いていません。そこで、改めてこの手順を調べてみました。

まずは、ちゃんと動くヘッドセット側操作の場合。WT32に対してringコマンドを送ってやると、音声のリンクが張られてヘッドセット側で着信音が鳴ります。ヘッドセット側で応答操作をすると、着信音が止まってCONNEC応答が返ってきて、通話できる状態になります。この時、listコマンドを実行するとHFPのリンクと、音声のリンク(SCO)の2つのリンクが接続されていることが確認できます。↓



続いて、問題の画面操作での応答動作です。要は、画面から応答した場合には、どのようにWT32に指示を出せばいいのかが理解できていないということです。BluegigaのAPノートには、そのような具体例が出ていなかったので、それらしいコマンドを試してみた結果がコレです。



connectがダメだったのでanswerを送ってみると、着信音が止まってHFPからCONNECT応答が返るのはいいのですが、音声のパスが切れてしまいます。そのため、この状態でW-SIM側にATAを送っても、通話ができないのです。なんとも中途半端な状態です。いろいろと試してはいるのですが、どうすればいいのかまだわかっていません。もう少し実験してみて、それでもわからなければBluegigaに問い合わせた方がいいのかもしれません。

画面の準備 -- 再生画面

2010-11-01 00:24:26 | Weblog
MTM06が近づいてきたので、そろそろ見てくれだけでも整えなければと思い、画面の準備を始めました。まずは、MP3の再生画面から。



基本的には昨年のMP3プレーヤと同じなのですが、音量制御機能が無いので、その部分を削除。ようやくと漢字フォントもLCDモジュール上のフラッシュに書き込んだので日本語でのタイトル表示もできるようにしました。JPEG表示機能は最後に入れるつもりなので、アルバム画像の部分はまだ白抜きのままです。



新たに最上部にアイコン画像を並べることにしました。電池残量表示は、まだ作成したアイコンを試しに表示してみただけで、実際の残量を反映していません。電池残量は電池電圧から判定しますが、LPC2388のA/Dは使わず、WT32のBATTコマンドで取得できる電池電圧データを使用するつもりです。電池の右隣りの3つのアイコンは、それぞれBluetoothのHFP, A2DP, AVRCPプロファイルの接続状況を示します。こちらは、実際にヘッドセットの操作でアイコンが変化するところまで作り込みました。

そしてさらにその右側には、W-SIMのアンテナ表示を入れるつもりでいます。アイコン未作成のため、とりあえず数字で表示することにしたのですが、そもそも、まだ配線ができていなかったことに気が付きました。