MPFOSI has been modified extensively since release 2-4. The major changes are:
This means that serial support can now be used with all low level drivers supported by asynDriver. Amoung these are: standard serial ports on solaris, linux, and vxWorks. IP488 and IP octalUART on vxWorks.
Only one library mpf is built. mpf, asynDriver, and ipac components are selected by definitions in the xxxInclude.dbd file.
The plan, assuming not too many screams of anger are heard, is to remove support for remoter servers. If this is done MPF can be greatly simplified and support for user defined message types can be added.
You application xxxInclude.dbd file MUST include:
include "mpf.dbd"
These now generate C functions that call the C++ static methods. If any source code has a cast to DEVSUPFUN in the invocation of these macros the cast must be removed.
The following now use the new iocsh var facility: tcpDebug, RMRClientDebug, RMRServerDebug.
Uses latest build rules
ttyVxPort now uses the name ttyVxPort instead of ttyPort everywhere.
devStringMpf calls dbTranslateEscape for output strings.
initTtyVxPort calls epicsTimerQueueAllocate at initialization.
Everywhere the word sniff was used, the word peek is now used. e.g. serialPortSniff is now serialPortPeek. The new sniff handler uses that display format from Mark Rivers.
mpfSerial support is now bundled with mpf. Major changes have been made to mpfSerial since the vxWorks only version. The main change is that it now supports "standards" for accessing serial devices. It supports POSIX termios, vxWorks tyCo, and also the IPAC tyGSOctal driver.
None of this support is currently available with the OSI version of MPF.
Build rules for mpf applications have been greatly simplified.
DevMpf has a new method bind, which must be called immediately after any object derived from class DevMpf is created. This binds to the MPF server. Since binding may result in virtual class methods being called, binding MUST be dove after construction. Thus it is not possible to bind in the constructor for DevMpf.
If client and server have different byte orders RMRServer did not work. This is fixed.