*** ogrcvr ***
-------------------------------------------------------------------
05.08.08
- rtai_malloc(): check for return 0xffffffff
- don't touch RT_Chn[].clone_mode in activate_channel()/deactivate_channel()
-------------------------------------------------------------------
03.08.08
-  adjust system clock from receiver clock time
-------------------------------------------------------------------
30.07.08
-  check chn->bit_boundary_XXXXX only once per 1 s for 100 ms.
-------------------------------------------------------------------
29.07.08
- do a gp2021_ch_epoch_check() before gp2021_ch_epoch_count_load() 
- do not allow rcvr clock adjustment if # of tracked signals <= 4
- unset frame_sync if message parity fails
-------------------------------------------------------------------
28.07.08
- allow non-root usage
-------------------------------------------------------------------
27.07.08
- rename GP2021 defines CHx_CNTL_BASE -> GP2021_CHx_CNTL_BASE, etc
- check for spurious ready flags in accum_ready
- add 1 sec offset to transmit time
- keep track of nav bit boundary w.r.t ms_count
-------------------------------------------------------------------
30.01.08
- Code loop b/w reduced to 0.5 Hz (from 1.25 Hz)
- Carrier loop b/w reduced to 100 Hz / 50 Hz
-------------------------------------------------------------------
29.01.08
- Tracking parameter threshold changes
  THRESH_FLLWID2FLLNAR 0.9 -> 0.85
  THRESH_FLLNAR2PLLWID 0.9 -> 0.85    
- wait delay DELAY_FLLWID2ACQ before returning to STATE_ACQUIRE
-------------------------------------------------------------------
20.12.07
- in ch_acquisition() step by 1 halfchip, not 2
-------------------------------------------------------------------
02.11.07
- change BOARD_NAME from "Kolter Electronic (PCI)" to "Kolter Electronic"
-------------------------------------------------------------------
14.09.07
- cold search if no channel in sync
-------------------------------------------------------------------
19.07.07
- add field epoch in output
- OBS/TRK data format 5 -> 6
- remove ogru_navsolve2.c
-------------------------------------------------------------------
18.07.07
- remove ogru_riseset.c, ogrt_riseset.c
-------------------------------------------------------------------
16.07.07
- ISA port clean-up
-------------------------------------------------------------------
15.07.07
- replaced multi_* calls by individual ch_carrier() calls
-------------------------------------------------------------------
14.07.07
- save code NCO values from previous TIC
- plot 1 ms & 20 ms samples
- acquisition: 200 Hz & 1 chip, confirm: 4 of 5, FLL-ampl: >30 dB Hz 
- move bit synchronisation from FLL (narrow) to PLL (wide)
- bug fix in plot2d.c: index < MAX_2D_BUF!
- version 0.4.9
-------------------------------------------------------------------
13.07.07
- ogplot options
- bit synchronization: check nav bit histogram distribution 
-------------------------------------------------------------------
12.07.07
- version 0.4.8
- bit sync in FLL just once, reset only in acquisition
- rename: ogr_routine() -> ogrt_polling()
- polling time step 0.5 ms -> 0.1 ms, improves tracking loop behaviour
- carrier loop b/w increased to 300 Hz / 200 Hz
- renames threshold values FLL<->PLL
-------------------------------------------------------------------
11.07.07
- set epoch counter directly in  process_DUMP_event()
- set epoch counter from chn->ms_count
- transit from PLL wide to FLL wide, not narrow
-------------------------------------------------------------------
10.07.07
- include i/q_20ms vectors in Data_TIC structure
- bug fix in adjust_carrier_frq(): don't touch
  free clones' carrier NCO
- open-loop mode: MODE_CL_SLAVED with car frq offset
                  smooth car_dfrq to get model Doppler
- do not switch off low-SNR channels in ch_pll_check_for_state_transition()
- clean up Doppler search in ch_acquisition()
-------------------------------------------------------------------
09.07.07
- version 0.4.7
- nav bit prediction seems to work ...
- new file ogrt_navbit.c
-------------------------------------------------------------------
08.07.07
- stop sending DUMP files thru FIFO 
- display of correct nav bit predictions
- activate prediction for clone channels as well
-------------------------------------------------------------------
07.07.07
- licence GPL v2 -> v3
- acq of free clones: copy NCO settings from master
-------------------------------------------------------------------
06.07.07
- write nav bit data to file
- fix max number of masters
- shift alignment of RT_Chn[].ms_count by 1 ms (ms_count % 20) == 19 not 20, 
  likewise RT_Chn[].tow_ms
