1.4.5 2021-05-25 Hiroshi Sendai Summary - No new feature - Fix incorrect routine in run.py and bootComps.py process lookup function Details BUGFIX: run.py and bootComps.py (for remote booting) look up all process names to stop DAQ-Component process at the startup. Process name lookup fuction read /proc//cmd_line. Execptions for reading cmd_line was not correct. This version fix this programming error. BUILD: use CXXFLAGS and root-config --cflags in SampleMonitor Makefile to specify -std=c++NN compile option. BUILD: add debuginfo rpm package at https://daqmw.kek.jp/rpm/el7 . BUILD: We don't create packages for EL 6 from now on. 1.4.4 2019-07-01 Hiroshi Sendai Summary - No new feature - Compilation error fix on newer gcc (gcc 6.x or newer) only (occured on src/lib/json_spirit_v2.06/json_spirit/json_spirit_reader.cpp) 1.4.3 2019-04-16 Hiroshi Sendai Summary - License: GNU LGPL - Fix a Sock library bug in timeout setting method. - Add C++ library for SiTCP RBCP. - Add configurable ParameterClient timeout value. - Add DAQ-Middlweware.spec in source tarball. Details BUGFIX: Fix a Sock library bug. If we specify less than 1 seconds for the timeout value, timeout value was set as 0 seconds. Timeout default value is 2 seconds. We did not hit the bug if we did not specify timeout. FEATURE: Timeout value of ParameterClient was fixed (20 seconds). Add configurable method via PARAMETER_CLIENT_TIMEOUT /etc/httpd/conf.d/daq.conf. Default value is 20 seconds. FEATURE: Add C++ library for SiTCP RBCP. Usage is described in the Developer's Manual Appendix J. BUILD: Add packages/rpm/DAQ-Middleware.spec. We now build rpm packages using rpmbuild -tb DAQ-Middleware-1.4.3.tar.gz without any preparations. 1.4.2 2017-01-16 Hiroshi Sendai Summary - Fix a bug -d option of run.py - Fix imcomplete support in daqmw-rpm script for SL 7 - Support Raspbian in source code - Add SampleReader2 Datails BUGFIX: Fix a bug -d option for remote boot. It did not work correctly. BUGFIX: Fix daqmw-rpm script to setup in Scienfitic Linux 7. FEATURE: Support Rasibian OS in source code. We do not provide binary packages. FEATURE: Add SampleReader2. We consider in SampleReader it is a fatal error when socket read timeout occure. SampleReader2 does not treat socket read timeout as an fatal error. 1.4.1 2015-07-22 Hiroshi Sendai Summary - Fix a bug run.py -T (append datetime to log filename) did not work when remote boot was used. - Add an option to run.py to append IP address to log filename (run.py -i) Details: BUGFIX: Fix a bug run.py -T (append datetime to log filename) did not work when remote boot was used. Local boot has been worked properly. FEATURE: Add an option to run.py to append IP address to log filename (run.py -i). 1.4.0 2015-06-01 Hiroshi Sendai Summary - Add support for Scientific Linux 7. - We no longer use pgrep(1) command to lookup DAQ-Component processes, but lookup /proc/cmdline. No user visible changes. - Fix a bug found in TinySource (example of DAQ-Component). - Fix a bug if the DaqOperator run in Web mode and DAQ-Components reload by run.py, DaqOperator process consumed CPU power (100%). Details: FEATURE: Support Scientific Linux 7 RPM binary package. INTERNAL: package of pgrep(1) command in Scientific Linux 7 is procps-ng (porcps in SL 5 and 6) and options has been changed. We used pgrep(1) command to lookup DAQ-Component processes. We now scan /proc//cmdline to lookup DAQ-Component processes in run.py BUGFIX: Fix a bug found on TinySource on timeout treatment. This bug does not affect SampleReader, SampleMonitor, SampleLogger and Dispatcher components. BUGFIX: Fix a bug if the DaqOperator run in Web mode and DAQ-Components reload by run.py, DaqOperator process consumed CPU power (100%). 1.3.1 2014-12-24 Hiroshi Sendai Summary - Verify buffer length in SampleMonitor not to buffer overrun. - Add shell scripts which changes SampleReader, SampleLogger and SampleMonitor to appropriate one (examples/change-SampleComp-name) - Fix typos in SampleLogger Details: FEATURE: In SampleMonitor, add data length verification code not to occure buffer overflow. (Change the buffer length to 1MB. If you need larger buffer, change the DATA_BUF_SIZE value). FEATURE: Add shell scripts which change Sample components' name in examples/changes-SampleComp-name/ directory. Change the new_comp_camel_case line to your components name. We recommend to use CamelCaseConvension as components name. FEATURE: Fix typos in SampleLogger::daq_configure(): SampleLoggqer::configure -> SampleLogger::configure Change the include guard in SampleLogger.h as in SampleMonitor: SAMPLE_LOGGER -> SAMPLELOGGER_H 1.3.0 2013-11-29 Hiroshi Sendai Summary - Add GUI program to create config.xml. - Add code to get configuration parameters in SampleMonitor. - Fix a documentation bug in Sock.h - We can now set ring buffer length, ring buffer timeout of the InPort in config.xml. - Add a patch to fix timeout routine in OpenRTM-aist binary package (RPM). - Support Ubuntu and Debian xalan command. Details: FEATURE: Add GUI program to create config.xml (/usr/bin/confPanel.py). We can create config.xml for 1 component system (Skeleton), 2 components system (Source - Sink), and 4 components system (Source - Dispatch - (Sink0, Sink1)). FEATURE: Add configuration parameter sample code in SampleMonitor. FEATURE: We can now set ring buffer length, ring buffer timeout of the InPort in config.xml. Default values are 256 for ring buffer length, 0.005 seconds (5 milli seconds) for timeout. Following is a sample to set 4096 ring buffer length, timeout 10 milli seconds: samplemonitor_in FEATURE: Support xalan command distributed in Ubuntu and Debian. DOC BUG FIX: Fix a documentation bug for return value of readAll. (readAll() and sendAll() return SUCCESS if success (not read/write bytes)). DEPENDENCY FIX: Fix timeout of InPort ring buffer. 1.2.2 2013-07-31 Hiroshi Sendai Summary - Add -N option for daqmw-emulator not to create gaussian data (to test 1Gbps). - Fix SampleLogger build error due to boost version. - Update condition database code. - Fix forever error log message. Details: FEATURE: Add -N option for daqmw-emulator. If this option does not specified, send gaussian data. Gaussian data generation function is a bottleneck if we need 1Gbps data transfer. FEATURE: Update condition database code. - Support long long type. - Compilation will be failed if unspported type is specified. - Display warning if a variable is not initialized. FEATURE: Log error message will be output only once now. To incorporate this feature, you have to re-compile your DAQ component. BUG FIX: Due to boost filesystem version up, we could not build SampleLogger component. 1.2.1 2012-09-28 Hiroshi Sendai Summary - Add SampleFilter component. Configuration file is conf/filter.xml. - Fix a bug on daq.js. Details: FEATURE: Add SampleFilter component (experimental). Send data to SampleMonitor if the module number is less or equal to 4. BUG FIX: daq.js send requests to DAQ-Opearator to get status, event byte size etc. The request was sent even if the reply has not received. The Web UI did not work after long run. 1.2.0 2012-06-29 Hiroshi Sendai Summary - API has not changed from 1.1.1. - Support Scientific Linux 6.x. - Use mod_wsgi instead of mod_python. URL to daq.py has been changed to http://localhost/daqmw/scripts/daq.py on Scientific Linux 6.x. If you access daq.py directly, you have to update the URL. The URL to daq.py on Scientific Linux 5.x has not been changed. WebUI operatorPanel's URL has not been changed (http://localhost/daqmw/operatorPanel/operatorPanel0.html). - Xerces 3.x support. - Add daqcom utility to communicate with httpd server in command line. - Add simple emulator (formally distributed as emulator-GEN_GAUSS). The executable binary is /usr/bin/daqmw-emulator. Source code of this emulator is /usr/share/daqmw/daqmw-emulator. - Add conditionPanel as sample GUI for updating condition variables (contributed from Nakatani san). The executable binary is /usr/bin/conditionPanel.py. This program requires wxPython. - Various bug fixes. - Fix a bug a floating number in condition.xml was recognized as an inteter. - Fix one more write_data() in SampleLogger/FileUtils. - Fix a compile error on Sock library when using gcc 4.7. - Fix a run.py warning message when running on python 2.7.x. - Fix a buffer overflow bug in DaqOperatorComp event_byte_size. - Fix return value of writeAll() when EPIPE error occured. - Fix a bug that firefox sends SYN packet every time we click the buttons. - Fix a bug that progname was not defined in run.py. Details BUG FIX: condition.xml may have floating numbers. The values end with ".0" were recognized as integer. BUG FIX: SampleLogger/FileUtils write_data() wrote one more data chunk if filesize equal to the specified max file size by write_data(). FEATURE: Add simple emlulator (formally distributed as emulator-GEN_GAUSS). Source files are at /usr/share/daqmw/daqmw-emluator. FEATURE: Add -M option to run.py to specify giopMaxMsgSize. You may add "k" for kilo, "m" for mega. FEATURE: Add mod_wsgi support. On Scientific Linux 5.x, use mod_python. On Scientific Linux 6.x, use mod_wsgi. FEATURE: Xerces 3.x now supported. Scientific Linux 6.x has xerces-3.0 package. BUG FIX: We have to include to use read(), alarm(), close() system call when using gcc 4.7. Sock library did not include . BUG FIX: If we use python 2.7.x to run run.py, we received warning message "FutureWarning: This search is broken in 1.3 and earlier, and will be fixed in a future version." BUG FIX: Type of event_byte_size in DaqOperatorComp is unsigned long long (max 20 digit). The buffer to convert the value to string was too small to hold 20 digit integer. BUG FIX: Sock.cpp writeAll() did not return ERROR_FATAL when EPIPE error occured. BUG FIX: Firefox had sent SYN packets every time we click the buttons. This behavior caused huge memory consumption and we could not get any feedback when we click buttons. BUG FIX: We did not define progname that is used in error message. FEATURE: Add daqcom utility. You can commiucate with httpd server by using this command. Use daqcom --help to get usage. 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.