📄 dscud.h
字号:
/*
DSCUD.H
Diamond Systems Corporation Universal Driver
Version 5.9
Copyright (c) Diamond Systems Corporation 2005
All Rights Reserved.
http://www.diamondsystems.com
DSCUD currently supports these boards:
METIS
ATHENA
HERCULES EBX
DIAMOND-MM
DIAMOND-MM-16-AT
DIAMOND-MM-32
DIAMOND-MM-32X
DIAMOND-MM-AT
ELEKTRA
EMERALD-MM-8
EMERALD-MM-DIO
EMERALD-OPTO
MERCURY
GARNET-MM
IR-104
ONYX-MM
ONYX-MM-DIO
OPAL-MM
PEARL-MM
PROMETHEUS
QUARTZ-MM
RUBY-MM
RUBY-MM-416
RUBY-MM-1612
ZIRCON-MM
*/
#ifndef _DSCUD_H
#define _DSCUD_H
/* MS Visual C++ > 1.52 only - 1-byte structure alignment */
#ifndef MSVC_1_52
#ifdef _MSC_VER
#pragma pack(push, dscud_packing)
#pragma pack(1)
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*/////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////// Type Definitions ////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////// */
#ifndef BYTE
#define BYTE unsigned char
#endif
#ifndef SBYTE
#define SBYTE signed char
#endif
#ifndef WORD
#define WORD unsigned short
#endif
#ifndef SWORD
#define SWORD signed short
#endif
#ifndef DWORD
#define DWORD unsigned long
#endif
#ifndef SDWORD
#define SDWORD signed long
#endif
#ifndef LONG
#define LONG signed long
#endif
#ifndef FLOAT
#define FLOAT float
#endif
#ifndef DFLOAT
#define DFLOAT double
#endif
#ifndef BOOL
#define BOOL int
#endif
#ifndef TRUE
#define TRUE ((BOOL)1)
#endif
#ifndef FALSE
#define FALSE ((BOOL)0)
#endif
#ifndef DSCSAMPLE
#define DSCSAMPLE SWORD
#endif
#ifndef DSCDACODE
#define DSCDACODE DWORD
#endif
typedef void (*DSCUserInterruptFunction) (void* parameter);
#ifdef WIN32
#define DSCUDAPICALL __declspec(dllexport)
#else /* WIN32 not defined */
#define DSCUDAPICALL
#endif /* #ifdef WIN32 */
#define DSCB SWORD
/*/////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
//////////////////////// Constants ////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////// */
/*///////////
// Version //
////////// */
#define DSC_VERSION 0x0590 /* 0xVVRR - Version & Revision */
/*///////////////
// Board Types //
////////////// */
#define DSC_DMM16 0
#define DSC_RMM 1
#define DSC_TMM 2
#define DSC_OPMM 3
#define DSC_DMM 4
#define DSC_SMM 5
#define DSC_GMM 6
#define DSC_QMM 7
#define DSC_ZMM 8
#define DSC_PMM 9
#define DSC_OMM 10
#define DSC_RMM416 11
#define DSC_DMM32 12
#define DSC_DMM32AT 12
#define DSC_EMMDIO 13
#define DSC_RMM1612 14
#define DSC_DMMAT 15
#define DSC_DMM16AT 16
#define DSC_IR104 17
#define DSC_EMM8 18
#define DSC_PROM 19
#define DSC_HERCEBX 20
#define DSC_CPT 21
#define DSC_DMM48 22
#define DSC_DMM48AT 22
#define DSC_OMMDIO 23
#define DSC_DIO82C55 24
#define DSC_MRC 24
#define DSC_EMMOPTO 24
#define DSC_ATHENA 25
#define DSC_METIS 26
#define DSC_DMM32X 27
#define DSC_DMM32XAT 27
#define DSC_ELEKTRA 25
#define DSC_TEST 126
#define DSC_RAW 127
#define DSC_DRVR 255
/*//////////////////////
// A/D Mode Constants //
///////////////////// */
#define RANGE_5 0
#define RANGE_10 1
#define BIPOLAR 0
#define UNIPOLAR 1
#define GAIN_1 0
#define GAIN_2 1
#define GAIN_4 2
#define GAIN_8 3
#define GAIN_10 1 /* higher gains for SMM boards */
#define GAIN_100 2
#define GAIN_1000 3
#define SCAN_INTERVAL_4 5 /* scan interval in microseconds constant for dscadSetSettings struct */
#define SCAN_INTERVAL_5 3
#define SCAN_INTERVAL_9 4
#define SCAN_INTERVAL_10 2
#define SCAN_INTERVAL_15 1
#define SCAN_INTERVAL_20 0
#define SINGLE_ENDED 0
#define DIFFERENTIAL 1
/*/////////////
// GMM modes //
//////////// */
#define MODE_0_INT11_INT12 0
#define MODE_0_INT21_INT22 1
#define MODE_1_82C55_1_C0 2
#define MODE_1_82C55_1_C3 3
#define MODE_1_82C55_2_C0 4
#define MODE_1_82C55_2_C3 5
/*///////////////
// OMM sources //
////////////// */
#define SOURCE_82C55_1_C0 0
#define SOURCE_COUNTER_0 1
#define SOURCE_82C55_2_C0 2
#define SOURCE_COUNTER_1 3
#define SOURCE_EXTERNAL 4
#define SOURCE_COUNTER_2 5
#define OMM_SOURCE_PIN 0
#define OMM_SOURCE_CLOCK 1
#define OMM_SOURCE_OUT 2
/*////////////////////////////////////////
// Prometheus Watchdog Option Constants //
/////////////////////////////////////// */
/* Look in ZFx86 Training Book for details */
#define PROM_WD_TRIGGER_SCI 0x01
#define PROM_WD_TRIGGER_NMI 0x02
#define PROM_WD_TRIGGER_SMI 0x04
#define PROM_WD_TRIGGER_RESET 0x08
#define PROM_WD_WDI_ASSERT_FALLING_EDGE 0x10
#define PROM_WD_WDO_TRIGGERED_EARLY 0x20
#define PROM_WD_ENABLE_WDI_ASSERTION 0x40
/*////////////////////////////////////////
// Hercules Watchdog Option Constants //
/////////////////////////////////////// */
#define HERC_WD_TRIGGER_NMI 0x10
#define HERC_WD_TRIGGER_RESET 0x08
#define HERC_WD_WDI_ASSERT_FALLING_EDGE 0x02
#define HERC_WD_WDO_TRIGGERED_EARLY 0x04
#define HERC_WD_ENABLE_WDI_ASSERTION 0x01
/*////////////////////////////////////////
// Athena Watchdog Option Constants //
/////////////////////////////////////// */
#define ATHENA_WD_WDI_ASSERT_RISING_EDGE 0x10
#define ATHENA_WD_TRIGGER_SMI 0x20
#define ATHENA_WD_ENABLE_WDO 0x40
#define ATHENA_WD_ENABLE_WDI 0x80
/*////////////////////////////////////////
// Elektra Watchdog Option Constants //
/////////////////////////////////////// */
#define ELEKTRA_WD_WDI_ASSERT_RISING_EDGE 0x10
#define ELEKTRA_WD_TRIGGER_SMI 0x20
#define ELEKTRA_WD_ENABLE_WDO 0x40
#define ELEKTRA_WD_ENABLE_WDI 0x80
/*/////////////////////////////////////////////////////
// Counter Defines Types for dscCounterSetRateSingle //
//////////////////////////////////////////////////// */
#define COUNTER_0 0x00
#define COUNTER_1 0x01
#define COUNTER_2 0x02
#define COUNTER_0_1 0x04
#define COUNTER_1_2 0x08
#define COUNTER_0_1_2 0x10
/*/////////////////////////////
// Interrupt Operation Types //
//////////////////////////// */
#define OP_TYPE_NONE 0
#define OP_TYPE_INT 1
#define OP_TYPE_DMA 2
#define INT_TYPE_AD 0x01
#define INT_TYPE_DA 0x02
#define INT_TYPE_DIOIN 0x04
#define INT_TYPE_USER 0x08
#define INT_TYPE_COUNTER 0x10
#define INT_TYPE_DIOREAD 0x20
#define INT_TYPE_OPTO 0x40
#define INT_TYPE_DIOWRITE 0x80
#define INT_TYPE_INDEX_AD 0
#define INT_TYPE_INDEX_DA 1
#define INT_TYPE_INDEX_DIOIN 2
#define INT_TYPE_INDEX_USER 3
#define INT_TYPE_INDEX_COUNTER 4
#define INT_TYPE_INDEX_DIOOUT 5
#define INT_TYPE_INDEX_OPTO 6
/*////////////////////////
// User Interrupt Modes //
/////////////////////// */
#define USER_INT_CANCEL 0
#define USER_INT_AFTER 1
#define USER_INT_INSTEAD 2
#define USER_INT_SOURCE_EXTERNAL 1
#define USER_INT_SOURCE_INTERNAL 0
/*///////////////////////////////
// Waveform Generator Commands //
////////////////////////////// */
#define WG_CMD_START 0x01 /* Start the waveform generator */
#define WG_CMD_PAUSE 0x02 /* Pause the waveform generator */
#define WG_CMD_RESET 0x04 /* Reset the waveform generator */
#define WG_CMD_INC 0x08 /* Manually Increment the waveform generator by one frame. */
/*//////////////////////////////
// Waveform Generator Sources //
///////////////////////////// */
#define WG_SRC_MANUAL 0 /* Manual trigger (software) */
#define WG_SRC_CTR0 1 /* Rising edges on Counter 0 output */
#define WG_SRC_CTR12 2 /* Rising edges on Counter 1+2 cascade output */
#define WG_SRC_EXT 3 /* Rising edges on EXTTRIG */
/*/////////////////////////////////////////
// Waveform Generator Channels Per Frame //
/////////////////////////////////////////// */
#define WG_CH_PER_FRAME_1 0 /* 1 channel per frame */
#define WG_CH_PER_FRAME_2 1 /* 2 channels per frame */
#define WG_CH_PER_FRAME_4 2 /* 4 channels per frame */
/*////////////////////////////////
// Autoautocalibration Commands //
/////////////////////////////// */
#define AAC_CMD_HOLD 0x10 /* Enable the hold-off line, prevent AAC from running */
#define AAC_CMD_REL 0x08 /* Release the hold-off line, allow AAC to run */
#define AAC_CMD_RESET 0x04 /* Reset the dsPIC device to its initial power-on state */
#define AAC_CMD_ABORT 0x02 /* Abort any currently running AAC routine */
#define AAC_CMD_TRIG 0x01 /* Force-trigger an AAC routine */
/*///////////////
// Error Codes //
////////////// */
#define DE_NONE 0 /* no error */
#define DE_HW_FAILURE 1 /* hardware failed */
#define DE_SW_FAILURE 2 /* software failed */
#define DE_HW_NOT_SUPPORTED 3 /* could not perform operation on this board */
#define DE_SW_NOT_SUPPORTED 4 /* software does not yet support this operation */
#define DE_INVALID_PARM 5 /* a parameter to the function is invalid */
#define DE_ALTERNATE_IN_PROGRESS 6 /* alternate interrupt function in progress */
#define DE_NONE_IN_PROGRESS 7 /* no interrupt function in progress to pause/cancel/resume */
#define DE_BUFFER_ROLLOVER 8 /* pointer passed in + sizeof data to be written would roll over a segment */
#define DE_INVALID_ERROR_CODE 9 /* we used an invalid error code somewhere */
#define DE_ALREADY_PAUSED 10 /* can't pause an operation--it's already paused */
#define DE_OVERFLOW 11 /* Am9513A counter function overflowed */
#define DE_INVALID_FUNC 12 /* Function number not recognized by board type */
#define DE_DSCUDH_INVALID 13 /* Header - Library version mismatch */
#define DE_INVALID_BOARD 14 /* Invalid board-type constant */
#define DE_BOARD_LIMIT_REACHED 15 /* Tried to initialize too many boards at once */
#define DE_BOARD_BUSY 16 /* Attempt to acquire the board timed out */
#define DE_INVALID_WINDRVR_HANDLE 17 /* Windriver initialization failed */
#define DE_INVALID_WINDRVR_VERSION 18 /* Windriver version conflict */
#define DE_BAD_WINDRVR_BOARD_INIT 19 /* Windriver could not initialize the board */
#define DE_OPERATION_TIMED_OUT 20 /* Operation timed out */
#define DE_INVALID_WINDRVR_KP 21 /* Windriver kernel plugin initialization failed */
#define DE_THREAD_FAILURE 22 /* Windriver failed to initialize thread */
/*/////////////////
// Error Strings //
//////////////// */
#define STR_DE_NONE "NO ERRORS REPORTED"
#define STR_DE_HW_FAILURE "HARDWARE FAILURE"
#define STR_DE_SW_FAILURE "SOFTWARE FAILURE"
#define STR_DE_HW_NOT_SUPPORTED "OPERATION NOT SUPPORTED BY HARDWARE"
#define STR_DE_SW_NOT_SUPPORTED "OPERATION NOT SUPPORTED BY SOFTWARE"
#define STR_DE_INVALID_PARM "INVALID PARAMETER"
#define STR_DE_ALTERNATE_IN_PROGRESS "ALTERNATE INTERRUPT OPERATION IN PROGRESS"
#define STR_DE_NONE_IN_PROGRESS "NO INTERRUPT OPERATION IN PROGRESS"
#define STR_DE_BUFFER_ROLLOVER "POINTER + SIZE OF DATA OVERRUN BUFFER"
#define STR_DE_INVALID_ERROR_CODE "INVALID ERROR CODE, PLEASE IGNORE"
#define STR_DE_ALREADY_PAUSED "OPERATION ALREADY PAUSED"
#define STR_DE_OVERFLOW "AM9513A COUNTER FUNCTION OVERFLOWED OR BUFFER OVERFLOW"
#define STR_DE_INVALID_FUNC "INVALID FUNCTION FOR SELECTED BOARD"
#define STR_DE_DSCUDH_INVALID "LIBRARY HEADER VERSION MISMATCH"
#define STR_DE_INVALID_BOARD "INVALID BOARD TYPE SPECIFIED"
#define STR_DE_BOARD_LIMIT_REACHED "MAXIMUM NUMBER OF BOARDS REACHED"
#define STR_DE_BOARD_BUSY "ATTEMPT TO ACQUIRE BOARD TIMED OUT"
#define STR_DE_INVALID_WINDRVR_HANDLE "INVALID WINDRIVER HANDLE RETURNED"
#define STR_DE_INVALID_WINDRVR_VERSION "INVALID WINDRIVER VERSION"
#define STR_DE_BAD_WINDRVR_BOARD_INIT "WINDRIVER BOARD INITIALIZATION FAILURE"
#define STR_DE_OPERATION_TIMED_OUT "OPERATION TIMED OUT"
#define STR_DE_INVALID_WINDRVR_KP "KERNEL PLUGIN INITIALIZATION FAILURE"
#define STR_DE_THREAD_FAILURE "THREAD INITIALIZATION FAILURE"
#define STR_DE_MUTEX_FAIL "MUTEX CREATION OR LOCKING OPERATION FAILED"
/*/////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
//////////////////////// Structures ///////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -