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

📄 cdi.h

📁 TSapi 软件电话源代码
💻 H
字号:
/************************************************************************/
/* Copyright (C) 2001 Avaya Inc.  All rights reserved. */
/************************************************************************/
/*
 *  cdi.h    CSTA Services Driver Interface
 *
 *  Header File Dependencies:
 *      acs.h
 *      csta.h
 *	tdi.h
 */

#ifndef CDI__H
#define CDI__H

#if !defined(_CDILIB_)
#define CDILIBAPI __declspec(dllimport)
#else
#define CDILIBAPI __declspec(dllexport)
#endif

/*
 * DEFINES
 */

#define CDI_CSDI_VERSION_1	1	/* CSDI interface version */

#define CDI_PROTOCOL_VERSION_1	1	/* CSTA Protocol Version */

#define CDI_SUCCESS             1	/* CDI Function call completed OK */

#define CDI_MAX_SERVICE_NAME    TDI_MAX_SERVICE_NAME
					/* Max length of the service name */
#define CDI_MAX_DRIVER_NAME     TDI_MAX_DRIVER_NAME
					/* Max length of the driver name  */
#define CDI_MAX_VENDOR_NAME     TDI_MAX_VENDOR_NAME
					/* Max length of the vendor name  */
#define CDI_MAX_PRIV_DATA_VENDOR 32	/* Max length of the priv data vendor */
#define CDI_MAX_VERSION_STRING	TDI_MAX_VERSION_STRING
					/* Max length of version string */

#define CDI_MAX_REGISTRATIONS   TDI_MAX_REGISTRATIONS
					/* Max driver registerations per
					 * Cserver */
#define CDI_MAX_BUFFER_SIZE     (4096-12) /* Max size of buffers sent across
					   * the CDI (Netware 3.x only) */

/*
 * CDI Default buffer descriptor values
 */
#define CDI_MAX_BYTES_ALLOCATED TDI_MAX_BYTES_ALLOCATED
					 /* Default max bytes allocated per
					  * driver: 1.5 meg  */
#define CDI_MIN_BYTES_ALLOCATED TDI_MIN_BYTES_ALLOCATED
					 /* Default min bytes allocated per
					  * driver: 64K  */
#define CDI_BUFFER_HI_WATER_MARK (CDI_MAX_BYTES_ALLOCATED * 80 / 100)
					/* Default high water mark for
					 * allocated buffers */
#define CDI_BUFFER_LO_WATER_MARK (CDI_MAX_BYTES_ALLOCATED * 40 / 100)
					/* Default high water mark for
					 * allocated buffers */

/*
 * CDI Buffer allocation condition flags
 */
#define CDI_EXCEED_MAX_BYTES    0x01    /* Buffers allocated exceed max bytes
					 * allowed */ 
#define CDI_EXCEED_HIWATER_MARK 0x02    /* Buffers allocated exceed high water
					 * mark */
#define CDI_EXCEED_LOWATER_MARK 0x04    /* Buffers allocated exceed low water
					 * mark */

/*
 * CDI Security Checks per client request 
 */
#define CDI_CSTA_SECURITY       TDI_CSTA_SECURITY
					/* Security check per client req. */
#define CDI_LOGIN_SECURITY      TDI_LOGIN_SECURITY
					/* Security check on login */
#define CDI_NO_SECURITY         TDI_NO_SECURITY
					/* No security checks */

/*
 * CDI Defines for significant_octets field of CDIOctetStringMap_t
 */
#define CDI_FIRST_FOUR		0	/* first four octets are used */
#define CDI_LAST_FOUR		1	/* last four octets are used */

/*
 * CDI Defines for byte_order field of CDIOctetStringMap_t
 */
#define CDI_MSB_FIRST		0	/* most significant byte first order */
#define CDI_LSB_FIRST		1	/* least significant byte first order */

/*
 * CDI Message priority class
 */
#define CDI_NORMAL_MESSAGE      0	/* Send message normal class */
#define CDI_PRIORITY_MESSAGE    1	/* Send message priority class */

/*
 * CDI Error return codes
 */
