Wykres commitów

134 Commity (master)

Autor SHA1 Wiadomość Data
James Coxon 892162ac86 Merge branch 'master' of https://github.com/hexameron/dl-fldigi 2016-08-02 21:21:02 +01:00
Robert Stiles 4ab48d41e4 KISS, 8PSK, FLARQ icon Modifications
* KISS TCP/IP
    - Add TCP/IP KISS interface
    - Add Start/Stop (UDP/IP) and Connect/Disconnect (TCP/IP) option.
    - Add Listen/Bind Option.
  * Operator selectable 4/8/16PSK preamble duration
    - Add code to allow user to change the preamble duration to improve
      throughput when not operating via repeater. (KL4YFD).
    - Add user selectable checkbox on PSK (8PSK) modem configuration
      interface panel for above addition (KK5VD).
 * Update FLARQ icons
2016-04-19 14:28:31 -05:00
David Freese 4c9f1404ca PSK IMD
* add IMD generator
  * modified IMD computation for continuous operation
    vice only during DCD
2016-02-25 05:18:30 -06:00
David Freese ddb084c599 PSKR metric
* Fixed erroneous metric computation when received signal is zero
    - error apparant when testing with CODEC that has no applied audio
    - bug report by Per Crusfalk, SM0RWO
2016-01-16 06:50:49 -06:00
John Phelps 51535ff236 Add 8PSK 125FL 250FL
* Lowered CPU requirements to allow for use on Android/Netbook devices:
   - Added modes 125FL and 250FL with constraint length 13 FEC
   - Adjusted maximum traceback memory for viterbi decoder
   - Set traceback to an optimally-high value in viterbi.cxx constructor
   - 8PSK - 500F 1000F & 1200F now use only 1 viterbi decoder without voting
   - Assigned secondary RsID codes to 125FL and 250FL.

 * Code cleanups in psk.cxx
2015-10-19 15:42:25 -05:00
James Coxon 3ee3a4bd47 Merge remote-tracking branch 'hex/master'
Conflicts:
	src/dialogs/confdialog.h
	src/xmlrpcpp/XmlRpcThread.cpp
	src/xmlrpcpp/XmlRpcThread.h
	src/xmlrpcpp/XmlRpcThreadedServer.cpp
	src/xmlrpcpp/XmlRpcThreadedServer.h
2015-08-23 16:42:05 +01:00
David Freese 06515a8965 Multi-psk
* bug fix programming error
2015-04-01 11:07:04 -05:00
David Freese 15ca512524 8psk modes
* Combined effort of W1HKJ, KK5VD and KL4YFD
  * Corrected 8psk1333 symbol rate to 12
  * Added no-fec and fec for each 8psk modem type
  * Assigned RsID codes to new modem types
    - backward compatible with previous 8psk implementation
  * Reset interleaver at the start of PSK TX.
  * Add init() routines to encoder:: and viterbi:: in order to reset
    internals without reallocation.
  * Remove string length variance 'n' when measuring char timing.
  * 8PSK soft decoder
    - 8PSK soft bits now use the phase error as a measure of received-bit quality
    - phase error is applied in combination with the a-priori mapped softbits
    - hard-coded the gray-unmapping of incoming bits (reduced CPU load slightly)
  * AFC using vestigial carrier for all 8psk modes
    - enable using "PSK pilot" on psk config tab
    - level controllable on psk config tab
    - use increases cpu usage
    - use can improve low s/n decoding
  * Updated 8psk mode and configuration documention
2015-03-21 08:59:00 -05:00
Robert Stiles aedc628d92 Bug fixes/Comments
* Script Generate should save PA device index vice menu index.
  * PSK: Possible segment fault. Tighter control on string lengths
  * Util.cxx add comment block to each functions and remove
    trim_white_spaces() function.
2015-02-18 08:43:56 -06:00
David Freese 4371ed3502 EmComm 8PSK modes
* Reverted 8PSK-1000
    - 1000 baud, 3kbps (no FEC)

  * Modified 8PSK-1200
    - Now uses 1/2 rate K=7 FEC
    - 1200 baud, 1.8kbps

  * Added mode 8PSK-1333
    - 1333 baud, 4kbps (no FEC)
