From: Dave F. <df...@po...> - 2002-07-13 18:13:09
|
[crossposted to both Yahoo and Sourceforge list, please respond on Sourceforge openeeg-list] On Thu, 11 Jul 2002 21:14:14 +0100, Jim Peters wrote: >I wonder how many of the 347 people subscribed to the old list will >make it over ? Perhaps posting occasional teasers to the old list >(saying "There is a good discussion of so-and-so on the new list") >might get more people to move. Well, I was scratching my head until this morning because I read those "teasers" on the Yahoo discussion list and still saw no new messages in my local OpenEEG mail folder. Then I realized that I forgot to set up a filter for my mailer and all the openeeg-list messages were being caught by my SPAM filter. Oops. :) A couple of key-clicks later and I'm here. Also... <trumpet fanfare>, I will be checking in an alpha version of source code for all to play with. More on that later. For now, here is a teaser from the README (hopefully the margins for my mailer will not butcher it *too* badly). This will change just a bit since it combines what will be two branches (library and application) and I'll split it into two README's, but otherwise will remain the same. OpenEEG Biofeedback SDK Library Description: The OpenEEG Biofeedback SDK Library provides a data transport system for one or more biosensory devices, such as EEG, GSR, EMG, etc. devices. License: This program is free software; you can redistribute it and/or modify it under the terms of the "Artistic License" which comes with this library. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Artistic License for more details. You should have received a copy of the Artistic License with this library, in the file named "Artistic". -------------------------------------------------------------------------- Program documentation can be found in the 'doc' directory. Specifically, load 'doc/html/index.html' in a browser. This documentation was generated by Doxygen from the OpenEEGlib source code. General Overview There are two primary aspects to the use and control of devices -- the BioDevice object itself, and the Data Processing Node Network. Once a device object is created, it can be registered with the DP network. Any other data producing and/or processing class can also register with the node network, thus creating a series of dependent input-output linked relationships. An example of the use of this framework can be found in biotest.cpp. This program illustrates the use of the 'node network' as well as the creation of a device and a data monitoring class. A UML diagram of the classes can be found in the file "openeeglib.gif". -------------------------------------------------------------------------- Linux Compilation Instructions In order to compile, you will need to install the following libraries in the following order: GTK+ 1.2 : http://www.gtk.org (compile first glib and then gtk+) TIFF : http://www.libtiff.org wxWindows/GTK 2.3+ : http://www.wxwindows.org If you want symbolic debugging information in any of the above libraries, use "./configure --enable-debug" when you build them. Note: for development purposes, it may be prudent to compile wxWindows/GTK with "--with-gtk --disable-no_rtti --disable-no_exceptions" and/or "--enable-gtk2" if GTK 2.x is used. As of 7/10/2002, GTK 2.x has not been tested with OpenEEGlib. Then, simply run "makeall" in the ./src directory. In order to test, run "src/app/biotest" for a console test, or "src/app/biomon" for a GUI monitoring application. Note: this has been tested using g++ 2.95. g++ 3.0 may work, but has not been tested. Compile command line options: The following macros should be defined, which can accomplished by passing them to g++ on the command line: -D_REENTRANT -D_THREAD_SAFE -DDEBUG (the latter for development releases) Also, make sure that you use the same flags used for wxWindows for OpenEEGlib. This can be ensured under Linux by passing `wx-config --cxxflags` to g++ under Linux. -------------------------------------------------------------------------- Linux Tweaks It may be necessary to increase the priority of your serial port (if you are using a serial BioDevice. Use irqtune (http://cae.best.vwh.net/irqtune) to accomplish this. First, attach a running device to the serial port, run "irqtune -n -o" to get the IRQ number of the port, then run: irqtune nn where 'nn' is the IRQ number of the serial port. This can be added to the initialization of the system at boot time using update-rc.d. Another performance increase may result from turning DMA transfers on for your IDE interface. Use the utility program "hdparm" for this. For example: hdparm -d1 /dev/hda will turn on DMA transfer for /dev/hda if the IDE interface supports it. -------------------------------------------------------------------------- ADDING NEW DEVICES The following are the steps to follow in order to add a new device. 1. Create the device class by inheriting BioDevice. You will need to implement the two pure virtual functions BioDevice::ReadData() and BioDevice::WriteData() and wxThread::Entry() (and wxThread::OnExit() if wanted). 2. Add new BioUnits, if any. Add new BioUnit to biounit_enum and biounitlist[] in biosysinfo.cpp. 3. Add new BioDataTypes, if any. Add new BioDataType to biodatatype_enum and biodatatypelist[] in biosysinfo.cpp. 4. Add the device entry to openeeglib.conf configuration file. That's it! If you are also going to add the device to BioMon, the monitoring test application, then you will also want to do the following: [FIXME: this information is not completely accurate as the BioMon app is going through revisions which will effect this. df, 7/10/2002] 1. Create wxDialog box for the specific setup/configuration of the device. See biomongui.h/cpp and biomongui_wdr.h/cpp. I used wxDesigner to create the dialog boxes; hence the "wdr" wxDesigner's resource files. 2. Add call to setup configuration dialog box call to DlgDeviceSelect::OnSetup(). See biomongui.cpp. -------------------------------------------------------------------------- Configuration File The OpenEEG library makes use of a configuration file that contains specific device information for various biofeedback equipment. The name of the file is "openeeglib.conf" on both unix and MS Window systems. It is usually located in the installed system directory for the program. However, it can also be stored in alternate locations by defining the environment variable OPENEEGLIB_SYSPATH. Right now during development, the OPENEEGLIB_SYSPATH will be checked, and if that is not defined, the current directory will be searched. This should probably change -- see biosysinfo.cpp for more information concerning the location of the configuration file. -------------------------------------------------------------------------- TO DO's and Limitations + This list needs to be updated and is not complete. + Need a file class in order to read data from disk, and not just the serial port. + Need to be able to index forward and backwards through data stream for playback/record functions. + Need a "control channel" which will handle information such as battery level of encoder, serial number, operating mode, etc. + Need DSP filters + Need a packaging system (such as automake/autoconf). -------------------------------------------------------------------------- |