Table of Contents Previous Chapter Chapter 35: stringout - String Output

Chapter 35: stringout - String Output

1. Introduction

The stringout record is used to output an arbitrary ASCII string.

2. Field Summary

--------------------------------------------------------------
Field  Type       DCT  Initial  Access  Modify  Rec Proc   PP   
                                                Monitor         
--------------------------------------------------------------
VAL    STRING     Yes  Null     Yes     Yes     Yes        Yes  
OVAL   STRING     No   Null     Yes     No                 No   
DOL    INLINK     Yes  0        No      No      N/A        No   
OMSL   GBLCHOICE  Yes  0        Yes     Yes     No         No   
OUT    OUTLINK    Yes  0        No      No      N/A        No   
SIOL   OUTLINK    Yes  0        No      No      N/A        No   
SIML   INLINK     Yes  0        No      No      N/A        No   
SIMM   GBLCHOICE  No   0        Yes     Yes     No         No   
SIMS   GBLCHOICE  Yes  0        Yes     Yes     No         No   
IVOA   GBLCHOICE  Yes  0        Yes     Yes     No         No   
IVOV   STRING     Yes  Null     Yes     Yes     No         No   
--------------------------------------------------------------

3. Field Descriptions

---------------------------------------------------------------------------------------
Name  Summary             Description                                                    
---------------------------------------------------------------------------------------
VAL   Value               An arbitrary ASCII string of 40 characters.  This is the       
                          field to be sent to OUT.  It is either obtained from DOL or    
                          else given a value via dbPuts.                                 
OVAL  Old Value           Used to decide when to invoke monitors. If VAL differs         
                          from OVAL, then monitors will be invoked.                      
DOL   Desired Output      If DOL is a database or channel access link and OMSL is        
      Location (Input     CLOSED_LOOP, then VAL is read from DOL.                        
      Link)                                                                              
OMSL  Output Mode Select  This field has either the value SUPERVISORY or                 
                          CLOSED_LOOP.  DOL is used to determine VAL only if             
                          OMSL has the value CLOSED_LOOP.  By setting this field,        
                          the record can be switched between supervisory and             
                          closed loop mode of operation. While in closed loop            
                          mode, the VAL field cannot be set via dbPuts.                  
OUT   Output Link         This field is used by the device support routines to decide    
                          where to send output. For soft records, it can be a            
                          constant, a database link, or a channel access link.  If the   
                          link is a constant, the result is no output.                   
SIMM  Simulation Mode     Simulation mode process variables.  Refer to Chapter 3,        
                          Section "Simulation Mode" on page 13 for more                  
                          information.                                                   
SIML  Simulation Mode                                                                    
      Location                                                                           
SIOL  Simulation Value                                                                   
      Location                                                                           
SIMS  Simulation Mode                                                                    
      Alarm Severity                                                                     
IVOA  Invalid Alarm       Whenever the record is put into INVALID alarm severity         
      Output Action       IVOA specifies an action.  See Chapter 3, Section "Invalid     
                          Alarm Output Action" on page 14 for more information           
IVOV  Invalid Alarm                                                                      
      Output Value                                                                       
---------------------------------------------------------------------------------------

4. Record Support Routines

Three record support routines are provided: init_record, process, and get_value.

init_record

This routine initializes SIMM if SIML is a constant or creates a channel access link if SIML is PV_LINK. If SIOL is PV_LINK a channel access link is created.

This routine next checks to see that device support is available. The routine next checks to see if the device support write routine is defined. If either device support or the device support write routine does not exist, an error message is issued and processing is terminated.

If DOL is a constant, then the type double constant, if non-zero, is converted to a string and stored into VAL and UDF is set to FALSE. If DOL type is a PV_LINK then dbCaAddInlink is called to create a channel access link.

If device support includes init_record, it is called.

process

See next section.

get_value

Fills in the values of struct valueDes so that they refer to VAL.

5. Record Processing

Routine process implements the following algorithm:

  1. Check to see that the appropriate device support module exists. If it doesn't, an error message is issued and processing is terminated with the PACT field still set to TRUE. This ensures that processes will no longer be called for this record. Thus error storms will not occur.
  2. If PACT is FALSE and OMSL is CLOSED_LOOP, recGblGetLinkValue is called to read the current value of VAL. See Chapter 3, Section "Soft Input" on page 10 for details. If the return status of recGblGetLinkValue is zero then UDF is set to FALSE.
  3. Check severity and write the new value. See Chapter 3, Section "Simulation Mode" on page 13 and Chapter 3, Section "Invalid Alarm Output Action" on page 14 for details.
  4. If PACT has been changed to TRUE, the device support write output routine has started but has not completed writing the new value. In this case, the processing routine merely returns, leaving PACT TRUE.
  5. Check to see if monitors should be invoked.
  6. Scan forward link if necessary, set PACT FALSE, and return.

6. Device Support

Fields Of Interest To Device Support

Each stringout output record must have an associated set of device support routines. The primary responsibility of the device support routines is to write a new value whenever write_stringout is called. The device support routines are primarily interested in the following fields:

--------------------------------------------------------------------------------------
Name  Summary             Description                                                   
--------------------------------------------------------------------------------------
PACT  Processing Active   See Chapter 2, Section "Database Common: Field                
                          Descriptions" on page 4 for descriptions.                     
DPVT  Device Private                                                                    
NSEV  New Alarm Severity                                                                
NSTA  New Alarm Status                                                                  
VAL   Value               This is the field written by the device support routines.     
OUT   Output Link         This field is used by the device support routines to locate   
                          its output.                                                   
--------------------------------------------------------------------------------------

Device Support Routines

Device support consists of the following routines:

report

  report(FILE fp, paddr)
Not currently used.

init

  init()
This routine is called once during IOC initialization.

init_record

  init_record(precord)
This routine is optional. If provided, it is called by the record support init_record routine.

get_ioint_info

  get_ioint_info(int cmd,struct dbCommon *precord,IOSCANPVT *ppvt)
This routine is called by the ioEventScan system each time the record is added or deleted from an I/O event scan list. cmd has the value (0,1) if the record is being (added to, deleted from) an I/O event list. It must be provided for any device type that can use the ioEvent scanner.

write_stringout

  write_stringout(precord)
This routine must output a new value. It returns the following values:

7. Device Support For Soft Records

This module writes the current value of VAL.

If the OUT link type is PV_LINK, then dbCaAddInlink is called by init_record.

write_so calls recGblPutLinkValue to write the current value of VAL. See Chapter 3, Section "Soft Output" on page 13 for details.

 
Table of Contents Next Chapter