⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dscud.h

📁 美国钻石公司PC104串口通信模块EMM8和EMM4的Vxworks驱动
💻 H
📖 第 1 页 / 共 3 页
字号:
/*

	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 + -