Generic message packing and unpacking routines now understand antipode
grid contest messages. These messages are now recognized as standard
messages in message response processing and dealt with appropriately
when contest mode is selected and applicable (currently FT8 and MSK144
only).
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8062 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
Groundwork for calling the decoders directly from C/C++ threads.
To access the timer module timer_module must now be used.
Instrumented code need only use the module function 'timer' which is
now a procedure pointer that is guaranteed to be associated (unless
null() is assigned to it, which should not be done). The default
behaviour of 'timer' is to do nothing.
If a Fortran program wishes to profile code it should now use the
timer_impl module which contains a default timer implementation. The
main program should call 'init_timer([filename])' before using 'timer'
or calling routines that are instrumented. If
'init_timer([filename])'. If it is called then an optional file name
may be provided with 'timer.out' being used as a default. The
procedure 'fini_timer()' may be called to close the file.
The default timer implementation is thread safe if used with OpenMP
multi-threaded code so long as the OpenMP thread team is given the
copyin(/timer_private/) attribute for correct operation. The common
block /timer_private/ should be included for OpenMP use by including
the file 'timer_common.inc'.
The module 'lib/timer_C_wrapper.f90' provides a Fortran wrapper along
with 'init' and 'fini' subroutines which allow a C/C++ application to
call timer instrumented Fortran code and for it to receive callbacks
of 'timer()' subroutine invocations. No C/C++ timer implementation is
provided at this stage.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6320 ab8295b8-cf94-4d9e-aec4-7959e3be5d79