- version 0.4.6
-------------------------------------------------------------------
05.07.07
- time marks in output messages
- TRK/OBS data format version 4, ~20% smaller size
- TRK/OBS data format version 5, ~50% smaller size
- tracking channels are served first, acq & conf channels later
-------------------------------------------------------------------
04.07.07
- remove files ogru_openloop.c ogru_graphic.c ogrt_trackmulti.c
  ogrt_trackmono.c
- request 4-quad phase extraction via RT_Ctrl, actual method
  used is stored in RT_Chn[]
-------------------------------------------------------------------
03.07.07
- split TRK files into segments one hour long
-------------------------------------------------------------------
30.06.07
- rename ch_follow_slave_XXX -> ch_follow_clone_XXX
-------------------------------------------------------------------
29.06.07
- stop ogrcvr with Ctrl-C (signal SIGINT)
- /proc/opengps/receiver_location
- /proc/opengps/height_above_refl
-------------------------------------------------------------------
25.06.07
- clean-up struct RT_Chn[]
-------------------------------------------------------------------
16.06.07
- bits 30 & 31 of subframe words no longer set
-------------------------------------------------------------------
13.06.07
- tow_tic_count in milliseconds
-------------------------------------------------------------------
11.06.07
- control TIC frequency via /proc/opengps_TIC_frequency
-------------------------------------------------------------------
10.06.07
- add 3rd display page
- field display_page starts at 0
-------------------------------------------------------------------
07.06.07
- diplay permanent on 
-------------------------------------------------------------------
04.06.07
- implement clone channels as linked list
  (ch_c = chn->ch_clone => RT_Chn[ch_c]); each clone points
  to master via ch_m = chn->ch_master => RT_Chn[ch_m]
- bug fix in activate_deactivate_output_to_files()  
-------------------------------------------------------------------
28.05.07
- back to STATE_ACQ if FLL loop lock below FLL_LOOPTHRESH_LO
  for WFLL_COUNT_MAX ms
-------------------------------------------------------------------
22.05.07
- added entries to /proc interface
-------------------------------------------------------------------
22.05.07
- move proc file system stuff to file ogrt_procfs.c
-------------------------------------------------------------------
21.05.07
- FLL & PLL (wide/narrow) tracking
- removed state CH_PULL_IN
-------------------------------------------------------------------
27.03.07
- 3rd order carrier tracking loop
- field carloop_order moved to RT_Chn[]
-------------------------------------------------------------------
26.03.07
- replace repeated RT_Chn[]... by chn->...
- call ch_carrierloop_2ndorder() in ch_align() as well
-------------------------------------------------------------------
20.02.07
- code and carrier loop moved to functions ch_track_codeloop()
  and ch_track_carrierloop() 
-------------------------------------------------------------------
07.03.06
- narrow code correlation NARROW_CODE_CORR_TRACK
-------------------------------------------------------------------
01.03.06
- replace fixed-point arithmetics with float in fixp_rss() 
-------------------------------------------------------------------
28.02.06
- load RTAI modules, re-load ogrt_module in main() via system()
- replace fixed-point arithmetics with float in carrier loop
-------------------------------------------------------------------
27.02.06
- adjust code loop every DUMP together with carrier loop
- clip cod_phs_res_float in ch_track() (commented out)
- deltafrq has to be long (RT_Chn[].codfrq += (long)deltafrq doesnt work!)
- NOTE: carrier loop uses fixed-point arithmetics!!!
- fixp2long(): -1 should map to 0, not -1!
- carrier-aided code loop
-------------------------------------------------------------------
15.02.06
- adjust code delay only for TRACK'ing slave channnels
- cosmetic changes
- make lower boundary of elevation (defining the recording window)
  selectable from parameter file