2014-10-30 22:21:15 -05:00
David Freese 91674b8ad7 psk pskr squelch
* changed squelch to fast attack / slow decay processing
2014-10-30 16:11:57 -05:00
David Freese 55ff390950 viewers
* modified rtty and psk viewers to eliminate modem specific
    code in the UI elements
  * restricted psk multichannel viewer to modes
    - PSK31, PSK63, PSK63F and PSK125
    - QPSK31, QPSK63 and QPSK125
  * removed global references to Class internal elements
    - ::pskviewer
    - ::rttyviewer
2014-10-30 10:39:16 -05:00
John Phelps 91bda2bf99 Gray-mapped 8PSK and soft-decision
- Upgraded 8psk to Gray mapped constellation
 - Implemented Soft-Decision decoder based on Gray constellation
 - Even when the received phase is distorted by +- 1 phase-position:
    - One of the bits is still known with 100% certianty.
    - Only up to 1 bit can be in error.
 - Increased gain for noisy/weak/HF channels
2014-10-18 13:55:33 -05:00
David Freese e7d9cc472d 8PSK/16PSK modes
* Added new 8PSK modes
    - mode/baud: 125  250  500   1000  symbols/sec
    - bitrates:  375  750  1500  3000  bits/sec (FEC off)
    - bitrates:  187  375  1000  2000  bits/sec (FEC on)
    - Mode speeds with Forward Error Correction ON (default):
      .   Mode   Baud  WPM  BW     ITU    RSID-1 RSID-2
      . 8PSK125   125  310  125  125HG1B    56    1037
      . 8PSK250   250  620  250  250HG1B    56    1038
      . 8PSK500   500 1650  500  500HG1B    56    1043
      . 8PSK1000 1000 3300 1000 1000HG1B    56    1047
  * All modes use 1/2 rate FEC
    - Constraint length 16 FEC for 1/2 rate non-punctured modes
    - Contraint length 13 FEC for 2/3 & 3/4 rate punctured modes
    - See 1992 IEEE paper "On good Convolutional Codes..."
    - Implemented Punctured FEC for 8PSK and 16PSK
      . 8PSK is 2/3 Rate FEC (3-of-4 FEC bits transmitted: MSB dropped)
      . 16PSK is 3/4 Rate FEC (4-of-6 FEC bits transmitted: LSB and MSB dropped)
  * xPSK mode puncturing unimplemented
  * xPSK, 8PSK, & 16PSK interleaver unimplemented
  * 8PSK Bit-based interleaver - improve robustness on HF channels
    - 8PSK125:  1024ms / 384  bits
    - 8PSK250:  682ms  / 512  bits
    - 8PSK500:  436ms  / 640  bits
    - 8PSK1000: 341ms  / 1024 bits
2014-10-14 20:19:12 -05:00
David Freese a1c3f7a937 Phase accumulator
* Corrected phase accumulator limits in cw, feld,
    dominoex and thor modems.
2014-08-29 04:03:53 -05:00
David Freese d244947923 Headers update
* updated all headers to reflect correct licensing
2014-08-29 02:49:51 -05:00
David Freese 0cff262820 Headers update
* updated all headers to reflect correct licensing
2014-02-10 16:21:24 -06:00
David Freese 678f66b460 modem timing test
* read timing factors for string transmission by external
    program using new xmlrpc query
    - main.get_tx_timing
      respone - #samples: samplerate: transmit_time (secs)
  * read char rate table using external xmlrpc query
    - main.get_char_rates
      table structure
      char, ascii-rep', #samples, samplerate, transmit_time (secs)
  * added hidden macro <CPS_TEST> which simulates transmission
    of test string and measures the character per second rate
    for the modem in use.
    - <CPS_TEST> uses internal "Jabberwocky" string
    - <CPS_FILE:[full pathname to file]> uses external text file
    - <CPS_STRING:ascii text string...>
    - produces report similar to:
      CPS test
      text:         /home/dave/dev.git/all.git/pskr-tests/paris.txt
      mode:         PSK-500R
      # chars:      2400
      xmt time:     56.580000
      data time:    52.480000
      data samples: 419840
      sample rate:  8000
      chars/sec:    45.731707
      ~WPM:         457.317073
  * Allow writing wav file during timing test
  * High Speed WAV
    - Add macros to enable writing WAV file in at maximum
      character throughput.
    - disables codec output
    - use this for creating wav test files
  * Suppress waterfall display for CPS and WAV tests
  * Remove PSK printf debug statements
  * Fix MFSK xmt 0x05 --> 0x04 during CPS testing