#define CDI_ERR_ESYS            -1      /* System Error occurred */
#define CDI_ERR_BAD_DRVRID      -2      /* Unregistered driverID */
#define CDI_ERR_DUP_DRVR        -3      /* Service name already registered */
#define CDI_ERR_NO_MEM          -4      /* Unable to allocate memory */
#define CDI_ERR_MAX_DRVR        -5      /* Max  number of drivers exceeded */
#define CDI_ERR_EINVAL          -6      /* Invalid parameter to CDI call */
#define CDI_ERR_NO_BUFFERS      -7      /* No  buffers available to allocate */
#define CDI_ERR_BADLENGTH       -8      /* Requested length > max buf size */
#define CDI_ERR_BAD_BUF         -9      /* Buffer supplied is invalid */
#define	CDI_ERR_NOT_YOUR_BUFFER	-10	/* trying to free someone else's buf */
#define CDI_ERR_DRVR_UNREGISTERED -11   /* The Driver unregistered */
#define CDI_ERR_BAD_VERSION	-12   	/* Bad csdi version to registration */
#define CDI_ERR_BAD_SECURITY 	-13   	/* Bad drvr security to registration */
#define CDI_ERR_BAD_SRVC_NAME 	-14   	/* Bad service name to registration */
#define CDI_ERR_BAD_VENDOR_NAME	-15   	/* Bad vendor name to registration */
#define CDI_ERR_BAD_DRVR_NAME 	-16   	/* Bad driver name to registration */
#define CDI_ERR_BAD_SESSIONID 	-17   	/* Bad session ID */
#define CDI_ERR_BAD_INVOKEID 	-18   	/* Bad invoke ID */
#define CDI_ERR_BAD_SEM 	-19   	/* Bad semaphore from on WaitLocal*/
#define CDI_ERR_BAD_PROTOCOL	-20	/* Bad protocol vers to registration */
#define CDI_ERR_BAD_PRIVDATA_VNDR -21	/* Bad priv data vndr to registration */
#define CDI_ERR_BAD_MAPPING_DESC -22	/* Bad mapping descriptor */
#define CDI_ERR_BAD_DRVR_CAPS	-23	/* Bad driver caps */

/*
 * TYPEDEFS
 */

typedef int		CDIHandle_t;	/* Identifies Cserver-Driver intf. */
typedef int		CDIReturn_t;	/* Return type for CDI functions */
typedef int		CDISecurity_t;	/* Security requested/client req. */
typedef int		CDIBuf_flag_t;	/* Current buffer allocation info */
typedef int		CDIPriority_t;	/* Message priority */
typedef unsigned long	CDIVersion_t;	/* Identifies CSDI version */
typedef unsigned long	CDIProtocol_t;	/* Identifies protocol version */

typedef struct
{
	unsigned char	significant_octets;	/* CDI_FIRST_FOUR or
						 * CDI_LAST_FOUR	*/
	unsigned char	byte_order;		/* CDI_MSB_FIRST or
						 * CDI_LSB_FIRST	*/
	unsigned char	min_length;		/* minimum length octet string
						 * encoding (1-4)	*/
	unsigned char	max_length;		/* maximum length octet string
						 * encoding (1-4)	*/
	Boolean		strip_null;		/* strip null bytes flag */
} CDIOctetStringMap_t;

typedef struct
{
	CDIOctetStringMap_t	callID_map;	/* Mapping of callID's
						 * on this interface. */
	CDIOctetStringMap_t	monitorCrossRefID_map;	/* Mapping of
						 * monitorCrossRefId's
						 * on this interface. */
	CDIOctetStringMap_t	routingCrossRefID_map;	/* Mapping of
						 * routingCrossRefId's
						 * on this interface. */
} CDIMapping_info_t;

typedef struct
{
	unsigned long   max_bytes;	/* Maximum number of bytes to allocate
					 * for this interface */
	unsigned long   hiwater_mark;	/* High water mark for buffer
					 * allocation on this interface */
	unsigned long   lowater_mark;	/* Low water mark for buffer
					 * allocation on this interface */
} CDIBuf_info_t;

typedef struct
{
	int	queued_to_driver;	/* Number of bufs queued to driver */
	int	queued_to_csta;		/* Number of bufs queued to cserver */
	int	allocd_by_driver;	/* Number of bufs alloc'd to driver */
	int	allocd_by_csta;		/* Number of bufs alloc'd to cserver */
} CDIQueue_info_t;

typedef struct
{
	unsigned long   bytes_queued_to_driver; /* Number of bytes in message
						 * buffers queued to driver */
	unsigned long   bytes_queued_to_csta;   /* Number of bytes in message
						 * buffers queued to cserver */
	unsigned long   bytes_allocd_by_driver; /* Number of bytes in message
						 * buffers allocated to driver*/
	unsigned long   bytes_allocd_by_csta;   /* Number of bytes in message
						 * buffers alloc'd to cserver */
} CDIMemAlloc_info_t;