- remove field 'dump_inquadphase' from RT_Chn[]
-------------------------------------------------------------------
14.02.06
- comment out mode 'standard_graphic'
- allow more than one slave per master
-------------------------------------------------------------------
13.02.06
- introduce mode 'lowelev_multi'
- file ogru_sched.c removed
- copyright update 2005 -> 2006
- output format change (trk) 12 -> 13
- ogru_inout.c: move location of 'NavData.tow_tic_count[ch]' and
  write 'NavData.tow_1s[ch]' only once!
- version 0.3.11
-------------------------------------------------------------------
11.11.05
- check consistency of receiver clock times in all navigating channels
- corrected pseudo range doen't include receiver clock error
-------------------------------------------------------------------
10.11.05
- save hostname is data file header as well
-------------------------------------------------------------------
09.11.05
- remove/change fields 'health' and 'healt_status' in 'GPS_Alm[]' and
  'Xmit_Info[]'
- do not try to track unhealthy satellites
-------------------------------------------------------------------
08.11.05
- low elevation mode: write all tracked satellite data to one file
- display time spent in real-time polling loop
-------------------------------------------------------------------
07.11.05
- option: first/second/third order code tracking loop
-------------------------------------------------------------------
02.11.05
- write IQ_DUMP_DOWN_SMPL_FCT and TIC_EVENT_FRQ to output as well
- convert to floating point arithmetics in ch_align()/ch_track()
  (code loop)
-------------------------------------------------------------------
26.10.05
- remove field 'earlylate'
-------------------------------------------------------------------
21.10.05
- changed field RT_Chn[].state to bit mask
- display 2-char string instead of numerical value of field 'state'
-------------------------------------------------------------------
20.10.05
- rename *CARRCODE, *IQPHASE to *TIC(_EVENT) and *DUMP(_EVENT)
-------------------------------------------------------------------
18.10.05
- allow TIC periods other than 10 Hz, def'd in ogrt_proc.c
  as TIC_EVENT_FRQ
- downsample in/quadphase dumps from 50 Hz to
  (50 / IQ_DUMP_DOWNSAMPL_FACTOR) Hz
- DATA_FORMAT_VERSION_TRK = 11
-------------------------------------------------------------------
17.10.05
- remove enums 'clear_all' and 'clear_ol' (field 'state' in RT_Chn[])
- moved scheduling functions to file ogru_schedule.c
- renamed field avg_20ms -> avg_100ms
- introduce tasks every 5 minutes
-------------------------------------------------------------------
13.10.05
- version 0.3.9
- move initialization of almanac/ephemeris data to ogru_inout.c
- remove global variable Time_Of_Week
- introduce field 'tow' in structure Eph (ephemeris)
- adjust system clock
-------------------------------------------------------------------
22.04.05
- version 0.3.8
- swap display screens with pg up/pg down
- open-loop implementation
- calculate xmitter position with xmitter time, not receiver time
-------------------------------------------------------------------
06.06.04
- string length in 'out' header includes trailing zero
- version 0.3.3
-------------------------------------------------------------------
05.06.04
- IODE is 8 LSB of IODC (subframe 2 and 3)
- (mode: rfl) change pointer to ephemeris file
- write PROGRAMVERSION and compile time to 'out' header
- version 0.3.2
-------------------------------------------------------------------
22.05.04
- replace RT_Ctrl->sec_flag / RT_Ctrl->min_flag by RT_Ctrl->time_flag
-------------------------------------------------------------------
17.04.04
- rfl mode: rcvr parameter value 'refl surface height'
- new field 'chmask' in RT_Chn[]
- remove global variable monosat_cod_ofs[]
- remove field  RT_Ctrl->monosat_slew
-------------------------------------------------------------------
22.03.04
-  replace Rcvr_Info->time.week by RT_Ctrl->week_no
-------------------------------------------------------------------
19.03.04
- convert GPS_Eph to shared memory object
- convert Xmit_Info to shared memory object
-------------------------------------------------------------------
18.03.04
- convert Ctrl to shared memory object
-------------------------------------------------------------------
17.03.04
- write nav bits to file (hourly files)
- control output thru parameter file
-------------------------------------------------------------------
16.03.04
- write ephemeris data in every data file
- display receiver clock error derived from nav solution
-------------------------------------------------------------------
15.03.04
- distinguish between iode in sf2 and sf3
- save ephemeris/clock/iono data within same data file
-------------------------------------------------------------------
11.03.04
- display masks (tracking/navigating/recording)
- output transmitter time
- output control parameters
-------------------------------------------------------------------
10.03.04
- log errors in more compact form
- fixed bug in check sum calculation (ogru_inout.c)
-------------------------------------------------------------------
09.03.04
- set elevation mark for recording data to out*.dat
- write data to directory OUTPUTDIR def'd in ogru_defines.h
- ogrt_proc.c: handle initialization not within DUMP event
-------------------------------------------------------------------
06.03.04
- write nav data to file nav-<gps week>-<time of week>.dat
- write  data to file nav-<gps week>-<time of week>.dat
-------------------------------------------------------------------
05.03.04
- track only GPS satellites at elevations exceeding 'Ctrl.track_mask_elev'
- new entry in receiver parameter file 'Elev Mask Navigating (deg)'
-------------------------------------------------------------------
25.02.04
- bug fix: write correlation data
- update RT_Chn[].avg_20ms in monosat mode as well 
-------------------------------------------------------------------
18.02.04
- remove satfind from chan_warm_alloc()
- call separately via update_satellite_position() every second;
- display azimuth/elevation with 0.1 degree
-------------------------------------------------------------------
27.01.04
- increase FIFO buffer sizes
- FIFO0: navigation bits
- FIFO1: send packets
-------------------------------------------------------------------
24.01.04
- set PCI/ISA base address in Makefile
-------------------------------------------------------------------
23.01.04
- cosmetic changes to Makefile
- use module_init/module_exit macros
- don't stop in ogr_error()
-------------------------------------------------------------------
21.01.04
- fixed ogr_error() / ogr_message()
-------------------------------------------------------------------
24.12.03
- rename ogrt_riseset.c to ogrt_openloop.c
- rename Chan[] to RT_Chn[]
- move userland fields within RT_Chn[] to new struct
  Chn[] 
-------------------------------------------------------------------
23.12.03
- insert fields 'i_prompt_20ms_prv', 'q_prompt_20ms_prv', etc.
  to allow extraction of I/Q values summed over 20 ms at times 
  not synchronized to bit boundary.
- read true position from file 'input/truelocation.dat' and store
  in global variable
-------------------------------------------------------------------
18.12.03
- cosmetic changes to read_rcvr_par()
- set width of C/A code delay between channels in monosat mode
  from parameter 
-------------------------------------------------------------------
17.12.03
- set system clock once per minute
-------------------------------------------------------------------
17.12.03
- release version (0312171545)
-------------------------------------------------------------------
14.12.03
- make 'Chan[].prompt_mag & Chan[].dith_mag' local variables
-------------------------------------------------------------------
13.12.03
- use loop parameters expressed in terms of bandwidth, gain and 
  damping ratio
- command line options
- set base address with option -b
- command 'o' to dump elevation/azimuth/signal data to file (ASCII)
-------------------------------------------------------------------
10.12.03
- init monosat_cod_ofs[] from RT_Ctrl->monosat_cod_ofs[] in 
  init_monosat/riseset()
-------------------------------------------------------------------
10.12.03
- Msg[].subframe_full = 0 if loss of lock
- disregard outlier values read from code and phase registers
  (data transmission problem? happens only with 'code_phase' not 
  with 'code_dco_phase')
-------------------------------------------------------------------
08.12.03
- rename GPS_Polling to polling_GP2021
-------------------------------------------------------------------
04.12.03
- reorganized directories
- #def'd FIFOs
- #def'd almanac/ephemeris/location files, now placed 
  in directory ../input/
- #def'd receiver parameter/ion&UTC files, now placed 
  in directory ../input/
-------------------------------------------------------------------
04.12.03
- rename ogrt_statesmonosat.c to ogrt_monosat.c 
- rename ogrt_statesnavigate.c to ogrt_navigate.c 
-------------------------------------------------------------------
13.10.03
- split ogr_rtproc.c in several files: ogrt_*.c
-------------------------------------------------------------------
08.08.03
- rename mode 'unisat' to 'monosat'
- rewrote calculation of PLL parameters in terms of
  loop gain / damp. ratio / loop bandwidth
