www.pudn.com > LabWindowsCVI.rar > GF.h


/**************************************************************************** 
 *                       GPIB_FG                            
 *--------------------------------------------------------------------------- 
 *   Copyright (c) National Instruments 1998.  All Rights Reserved.          
 *--------------------------------------------------------------------------- 
 *                                                                           
 * Title:    GF.h                                         
 * Purpose:  GPIB_FG                                        
 *           instrument driver declarations.                                 
 *                                                                           
 ****************************************************************************/ 
 
#ifndef __GF_HEADER 
#define __GF_HEADER 
 
#include  
#include  
 
#if defined(__cplusplus) || defined(__cplusplus__) 
extern "C" { 
#endif 
 
/**************************************************************************** 
 *----------------- Instrument Driver Revision Information -----------------* 
 ****************************************************************************/ 
#define GF_MAJOR_VERSION         1     /* Instrument driver major version */ 
#define GF_MINOR_VERSION         0     /* Instrument driver minor version */ 
 
/****************************************************************************  
 *------------------------------ Useful Macros -----------------------------*  
 ****************************************************************************/ 
 
        /*=CHANGE:=============================================================== 
           Add useful instrument macros here.                                                  
         *============================================================END=CHANGE=*/ 
 
/****************************************************************************  
 *---------------------------- Attribute Defines ---------------------------*  
 ****************************************************************************/ 
 
    /*- IVI Inherent Instrument Attributes ---------------------------------*/     
 
        /* User Options */ 
#define GF_ATTR_RANGE_CHECK               IVI_ATTR_RANGE_CHECK              /* ViBoolean */ 
#define GF_ATTR_QUERY_INSTR_STATUS        IVI_ATTR_QUERY_INSTR_STATUS       /* ViBoolean */ 
#define GF_ATTR_CACHE                     IVI_ATTR_CACHE                    /* ViBoolean */ 
#define GF_ATTR_SIMULATE                  IVI_ATTR_SIMULATE                 /* ViBoolean */ 
#define GF_ATTR_RECORD_COERCIONS          IVI_ATTR_RECORD_COERCIONS         /* ViBoolean */ 
 
        /* Instrument Capabilities */ 
#define GF_ATTR_NUM_CHANNELS              IVI_ATTR_NUM_CHANNELS             /* ViInt32, Read-only */ 
#define GF_ATTR_SPECIFIC_PREFIX           IVI_ATTR_SPECIFIC_PREFIX          /* ViString, Read-only */ 
 
        /* Version Info */ 
#define GF_ATTR_DRIVER_MAJOR_VERSION      IVI_ATTR_DRIVER_MAJOR_VERSION     /* ViInt32, Read-only */ 
#define GF_ATTR_DRIVER_MINOR_VERSION      IVI_ATTR_DRIVER_MINOR_VERSION     /* ViInt32, Read-only */ 
#define GF_ATTR_DRIVER_REVISION           IVI_ATTR_DRIVER_REVISION          /* ViString, Read-only */ 
#define GF_ATTR_ENGINE_MAJOR_VERSION      IVI_ATTR_ENGINE_MAJOR_VERSION     /* ViInt32, Read-only */ 
#define GF_ATTR_ENGINE_MINOR_VERSION      IVI_ATTR_ENGINE_MINOR_VERSION     /* ViInt32, Read-only */ 
#define GF_ATTR_ENGINE_REVISION           IVI_ATTR_ENGINE_REVISION          /* ViString, Read-only */ 
 
        /* Error Info */ 
#define GF_ATTR_PRIMARY_ERROR             IVI_ATTR_PRIMARY_ERROR            /* ViInt32   */ 
#define GF_ATTR_SECONDARY_ERROR           IVI_ATTR_SECONDARY_ERROR          /* ViInt32   */ 
#define GF_ATTR_ERROR_ELABORATION         IVI_ATTR_ERROR_ELABORATION        /* ViString  */ 
 
        /* Advanced Session I/O */ 
#define GF_ATTR_VISA_RM_SESSION           IVI_ATTR_VISA_RM_SESSION          /* ViSession, Read-only */ 
#define GF_ATTR_IO_SESSION                IVI_ATTR_IO_SESSION               /* ViSession, Read-only */ 
#define GF_ATTR_DEFER_UPDATE              IVI_ATTR_DEFER_UPDATE             /* ViBoolean */ 
#define GF_ATTR_RETURN_DEFERRED_VALUES    IVI_ATTR_RETURN_DEFERRED_VALUES   /* ViBoolean */ 
     
    /*- Instrument-Specific Attributes -------------------------------------*/ 
 
    /*- Basic Instrument Operation -----------------------------------------*/ 
     
#define GF_ATTR_OUTPUT_MODE              IVIFGEN_ATTR_OUTPUT_MODE             /* ViInt32                         */ 
#define GF_ATTR_REF_CLOCK_SOURCE         IVIFGEN_ATTR_REF_CLOCK_SOURCE        /* ViInt32                        */ 
#define GF_ATTR_OUTPUT_ENABLED           IVIFGEN_ATTR_OUTPUT_ENABLED          /* ViBoolean, multi-channel        */ 
#define GF_ATTR_OUTPUT_IMPEDANCE         IVIFGEN_ATTR_OUTPUT_IMPEDANCE        /* ViReal64,  multi-channel, ohms  */ 
         
    /*- Standard Waveform Generation ---------------------------------------*/ 
     
#define GF_ATTR_FUNC_WAVEFORM            IVIFGEN_ATTR_FUNC_WAVEFORM           /* ViInt32,  multi-channel           */ 
#define GF_ATTR_FUNC_AMPLITUDE           IVIFGEN_ATTR_FUNC_AMPLITUDE          /* ViReal64, multi-channel, volts    */ 
#define GF_ATTR_FUNC_DC_OFFSET           IVIFGEN_ATTR_FUNC_DC_OFFSET          /* ViReal64, multi-channel, volts    */ 
#define GF_ATTR_FUNC_FREQUENCY           IVIFGEN_ATTR_FUNC_FREQUENCY          /* ViReal64, multi-channel, hertz    */ 
#define GF_ATTR_FUNC_START_PHASE         IVIFGEN_ATTR_FUNC_START_PHASE        /* ViReal64, multi-channel, degrees  */ 
#define GF_ATTR_FUNC_DUTY_CYCLE_HIGH     IVIFGEN_ATTR_FUNC_DUTY_CYCLE_HIGH    /* ViReal64, multi-channel, percent  */ 
 
    /*- Arbitrary Waveform Generation --------------------------------------*/ 
 
#define GF_ATTR_ARB_WAVEFORM_HANDLE       IVIFGEN_ATTR_ARB_WAVEFORM_HANDLE    /* ViInt32,  multi-channel         */ 
#define GF_ATTR_ARB_GAIN                  IVIFGEN_ATTR_ARB_GAIN               /* ViReal64, multi-channel         */ 
#define GF_ATTR_ARB_OFFSET                IVIFGEN_ATTR_ARB_OFFSET             /* ViReal64, multi-channel, volts  */ 
#define GF_ATTR_ARB_SAMPLE_RATE           IVIFGEN_ATTR_ARB_SAMPLE_RATE        /* ViReal64, samples-per-second    */ 
 
#define GF_ATTR_MAX_NUM_WAVEFORMS         IVIFGEN_ATTR_MAX_NUM_WAVEFORMS      /* ViInt32,  read-only             */ 
#define GF_ATTR_WAVEFORM_QUANTUM          IVIFGEN_ATTR_WAVEFORM_QUANTUM       /* ViInt32,  read-only             */ 
#define GF_ATTR_MIN_WAVEFORM_SIZE         IVIFGEN_ATTR_MIN_WAVEFORM_SIZE      /* ViInt32,  read-only             */ 
#define GF_ATTR_MAX_WAVEFORM_SIZE         IVIFGEN_ATTR_MAX_WAVEFORM_SIZE      /* ViInt32,  read-only             */ 
 
    /*- Arbitrary Sequence Generation --------------------------------------*/ 
#define GF_ATTR_ARB_SEQUENCE_HANDLE       IVIFGEN_ATTR_ARB_SEQUENCE_HANDLE    /* ViInt32,  multi-channel         */ 
#define GF_ATTR_MAX_NUM_SEQUENCES         IVIFGEN_ATTR_MAX_NUM_SEQUENCES      /* ViInt32,  read-only             */ 
#define GF_ATTR_MIN_SEQUENCE_LENGTH       IVIFGEN_ATTR_MIN_SEQUENCE_LENGTH    /* ViInt32,  read-only             */ 
#define GF_ATTR_MAX_SEQUENCE_LENGTH       IVIFGEN_ATTR_MAX_SEQUENCE_LENGTH    /* ViInt32,  read-only             */ 
#define GF_ATTR_MAX_LOOP_COUNT            IVIFGEN_ATTR_MAX_LOOP_COUNT         /* ViInt32,  read-only             */ 
 
    /*- Trigger Configuration ----------------------------------------------*/ 
                                                                     
#define GF_ATTR_CYCLE_COUNT               IVIFGEN_ATTR_CYCLE_COUNT            /* ViInt32, multi-channel */ 
#define GF_ATTR_TRIGGER_SOURCE            IVIFGEN_ATTR_TRIGGER_SOURCE         /* ViInt32, multi-channel */ 
 
    /*- Ampitude Modulation Generation -------------------------------------*/ 
     
#define GF_ATTR_AM_ENABLED                IVIFGEN_ATTR_AM_ENABLED             /* ViBoolean, multi-channel */ 
#define GF_ATTR_AM_SOURCE                 IVIFGEN_ATTR_AM_SOURCE              /* ViInt32,   multi-channel */ 
#define GF_ATTR_AM_INTERNAL_DEPTH         IVIFGEN_ATTR_AM_INTERNAL_DEPTH      /* ViReal64,  percent       */ 
#define GF_ATTR_AM_INTERNAL_WAVEFORM      IVIFGEN_ATTR_AM_INTERNAL_WAVEFORM   /* ViInt32                 */ 
#define GF_ATTR_AM_INTERNAL_FREQUENCY     IVIFGEN_ATTR_AM_INTERNAL_FREQUENCY  /* ViReal64,  hertz         */ 
 
    /*- Frequency Modulation Generation ------------------------------------*/ 
                                                               
#define GF_ATTR_FM_ENABLED                IVIFGEN_ATTR_FM_ENABLED             /* ViBoolean, multi-channel */ 
#define GF_ATTR_FM_SOURCE                 IVIFGEN_ATTR_FM_SOURCE              /* ViInt32,   multi-channel */ 
#define GF_ATTR_FM_INTERNAL_DEVIATION     IVIFGEN_ATTR_FM_INTERNAL_DEVIATION  /* ViReal64,  hertz         */ 
#define GF_ATTR_FM_INTERNAL_WAVEFORM      IVIFGEN_ATTR_FM_INTERNAL_WAVEFORM   /* ViInt32                 */ 
#define GF_ATTR_FM_INTERNAL_FREQUENCY     IVIFGEN_ATTR_FM_INTERNAL_FREQUENCY  /* ViReal64,  hertz         */ 
 
    /*=CHANGE:===============================================================* 
        Add attribute definitions here.                                        
        #define GF_ATTR_MY_ATTRIBUTE     (IVI_SPECIFIC_PUBLIC_ATTR_BASE + 2L)  
     *============================================================END=CHANGE=*/ 
 
     
/****************************************************************************  
 *------------------------ Attribute Value Defines -------------------------*  
 ****************************************************************************/ 
 
    /*- Defined values for attribute GF_ATTR_FUNCTION --------------*/ 
     
#define GF_VAL_OUTPUT_FUNC           IVIFGEN_VAL_OUTPUT_FUNC 
#define GF_VAL_OUTPUT_ARB            IVIFGEN_VAL_OUTPUT_ARB 
#define GF_VAL_OUTPUT_SEQ            IVIFGEN_VAL_OUTPUT_SEQ 
 
    /*=CHANGE:==================================================================* 
        Add definitions for instrument specific values for GF_ATTR_OUTPUT_MODE  
        here starting at IVIFGEN_VAL_OUT_MODE_SPECIFIC_EXT_BASE.  Example:                          
 
#define GF_VAL_NEW_OUTPUT_MODE       (IVIFGEN_VAL_OUT_MODE_SPECIFIC_EXT_BASE + 1)    
 
     *===============================================================END=CHANGE=*/ 
 
    /*- Defined values for attribute GF_ATTR_REF_CLOCK_SOURCE ------*/ 
 
#define GF_VAL_INTERNAL              IVIFGEN_VAL_INTERNAL 
#define GF_VAL_EXTERNAL              IVIFGEN_VAL_EXTERNAL 
 
    /*=CHANGE:==================================================================* 
        Add definitions for instrument specific values for GF_ATTR_REF_CLOCK_SOURCE  
        here starting at IVIFGEN_VAL_CLK_SRC_SPECIFIC_EXT_BASE.  Example:                          
 
#define GF_VAL_NEW_REF_CLOCK_SOURCE  (IVIFGEN_VAL_CLK_SRC_SPECIFIC_EXT_BASE + 1)    
 
     *===============================================================END=CHANGE=*/ 
 
    /*- Defined values for attribute GF_ATTR_OUTPUT_IMPEDANCE ------*/ 
     
#define GF_VAL_50_OHMS               IVIFGEN_VAL_50_OHMS 
#define GF_VAL_75_OHMS               IVIFGEN_VAL_75_OHMS  
#define GF_VAL_1_MEGA_OHM            IVIFGEN_VAL_1_MEGA_OHM 
 
    /*- Defined values for attribute GF_ATTR_FUNC_WAVEFORM ---------*/ 
 
#define GF_VAL_WFM_SINE              IVIFGEN_VAL_WFM_SINE      
#define GF_VAL_WFM_SQUARE            IVIFGEN_VAL_WFM_SQUARE    
#define GF_VAL_WFM_TRIANGLE          IVIFGEN_VAL_WFM_TRIANGLE  
#define GF_VAL_WFM_RAMP_UP           IVIFGEN_VAL_WFM_RAMP_UP   
#define GF_VAL_WFM_RAMP_DOWN         IVIFGEN_VAL_WFM_RAMP_DOWN 
#define GF_VAL_WFM_DC                IVIFGEN_VAL_WFM_DC  
 
    /*=CHANGE:==================================================================* 
        Add definitions for instrument specific values for GF_ATTR_FUNC_WAVEFORM  
        here starting at IVIFGEN_VAL_WFM_SPECIFIC_EXT_BASE.  Example:                          
 
#define GF_VAL_NEW_FUNC_WAVEFORM    (IVIFGEN_VAL_WFM_SPECIFIC_EXT_BASE + 1)    
 
     *===============================================================END=CHANGE=*/ 
 
    /*- Defined values for Arbitrary Waveform Handles ---------------------------------*/ 
 
#define GF_VAL_ALL_WAVEFORMS         IVIFGEN_VAL_ALL_WAVEFORMS 
      
    /*- Defined values for attribute GF_ATTR_ARB_WAVEFORM_HANDLE ---*/ 
 
#define GF_VAL_ALL_SEQUENCES         IVIFGEN_VAL_ALL_SEQUENCES 
 
    /*- Define values for atttribute GF_ATTR_CYCLE_COUNT -----------*/ 
 
#define GF_VAL_GENERATE_CONTINUOUS   IVIFGEN_VAL_GENERATE_CONTINUOUS 
 
    /*- Defined values for attribute GF_ATTR_TRIGGER_SOURCE --------*/ 
 
#define GF_VAL_IMMEDIATE                     IVIFGEN_VAL_IMMEDIATE 
/* #define GF_VAL_EXTERNAL                   DEFINED ABOVE */  
#define GF_VAL_SW_TRIG_FUNC                  IVIFGEN_VAL_SW_TRIG_FUNC  
#define GF_VAL_GPIB_GET                      IVIFGEN_VAL_GPIB_GET       
#define GF_VAL_TTL0                          IVIFGEN_VAL_TTL0  
#define GF_VAL_TTL1                          IVIFGEN_VAL_TTL1  
#define GF_VAL_TTL2                          IVIFGEN_VAL_TTL2  
#define GF_VAL_TTL3                          IVIFGEN_VAL_TTL3  
#define GF_VAL_TTL4                          IVIFGEN_VAL_TTL4  
#define GF_VAL_TTL5                          IVIFGEN_VAL_TTL5  
#define GF_VAL_TTL6                          IVIFGEN_VAL_TTL6  
#define GF_VAL_TTL7                          IVIFGEN_VAL_TTL7  
#define GF_VAL_ECL0                          IVIFGEN_VAL_ECL0  
#define GF_VAL_ECL1                          IVIFGEN_VAL_ECL1  
#define GF_VAL_PXI_STAR                      IVIFGEN_VAL_PXI_STAR  
#define GF_VAL_RTSI_0                        IVIFGEN_VAL_RTSI_0 
#define GF_VAL_RTSI_1                        IVIFGEN_VAL_RTSI_1 
#define GF_VAL_RTSI_2                        IVIFGEN_VAL_RTSI_2 
#define GF_VAL_RTSI_3                        IVIFGEN_VAL_RTSI_3 
#define GF_VAL_RTSI_4                        IVIFGEN_VAL_RTSI_4 
#define GF_VAL_RTSI_5                        IVIFGEN_VAL_RTSI_5 
#define GF_VAL_RTSI_6                        IVIFGEN_VAL_RTSI_6 
 
    /*=CHANGE:====================================================================* 
        Add definitions for instrument specific values for GF_ATTR_TRIGGER_SOURCE  
        here starting at IVIFGEN_VAL_TRIG_SRC_SPECIFIC_EXT_BASE.  Example:                       
 
#define GF_VAL_NEW_TRIGGER   (IVIFGEN_VAL_TRIG_SRC_SPECIFIC_EXT_BASE + 1)  
 
     *=================================================================END=CHANGE=*/ 
      
    /*- Defined values for attribute GF_ATTR_AM_SOURCE -*/ 
     
/* #define GF_VAL_INTERNAL           DEFINED ABOVE */ 
/* #define GF_VAL_EXTERNAL           DEFINED ABOVE */ 
 
    /*=CHANGE:====================================================================* 
        Add definitions for instrument specific values for GF_ATTR_AM_SOURCE  
        here starting at IVIFGEN_VAL_AM_SOURCE_SPECIFIC_EXT_BASE.  Example:                       
 
#define GF_VAL_NEW_AM_SOURCE   (IVIFGEN_VAL_AM_SOURCE_SPECIFIC_EXT_BASE + 1)  
 
     *=================================================================END=CHANGE=*/ 
 
   /*- Defined values for attribute GF_ATTR_AM_INTERNAL_WAVEFORM -*/ 
 
/* #define GF_VAL_WFM_SINE           DEFINED ABOVE */ 
/* #define GF_VAL_WFM_SQUARE         DEFINED ABOVE */ 
/* #define GF_VAL_WFM_TRIANGLE       DEFINED ABOVE */ 
/* #define GF_VAL_WFM_RAMP_UP        DEFINED ABOVE */ 
/* #define GF_VAL_WFM_RAMP_DOWN      DEFINED ABOVE */ 
 
    /*- Defined values for attribute GF_ATTR_FM_SOURCE -*/ 
     
/* #define GF_VAL_INTERNAL           DEFINED ABOVE */ 
/* #define GF_VAL_EXTERNAL           DEFINED ABOVE */ 
 
    /*=CHANGE:====================================================================* 
        Add definitions for instrument specific values for GF_ATTR_FM_SOURCE  
        here starting at IVIFGEN_VAL_FM_SOURCE_SPECIFIC_EXT_BASE.  Example:                       
 
#define GF_VAL_NEW_FM_SOURCE   (IVIFGEN_VAL_FM_SOURCE_SPECIFIC_EXT_BASE + 1)  
 
     *=================================================================END=CHANGE=*/ 
     
   /*- Defined values for attribute GF_ATTR_FM_INTERNAL_WAVEFORM -*/ 
 
/* #define GF_VAL_WFM_SINE           DEFINED ABOVE */ 
/* #define GF_VAL_WFM_SQUARE         DEFINED ABOVE */ 
/* #define GF_VAL_WFM_TRIANGLE       DEFINED ABOVE */ 
/* #define GF_VAL_WFM_RAMP_UP        DEFINED ABOVE */ 
/* #define GF_VAL_WFM_RAMP_DOWN      DEFINED ABOVE */ 
 
        /* Instrument specific attribute value definitions */ 
 
    /*=CHANGE:==============================================================* 
        Add value defines for instrument specific attributes here.  Example 
 
    // Defined values for attribute GF_ATTR_EXAMPLE  
 
#define GF_VAL_EXAMPLE_1             1 
#define GF_VAL_EXAMPLE_2             2 
#define GF_VAL_EXAMPLE_3             3 
     *===========================================================END=CHANGE=*/ 
 
/****************************************************************************  
 *---------------- Instrument Driver Function Declarations -----------------*  
 ****************************************************************************/ 
 
    /*- Init and Close Functions -------------------------------------------*/ 
ViStatus _VI_FUNC  GF_init (ViRsrc resourceName, ViBoolean IDQuery, 
                                  ViBoolean resetDevice, ViSession *vi); 
ViStatus _VI_FUNC  GF_InitWithOptions (ViRsrc resourceName, ViBoolean IDQuery, 
                                             ViBoolean resetDevice, ViString optionString,  
                                             ViSession *newVi); 
ViStatus _VI_FUNC  GF_close (ViSession vi);    
 
    /*- Locking Functions --------------------------------------------------*/ 
ViStatus _VI_FUNC  GF_LockSession (ViSession vi, ViBoolean *callerHasLock);    
ViStatus _VI_FUNC  GF_UnlockSession (ViSession vi, ViBoolean *callerHasLock); 
 
 
    /*- Basic Instrument Operation -----------------------------------------*/ 
     
ViStatus _VI_FUNC GF_ConfigureOutputMode (ViSession vi, ViInt32 outputMode); 
 
ViStatus _VI_FUNC GF_ConfigureRefClockSource (ViSession vi, 
                                              ViInt32 refClockSource); 
 
ViStatus _VI_FUNC GF_ConfigureOutputImpedance (ViSession vi, 
                                               ViConstString channelName, 
                                               ViReal64 outputImpedance); 
 
ViStatus _VI_FUNC GF_EnableOutput (ViSession vi, ViConstString channelName); 
 
ViStatus _VI_FUNC GF_DisableOutput (ViSession vi, ViConstString channelName); 
 
ViStatus _VI_FUNC GF_InitiateGeneration (ViSession vi); 
 
ViStatus _VI_FUNC GF_AbortGeneration (ViSession vi); 
 
    /*- Standard Function Output --------------------------------------------*/ 
     
ViStatus _VI_FUNC GF_ConfigureStandardWaveform (ViSession vi, 
                                                      ViConstString channelName, 
                                                      ViInt32 waveform, 
                                                      ViReal64 amplitude, 
                                                      ViReal64 dcOffset, 
                                                      ViReal64 frequency, 
                                                      ViReal64 startPhase); 
 
ViStatus _VI_FUNC GF_GenerateStandardWaveform (ViSession vi, 
                                                      ViConstString channelName, 
                                                      ViInt32 waveform, 
                                                      ViReal64 amplitude, 
                                                      ViReal64 dcOffset, 
                                                      ViReal64 frequency, 
                                                      ViReal64 startPhase); 
                                                      
    /*- Arbitrary Waveform Output -------------------------------------------*/ 
     
ViStatus _VI_FUNC GF_QueryArbWfmCapabilities (ViSession vi, 
                                                    ViInt32 *maxNumWfms, 
                                                    ViInt32 *wfmQuantum, 
                                                    ViInt32 *minWfmSize, 
                                                    ViInt32 *maxWfmSize); 
 
ViStatus _VI_FUNC  GF_CreateArbWaveform (ViSession vi, 
                                               ViInt32 wfmSize, 
                                               ViReal64 wfmData[], 
                                               ViInt32 *wfmHandle); 
 
ViStatus _VI_FUNC  GF_ConfigureSampleRate (ViSession vi, ViReal64 sampleRate); 
 
ViStatus _VI_FUNC  GF_GetWfmHandleFromName (ViSession vi, ViConstString wfmName, 
                                                  ViInt32 *wfmHandle); 
ViStatus _VI_FUNC  GF_GetWfmNameFromHandle (ViSession vi, ViInt32 wfmHandle, 
                                                  ViInt32 arraySize, ViChar wfmName[]); 
ViStatus _VI_FUNC  GF_GetWfmNames (ViSession vi, ViInt32 arraySize, 
                                         ViChar wfmNames[]); 
 
ViStatus _VI_FUNC  GF_ConfigureArbWaveform (ViSession vi, 
                                                  ViConstString channelName, 
                                                  ViInt32 wfmHandle, 
                                                  ViReal64 arbGain, 
                                                  ViReal64 arbOffset); 
 
ViStatus _VI_FUNC  GF_GenerateArbWaveform (ViSession vi, 
                                                 ViConstString channelName, 
                                                 ViInt32 wfmHandle, 
                                                 ViReal64 arbGain, 
                                                 ViReal64 arbOffset); 
 
ViStatus _VI_FUNC  GF_ClearArbWaveform (ViSession vi, ViInt32 wfmHandle); 
 
    /*- Arbitrary Sequence Output -------------------------------------------*/ 
     
ViStatus _VI_FUNC GF_QueryArbSeqCapabilities (ViSession vi, 
                                                    ViInt32 *maxNumSeqs, 
                                                    ViInt32 *minSeqLength, 
                                                    ViInt32 *maxSeqLength, 
                                                    ViInt32 *maxLoopCount); 
 
ViStatus _VI_FUNC GF_CreateArbSequence (ViSession vi, 
                                              ViInt32 seqLength, 
                                              ViInt32 wfmHandle[], 
                                              ViInt32 wfmLoopCount[], 
                                              ViInt32 *seqHandle); 
                                               
ViStatus _VI_FUNC  GF_GetSeqHandleFromName (ViSession vi, ViConstString seqName, 
                                                  ViInt32 *seqHandle); 
ViStatus _VI_FUNC  GF_GetSeqNameFromHandle (ViSession vi, ViInt32 seqHandle, 
                                                  ViInt32 arraySize, ViChar seqName[]); 
ViStatus _VI_FUNC  GF_GetSeqNames (ViSession vi, ViInt32 arraySize, 
                                         ViChar seqNames[]); 
 
ViStatus _VI_FUNC GF_ConfigureArbSequence (ViSession vi, 
                                                 ViConstString channelName, 
                                                 ViInt32 seqHandle, 
                                                 ViReal64 arbGain, 
                                                 ViReal64 arbOffset); 
                                                  
ViStatus _VI_FUNC GF_GenerateArbSequence (ViSession vi, 
                                                ViConstString channelName, 
                                                ViInt32 seqHandle, 
                                                ViReal64 arbGain, 
                                                ViReal64 arbOffset); 
 
ViStatus _VI_FUNC GF_ClearArbSequence (ViSession vi, 
                                            ViInt32 seqHandle); 
                                             
ViStatus _VI_FUNC GF_ClearArbMemory (ViSession vi); 
 
    /*- Triggering ----------------------------------------------------------*/ 
     
ViStatus _VI_FUNC  GF_ConfigureTrigger (ViSession vi, ViConstString channelName, 
                                              ViInt32 trigSource, ViInt32 cycleCount); 
 
ViStatus _VI_FUNC  GF_SendSWTrigger (ViSession vi);                                              
 
    /*- Amplitude Modulation ------------------------------------------------*/ 
     
ViStatus _VI_FUNC  GF_EnableAM (ViSession vi, ViConstString channelName, 
                                      ViInt32 amSource); 
 
ViStatus _VI_FUNC  GF_DisableAM (ViSession vi, ViConstString channelName); 
 
ViStatus _VI_FUNC  GF_ConfigureAMInternal (ViSession vi, ViReal64 amDepth, 
                                                 ViInt32 amWaveform, ViReal64 amFrequency); 
 
    /*- Frequency Modulation ------------------------------------------------*/ 
     
ViStatus _VI_FUNC  GF_EnableFM (ViSession vi, ViConstString channelName, 
                                      ViInt32 fmSource); 
 
ViStatus _VI_FUNC  GF_DisableFM (ViSession vi, ViConstString channelName); 
 
ViStatus _VI_FUNC  GF_ConfigureFMInternal (ViSession vi, 
                                                 ViReal64 fmDeviation, 
                                                 ViInt32 fmWaveform, 
                                                 ViReal64 fmFrequency); 
        /*=CHANGE:===============================================================* 
           Add instrument-specific public function declarations here.                            
         *============================================================END=CHANGE=*/ 
     
    /*- Error Functions ----------------------------------------------------*/ 
ViStatus _VI_FUNC  GF_error_query (ViSession vi, ViInt32 *errorCode, 
                                         ViChar errorMessage[]); 
ViStatus _VI_FUNC  GF_GetErrorInfo (ViSession vi, ViStatus *primaryError,  
                                          ViStatus *secondaryError,  
                                          ViChar errorElaboration[256]); 
ViStatus _VI_FUNC  GF_ClearErrorInfo (ViSession vi); 
ViStatus _VI_FUNC  GF_error_message (ViSession vi, ViStatus errorCode, 
                                           ViChar errorMessage[256]); 
     
    /*- Utility Functions --------------------------------------------------*/ 
ViStatus _VI_FUNC  GF_reset (ViSession vi); 
ViStatus _VI_FUNC  GF_self_test (ViSession vi, ViInt16 *selfTestResult, 
                                       ViChar selfTestMessage[]); 
ViStatus _VI_FUNC  GF_revision_query (ViSession vi,  
                                            ViChar instrumentDriverRevision[], 
                                            ViChar firmwareRevision[]); 
ViStatus _VI_FUNC  GF_WriteInstrData (ViSession vi, ViConstString writeBuffer);  
ViStatus _VI_FUNC  GF_ReadInstrData  (ViSession vi, ViInt32 numBytes,  
                                            ViChar rdBuf[], ViInt32 *bytesRead); 
 
    /*- Set, Get, and Check Attribute Functions ----------------------------*/ 
ViStatus _VI_FUNC  GF_GetAttributeViInt32 (ViSession vi, ViConstString channelName, ViAttr attribute, ViInt32 *value); 
ViStatus _VI_FUNC  GF_GetAttributeViReal64 (ViSession vi, ViConstString channelName, ViAttr attribute, ViReal64 *value); 
ViStatus _VI_FUNC  GF_GetAttributeViString (ViSession vi, ViConstString channelName, ViAttr attribute, ViInt32 bufSize, ViChar value[]);  
ViStatus _VI_FUNC  GF_GetAttributeViSession (ViSession vi, ViConstString channelName, ViAttr attribute, ViSession *value); 
ViStatus _VI_FUNC  GF_GetAttributeViBoolean (ViSession vi, ViConstString channelName, ViAttr attribute, ViBoolean *value); 
 
ViStatus _VI_FUNC  GF_SetAttributeViInt32 (ViSession vi, ViConstString channelName, ViAttr attribute, ViInt32 value); 
ViStatus _VI_FUNC  GF_SetAttributeViReal64 (ViSession vi, ViConstString channelName, ViAttr attribute, ViReal64 value); 
ViStatus _VI_FUNC  GF_SetAttributeViString (ViSession vi, ViConstString channelName, ViAttr attribute, ViConstString value);  
ViStatus _VI_FUNC  GF_SetAttributeViSession (ViSession vi, ViConstString channelName, ViAttr attribute, ViSession value); 
ViStatus _VI_FUNC  GF_SetAttributeViBoolean (ViSession vi, ViConstString channelName, ViAttr attribute, ViBoolean value); 
 
ViStatus _VI_FUNC  GF_CheckAttributeViInt32 (ViSession vi, ViConstString channelName, ViAttr attribute, ViInt32 value); 
ViStatus _VI_FUNC  GF_CheckAttributeViReal64 (ViSession vi, ViConstString channelName, ViAttr attribute, ViReal64 value); 
ViStatus _VI_FUNC  GF_CheckAttributeViString (ViSession vi, ViConstString channelName, ViAttr attribute, ViConstString value);  
ViStatus _VI_FUNC  GF_CheckAttributeViSession (ViSession vi, ViConstString channelName, ViAttr attribute, ViSession value); 
ViStatus _VI_FUNC  GF_CheckAttributeViBoolean (ViSession vi, ViConstString channelName, ViAttr attribute, ViBoolean value); 
 
    /********************************************************* 
        Functions reserved for class driver use only. 
        End-users should not call these functions.   
     *********************************************************/ 
ViStatus _VI_FUNC  GF_IviInit (ViRsrc resourceName, ViBoolean IDQuery,  
                                     ViBoolean reset, ViSession vi); 
ViStatus _VI_FUNC  GF_IviClose (ViSession vi);    
 
/**************************************************************************** 
 *------------------------ Error And Completion Codes ----------------------* 
 ****************************************************************************/ 
#define GF_ERROR_NOT_CONFIGURABLE          IVIFGEN_ERROR_NOT_CONFIGURABLE         
#define GF_ERROR_NOT_GENERATING            IVIFGEN_ERROR_NOT_GENERATING 
#define GF_ERROR_INVALID_MODE              IVIFGEN_ERROR_INVALID_MODE                    
#define GF_ERROR_NO_WFMS_AVAILABLE         IVIFGEN_ERROR_NO_WFMS_AVAILABLE       
#define GF_ERROR_INVALID_WFM_LENGTH        IVIFGEN_ERROR_INVALID_WFM_LENGTH      
#define GF_ERROR_INVALID_WFM_ELEMENT       IVIFGEN_ERROR_INVALID_WFM_ELEMENT            
#define GF_ERROR_INVALID_WAVEFORM          IVIFGEN_ERROR_INVALID_WAVEFORM              
#define GF_ERROR_WFM_IN_USE                IVIFGEN_ERROR_WFM_IN_USE              
#define GF_ERROR_NO_SEQS_AVAILABLE         IVIFGEN_ERROR_NO_SEQS_AVAILABLE       
#define GF_ERROR_INVALID_SEQ_LENGTH        IVIFGEN_ERROR_INVALID_SEQ_LENGTH      
#define GF_ERROR_INVALID_LOOP_COUNT        IVIFGEN_ERROR_INVALID_LOOP_COUNT      
#define GF_ERROR_INVALID_SEQUENCE          IVIFGEN_ERROR_INVALID_SEQUENCE      
#define GF_ERROR_SEQ_IN_USE                IVIFGEN_ERROR_SEQ_IN_USE              
    /*=CHANGE:==============================================================* 
        Add instrument-specific error codes here starting at 
        IVI_SPECIFIC_ERROR_BASE.  Example: 
 
#define GF_ERROR_NAME  (IVI_SPECIFIC_ERROR_BASE + 1) 
     *===========================================================END=CHANGE=*/ 
 
/****************************************************************************  
 *---------------------------- End Include File ----------------------------*  
 ****************************************************************************/ 
#if defined(__cplusplus) || defined(__cplusplus__) 
} 
#endif 
#endif /* __GF_HEADER */