そもそも、素の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こんな感じで、NMEAメッセージを受け取るたびに解析処理されてる。
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'
とりあえず、位置情報の取得ができるように、もう少しじっくり読む。
AndroidのGPSの扱いが不明な点もあるのでそっちも調べないとなぁ。
(`・ω・´)
0 件のコメント:
コメントを投稿