2010年7月14日水曜日

走るgps_freerunner

で、一体、今どこ?

そもそも、素のM001にはGPSのつぶやき(NMEAメッセージ)を処理する仕組みが入ってない。

でも、シリアルドライバは入ってるので、一部のUSB-GPSは認識できる。

デバイスをつないで、NMEAメッセージを取り出すことは簡単。

じゃ、Android定義のI/Fをちゃんと用意して、GPS周りの処理を実装すればおk!?

gps_freerunnerと言う実装を掘り出す。なんかいけるかも。

libhardware_legacy.so 野良ビルド

動かねぇwwデバッグ

ちょっと動いたwwさらにほげる&修正

衛星拾ったww(←今ココ)


と言うわけで、こんな感じで衛星拾ってたりする。
少年の心をくすぐるマンガレーダー風味が(・∀・)イイ!!

画面の通り、9つの衛星をキャッチ。
しかし、何時までたっても測位してくれない
(´・ω・`)ありー?
おかげで位置情報が取れない。
なぜだ、、、

でもまぁ、ここまでこぎつければ何とかなりそう。

gps_freerunnerの処理を読んでみて、I/F周り~スレッド処理には特に問題ない、、、と思う。
GPSデバイスが投げてくるメッセージは、gps_freerunnerのスレッドが受け取ってせっせと解析処理する。
NMEAパーサーの動きは、
D/gps_fr  (  131): Received: '$GPGGA,******.***,,,,,0,00,,,M,0.0,M,,0000*59
D/gps_fr  (  131): '
D/gps_fr  (  131): Found 15 tokens
D/gps_fr  (  131):  0: 'GPGGA'
D/gps_fr  (  131):  1: '******.***'
D/gps_fr  (  131):  2: ''
D/gps_fr  (  131):  3: ''
D/gps_fr  (  131):  4: ''
D/gps_fr  (  131):  5: ''
D/gps_fr  (  131):  6: '0'
D/gps_fr  (  131):  7: '00'
D/gps_fr  (  131):  8: ''
D/gps_fr  (  131):  9: ''
D/gps_fr  (  131): 10: 'M'
D/gps_fr  (  131): 11: '0.0'
D/gps_fr  (  131): 12: 'M'
D/gps_fr  (  131): 13: ''
D/gps_fr  (  131): 14: '0000'
こんな感じで、NMEAメッセージを受け取るたびに解析処理されてる。

とりあえず、位置情報の取得ができるように、もう少しじっくり読む。
AndroidのGPSの扱いが不明な点もあるのでそっちも調べないとなぁ。
(`・ω・´)

0 件のコメント:

コメントを投稿