Important MPS messages can arrive in bursts of about 200 per second!
For library paths, see the build.xml file. Note that the dependent jar files are copied into the lib folder and are part of CVS. To update the jar files, run ant update_dependencies. This should copy the files from $PHYSICS_TOP on dev onto the lib folder. You can then commit these updated dependent jar files into CVS.
"Poke" MPS - note that the PV's mentioned here may not exist. Ask Sonya for some test PV's that can be used.
caput POSI:EP02:400:MTLM_LGC_BYPV 1 |
wait 10 seconds!
caput POSI:EP02:400:MTLM_LGC_BYPV 0 |
///**************************************************************************** // * Data Pointers // ****************************************************************************/ ///* Note: The history message header begins at the first byte of TCP Data // */ // //#define HISTORY_MESSAGE_HEADER_SECTION_POINTER(_pointerToFullMessage) ((epicsInt8 *)(_pointerToFullMessage) + 0) //#define HISTORY_MESSAGE_PROTOCOL_VERSION_POINTER(_pointerToHistoryHeader) ((epicsUInt8 *)(_pointerToHistoryHeader) + 0) //#define HISTORY_MESSAGE_TYPE_POINTER(_pointerToHistoryHeader) ((epicsUInt8 *)(_pointerToHistoryHeader) + 1) //#define HISTORY_MESSAGE_DATA_SECTION_POINTER(_pointerToHistoryHeader) ((epicsInt8 *)(_pointerToHistoryHeader) + 2) // //#define HISTORY_MESSAGE_PROTOCOL_VERSION(_pointerToHistoryHeader) (*HISTORY_MESSAGE_PROTOCOL_VERSION_POINTER(_pointerToHistoryHeader)) //#define HISTORY_MESSAGE_TYPE(_pointerToHistoryHeader) (*HISTORY_MESSAGE_TYPE_POINTER(_pointerToHistoryHeader)) // ///**************************************************************************** // * Super Message // ****************************************************************************/ ///* All history message struct data. // */ // // // //#define HISTORY_SUPER_MESSAGE_SIZE (16 + MPSHistoryProtocolHeaderSize) // //#define HISTORY_SUPER_TIMESTAMP_SECPASTEPOCH_POINTER(_pointerToHistoryData) ((epicsUInt32 *)((_pointerToHistoryData) + 0)) //#define HISTORY_SUPER_TIMESTAMP_NSEC_PULSEID_POINTER(_pointerToHistoryData) ((epicsUInt32 *)((_pointerToHistoryData) + 4)) //#define HISTORY_SUPER_TIMESLOT_POINTER(_pointerToHistoryData) ((epicsUInt8 *)((_pointerToHistoryData) + 8)) //#define HISTORY_SUPER_TYPE_POINTER(_pointerToHistoryData) ((epicsUInt8 *)((_pointerToHistoryData) + 9)) //#define HISTORY_SUPER_ID_POINTER(_pointerToHistoryData) ((epicsUInt32 *)((_pointerToHistoryData) + 10)) //#define HISTORY_SUPER_OLD_VALUE_POINTER(_pointerToHistoryData) ((epicsUInt32 *)((_pointerToHistoryData) + 14)) //#define HISTORY_SUPER_NEW_VALUE_POINTER(_pointerToHistoryData) ((epicsUInt32 *)((_pointerToHistoryData) + 18)) // //#define HISTORY_SUPER_TIMESTAMP_SECPASTEPOCH(_pointerToHistoryData) (*HISTORY_SUPER_TIMESTAMP_SECPASTEPOCH_POINTER(_pointerToHistoryData)) //#define HISTORY_SUPER_TIMESTAMP_NSEC_PULSEID(_pointerToHistoryData) (*HISTORY_SUPER_TIMESTAMP_NSEC_PULSEID_POINTER(_pointerToHistoryData)) //#define HISTORY_SUPER_TIMESLOT(_pointerToHistoryData) (*HISTORY_SUPER_TIMESLOT_POINTER(_pointerToHistoryData)) //#define HISTORY_SUPER_TYPE(_pointerToHistoryData) (*HISTORY_SUPER_TYPE_POINTER(_pointerToHistoryData)) //#define HISTORY_SUPER_ID(_pointerToHistoryData) (*HISTORY_SUPER_ID_POINTER(_pointerToHistoryData)) //#define HISTORY_SUPER_OLD_VALUE(_pointerToHistoryData) (*HISTORY_SUPER_OLD_VALUE_POINTER(_pointerToHistoryData)) //#define HISTORY_SUPER_NEW_VALUE(_pointerToHistoryData) (*HISTORY_SUPER_NEW_VALUE_POINTER(_pointerToHistoryData)) |
Eli wrote a PL/SQL procedure that hides (almost) all the details
BEGIN MPS_HISTORY.MPS_HISTORY_PKG.DML_%s1 (%s2); END; |
Including the address of the MPS IOC that sends messages
public static final InetSocketAddress SOCKET_ADDRESS = new InetSocketAddress("ioc-bsy0-mp01.slac.stanford.edu", 30000); |
Check out the tagged version on development into your workspace using eco and build using ant
$ eco Enter name of module/package to checkout: mpshist Enter name of tag or [RETURN] to use HEAD>mpshist-R0-0-26 Using mpshist-R0-0-26. The name of the directory will be mpshist-R0-0-26. cvs checkout -P -r mpshist-R0-0-26 -d mpshist-R0-0-26 mpshist cvs checkout: Updating mpshist-R0-0-26 ... $ cd mpshist/mpshist-R0-0-26/ $ ant ... |
Push to production and upgrade using cram
To start a new server, you must login as laci on lcls-daemon2
/etc/rc3.d/S99st.mpshist start |
To stop a production server, type
/etc/rc3.d/S99st.mpshist stop |
To test whether the Server is running, go as laci to lcls-daemon2
ps -ef | grep mpshist |
To test whether the server is working, use POSI:EP02:400:MTLM_LGC_BYPV, e.g.
caput POSI:EP02:400:MTLM_LGC_BYPV 1 caput POSI:EP02:400:MTLM_LGC_BYPV 0 |
Verify that there is a message in the MPS GUI (not in cmlog).
http://java.sun.com/docs/books/tutorial/networking/ (esp. sockets and datagrams)
http://darksleep.com/player/JavaAndUnsignedTypes.html (java types from/to bytes)
MPS Fault Logging Statistic Reports