クライアントから見たRTCM3

RTCM3 メッセージ

フォーマットがRTCM 3.xとなっているmountpointにRequestを送信すると、"ICY 200 OK"を受信したのちGNSSデータ(RTCMメッセージ)がストリーミングで送られてきます。

f:id:misatospring:20190601231248j:plain

ストリーミングなので1パケットにひとつのRTCMメッセージが含まれているわけではなく、1パケットに複数のRTCMメッセージが含まれていたり、1RTCMメッセージが複数のパケットにまたがっていたりします。

なので受信したデータをバッファに一度収容し、バッファからRTCMメッセージを拾い出すというプロセスが必要ですが、この部分はPPPの"7e"分割に似た実装となります(懐かしいが少しちがう)。

また"ICY 200 OK"のあとにすぐRTCMメッセージ(バイナリデータ)がつづくこともあるので注意が必要です。

0000    49 43 59 20 32 30 30 20   4f 4b 0d 0a d3 00 13 3e    ICY 200   OK......

RTCM3フォーマット

RTCM3メッセージは

  • 3バイトヘッダ
  • データ(GNSSデータ)
  • 3バイトCRC

で構成されます。 f:id:misatospring:20190601221541j:plain ヘッダのlengthは16進数なので間違えないように。
ヘッダ3バイト + データ長(ヘッダのlength) + CRC3バイトの合計が1RTCMメッセージの長さとなります。