2014-01-31 12:55:33 -06:00
David Freese a987fe5ac9 PSKR softbits
* Correct softbit evaluator to function correctly
    on arm processors.
2014-01-31 12:54:45 -06:00
David Freese 3b9ace3d25 modem timing test
* read timing factors for string transmission by external
    program using new xmlrpc query
    - main.get_tx_timing
      respone - #samples: samplerate: transmit_time (secs)
  * read char rate table using external xmlrpc query
    - main.get_char_rates
      table structure
      char, ascii-rep', #samples, samplerate, transmit_time (secs)
  * added hidden macro <CPS_TEST> which simulates transmission
    of test string and measures the character per second rate
    for the modem in use.
    - <CPS_TEST> uses internal "Jabberwocky" string
    - <CPS_FILE:[full pathname to file]> uses external text file
    - <CPS_STRING:ascii text string...>
    - produces report similar to:
      CPS test
      text:         /home/dave/dev.git/all.git/pskr-tests/paris.txt
      mode:         PSK-500R
      # chars:      2400
      xmt time:     56.580000
      data time:    52.480000
      data samples: 419840
      sample rate:  8000
      chars/sec:    45.731707
      ~WPM:         457.317073
  * Allow writing wav file during timing test
  * High Speed WAV
    - Add macros to enable writing WAV file in at maximum
      character throughput.
    - disables codec output
    - use this for creating wav test files
  * Suppress waterfall display for CPS and WAV tests
  * Remove PSK printf debug statements
  * Fix MFSK xmt 0x05 --> 0x04 during CPS testing
2014-01-13 14:22:25 -06:00
David Freese 4e085ba4bd PSKR softbits
* Correct softbit evaluator to function correctly
    on arm processors.
2013-11-22 07:45:53 -06:00
David Freese 267b91499c fft filter
* Changed fftfilt implementation to use g_fft class vice
    Cfft class.
  * Removed multi-channel decoding when not visible or configured
    for decoding when not visible.
2013-10-22 15:02:32 -05:00
David Freese 5c9f5a2589 fft filter
* Changed fftfilt implementation to use g_fft class vice
    Cfft class.
  * Removed multi-channel decoding when not visible or configured
    for decoding when not visible.
2013-10-19 08:36:18 -05:00
David Freese b8f424213b g_fft
* Added new fft class template g_fft
  * Modified class complex to be based on std::complex
    - required changes in all modem implementations
2013-10-19 07:43:21 -05:00
David Freese 1bad52f852 g_fft
* Added new fft class template g_fft
  * Modified class complex to be based on std::complex
    - required changes in all modem implementations
2013-09-30 05:45:00 -05:00
David Freese ffcdeb18aa PSKMAIL
* write s2n / rsid encapsulated within required mutex to
    correct misalignment of ARQ strings.
2013-05-20 20:11:09 -05:00
David Freese b168ea7e5b Compiler warning fix
* gcc 4.5.2 compiler warning for parenthesis ambiguity
2013-05-20 17:44:54 -05:00
David Freese c5c4b1139b Spotting
* Add user configurable spotting using signal browser
    - spotting can be disabled if viewer is not visible
    - reduces CPU load if selected
2013-05-20 13:57:06 -05:00
David Freese ff1d69ad5a PSKMAIL
* write s2n / rsid encapsulated within required mutex to
    correct misalignment of ARQ strings.
2013-05-14 08:02:16 -05:00
David Freese 27e753e0fa Compiler warning fix
* gcc 4.5.2 compiler warning for parenthesis ambiguity
2013-04-11 21:25:55 -05:00
David Freese 1e94067f50 Spotting
* Add user configurable spotting using signal browser
    - spotting can be disabled if viewer is not visible
    - reduces CPU load if selected
2013-04-11 05:02:11 -05:00
David Freese 4dc9bc95f2 RTTY FSK modem
* This patch contributed to by
    W1HKJ, Dave Freese <w1hkj@w1hkj.com>
    DO2SMF, Stefan Fendt <smfendt@gmail.com>
  * Waveshaped FSK modem for classic RTTY using raised cosine
    matched filters
  * Kahn demodulator
  * RTTY scope based on separate mark / space filter outputs
  * Corrected s/n estimator
  * Change RTTY browser to new demodulator
  * Fixed missing browser highlight for callsign detection
  * Bypass Viewer signal processing if viewer(s) are not visible
    - significantly reduces % CPU use
  * Separated psk-rtty range/value pairs for viewer squelch
    control.
