/*
 * Copyright (C) 2001 Mike McCormack
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#ifndef NCB_INCLUDED
#define NCB_INCLUDED

#ifdef __cplusplus
extern "C" {
#endif

#define NCBNAMSZ 16
#define MAX_LANA 0xfe

#define NCBRESET       0x32
#define NCBADDNAME     0x30
#define NCBADDGRNAME   0x36
#define NCBDELNAME     0x31
#define NCBSEND        0x14
#define NCBRECV        0x15
#define NCBHANGUP      0x12
#define NCBCANCEL      0x35
#define NCBLISTEN      0x11
#define NCBCALL        0x10
#define NCBASTAT       0x33
#define NCBENUM        0x37

typedef struct _NCB
{
	UCHAR	ncb_command;
	UCHAR	ncb_retcode;
	UCHAR	ncb_lsn;
	UCHAR	ncb_num;
	PUCHAR	ncb_buffer;
	WORD	ncb_length;
	UCHAR	ncb_callname[NCBNAMSZ];
	UCHAR	ncb_name[NCBNAMSZ];
	UCHAR	ncb_rto;
	UCHAR	ncb_sto;
	VOID	(*ncb_post)(struct _NCB *);
	UCHAR	ncb_lana_num;
	UCHAR	ncb_cmd_cplt;
	UCHAR	ncb_reserved[10];
	HANDLE	ncb_event;
} NCB, *PNCB;

typedef struct _ADAPTER_STATUS
{
	UCHAR   adapter_address[6];
	UCHAR	rev_major;
	UCHAR	reserved0;
	UCHAR	adapter_type;
	UCHAR	rev_minor;
	WORD	duration;
	WORD	frmr_recv;
	WORD	frmr_xmit;
	WORD	iframe_recv_error;
	WORD	xmit_aborts;
	DWORD	xmit_success;
	DWORD	recv_success;
	WORD	iframe_xmit_error;
	WORD	recv_buffer_unavail;
	WORD	t1_timeouts;
	WORD	ti_timeouts;
	DWORD	reserved1;
	WORD	free_ncbs;
	WORD	max_cfg_ncbs;
	WORD	max_ncbs;
	WORD	xmit_buf_unavail;
	WORD	max_dgram_size;
	WORD	pending_sess;
	WORD	max_cfg_sess;
	WORD	max_sess;
	WORD	max_sess_pktsize;
	WORD	name_count;
} ADAPTER_STATUS, *PADAPTER_STATUS;

typedef struct _LANA_ENUM
{
	UCHAR length;
	UCHAR lana[MAX_LANA+1];
} LANA_ENUM, *PLANA_ENUM;

#define NRC_GOODRET 0x00
#define NRC_BUFLEN  0x01
#define NRC_ILLCMD  0x03
#define NRC_CMDTMO  0x05
#define NRC_INCOMP  0x06
#define NRC_INVADDRESS 0x39
#define NRC_PENDING 0xff
#define NRC_OPENERROR 0x3f

#ifdef __cplusplus
}
#endif

#endif  /* NCB_INCLUDED */
