Files
pcas/src/cas/RELEASE_NOTES
T
1996-12-06 22:30:50 +00:00

121 lines
4.4 KiB
Plaintext

Changes between epics 3.13 Beta 4 and 3.13 Beta 5
**** API Change ****
o The canonical PV name is returned from caServer::pvExistTest()
in the supplied buffer and not in a gdd data descriptor. See
"casdef.h".
old API:
//
// pvExistTest()
//
// The server tool is encouraged to accept multiple PV name
// aliases for the same PV here. However, a unique canonical name
// must be selected for each PV.
//
// returns S_casApp_success and fills in canonicalPVName
// if the PV is in this server tool
//
// returns S_casApp_pvNotFound if the PV does not exist in
// the server tool
//
// The server tool returns the unique canonical name for
// the pv into the gdd. A gdd is used here because this
// operation is allowed to complete asynchronously.
//
virtual caStatus pvExistTest (const casCtx &ctx, const char *pPVName,
gdd &canonicalPVName) = 0;
new API:
//
// pvExistTest()
//
// The server tool is encouraged to accept multiple PV name
// aliases for the same PV here. However, one unique canonical name
// must be selected by the server tool and returned to the
// server lib for each PV. The server will use this canonical
// name to prevent internal duplication of data structures for
// process variables that have multiple aliases.
//
// o returns S_casApp_success and a valid canonical name string
// when the PV is in this server tool
//
// o returns S_casApp_pvNotFound if the PV does not exist in
// the server tool
//
// Examples:
// caServerXXX::pvExistTest(const casCtx &ctx, const char *pPVName)
// {
// return pvExistReturn(S_casApp_success, pPVName); // common
// return pvExistReturn(S_casApp_pvNotFound); // no PV by that name
//
// char pName[9] = "myPVName";
// return pvExistReturn(S_casApp_success, pName); // also common
// return pvExistReturn(S_casApp_asyncCompletion); // not now
// }
//
virtual pvExistReturn pvExistTest (const casCtx &ctx,
const char *pPVName)=0;
**** API Change ****
o The server tool must now use one of class casAsyncReadIO, casAsyncWriteIO, or
casAsyncPVExistIO in place of casAsyncIO. See "casdef.h".
**** API Change ****
o Virtual function prototype change:
Before: "aitEnum casPV::bestExternalType()"
After: "aitEnum casPV::bestExternalType() const"
**** API Change ****
o The following virtual functions were added to casPV:
//
// Returns the maximum bounding box for all present and
// future data stored within the PV.
//
// The routine "dimension()" returns the maximum
// number of dimensions in the hypercube (0=scaler,
// 1=array, 2=plane, 3=cube ...}.
//
// The routine "maxBound(dimension)" returns the
// maximum length of a particular dimension of the
// hypercube as follows:
//
// dim equal to 0 1 3 ...
// -------------------------------------------
// hypercube
// type
// ---------
//
// array array
// length
//
// plane x y
//
// cube x y z
//
// .
// .
// .
//
// The default (base) "dimension()" returns zero (scaler).
// The default (base) "maxBound()" returns scaler bounds
// for all dimensions.
//
// Clients will see that the PV's data is scaler if
// these routines are not supplied in the derived class.
//
// If the "dimension" argument to maxBounds() is set to
// zero then the bound on the first dimension is being
// fetched. If the "dimension" argument to maxBound() is
// set to one then the bound on the second dimension
// are being fetched...
//
virtual unsigned maxDimension() const; // return zero if scaler
virtual aitIndex maxBound (unsigned dimension) const;
The defaults in base class casPV implement identical behavior
to the past if these routines are not supplied by the derived
class.