2013-02-02 12:18:55 -06:00
David Freese 1444a633c5 PSK viewer
* Suppress psk viewer decoding if neither viewer
    is visible.
2013-02-02 12:18:32 -06:00
David Freese 0d4d55dcb2 RTTY FSK modem
* This patch contributed to by
    W1HKJ, Dave Freese <w1hkj@w1hkj.com>
    DO2SMF, Stefan Fendt <smfendt@gmail.com>
  * Waveshaped FSK modem for classic RTTY using raised cosine
    matched filters
  * Kahn demodulator
  * RTTY scope based on separate mark / space filter outputs
  * Corrected s/n estimator
  * Change RTTY browser to new demodulator
  * Fixed missing browser highlight for callsign detection
  * Bypass Viewer signal processing if viewer(s) are not visible
    - significantly reduces % CPU use
  * Separated psk-rtty range/value pairs for viewer squelch
    control.
2013-01-29 03:59:58 -06:00
David Freese 645acabc56 PSK viewer
* Suppress psk viewer decoding if neither viewer
    is visible.
2013-01-29 03:54:16 -06:00
David Freese 14329e533d High Speed / Multi-Carrier Modems
* This commit contributed to by:
    - John Douyere <vk2eta@gmail.com>
    - Dave Freese <w1hkj@w1hkj.com>
    - John Phelps <kl4yfd@gmail.com>
    - Andrej Lajovic <s57ln@hamradio.si>
  * New high speed and multi carrier modems
    - psk, pskr
    - DominoEX
    - Thor
  * Added separate modem initialization for
    Olivia tone / bandwidth pairs:
    - 4/250, 8/250
    - 4/500, 8/500, 16/500
    - 8/1000, 16/1000, 32/1000
    - 64/2000
  * RSID changes
    - Added secondary RsID code set
    - RsID code 263 enables detection of the secondary
      RsID code burst.
  * MFSK UTF-8 tx
    - corrected transmit of two-byte UTF-8 characters
  * PSK-UTF-8 tx
    - corrected transmit of two-byte UTF-8 characters
  * Changed PSK multicarrier bandwidth markers to show full
    extent of signal in the waterfall.
  * THOR modem updates
    - Added Thor high speed modes
      25x4, 50, 50x2, 100 Baud, all < 1800 Hz bandwidth
    - IFK+ Softdecode function for THOR
      dynamically detects and suppresses CWI
      Rx printing is disabled when "File IO only" is selected for
      soundcard.  Decoder uses puncture in this condition.
    - THOR FEC confidence indicator
      Uses the actual path-metrics from the Viterbi decoder.
      Displays next to the S/N in the main dialog.
2013-01-10 13:46:52 -06:00
David Freese 7680b0512e High Speed / Multi-Carrier Modems
* This commit contributed to by:
    - John Douyere <vk2eta@gmail.com>
    - Dave Freese <w1hkj@w1hkj.com>
    - John Phelps <kl4yfd@gmail.com>
    - Andrej Lajovic <s57ln@hamradio.si>
  * New high speed and multi carrier modems
    - psk, pskr
    - DominoEX
    - Thor
  * Added separate modem initialization for
    Olivia tone / bandwidth pairs:
    - 4/250, 8/250
    - 4/500, 8/500, 16/500
    - 8/1000, 16/1000, 32/1000
    - 64/2000
  * RSID changes
    - Added secondary RsID code set
    - RsID code 263 enables detection of the secondary
      RsID code burst.
  * MFSK UTF-8 tx
    - corrected transmit of two-byte UTF-8 characters
  * PSK-UTF-8 tx
    - corrected transmit of two-byte UTF-8 characters
  * Changed PSK multicarrier bandwidth markers to show full
    extent of signal in the waterfall.
  * THOR modem updates
    - Added Thor high speed modes
      25x4, 50, 50x2, 100 Baud, all < 1800 Hz bandwidth
    - IFK+ Softdecode function for THOR
      dynamically detects and suppresses CWI
      Rx printing is disabled when "File IO only" is selected for
      soundcard.  Decoder uses puncture in this condition.
    - THOR FEC confidence indicator
      Uses the actual path-metrics from the Viterbi decoder.
      Displays next to the S/N in the main dialog.
