ようやくUX50でNavin You Pocketを動作検証を行うことができました。
実機確認環境が無くなかなか検証出来ませんでした。 実は、
何度かデバッグプログラムにおつきあい頂いたお客様もいらっしゃいました。(その節は大変お世話になりました。お元気ですか?この場を借りてお礼申し上げます。)
しかし根本原因は不明であまり有効な対策はとれず、「動作不安定です。」とお知らせをいただく場合も結構ありまして、気にかけていたのです。
しかし、最近UX50での動作に関するお問い合わせが増えてきましたし、UX50対応の次アプリケーションの検証もかねて実機確認を行うことにしました。
結果はというと、電源マネジメントへの配慮が足りなかったのことが原因でした。
UX50は省電力機能を備えた素晴らしいHandHeldEngineを搭載していますが、このCPUは CPU Clockを自在に変化させることで低消費電力を実現しているのです。
そのため処理時間が変化した(遅くなる場合に)その間のNMEAテキストを格納しきれずオーバーフローエラーを検出しその結果エラーリカバリ処理のリンク切断と再リンク動作がおこなわれていました。
これは、Bluetooth GPSが一定周期でNMEA-0183テキストを出力していて、これを取りこぼすことなく、UX50,TG50で受信しなければならないのですが、そのためには受信には通常受信バッファを割り当てるのです。このバッファサイズは 数回分のNMEA テキストをすべて取り込んでもあふれないサイズとしています。 こうすることで、NMEA0183テキストの解析処理を数回程度のスキップさせることが可能になりまして、その間に解析処理や位置更新処理を行う時間に余裕をつくる事ができます。
TG50ではこの処理時間はほぼ一定で推移していくのですがHandheldEngineを搭載したUX50はこの周期というか処理時間が大きく変化し、バッファ内に格納したNMEAテキストサイズも大きく変化していることに気が付きました。
んー、こんなことになっていたのか...これでは実機じゃないとわかんないですよね..(と言い訳...)... デバッグする際に経過時間の要素が加わりますからね。エミュレータじゃわかりません。
ところでTH55はどうなの? あれもHandHeldEngineじゃないの?という疑問もあるかもしれません。ご心配無用です。確認してみるとHNT-BT1がさりげなくデータを間引いてくれていて処理周期が延びてもバッファが想定サイズ以上にあふれることはありませんでした。(ありがとうHNT-BT1)
でも気持ちが悪いので NavnSC,NavnBTともにBTi検証時に得られた対策を施したいと思います。
気長にお待ちください.......
さぁて 次はいよいよ...