/* $Id: um_xdi.h,v 1.1.2.2 2002/10/02 14:38:38 armin Exp $ */

#ifndef __DIVA_USER_MODE_XDI_H__
#define __DIVA_USER_MODE_XDI_H__

/*
  Contains declaratiom of structures shared between application
  and user mode idi driver
*/

typedef struct _diva_um_idi_adapter_features {
  dword type;
  dword features;
  dword channels;
  dword serial_number;
  char  name [128];
} diva_um_idi_adapter_features_t;

#define DIVA_UM_IDI_REQ_MASK			0x0000FFFF
#define DIVA_UM_IDI_REQ_TYPE_MASK		(~(DIVA_UM_IDI_REQ_MASK))
#define DIVA_UM_IDI_GET_FEATURES		1	/* trigger features indication */
#define DIVA_UM_IDI_REQ				2
#define DIVA_UM_IDI_REQ_TYPE_MAN		0x10000000
#define DIVA_UM_IDI_REQ_TYPE_SIG		0x20000000
#define DIVA_UM_IDI_REQ_TYPE_NET		0x30000000
#define DIVA_UM_IDI_REQ_MAN			(DIVA_UM_IDI_REQ | DIVA_UM_IDI_REQ_TYPE_MAN)
#define DIVA_UM_IDI_REQ_SIG			(DIVA_UM_IDI_REQ | DIVA_UM_IDI_REQ_TYPE_SIG)
#define DIVA_UM_IDI_REQ_NET			(DIVA_UM_IDI_REQ | DIVA_UM_IDI_REQ_TYPE_NET)
/*
  data_length  bytes will follow this structure
*/
typedef struct _diva_um_idi_req_hdr {
  dword type;
  dword Req;
  dword ReqCh;
  dword data_length;
} diva_um_idi_req_hdr_t;

typedef struct _diva_um_idi_ind_parameters {
  dword Ind;
  dword IndCh;
} diva_um_idi_ind_parameters_t;

typedef struct _diva_um_idi_rc_parameters {
  dword Rc;
  dword RcCh;
} diva_um_idi_rc_parameters_t;

typedef union _diva_um_idi_ind {
  diva_um_idi_adapter_features_t  features;
  diva_um_idi_ind_parameters_t    ind;
  diva_um_idi_rc_parameters_t     rc;
} diva_um_idi_ind_t;

#define DIVA_UM_IDI_IND_FEATURES  1  /* features indication */
#define DIVA_UM_IDI_IND           2
#define DIVA_UM_IDI_IND_RC        3
/*
  data_length bytes of data follow
  this structure
*/
typedef struct _diva_um_idi_ind_hdr {
  dword type;
  diva_um_idi_ind_t  hdr;
  dword  data_length;
} diva_um_idi_ind_hdr_t;

#endif