typedef struct
{
	short    alternateCall;
	short    answerCall;
	short    callCompletion;
	short    clearCall;
	short    clearConnection;
	short    conferenceCall;
	short    consultationCall;
	struct {
		short	deflect;
		short	pickup;
		short	group;
	} divertCall;
	short    holdCall;
	short    makeCall;
	short    makePredictiveCall;
	struct {
		short	msgWaiting;
		short	doNotDisturb;
		short	forward;
		short	lastDialedNumber;
		short	deviceInfo;
		short	agentState;
	} queryDevice;
	short    reconnectCall;
	short    retrieveCall;
	struct {
		short	msgWaiting;
		short	doNotDisturb;
		short	forward;
		short	agentState;
	} setFeature;
	short    transferCall;
	short    eventReport;
	short    callClearedEvent;
	short    conferencedEvent;
	short    connectionClearedEvent;
	short    deliveredEvent;
	short    divertedEvent;
	short    establishedEvent;
	short    failedEvent;
	short    heldEvent;
	short    networkReachedEvent;
	short    originatedEvent;
	short    queuedEvent;
	short    retrievedEvent;
	short    serviceInitiatedEvent;
	short    transferredEvent;
	short    callInformationEvent;
	short    doNotDisturbEvent;
	short    forwardingEvent;
	short    messageWaitingEvent;
	short    loggedOnEvent;
	short    loggedOffEvent;
	short    notReadyEvent;
	short    readyEvent;
	short    workNotReadyEvent;
	short    workReadyEvent;
	short    backInServiceEvent;
	short    outOfServiceEvent;
	struct {
		short	driverInvoked;
		short	applInvoked;
	} privateEvent;
	short    routeRequest;
	short    reRouteRequest;
	short    routeSelectRequest;
	short    routeUsedRequest;
	struct {
		short	driverInvoked;
		short	applInvoked;
	} routeEndRequest;
	struct {
		short	driverInvoked;
		short	applInvoked;
	} escapeService;
	struct {
		short	driverInvoked;
		short	applInvoked;
	} systemStatus;
	struct {
		short	device;
		short	call;
		short	callsViaDevice;
	} monitorStart;
	short    changeMonitorFilter;
	struct {
		short	driverInvoked;
		short	applInvoked;
	} monitorStop;
	short    snapshotDevice;
	short    snapshotCall;
} CDIDriverCaps_t;


#ifdef __cplusplus
extern "C" {
#endif

/*
 * FUNCTION PROTOTYPES
 */

CDILIBAPI	CDIHandle_t cdiDriverRegister(
CDIVersion_t			csdi_version,		/* INPUT  */
CDIProtocol_t			protocol_version,	/* INPUT  */
const char			*vendor_name,		/* INPUT  */
const char			*driver_name,		/* INPUT  */
const char			*service_name,		/* INPUT  */
CDISecurity_t			driver_security,	/* INPUT  */
const CDIBuf_info_t		*buffer_descriptor,	/* INPUT  */
const CDIMapping_info_t		*mapping_descriptor,	/* INPUT  */
const char			*priv_data_vendor,	/* INPUT  */
const CDIDriverCaps_t		*driver_caps);		/* INPUT  */

CDILIBAPI	CDIReturn_t cdiDriverUnregister(
CDIHandle_t			driverID);		/* INPUT */

CDILIBAPI	CDIReturn_t cdiAllocBuffer(
CDIHandle_t			driverID,		/* INPUT  */
char				**bufptr,		/* OUTPUT */
unsigned int			length,			/* INPUT  */
CDIBuf_flag_t			*buf_flag);		/* OUTPUT */

CDILIBAPI	CDIReturn_t cdiFreeBuffer(
CDIHandle_t			driverID,		/* INPUT   */
char				*bufptr);		/* INPUT   */

CDILIBAPI	CDIReturn_t cdiReceiveFromCSTA(
CDIHandle_t			driverID,		/* INPUT  */
char				**bufptr);		/* OUTPUT */

CDILIBAPI	CDIReturn_t cdiSendToCSTA(
CDIHandle_t			driverID,		/* INPUT  */
char				*bufptr,		/* INPUT  */
CDIPriority_t			priority);		/* INPUT  */

CDILIBAPI	CDIReturn_t cdiQueueSize(
CDIHandle_t			driverID,		/* INPUT  */
CDIQueue_info_t			*queue_descriptor);	/* OUTPUT */

CDILIBAPI	CDIReturn_t cdiGetCDISize(
CDIHandle_t			driverID,		/* INPUT  */
CDIBuf_info_t			*buffer_descriptor);	/* OUTPUT  */

CDILIBAPI	CDIReturn_t cdiMemAllocSize(
CDIHandle_t			driverID,		/* INPUT  */
CDIMemAlloc_info_t		*mem_descriptor);	/* OUTPUT */

CDILIBAPI	CDIReturn_t cdiDriverSanity(
CDIHandle_t			driverID);		/* INPUT  */

CDILIBAPI	CDIReturn_t cdiGetCSTAVersion(
char				*customer_version,	/* OUTPUT */
char				*internal_version,	/* OUTPUT */
CDIVersion_t			*csdi_version,		/* OUTPUT */
CDIProtocol_t			*protocol_version);	/* OUTPUT */


#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -