/* HEADER - P_NCP.H Copyright (C) Psion PLC 1991-92 VER DATE BY DESCRIPTION ===== ======== === =========== 1.00F 26/04/90 NSM First relase 1.10F 07/07/92 NSM Second release */ #ifndef P_NCP_H #define P_NCP_H #include #define NCLINK_VERSION_NUMBER 3 #define NCLINK_MINOR_VERNO 1 typedef struct { unsigned char *pcb; /* Handle to call */ int handler; /* Handler handler */ unsigned char *(*Install)(); /* Install server */ void (*Remove)(); /* Remove the server */ int (*WaitHandler)(); /* Wait handler function to call */ unsigned char name[16]; /* name of the server */ } P_NCP; /* Informational data obtained by supervisory reads */ #define PHYS_LINK_FAILED 0 /* Link layer has failed*/ #define PHYS_CONNECT_FAILED 1 /* Waiting for connection failed */ #define PHYS_CHARS_FAILED 2 /* Setting serial characteristics failed */ #define PHYS_INIT_FAILED 3 /* Initialization of modem failed */ #define PHYS_DIAL_FAILED 4 /* Dialling phone number failed */ #define PHYS_MDMCONFIG_FAILED 5 /* additional modem config failed */ #define PHYS_PHYS_LINK_ESTABLISHED 6 /* A physical link established */ #define PHYS_WAITING_FOR_CALL 7 /* Physical layer waiting for call */ #define PHYS_DIALLING_NUMBER 8 /* Physical layer dialling */ #define PHYS_CONFIGURING_MODEM 9 /* configuring modem */ #define PHYS_NCP_LINK_ESTAB_OK 10 /* Ncp link established OK */ #define PHYS_NCP_LINK_ESTAB_NEW_NCP 11 /* Talking to different Ncp */ #define PHYS_NCP_LINK_ESTAB_INVALID_VER 12 /* Remote NCP is V1.0 !!*/ #define PHYS_NCP_LINK_END 13 /* remote NCP is terminating */ #define PHYS_SERCONFIG_FAILED 14 /* serial port not there */ /* type of message to add to the queue */ #define NCONT_MSG_SEND 0 /* controller */ #define NUSER_MSG_SEND 1 /* users */ #define NEXPEDIATED_MSG_SEND 2 /* expediated */ /***************************************************************************/ /* NUCB flags defines */ #define NUFLAG_WRITE_HELD 0x01 #define NUFLAG_WRITE_OUTSTANDING 0x02 #define NUFLAG_CONNECT_REQUEST 0x08 #define NUFLAG_DISCONNECTED 0x10 #define NUFLAG_ALLOCATED 0x20 #define NUFLAG_CHANNEL_CLOSED 0x40 #define NUFLAG_DISCONNECT_REQUEST 0x80 #define NUFLAG_TEMPDISC 0x100 #define NUFLAG_NO_CONNECTION (NUFLAG_TEMPDISC|NUFLAG_DISCONNECTED) #define NC_VERSION_NUMBER 2 /* were version 2 */ #define NC_MAX_USERCB 8 /* Max number of connected users */ #define NC_MSG_SIZE 8 /* Max inter controller msg size */ typedef struct nudata /* Network user data control block */ { struct nudata *pnudata; /* next control blk in list */ unsigned short int reclen; /* amount in buffer */ unsigned char recbuf[1]; /* expands as required (for C offset) */ } NUDATA; typedef struct /* Network User control block */ { P_ICB icb; /* I/O control block */ unsigned short int flags; /* controlling flags */ P_RQPKT read; /* read request block */ P_RQPKT write; /* write request block */ P_RQPKT super; /* supervisory read request blk */ P_NCP *pncp; /* open channel control blk ptr */ unsigned char localchanid; /* local channel id number */ unsigned char remotechanid; /* remote channel id number */ unsigned char *pncb; /* Network handle */ unsigned char *handler; /* Network client wait handler handle */ NUDATA *pnudata; /* Network users queued data */ unsigned short int nclen; /* amount in the Network Controller msg buffer */ unsigned char ncbuf[NC_MSG_SIZE]; /* message buffer */ unsigned short int recvbytes; /* Number of bytes received (>1K) */ unsigned short int xmitbytes; /* Number of bytes xmitted (>1K) */ unsigned long int recvK; /* Number of K received */ unsigned long int xmitK; /* Number of K transmitted */ } NUCB; /*************************************************************************/ /* Inter controller message types */ #define NCON_MSG_DATA_XOFF 1 #define NCON_MSG_DATA_XON 2 #define NCON_MSG_CONNECT_TO_SERVER 3 #define NCON_MSG_CONNECT_RESPONSE 4 #define NCON_MSG_CHANNEL_CLOSED 5 #define NCON_MSG_NCP_INFO 6 /* MUST BE 6 for older versions*/ #define NCON_MSG_CHANNEL_DISCONNECT 7 #define NCON_MSG_NCP_END 8 /* Inter Network user message types */ #define NU_MSG_WRITECOMPLETE 1 #define NU_MSG_WRITEPARTIAL 2 #define NC_LINK_ACTIVE 0x01 #define NC_READ_QUEUED 0x02 #define NC_WRITE_QUEUED 0x04 #define NC_TERMINATING 0x08 #define NC_OWNER_CLOSE_REQUEST 0x10 #define CONNECT_STATE_0 0 #define CONNECT_STATE_1 1 #define CONNECT_STATE_2 2 typedef struct { unsigned short int flags; /* Controlling flags */ short int ctrlmsgqueue; /* Network users have controller messages queued */ short int ctrllastxmit; /* Network users last transmitted a ctrl msg */ short int usermsgqueue; /* Network users have queued write requests */ short int userlastxmit; /* Network users last transmitted a user msg */ unsigned short int maxfrmsize; /* maximum frame we can transmit/receive */ short int wstat; /* Write completion status */ short int rstat; /* Read completion status */ unsigned short int wlen; /* Write length */ unsigned short int rlen; /* Read length */ unsigned char *handler; /* Network controller wait handler handle */ unsigned char *plcb; /* link layer that were using */ unsigned short int connected; /* connected state */ unsigned short int remotencpver; /* the remote NCP version number */ unsigned long int startdate; /* NCP start up date (logon id) */ unsigned long int remotestartdate; /* the remote NCP logon id */ unsigned short int expediatedlen; /* amount in expediated buf to transmit */ unsigned char expediatedbuf[NC_MSG_SIZE]; NUCB *lastnucb; /* last network user to do a write */ unsigned char rbuf[P_MAXILEN]; /* read buffer */ unsigned char wbuf[P_MAXILEN]; /* write buffer */ NUCB usertable[NC_MAX_USERCB]; } NCB; #endif // P_NCP_H