機体の設定をDump/Diffのテキストファイルから読み解きたいことがまれにあります。大部分は意味のある文字列が書いてありますし、受信機の種類などは記憶していたりするので良いのですがConfiguratorのPortページのデータが曲者です。どのUARTが受信機だったとか、VTXのプロトコルがIRC TrampだったかSmartAudioだったとか重要な項目ですが、記憶するのは難しいですしDump/Diffデータも意味不明の数字でしかありません。ということで、これについて調べたことを書いておきます。タイトルはSerial編として続きがあるように見えますが、次に何かDump/Diffで困ったことが見つからない限り書く予定はありません。
上はとある機体のPortsタブです。これに対応するDumpデータは以下のようになっています。
# serial
serial 20 1 115200 57600 0 115200
serial 0 8192 115200 57600 0 115200
serial 1 64 115200 57600 0 115200
最初のserial 20で始まる行はdiffの出力には現れません。これはUSB VCPに相当すると容易に想像が付きます。またserial 0がUART1でserial 1であるというのもほぼ確信を持って言えるでしょう。それに続く数値もPortsタブの設定を変化させて探っていけば自分が必要な項目は拾い出せるとは思いますが、今ひとつスマートではありませんし確信を持って語ることは出来ません。
正しい情報を得るべくソースコードを読んで探していたのですが、結局ドキュメントにまとめて書かれていることが分かりました。ということでbetaflight/docs/Serial.mdを読んでいただければ全ては解明します。
それだけではつれないので簡単に説明を加えておきます。serialに続く最初の数字がポートでUART番号から1を引いたものです。またUSBは20、softserialは30から始まります。
その次の数字がFunctionで、これが今回知りたかったものです。その後にボーレート(シリアルインターフェースの速度)がいくつか続きます。Ports画面には速度はひとつしか表示されていないのが謎ですが、とりあえずあまり変更するものではないので置いておきます。
Functionについては次のように定義されています。
2. Serial Port Function
Function | Value |
---|---|
FUNCTION_NONE | 0 |
FUNCTION_MSP | 1 |
FUNCTION_GPS | 2 |
FUNCTION_TELEMETRY_FRSKY_HUB | 4 |
FUNCTION_TELEMETRY_HOTT | 8 |
FUNCTION_TELEMETRY_LTM | 16 |
FUNCTION_TELEMETRY_SMARTPORT | 32 |
FUNCTION_RX_SERIAL | 64 |
FUNCTION_BLACKBOX | 128 |
FUNCTION_TELEMETRY_MAVLINK | 512 |
FUNCTION_ESC_SENSOR | 1024 |
FUNCTION_VTX_SMARTAUDIO | 2048 |
FUNCTION_TELEMETRY_IBUS | 4096 |
FUNCTION_VTX_TRAMP | 8192 |
FUNCTION_RCDEVICE | 16384 |
FUNCTION_LIDAR_TF | 32768 |
FUNCTION_FRSKY_OSD |
IT屋さんにはおなじみの数字が書かれています。これは10進数ですが、バイナリーにするとひとつのビットになります。これはひとつのポートに複数のFunctionをもたせることが出来るようにしているからです。現実性は無視して例を上げるとUART1にGPSとFRSKY Telemetryの機能を持たせた場合は2+4で6にセットされます。
最初にあげた例に戻ってみます。
serial 0 8192
はUART1がFUNCTION_VTX_TRAMP、また
serial 1 64
はUART2がFUNCTION_RX_SERIALであることが分かります。ということでPorts画面と一致していることがわかります。
no comment untill now