Changes:
* improve support for decoding the alarm messages by showing the main German
regions which are affected. Note that this was an experimental and now
unused system. With permission from Mr. Wenzelewski from DIN
* Doxygen support, provide a Doxyfile (not supported by the port yet)
* Small fixes to the FidoCADJ schematics
* library:
- assign date/time fields more independently so that errors are corrected
faster
- record the accumulated minute length at the end of each line in the log
file, preceded by an 'a'. These values are read back by get_bit_file()
- redesign the calculations for the accumulated minute length to be more
accurate in case of reception errors or reading log files. Time can now
be adjust forwards and backwards.
- record the minute cutoff value at the end of each line in the log file,
preceded by a 'c'. These values are read back by get_bit_file()
- skip consecutive newlines in the log file
- use a more accurate sleep time when receiving live bits
- set upper bound of hw.freq to 155,000 Hz
- API cleanups (types sanitized, const qualifiers added, some renames)
- algorithm and code cleanups
* dcf77pi:
- show the accumulated minute length each second instead of each minute
- show the minute cutoff value
- Use USE_LDCONFIG
Overall changes:
- Compile with -fpic instead of -fPIC (potentially smaller code size)
- Add a schematics file for the hardware receiver in FidoCadJ format
- Language and typographical updates to README.md
- Several signed/unsigned/size fixes
Library changes:
- Extract generic third-party code for bits 1..14 from decode_alarm.h into a
new file bits1to14.h
- Convert almost all calculations for decoding the live signal into integer
operations, drop fields 'a', 'frac', and 'maxone' from struct bitinfo.
- New function setclock_ok() in setclock.h
- New functions get_acc_minlen(), add_acc_minlen(), reset_acc_minlen() in
decode_time.h. The accumulated minute length is now a first-class entity.
When decoding the live signal, increment it more precisely than just 1000 ms/s
to prevent drift during bad radio reception.
- New functions dcftime() and isotime() in decode_time.h. Use the latter in
setclock.c
- Check input values of etc/config.txt:
- hw.active_high must be 0 or 1
- hw.freq must be even between 10 and 666666
- Reset the values of bit0 and bit20 if the latter becomes smaller than the
former, show this in the log file using a '!'
- Compact the signal buffer, it now stores 8 pulses per byte instead of just 1.
Client changes:
- Make dcf77pi and dcf77pi-analyze more agnostic of the contents of the
third-party contents
- Update display code of dcf77pi and readpin for the updates to the live signal
decoding
- Show in dcf77pi when the value of bit20 underflows
- Update the code to display the signal buffer in readpin
- Fix readpin to properly clean up when receiving a SIGINT
General:
- add partial support for OSX and Cygwin
- add bitinfo.last0 field which represents the last pulse where the radio signal was 0
- store radio signal into a new field bitinfo.signal
- more robust handling of radio signal glitches
- improve realfreq by approximately 7% on a non-optimized standard build
- simplify code for handling DST changes and leap seconds
- defer assigning the decoded time until the minute length has been checked
to match the exact expected value (i.e. 59 unless a leap second occurs)
- code cleanups
README:
- mention supported platforms
dcf77pi:
- display updates, show last0
readpin:
- overhaul to make more use of libdcf77
- drop -t parameter
The code to decode the radio signal, date/time, and civil warnings is now
provided in a library libdcf77.so together with the relevant header files.
dcf77pi is now split up into dcf77pi (the live client) and dcf77pi-analyze
(the client to analyze log files). The -f parameter of dcf77pi is dropped.
Apply minor lint(1) fixes.
General:
- the maxzero and maxone parameters are now determined dynamically, remove
them from config.txt and README.md
- Do not consider time offset jumps if bit 17 and 18 are equal
readpin:
- add a -q parameter to suppress displaying of the raw signal (default off)
- display updates
dcf77pi:
- display updates/fixes, show radio state
(OK if no receive/transmit/random errors)
- Mention the "backspace" key in README.md
- Reset DST and leap second announcements at the next hour
- Detect sudden jumps to non-DST
- Relax conditions for processing a DST change
- Prevent a possible string overflow when reading the configuration file.
- Plug a few memory leaks.
- Refactor a lot of code.
- Replace -l parameter (specify logfile) of dcf77pi by an interactive 'L' key
which can also be used to change or disable the log file.
- New entry in config.txt, "outlogfile", to specify the the default log file
(default empty).
- Fix a bug where the hour would be wrongly considered off by one at the
moment of a DST change.
- Various bug fixes in the GUI code (only affected displaying of the data).
- Handle log files with \n\r line endings used by RISC OS (which runs on the
Raspberry Pi).
- Slightly improve output when reading from a log file.
- Update README.md
- support DESTDIR and install-strip, uninstall targets in upstream Makefile
- clean up port Makefile accordingly
- bugfix: do not accept removed 'S' command line option
- bugfix: display 'no minute' at the correct position in GUI mode
- do not leak curses memory at exit
- Provide an ncurses based interface in live mode, no changes when reading
from a log file
- Drop the -v and -S parameters, they are now part of the GUI
- add ncurses to USES
Changes:
- Add the correct number of minutes when the accumulated minute length is
more than 60 seconds (happens when e.g. the transmitter is off).
- Disallow DST changes or leap seconds if a 0 is specified for summermonth,
wintermonth, or leapsecmonths.
- Allow compilation on NetBSD.
Changes:
dcf77pi:
- Calculate century (modulo 400) from year, month, day of week, day of month
- New parameter -S to set the system time
- Improvements to DST handling
- Set error state if day of month is too large, not just when greater than 31
readpin:
- New parameter -t for readpin to adjust nanosleep() delay
- Determine realfreq dynamically, do not use realfreq from config.txt
general:
- Documentation updates
- Code cleanups
- New algorithm to receive bits from the radio signal from an idea by
Udo Klein, with permission [1] (configuration file changed)
- Use two independent maximum values for 0 and 1 bits (configuration
file changed)
- New verbose display output
- Weaken precondition for processing leap seconds and DST changes to not
insist on correct values for parity bits and bit 0, 20, 17, 18
- README.md updated
- Style and other minor fixes
* Simplify PORTDOCS installation
[1] http://blog.blinkenlight.net/experiments/dcf77/binary-clock/#comment-5916
- better detection for bits in the radio signal
- catch more corner cases in decoding of the time data
The configuration file (hardware.txt) needs to be updated with this update.
platform but might work on other devices using GPIO pins too.
The received data can be logged for later playback/analysis.
WWW: https://github.com/rene0/dcf77pi