-------------------------------------------------------------------
07.08.03
- put user prg to sleep twice a second (avoid busy waiting)
-------------------------------------------------------------------
05.08.03
- write cor data file header in user prg
- new file: ogr_riseset.c
-------------------------------------------------------------------
02.08.03
- replaced globals LLH rec_pos_llh, LLH current_loc and
  ECEF rec_pos_xyz by RCVRINFO Rcvr_Info
- replaced SATVIS SatVis by XMITINFO Xmit_Info
-------------------------------------------------------------------
02.08.03
- moved ASV[] and SVh[] to struct Sat_Info[]
- renamed struct Param to Ctrl
- cleaned up main()
- access shared memory areas by names "OGRCtr" and "OGRChn"
- split struct 'Param' into two structs: RT_Ctrl is
  visible to RT- and user-module, Ctrl is visible to user
  prg only.
-------------------------------------------------------------------
20.07.03
- split navmsg_decode() into 5 parts: navmsg_decode_sfN() 
  (N=1,...,5)
- replace field Param->nav_flag by NavData.perform_navfix
- replace field Msg.msg[1500] by Msg[].subframe[10]
- decode subframes separately
- dump phase data to file
- field Chan[].ms_count runs from 0 to 5999 (6 seconds, 1 subframe)
- RT proc provides info on start of subframe as well (bit 1).
  Thus search for preamble in user proc is no longer required.
-------------------------------------------------------------------
19.07.03
- implement simple protocol to transmit nav bit and paseudorange / 
  carrier phase data over fifo channel 0
- initialize epoch register
-------------------------------------------------------------------
17.07.03
- new state 'align' (find nav bit boundaries)
- dump nav message and pseudoranges to binary output file (key 'd')
-------------------------------------------------------------------
15.07.03
- move time/date functions to ogr_timefun.c
- renamed parameter 'n_of_m_confirm'
-------------------------------------------------------------------
18.05.03
- timer variable 'ms_count', runs from 0 to 29999 (30 seconds)
- call find_preamble() just once
-------------------------------------------------------------------
12.05.03
- bit boundaries determined in function pull_in()
- 1ms/20ms/6s/30s counter
-------------------------------------------------------------------
07.05.03
- find bit boundaries in function pull_in()
- split ogr_gpsfuncs.c into ogr_navdecode.c & ogr_navsolve.c
-------------------------------------------------------------------
27.04.03
- param->thetime       : system clock, adjust once every minute 
  param->clock_tow     : GPS receiver clock
  chan[ch].tr_bit_time : 
  chan[ch].TOW         :
-------------------------------------------------------------------
27.04.03
- (ogr_user.c) write pseudorange debug data to output file
-------------------------------------------------------------------
18.02.03
- add time marker in output data
-------------------------------------------------------------------
16.02.03
- code phase shifts changed
- unisat mode still not ok
-------------------------------------------------------------------
15.02.03
- reduce number of states 
- dont touch tracking channel in unisat mode
- adjust carrier/code DCO continously in ch_follow()
-------------------------------------------------------------------
09.02.03
- allow late / early code tracking
-------------------------------------------------------------------
08.02.03
- fixed bug in code phase delay setup
-------------------------------------------------------------------
26.01.03
- go back to version 0212120038
- re-apply changes
-------------------------------------------------------------------
05.01.03
- powers of 2 #define'd
- modify ionospheric model (taken from OS_GPS_106)
-------------------------------------------------------------------
25.12.02
- SQRTGM #define'd
- float -> double in almanac struct
- remove field 'e' in gps_eph[]
-------------------------------------------------------------------
23.12.02
- display() page4 & page5
-------------------------------------------------------------------
22.12.02
- more compact code in navmsg-decode()
- interchanged I <-> Q, now abs(I) is maximized, Q->0
- removed bit_test_l()
-------------------------------------------------------------------
21.12.02
- rename 'trackch' to 'leadch'
- rename functions *_trail() to *_unisat()
- add state 'init_unisat'
- track_unisat() function is applied to every channel (no early 
  return)
- transition to unisat mode only if tracking
-------------------------------------------------------------------
07.12.02
- access to PROTO-3 ports from RT module only
- parity check and nav decoding in user module
-------------------------------------------------------------------
26.08.02
- shell script ogr; load modules, start ogr_main, unload modules
-------------------------------------------------------------------
25.08.02
- ported from RT-Linux to RTAI-Linux
-------------------------------------------------------------------

