1.4.5 2021-05-25 Hiroshi Sendai サマリー - 新規機能追加はありません。 - run.pyおよびbootComps.pyでのプロセス検索関数の修正 詳細 BUGFIX: run.pyおよびbootComps.py (リモートブート用プログラム)では起動時にすでに 走っているDAQコンポーネントを停止させるために全プロセス名の検索を行って います。/proc//cmd_lineを読む実装になっています。cmd_lineを読むときに 発生する可能性がある例外について正しく取り扱っていませんでしたのでこの バージョンではそれを修正しました。 BUILD: SampleMonitorのMakefileでCXXFLAGSとroot-config --cflagsを使って-std=c++NN コンパイルオプションが指定されるように変更しました。 BUILD: debuginfoパッケージも作るようにしました。作ったRPMファイルは https://daqmw.kek.jp/rpm/el7/ にあります。 BUILD: EL 6用パッケージは今後作成しないことにしました。 1.4.4 2019-07-01 Hiroshi Sendai サマリー - 新規機能追加はありません。 - gcc 6.xあるいはそれより新しいgccでビルドするときのコンパイルエラーを 修正しました(src/lib/json_spirit_v2.06/json_spirit/json_spirit_reader.cpp で発生していました)。 1.4.3 2019-04-16 Hiroshi Sendai サマリー - ライセンスをGNU LGPLに定めました。 - Sockライブラリタイムアウトバグの修正 - SiTCP RBCP用C++ライブラリの追加 - ParameterClientのタイムアウト値を設定可能にしました。 - ソースtarballにDAQ-Middleware.specを追加しました。 詳細 BUGFIX: Sockライブラリ内のタイムアウトを設定するコードに バグがあり、1.0秒未満を設定するとタイムアウトが0に 設定され、DAQコンポーネントが正しく動作しなくなっていました。 デフォルトのタイムアウト値は2.0秒でこれを変更していない場合 には影響ありませんでした。1.0秒未満も設定できるように修正 しました。 FEATURE: ParameterClientのタイムアウト値は20秒に固定されていました。 場合により(たとえば読み出しハードウェアの不良など)より長い タイムアウト値としたいという要望を受け、設定可能にしました。 設定は/etc/httpd/conf.d/daq.confファイル内の PARAMETER_CLIENT_TIMEOUTで行います。設定しなかった場合の デフォルト値は以前と同様20秒です。 FEATURE: SiTCP RBCP用C++ライブラリを追加しました。利用方法は付属の 開発マニュアル付録Jをご覧ください。 BUILD: packages/rpm/DAQ-Middleware.specを追加しました。これにより とくに準備することなしに rpmbuild -tb DAQ-Middleware-1.4.3.tar.gz でrpmパッケージを作ることが可能になりました。 1.4.2 2017-01-16 Hiroshi Sendai サマリー - run.py -dのバグフィックス - daqmw-rpmのSL 7サポートが不完全だったのを修正 - Raspbianサポート - SampleReader2の追加 詳細 BUGFIX: リモートブート使用時にrun.py -dでDISPLAY環境変数を設定するルーチンが 正常動作しなかったのを修正 BUGFIX: RPMパッケージをセットアップするコマンドdaqmw-rpmがScientific Linux 7で 正常動作しなかったのを修正 FEATURE: ソースコードでRaspbianをサポート FEATURE: SampleReader2を追加しました。SampleReaderではソケットリードタイム アウトが起きると致命的エラーとしていましたが、SampleReader2では 致命的エラーとはしません。読み出し発生イベントレートが小さい 宇宙線を使ったテスト実験などでの利用を想定しています。 1.4.1 2015-07-22 Hiroshi Sendai サマリー - リモートブート時にrun.py -T (ログファイル名に日付時刻を付けるオプション) が正常動作しなかったのを修正 - ログファイル名にDAQコンポーネントが動いている計算機のIPアドレスを いれるオプションをrun.pyに追加 (-i) 詳細 BUGFIX: リモートブート時にrun.py -T (ログファイル名に日付時刻を付けるオプション) が正常動作しなかったのを修正しました。ローカルブートでは正常に動作して いました。 FEATURE: run.pyに、ログファイル名にDAQコンポーネントが動いている計算機の IPアドレスを入れるオプション(-i)を追加しました。計算機を分離する などして同一のコンポーネント名が複数動いているシステムでNFSなどファイル 共有を利用してのログの集約に使用できます。 1.4.0 2015-06-01 Hiroshi Sendai サマリー - Scientific Linux 7のサポートを開始しました。 - run.pyについて内部でpgrepコマンドをやめて、/proc//cmdlineを調べる ように変更しました。ユーザーのかたから見える部分に変更はありません。 - 簡単なDAQコンポーネントの例題(TinySource)のバグフィックス - DaqOperatorがWebモードで動作中にrun.pyでコンポーネントを再起動すると DaqOperatorプロセスのCPU使用率が100%になることがあるのを修正 詳細 FEATURE: Scientific Linux 7のサポートを開始しました。 INTERNAL: Scientific Linux 7からpgrepはprocps-ngのものになり、 Scientific Linux 5, 6のpgrepからオプションが変更になりました。 DAQ-Middleware付属のrun.pyではDAQコンポーネントの起動などに pgrepコマンドを内部で使っています。 オプションの変更により、場合わけが必要になりましたが、今後 ふたたび変更される可能性を考え、pgrepの使用をやめ、run.py内で /proc/cmdlineをスキャンする方式に変更しました。 (註) pgrepは同様な方法でプロセスを検索しています。 BUGFIX: TinySourceのタイムアウトに関するバグを修正しました。 newcompで作る雛型、およびSampleReader, SampleMonitor, SampleLogger, Dispatcherには影響しません。 BUGFIX: DaqOperatorがWebモードで動作中にrun.pyでコンポーネントを再起動すると DaqOperatorプロセスのCPU使用率が100%になることがありましたので 修正しました。 1.3.1 2014-12-24 Hiroshi Sendai サマリー - SampleMonitorでのデータバッファについてバッファオーバーフローが 発生しないように長さを確認するようにしました。 - SampleReader、SampleLogger、SampleMonitorの名前を変更する シェルスクリプトをexamples/change-SampleComp-name/ディレクトリ 以下にいれました。 - SampleLoggerのタイポの修正 詳細 FEATURE: SampleMonitorでのデータバッファについてバッファオーバーフローが 発生しないように長さを確認するようにしました。 (1回のdaq_run()で1MBのデータまで受け取ることができるように しました。これを大きくするにはSampleMonitor.h中のDATA_BUF_SIZEの 値を変更してください。 memcpy()の前にデータ長を確認するようにしました。 FEATURE: センサーテスト実験などで SampleReader、SampleMonitorなどをコピーし 名前を変更して開発するときに、機械的に行える名前の変更をシェル スクリプト化しました。examples/change-SampleComp-name/ディレクトリ 以下にいれてあります。new_comp_camel_caseの行を新しいコンポーネント名 に置き換えて実行してください。new_comp_camel_caseで指定する コンポーネント名はSampleReaderのように単語の切れ目を大文字化 したものを推奨します。 FEATURE: SampleLogger.h中のタイポの修正 SampleLogger::daq_configure()中の SampleLoggqer::configure -> SampleLogger::configure SampleLogger.h中のインクルードガードをSampleMonitorにあわせる SAMPLE_LOGGER -> SAMPLELOGGER_H 1.3.0 2013-11-29 Hiroshi Sendai サマリー - config.xmlを作成するためのGUIプログラムを追加しました。 - SampleMonitorのコードにコンフィギュレーションパラメータを取得する コードを追加しました。 - Sock.h中のドキュメンテーションバグを修正しました。 - インポートのリングバッファ長、リングバッファのタイムアウトをconfig.xmlで 設定可能にしました。 - DAQ-MiddlewareがベースとしているOpenRTM-aistについて RPMバイナリで配布しているバイナリはtimeoutが正しく動作するパッチをあてた ものを配布するようにしました。 - UbuntuおよびDebianで配布されているxalanコマンドに対応しました。 詳細 FEATURE: config.xmlを作成するためのGUIプログラム (/usr/bin/confPanel.py) を追加しました。これを使って 1コンポーネントのシステム (Skeleton) 2コンポーネントのシステム (Source - Sink) 4コンポーネントのシステム (Source - Dispatch - (Sink0, Sink1)) 用のconfig.xmlを作成することができます。 FEATURE: SampleMonitorのコードにコンフィギュレーションパラメータを取得する コードを追加しました。 FEATURE: インポートのリングバッファ長、インポートのリングバッファに関する タイムアウトを設定可能にしました。設定しない場合のデフォルト値は リングバッファ長は256、タイムアウトは0.005秒(5ミリ秒)です (従来はそれぞれ128、100ミリ秒でした)。 設定は下記のようにconfig.xmlを書きます(リングバッファ長4096、タイムアウト 10ミリ秒)。timeoutの単位は秒です。 samplemonitor_in よりくわしくは付属の「開発マニュアル」をご覧ください。 「開発マニュアル」は /usr/share/daqmw/docs/DAQ-Middleware-1.3.0-DevManual.pdf あるいは http://daqmw.kek.jp/docs/DAQ-Middleware-1.3.0-DevManual.pdf にあります。 FEATURE: UbuntuおよびDebianで配布されているxalanコマンドに対応しました。 上記ふたつのディストリビューションのxalanコマンドは、コマンド名、 引数指定が違っていてcondition_xml2jsonスクリプトが正常に動作 しなかったのを修正しました。 DOC BUG FIX: Sock.h中のドキュメンテーションバグを修正しました。 readAll()およびsendAll()は成功するとSUCCESSを返します (読み取り/書き込みバイト数ではありません)。 DEPENDENCY FIX: DAQ-MiddlewareはOpenRTM-aistをベースとして使っています。インポートの タイムアウトが正しく動作していなかったのを修正しました。 1.2.2 2013-07-31 Hiroshi Sendai サマリー - daqmw-emulatorに-Nオプションを追加しました。-Nオプションを指定すると ガウシャンデータの生成をしません。 - Conditionデータベースコードを修正しました。 - BoostのバージョンによりSampleLoggerのコンパイルに失敗するのを修正しました。 - エラーログを永遠に出力するのを修正しました。 詳細 FEATURE: daqmw-emulatorに-Nオプションを追加しました。-Nオプションを指定すると ガウシャンデータの生成をしません。 ガウシャンデータを生成するところがボトルネックになって1Gbpsで データを送ることができなかったのでこのオプションを追加しました。 FEATURE: Conditionデータベースを修正しました。修正点は以下のとおりです: - long longタイプをサポートするようになりました。 - サポートされていないタイプが指定されていた場合はコンパイルに 失敗するようになりました。 - 変数が初期化されていないと警告がでるようになりました。 FEATURE: エラーログを1回だけ出力するようにしました。いままでは永遠に出力 しつづけていました。また出力しているメソッド(daq_onError())を virtualに変更し、継承したクラスではユーザーが カスタマイズすることができるようになりました。 エラーログを1回だけ出力するようにするためには既存のDAQコンポーネント の再コンパイルが必要になります。 BUG FIX: 使用するBoostのバージョンによりSampleLoggerのコンパイルに失敗 するのを修正しました。Boost::Filesystemがアップデートされたことに よります。 1.2.1 2012-09-28 Hiroshi Sendai サマリー - SampleFilterコンポーネントを追加した。コンフィギュレーションファイルは conf/filter.xml。 - daq.jsの修正 詳細 FEATURE: SampleFilterコンポーネントを追加しました。2012年8月の トレーニングコースでリクエストを受けたものです。十分に テストされていないので実験的な実装であると思ってください。 SampleReaderが送ってくるデータのモジュール番号が 4以下のものを後段(SampleMonitor)に送るようになっています。 BUG FIX: WebUIを使うときにはdaq.jsが定期的に各コンポーネントの 状態、取り扱ったバイト数などをDAQ Operatorに聞きにいきます。 現在は2秒間隔で聞きに行っています。負荷が大きい、コンポーネント 数が多いなどの理由から2秒以内に返答がない場合がありえますが いままでは返答を受け取ったかどうかを考慮せずに必ず2秒おき にリクエストを出していました。これを返答を受け取ってから 2秒後に次のリクエストを出すように修正しました。 1.2.0 2012-06-29 Hiroshi Sendai サマリー - APIは1.1.1から変更ありません。 - Scientific Linux 6.x.のサポート - mod_wsgiをサポートしました。Scientific Linux 6.xではmod_pythonのかわりに mod_wsgiを使います。mod_wsgiを使う場合はdaq.pyへのURLは http://localhost/daqmw/scripts/daq.py に変更になりました。daq.pyへ直接アクセスするユーザーはURLを変更する 必要があります。Scientific Linux 5.xではdaq.pyへのURLの変更は ありません。WebUIのオペレータパネルのURLは変更ありません。 (http://localhost/daqmw/operatorPanel/operatorPanel0.html). - Xerces 3.xのサポートを追加しました。 - daqcomユーティリティを追加しました。これを使うとコマンドラインからhttpd サーバーに指令を送ることができます。 - 単純なエミュレータ(以前はemulator-GEN_GAUSSとして別に配布していたもの)を 追加しました。実行形式ファイルは/usr/bin/daqamw-emulatorです。 ソースコードは/usr/share/daqmw/daqmw-emulator/にあります。 - コンディションファイルの数値を変更するサンプルGUIとしてconditionPanel を追加しました(中谷さんからいただきました)。 実行形式ファイルは/usr/bin/conditionPanel.pyです。実行にはwxPython が必要です。 - いろいろなバグフィックス - condition.xmlで指定した実数が整数として認識されることがあるのを直しました。 - SampleLogger/FileUtilsのwrite_data()で指定したより一回多く書くことが あるのを直しました。 - gcc 4.7でコンパイルしたときにSockライブラリでエラーでコンパイルが できないのを直しました。 - python 2.7.xでrun.pyを走らせると警告がでるのを直しました。 - DaqOperaatorCompのevent_byte_sizeでバッファオーバーフローするのを 直しました。 - writeAll()でEPIPEエラーがおきたときの戻り値を修正しました。 - Firefoxがボタンを押すごとにSYNパケットを送るのを修正しました。 - run.pyでprogname変数が定義されていないのを直しました。 詳細 BUG FIX: condition.xmlでは小数値を指定できる。".0"で終わる値が整数として 認識されていた。 BUG FIX: SampleLogger/FileUtilsのwrite_data()で現在のファイルサイズと 最大ファイルサイズとして指定した値が同じだった場合、一回余分に ライトするのを直した。 FEATURE: 単純なエミュレータを追加(以前はemulator-GEN_GAUSSとして配布して いたもの). ソースコードは/usr/share/daqmw/daqmw-emluatorに入る。 FEATURE: run.pyでgiopMaxMsgSizeを指定するオプション -M を追加した。引数として k、mを数字のあとに指定するとキロ、メガとして認識される。 FEATURE: mod_wsgiのサポートを入れた。Scientific Linux 5.xではmod_pythonを 使う。Scientific Linux 6.xではmod_wsgiを使う。 FEATURE: Xerces 3.xをサポートした。Scientific Linux 6.xにはxerces-3.0パッケージ がある。 BUG FIX: read(), alarm(), close()を使うのにgcc 4.7ではunistd.hを インクルードする必要があった。Sockライブラリではインクルードして いなかったのを修正した。 BUG FIX: run.pyをpython 2.7.xで走らせると "FutureWarning: This search is broken in 1.3 and earlier, and will be fixed in a future version." と警告がでていたので出ないように修正した。 BUG FIX: DaqOperatorCompで使っているevent_byte_size変数の型はunsigned long long であり、unsigned long longの最大値は20桁である。数値からストリング への変換で使用しているバッファが20桁整数を保持するには小さすぎた ので修正した。 BUG FIX: Sock.cppのwriteAll()でEPIPEエラーが起きたときにERROR_FATALを返して いなかったのを直した。 BUG FIX: Firefoxがボタンを押すごとにSYNパケットを送り続けるのを修正した。 修正前はメモリをたくさん消費しボタンを押しても反応がなくなる ことになっていた。 BUG FIX: run.pyのエラーメッセージ中でprogname変数を使っていたが、未定義 だったのを修正した。 FEATURE: daqcomユーティリティを追加した。これを使ってhttpdサーバーと通信 することができる。daqcom --helpでヘルプがでる。 1.1.1 2011-12-01 Hiroshi Sendai Summary - API has not changed from 1.1.0. - Update Developer's Manual. - Fix memory leaks on DaqOperatorComp. - Sock library UDP part bug fix. - Add -O option to run.py (specify log file when run in Web mode). - sleep time in daq_base_dummy() (this method is called when the component is in LOADED, CONFIGURED, and UNCONFIGURED) is reduced to 10 m sec. To incorporate this fix, users have to recompile their components. Details BUG FIX: UPD part of Socket library was not set properly. This bug does not affect on Socket TCP library. BUG FIX: There were several memory leaks on DaqOperatorComp. BUG FIX: sleep time in daq_base_dummy() (was 1 second) caused ParameterClient.h timeout. 1.1.0 2011-06-17 Hiroshi Sendai Summary - Add x86_64 architecture support. - API changes: set_footer() and check_footer() are now has one argument for footer buffer. All users have to rewrite their source code if you use set_footer() and check_footer(). To use new API, remove second argument of set_footer() and check_footer and re-compile the components. - Backward compatibility to DAQ-Middleware for MLF (2010.10 etc) on reset_onError(). All users have to recompile their components to use backward compatibility feature. - Add Web User interface. Details API: set_footer() and check_footer() has only one argument for footer buffer. BUG FIX: Backward compatibility on reset_onError(). FEATURE: Support x86_64 architecture on Scientific Linux 5.x, CentOS 5 and RedHat Enterprise Linux. Changes are: - Fix idl for x86_64. Compile verified on x86_64 with omniORB 4.1.4, i686 with omniORB 4.0.7 and i686 with omniORB 4.1.4 - Install library files to /usr/lib64 if uname -m returns x86_64 AND /usr/lib64 exists. Otherwise library files will be installed in /usr/lib. - New variable DAQMW_LIB_DIR in comp.mk. If uname -m returns x86_64 AND /usr/lib64 exists, DAQMW_LIB_DIR=/usr/lib64. Otherwise DAQMW_LIB_DIR=/usr/lib. Makefile of the Sample components in examples directory uses this variable now. FEATURE: Don't remove source files. Previous comp.mk would remove source files if source file name is *.cc. FEATURE: Stricter check on ROOT development environment on ROOTSYS variable of the SampleMonitor's Makefile. FEATURE: Add Web user interface. CLEANUP: Remove unused data_header_footer.h. 1.0.2 2011-02-08 Hiroshi Sendai Summary - Add sample implementation of the logger component in examples directory (/usr/share/daqmw/examples/Logger). Sample configuration file is at /usr/share/daqmw/conf/4comps.xml . - All users have to recompile their components to have display valid strings when fatal error occured. Details BUG FIX: Correction of the order of strings at toString() in FatalType.h FEATURE: Add SampleLogger in examples directory. CLEANUP: Remove unneccessary include files from example source. 1.0.1 2011-01-21 Hiroshi Sendai Summary - All users have to recompile their components to have get_run_number() work properly. - Libraries (Sock, Json) have not been changed. - We have dispatcher in the example directory. - We have documentation in the documentation directory (/usr/share/daqmw/docs). Details BUG FIX: get_run_number() did not return the run number but always returned 0. BUF FIX: DaqOperator coredumped if the component is SkeletonComp only. FEATURE: Add dispatcher component in the example directory (/usr/share/daqmw/examples). FEATURE: Add documentation (DAQ-Middleware Technical Manual and Developer's Manual). CLEANUP: Remove ConfFileParser::setList(std::vector & list, char*, char*) from ConfFileParser.cpp because no one does not use this method. CLEANUP: Remove src/DaqOperator/ServerSocket.{h,cpp}. No one does not use this. CLEANUP: add #include in src/lib/SiTCP/CPP/Sock/Sock.h and src/DaqOperator/CreateDom.h to be able to compile with gcc44. CLEANUP: Move set_status() from private to protected in src/DaqComponent/DaqComponentBase.h (pointed out by Hosoya san). 1.0.0 2010-08-01 Hiroshi Sendai DAQ-Middleware 1.0.0 Initial Release.