2012-12-31 12:22:34 -06:00
John Phelps 51db482d9a Allow xmit of EOT character
* Still retains use of " ^r " in the user window
  * Covers special-case for FLARQ usage where ETX should
    stop the modem
  * EOT character can  now be transmitted from Tx window instead
    of switching to Rx mode
  * From: Andrej Lajovic <s57ln@hamradio.si>
    - Substitute symbolic names for negative return values of
      get_tx_char()
2012-12-08 08:04:47 -06:00
Andrej Lajovic 87afa66b08 UTF-8 overhaul
* Refactor get_tx_char()
  * Reset to stock version, call byte_at()
    The class Fl_Text_Buffer_mod (borrowed from FLTK) contained a modified
    version of the method char_at() that effectively made it behave as
    byte_at(). Silently modifying a library-provided method not only disables
    the access to a certain functionality of the library, but can also cause
    other unforeseen consequences. The method was thus reverted to the stock
    version and the code that previously called the modified version was
    changed to call byte_at() instead.
  * Remove unneeded code in FTextTX::nextChar()
  * Libtiniconv
    - Added libtiniconv (charset conversion library)
    - Library Version 1.0.1 fetched from http://tiniconv.sf.net
      A small fix made to change a misspelled macro name.
      Build system adapted to fit into the fldigi build model.
  * Added CharsetDistiller class
    - Sanitize input data and convert it into UTF-8
    - CharsetDistiller receives input data one byte at a time and converts this
      data stream from a particular character set into UTF-8. Invalid input data
      is treated as if it was encoded in CP1252. Character set conversion is
      performed as soon as possible, i.e., when enough input is received to
      constitute a valid character in the input character set, this character is
      immediatly converted into UTF-8 and made available at the output.
  * Make put_rx_char_flmain() use charsetDistiller
  * Make put_echo_char() use CharsetDistiller
  * Make pskBrowser use CharsetDistiller
  * Added OutputEncoder class
    - Used for encoding transmitted data
    - OutputEncoder accepts UTF-8 strings at input, converts them to the
      selected encoding and outputs them one byte at a time.
  * TX character set conversion using OutputEncoder
  * Fix backspace for >2byte UTF-8 characters
  * Cleanup modem UTF-8 code
    - PSK, Olivia, MT63 and MFSK modems:
      cleanup of unneeded UTF-8 handling code
    - Everything that deals with output character set conversion and data
      sequencing is now done using OutputEncoder, so the modems can become
      completely agnostic about the character set used. As far as they are
      concerned, everything is just byte-sized data.
  * Added an array of character set names and identifiers
  * UTF-8 code cleanup
    - Cleanup of unneeded UTF-8 handling code in add_rxtx_char() and family
  * Character set selection menu
     - Add menu button to select the active TX/RX charset to the colors-fonts
       configure dialog.  The setting defaults to UTF-8 (selected at program
       startup).  The selection is saved to the program defaults configuration
       file when "Config/Save" is executed.
2012-12-08 08:04:46 -06:00
John Phelps 13fa1a051a Allow xmit of EOT character
* Still retains use of " ^r " in the user window
  * Covers special-case for FLARQ usage where ETX should
    stop the modem
  * EOT character can  now be transmitted from Tx window instead
    of switching to Rx mode
  * From: Andrej Lajovic <s57ln@hamradio.si>
    - Substitute symbolic names for negative return values of
      get_tx_char()
