README for the modified OpenWebRX-based 'web server' by DL4YHF
--------------------------------------------------------------

Original location:  C\OpenWebRX\htdocs\OWRX_readme_dl4yhf.htm 

Introduction

Some files in this folder are based on the last OpenWebRX version
created by Andras Retzler, HA7ILM, who discontinued development
in 12/2019. 
This code is NOT based on Jakob Ketterl's fork on Github.
It also has got NOTHING to do with the KiwiSDR.
In fact, it's utterly incompable with those forks for multiple reasons.
First of all, this OpenWebRX-descendant was developed with
the following in mind:

  * use an IC-7300 or IC-9700 as the source for both
    AUDIO (demodulated by the radio itself) and SPECTRA
    (also delivered by the radio via USB or Ethernet/LAN).

  * fully support Icom's "fixed edge" spectrum scope mode,
    which allows tuning (the VFO, or "dial" frequency)
    OUTSIDE of the scope's displayed frequency range (!),
    the original concept of making any frequency RELATIVE
    to the OpenWebRX waterfall center frequency (!) 
    is a no-brainer. More on this later (keyword "offset_freq").

  * fix an annoying bug in the original OpenWebSDR, seen
    in many online receivers, which in mode "CW" (not USB/LSB)
    shows a wrong audio passband, and instead of showing
    the frequency "that you listen to" (within the passband),
    showed the RF where the "zero Hertz audio" would be,
    if we could hear 0 Hz. Not very helpful, and not what
    "modern" allmode transceivers show as "dial frequency"
    in CW. CW simply isn't SSB (USB or LSB), full stop.

  * allow ONE of the connected clients (let's call him 'master')
    to change settings on the radio, while all OTHER clients
    (let's call them 'slaves') can LISTEN to THE SAME FREQUENCY,
    and can SEE the same signals on the waterfall 
     - because our IC-7300 / IC-9700 isn't a "multi-channel"
       radio (except for the IC-9700, maybe, with VHF on the
       main VFO, and simultaneously UHF on the sub-VFO).


The server-side is completely written in C / C++, not Python,
    see http_server_sourcecode/OpenWebRX_Server.cpp .
Since our server may be a normal 'single channel' receiver,
e.g. IC-7300, only the current 'master'-client can control 
the VFO at a time.
If the master 'QSYs', or switches to another mode, the slaves
must follow. Depending on the IC-7300's "spectrum scope" 
settings, even the waterfall display and frequency scale 
will have to scroll, controlled by the master, pushed by 
the server via Web Socket to all currently connected clients.

Modifications (beside the new features mentioned in the intro):
 * Added a few new 'initial values' in the form of global variables
   in the expanded 'index.wrx': starting_low_cut, starting_high_cut,..
 * When serving spectra and audio from an IC-7300, the filter
   passband parameters are not only Those 'initial values'
 * Threw out the 'mathbox'-based 3D-waterfall (nice gimmick,
   but really not required for everyday's use)
 * Our modified client is aware of the rig-side-adjustable
   CW-pitch, which for good reason is NOT added to the 
   ambiguous "offset_freq" (internally: iTuningOffset_Hz)
   but considered when displaying the AUDIO PASSBAND
  (which, to the author's big surprise, didn't even work properly
   in the tested existing OpenWebRX-based online receivers, e.g.:
     http://hamnet-bielefeld.de:8073/#freq=14406000,mod=cw,sql=-150
    Tune in there, send on 144.060 MHz (CW carrier frequency),
    and you will NOT hear yourself on that OpenWenRX receiver.)
   Only the KiwiSDRs had their passband correctly centered
   on the "dial frequency" in CW, and the "dial frequency"
   in CW was the correct frequency where you could HEAR your signal.
   Fixed in openwebrx.js AND in OpenWebRX_Server.cpp as explained
   in the latter ("Controlling the mode and the audio passband").
 * In openwebrx.js (ORIGINAL by HA7ILM), 
      replaced 'center_freq' by 'spectrum_center_freq', 
      replaced 'bandwidth'   by 'spectrum_bandwidth',