EDGEPLANT CAN-USB I/Fからデータを取得する
付属デバイスコネクターdevice-connector-intdashを使用してEDGEPLANT CAN-USB InterfaceからCANデータを取得し、リアルタイム送信するための設定例です。
アップストリームの設定
以下のコマンドを実行して、 recoverable
というIDを持つアップストリームを作成します。
指定しているのはIDのみのため、他の設定値はデフォルトのとおりになります。
$ intdash-agentctl config up --create '
id: recoverable
'
デバイスコネクターIPCの設定
デバイスコネクターからのデータを受け取るためにデバイスコネクターIPCを追加します。以下のコマンドを実行してください。
$ intdash-agentctl config device-connector up --create '
id: up-can
data_name_prefix: can/
dest_ids:
- recoverable
format: iscp-v2-compat
ipc:
type: fifo
path: /var/run/intdash/up-can.fifo
launch:
cmd: device-connector-intdash
args:
- --config
- /etc/dc_conf/apt_cantrx-up.yml
environment:
- DC_APT_CANTRX_SRC_CONF_PATH=/dev/apt-usb/by-id/usb-xxx
- DC_APT_CANTRX_SRC_CONF_LISTENONLY=1
- DC_APT_CANTRX_SRC_CONF_BAUDRATE=500
- DC_APT_CANTRX_SRC_CONF_TIMESTAMP_MODE=device
- DC_PRINT_LOG_FILTER_CONF_TAG=up-can
- DC_FILE_SINK_CONF_PATH=/var/run/intdash/up-can.fifo
'
launch
で、device-connector-intdashを起動するように設定しています。device-connector-intdashを実行するための設定は、パイプライン設定ファイル
/etc/dc_conf/apt_cantrx-up.yml
として与えています(このファイルは次の手順で作成します)。 また、パイプライン設定ファイルで使用するための環境変数を与えています(environment
) 。device-connector-intdashから
/var/run/intdash/up-can.fifo
を介して得られたデータは、can
というデータ名称プレフィックスを与えられて、recoverable
というIDを持つアップストリームに送信されます。
device-connector-intdashのパイプライン設定
device-connector-intdash用のパイプライン設定ファイルを以下の内容で作成し、 /etc/dc_conf/apt_cantrx-up.yml
として保存します。
before_task:
# sync timestamp
- mkdir -p /var/lock/intdash
- |
BASETIME_CLOCK_ID=$DC_CLOCK_ID
meas-hook --lockfile /var/lock/intdash/dc_apt_usbtrx.lock --command "
if command -v apt_usbtrx_timesync.sh > /dev/null 2>&1 ; then apt_usbtrx_timesync.sh; exit 0; fi;
if command -v apt_usbtrx_timesync_all.sh > /dev/null 2>&1 ; then apt_usbtrx_timesync_all.sh; exit 0; fi;
echo \"ERROR: timestamp script not found\";
exit 1;
"
after_task:
- rm -f /var/lock/intdash/dc_apt_usbtrx.lock
tasks:
- id: 1
element: apt-cantrx-src
conf:
clock_id: CLOCK_MONOTONIC
path: $(DC_APT_CANTRX_SRC_CONF_PATH)
listenonly: $(DC_APT_CANTRX_SRC_CONF_LISTENONLY)
baudrate: $(DC_APT_CANTRX_SRC_CONF_BAUDRATE)
timestamp_mode: $(DC_APT_CANTRX_SRC_CONF_TIMESTAMP_MODE)
- id: 2
element: print-log-filter
from: [[1]]
conf:
interval_ms: 10000
tag: $(DC_PRINT_LOG_FILTER_CONF_TAG)
output: stderr
- id: 3
element: file-sink
from: [[2]]
conf:
flush_size: 10
path: $(DC_FILE_SINK_CONF_PATH)
before_task
では、EDGEPLANT CAN-USB Interfaceの同期処理の初期化を行っています。複数のdevice-connector-intdashを使用する場合に対応するためにプロセス間排他を用いています。aftre_script
でその後片付けをしています。 (before_task
では、定義されたタスクが開始される前に実行されるコマンドを、after_task
では、タスク終了後に実行されるコマンドを指定します。)apt-cantrx-srcエレメントでは、環境変数として与えられた値を使ってEDGEPLANT CAN-USB Interfaceからデータを取得します。(参考: apt-analogtrx-src )
print-log-filterでは標準エラー出力にログを出力します。(参考: print-log-filter )
file-sinkでは、$(DC_FILE_SINK_CONF_PATH)にFIFO用データフォーマットのデータが書き出されます。これをintdash Edge Agent 2が読み取ります。(参考: file-sink )
ストリーマーの起動
以上の設定ができたらストリーマーを起動します。
$ intdash-agentctl run