Class EnumProcessVariable


  • public abstract class EnumProcessVariable
    extends ProcessVariable
    Abstract convenient enumeration process variable implementation.
    • Constructor Detail

      • EnumProcessVariable

        public EnumProcessVariable​(String name,
                                   ProcessVariableEventCallback eventCallback)
        Enum PV constructor.
        Parameters:
        name - process variable name.
        eventCallback - event callback, can be null.
    • Method Detail

      • readValue

        protected abstract CAStatus readValue​(DBR_TIME_LABELS_Enum value,
                                              ProcessVariableReadCallback asyncReadCallback)
                                       throws CAException
        Read value. Reference implementation:
                {
         
                        // for async. completion, return null,
                        // set value (and status) to enumValue and
                        // report completion using asyncReadCallback callback.
                        // return null;
                
                        // BEGIN optional (to override defaults) 
        
              
         		// set status and severity
         		enumValue.setStatus(Status.\<status\>);
         		enumValue.setSeverity(Severity.\<severity\>);
         		
         		// set timestamp
         		enumValue.setTimestamp(timestamp);
         		
         		// END optional (to override defaults)
         		
         		// set value to given DBR (example of copying value)
         		// given DBR has already allocated an array of elements client has requested
         		// it contains maximum number of elements to fill
         		short[] arrayValue = value.getEnumValue();
         		int elementCount = Math.min(\<fromShortArray\>.length, arrayValue.length);
         		System.arraycopy(\<fromShortArray\>, 0, arrayValue, 0, elementCount);
         
         		// return read completion status
         		return CAStatus.NORMAL;
              
                }
         
         
        Throws:
        CAException
        See Also:
        ProcessVariable.read(gov.aps.jca.dbr.DBR, gov.aps.jca.cas.ProcessVariableReadCallback)
      • writeValue

        protected abstract CAStatus writeValue​(DBR_Enum value,
                                               ProcessVariableWriteCallback asyncWriteCallback)
                                        throws CAException
        Write value. Reference implementation:
         {
         
             // for async. completion, return null,
             // set value (and status) from enumValue,
             // notify if there is an interest and
             // report completion using asyncWriteCallback callback.
             // return null;
         
             
             // set value from given DBR here (scalar example)
             this.value = value.getEnumValue()[0];
         
             // notify, set appropirate Monitor mask (VALUE, LOG, ALARM)
             if (status == CAStatus.NORMAL && interest) {
                 DBR monitorDBR = AbstractCASResponseHandler.createDBRforReading(this);
                 ((DBR_Enum) monitorDBR).getEnumValue()[0] = this.value;
        
                 // set labels
                 ((LABELS) monitorDBR).setLabels(getEnumLabels());
        
                 // set status, severity and time here (see readValue method
                 // example)
                 fillInStatusAndTime((TIME) monitorDBR);
         
                 eventCallback.postEvent(Monitor.VALUE | Monitor.LOG, value);
             }
         
             // return read completion status
             return CAStatus.NORMAL;
             
         }
         
        Throws:
        CAException
        See Also:
        ProcessVariable.write(gov.aps.jca.dbr.DBR, gov.aps.jca.cas.ProcessVariableWriteCallback)