2012-11-03 11:23:29 -05:00
Andrej Lajovic 0c1f37148b UTF-8 overhaul
* Refactor get_tx_char()
  * Reset to stock version, call byte_at()
    The class Fl_Text_Buffer_mod (borrowed from FLTK) contained a modified
    version of the method char_at() that effectively made it behave as
    byte_at(). Silently modifying a library-provided method not only disables
    the access to a certain functionality of the library, but can also cause
    other unforeseen consequences. The method was thus reverted to the stock
    version and the code that previously called the modified version was
    changed to call byte_at() instead.
  * Remove unneeded code in FTextTX::nextChar()
  * Libtiniconv
    - Added libtiniconv (charset conversion library)
    - Library Version 1.0.1 fetched from http://tiniconv.sf.net
      A small fix made to change a misspelled macro name.
      Build system adapted to fit into the fldigi build model.
  * Added CharsetDistiller class
    - Sanitize input data and convert it into UTF-8
    - CharsetDistiller receives input data one byte at a time and converts this
      data stream from a particular character set into UTF-8. Invalid input data
      is treated as if it was encoded in CP1252. Character set conversion is
      performed as soon as possible, i.e., when enough input is received to
      constitute a valid character in the input character set, this character is
      immediatly converted into UTF-8 and made available at the output.
  * Make put_rx_char_flmain() use charsetDistiller
  * Make put_echo_char() use CharsetDistiller
  * Make pskBrowser use CharsetDistiller
  * Added OutputEncoder class
    - Used for encoding transmitted data
    - OutputEncoder accepts UTF-8 strings at input, converts them to the
      selected encoding and outputs them one byte at a time.
  * TX character set conversion using OutputEncoder
  * Fix backspace for >2byte UTF-8 characters
  * Global setting for RX/TX charset
  * Cleanup modem UTF-8 code
    - PSK, Olivia, MT63 and MFSK modems:
      cleanup of unneeded UTF-8 handling code
    - Everything that deals with output character set conversion and data
      sequencing is now done using OutputEncoder, so the modems can become
      completely agnostic about the character set used. As far as they are
      concerned, everything is just byte-sized data.
  * Added an array of character set names and identifiers
  * UTF-8 code cleanup
    - Cleanup of unneeded UTF-8 handling code in add_rxtx_char() and family
  * Character set selection menu
     - Add menu button to select the active TX/RX charset to the colors-fonts
       configure dialog.  The setting defaults to UTF-8 (selected at program
       startup).  The selection is saved to the program defaults configuration
       file when "Config/Save" is executed.
2012-10-29 12:24:49 -05:00
Remi Chateauneu 350f83eb53 Viterbi and filter speed-up. 2012-05-08 17:44:52 -05:00
David Freese e2982497d2 psk comments
* Added source comments to psk decoder
2012-03-29 09:17:24 -05:00
David Freese 0d287c667d Cyrillic-UTF8 chars
* Added support for displaying, transmitting & receiving
    UTF-8 characters
  * Modes which support UTF-8 characters:
    - PSK31, PSK63, PSK125, PSK250, PSK500
    - Olivia - must enable 8 bit extended characters
    - MT63 - must enable 8 bit extended characters
    - MFSK - all baudrates supported
  * Modified "clear_sent" method in FTextRXTX to correct
    behavior when TX buffer contains UTF-8 characters
2012-02-15 09:20:28 -06:00
David Freese b7ff11527e Cyrillic-UTF8 chars
* Added support for displaying, transmitting & receiving
    UTF-8 characters
  * Modes which support UTF-8 characters:
    - PSK31, PSK63, PSK125, PSK250, PSK500
    - Olivia - must enable 8 bit extended characters
    - MT63 - must enable 8 bit extended characters
    - MFSK - all baudrates supported
  * Modified "clear_sent" method in FTextRXTX to correct
    behavior when TX buffer contains UTF-8 characters
2012-02-12 06:02:45 -06:00
David Freese e78f3e0cab Viewer status
* Moved viewer squelch from a configuration to a status item
  * Added width/height to viewer saved state
  * Added character width report to pskbrowser methods
2011-01-15 11:24:06 -06:00
David Freese 9ec791a8a7 PSK browser mod
Detector mod to limit channel range for wide bandwidth
  PSK modes, PSK125 and wider
2011-01-05 08:33:29 -06:00
David Freese f97218bdef Convenience features
* Added enable/disable psk browsing for very slow cpu's
    - control on psk config tab
    - default to enable ON
  * Added enable/disable RST out default to 599
    - control on UI/General [logging] tab
    - changed contest 599 defaults to work only with contest
      logging panel(s)
    - clear QSO logging widgets on program start
2011-01-05 04:08:17 -06:00
David Freese 98b4cb0d82 PSK detector mod
In search of Nirvana
2011-01-02 14:35:51 -06:00
David Freese bce4760d11 Browser start frequency
Change to single control for both Waterfall and Browser low
  frequency.
2010-12-31 05:31:52 -06:00