blob: c9988bd64428b3778c23ce4052a36f086ae841fc [file] [log] [blame]
/*************************************************************
*
* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
*
* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
*
* Copyright (c) 2002-2010 VIA Telecom, Inc. All rights reserved.
*
*************************************************************/
/*************************************************************************
*
* File Name: 7074stat.h
* Project: NSPE stack
*
* Original Author: Steve Pye
* Creation Date: July 13, 1998
*
* Description:
* Restrictions:
* Dependencies:
*
************************************************************************/
#ifndef _7074STAT_H_
#define _7074STAT_H_ 1
#include "kal_public_defs.h"
#include "kal_public_api.h"
#include "7074CUST.H"
#include "PPPAPI.H"
#include "PP_FRAME.H"
#include "IP_CUSTM.H"
#include "USER_API.H"
#include "hlpapi.h"
/* IS-707 Applications */
#define IS707_APP_ASYNC_TCP 0
#define IS707_APP_PACKET_RLP 1
#define IS707_APP_BROWSER_UDP 2
#define IS707_APP_PACKET_UART 3
#define IS707_APP_BROWSER_ON_ASYNC 4
#define IS707_APP_BROWSER_CKT_TCP 5
#define IS707_APP_BROWSER_PKT_TCP 6
#define IS707_APP_PPP_ONLY 7
#define IS707_APP_ACS_STREAM 8
#define IS707_APP_MAIN_CONN 9
#define IS707_APP_NULL 10 /* Adding any new type should be before this */
#define IS707_NUM_APPS 11
/*add for Trace, keep in the same order as IS707_APP...#defines above*/
typedef enum
{
NSPE_ASYNC_TCP,
NSPE_PACKET_RLP,
NSPE_BROWSER_UDP,
NSPE_PACKET_UART,
NSPE_BROWSER_ON_ASYNC,
NSPE_BROWSER_CKT_TCP,
NSPE_BROWSER_PKT_TCP,
NSPE_PPP_ONLY,
NSPE_ACS_STREAM,
NSPE_MAIN_CONN,
NSPE_NULL,
NSPE_APP_MAX_NUM
} NspeAppsT;
/* IS-707 Task states */
#define IS707_S_IDLE 0
#define IS707_S_RLP_CONNECTING 1
#define IS707_S_NET_CONNECTING 2
#define IS707_S_TCP_CONNECTING 3
#define IS707_S_PPP_CONNECTING 4
#define IS707_S_LCP_CONNECTED 5
#define IS707_S_PPP_CONNECTED 6
#define IS707_S_NET_CONNECTED 7
#define IS707_S_ABORTING 8
#define IS707_S_CLOSING 9
#define IS707_S_UM_RENEGOTIATION 10
#define IS707_S_DEREGISTERING 11
/*add for Trace, keep in the same order as IS707_S...#defines above*/
typedef enum
{
NSPE_IDLE,
NSPE_RLP_CONNECTING ,
NSPE_NET_CONNECTING,
NSPE_TCP_CONNECTING,
NSPE_PPP_CONNECTING,
NSPE_LCP_CONNECTED,
NSPE_PPP_CONNECTED,
NSPE_NET_CONNECTED,
NSPE_ABORTING,
NSPE_CLOSING,
NSPE_UM_RENEGO,
NSPE_DEREGISTERING,
NSPE_STATE_MAX_NUM
} NspeStatesT;
/* Mobile IP states */
#define MIP_NULL_STATE 0
#define MIP_INIT_STATE 1
#define MIP_AGENT_DIS_STATE 2
#define MIP_REGISTRATION_STATE 3
#define MIP_ACTIVE_STATE 4
#define MIP_TERMINATE_STATE 5
/*add for Trace, keep in the same order as MIP_..._STATE#defines above*/
typedef enum
{
MIP_NULL_ST,
MIP_INIT_ST ,
MIP_AGENT_DIS_ST,
MIP_REGISTRATION_ST,
MIP_ACTIVE_ST,
MIP_TERMINATE_ST,
MIP_ST_MAX_NUM
} MipStatesT;
struct nspeBufferType
{
kal_uint8 pppIpScratch[ PPP_BUFFERSIZE*2 ];
kal_uint8 mbufPool[ IS707_MBUF_POOL_SIZE ];
};
struct scb
{
kal_uint8 SocketRxBuf[ IS707_APPINT_RX_BUFFERSIZE ];
kal_bool tcpPassive;
kal_bool tcpPeerClosing;
kal_bool tcpWereClosing;
kal_uint8 sap;
kal_uint8 ipProtocol;
kal_uint16 nDataToRead;
kal_bool bCloseWaitDefer;
/* Application Interface variables */
kal_bool appIntRecvReady;
kal_bool appIntSendPending;
kal_bool bDataPending;
SendRequest appIntSendRqst;
ReceiveRequest appIntRecvRqst;
SendToRequest appIntSendToRqst;
ReceiveFromRequest appIntRecvFromRqst;
/* variables for pending */
kal_bool bTCPOrUDPDataReqPending;
kal_bool bSocketConnectReqPending;
kal_bool bSocketCloseReqPending;
kal_bool bSocketShutdownReqPending;
HlpTcpbDataSendReqMsgT PendingTCPDataRqstToSend;
HlpUpbSendDataMsgT PendingUDPDataRqstToSend;
HlpSocketConnectMsgT PendingSktConnMsg;
HlpSocketCloseMsgT PendingSktCloseMsg;
HlpSocketShutDownMsgT PendingSktShutDownMsg;
};
struct nspeGlobalsType
{
/* RLP variables */
kal_uint8 rlpApp;
kal_uint8 uartApp;
kal_uint8 rlpAppAccess;
kal_bool rlpFlushPending;
kal_bool rlpTransparent;
/* Packet variables */
kal_uint8 packetUdpSap;
kal_bool packetBrowserMode;
/* PPP variables */
kal_uint8 *pppRxData;
kal_uint16 pppRxDataSize;
kal_uint16 pppSendMTU;
/* PPP variables for RM interface to Uart */
kal_uint8 *pppUartRxData;
kal_uint16 pppUartRxDataSize;
/* TCP variables */
kal_bool tcpPassive;
kal_bool tcpPeerClosing;
kal_bool tcpWereClosing;
kal_bool tcpFlowOn;
kal_uint8 tcpSap;
/* Application Interface variables */
kal_bool appIntRxReady;
kal_bool appIntTxPending;
SendRequest appIntTxRqst;
/* ReceiveRequest appIntRxRqst; */
/* Browser UDP variables */
kal_bool DoubleStackUpperLayerDown;
/* variable handle rlpresetInd */
kal_bool RlpReset; /* set after rlpReset, */
kal_bool RlpOpenRspRcvd; /* set after receive rlpOpenRsp which caused by rlpReset */
kal_bool Um_Rm_Connected; /*set after UM and RM interface are both connected */
kal_bool Um_DataPending; /* set to KAL_TRUE is there is data pending which is ready to be sent to Rm */
kal_bool Rm_DataPending; /* set to KAL_TRUE is there is data pending which is ready to be sent to Um */
kal_bool Um_Renegotiating;
#ifdef TEST
/* these variablee can be removed */
kal_bool enableIpFlowControlIteMessages;
kal_bool enableTcpRxDataIteMessages;
#endif
};
struct Pending_Data
{
kal_bool canBeSent;
kal_bool dormant_flag; /* Remember the current Mode*/
kal_bool Data_Pending; /* Set the flag if we saved any data.*/
kal_bool Tx_Pending; /* pending flag cuased by UDP busy */
SendToRequest saved; /* save the data */
};
struct Um_Dormant
{
kal_bool dataPending;
kal_bool dormant;
};
void nspeUmDormantReconnect(void);
void UmProcessPendingData(void);
struct Interface_Busy
{
kal_bool rx_busy;
kal_bool tx_busy;
};
extern struct Interface_Busy um_rlp;
extern struct Interface_Busy rm_uart;
extern struct nspeGlobalsType nspe;
extern struct nspeBufferType nspeBuffers;
extern struct scb nspeSCB[IP_NTCBS];
extern kal_uint8 pppAccStrmScratch[PPP_BUFFERSIZE*2];
/* Prototypes */
void Shut_TCP_Quietly( void );
void nspeTxReq( void );
void udpTxReq( void );
void nspeSetState( kal_uint8 app, kal_uint8 state );
kal_uint8 nspeGetState( kal_uint8 app );
void nspeSetRlpAppAccess(kal_uint8 rlpAppAcs);
kal_uint8 nspeGetRlpAppAccess(void);
void nspeSetIpAddr( kal_uint8 app, kal_uint32 ip_address );
kal_uint32 nspeGetIpAddr( kal_uint8 app );
void nspeSetPppPort( kal_uint8 app, kal_uint16 ppp_port );
kal_uint16 nspeGetPppPort( kal_uint8 app );
void nspeSetPppSending( kal_uint8 app, kal_bool sending );
kal_bool nspeGetPppSending( kal_uint8 app );
kal_uint32 nspeGetApp( kal_uint16 ppp_port );
void nspeInit( kal_uint8 app );
void nspeInitApps(void);
void nspeCleanPort( kal_uint8 app );
void nspePassIpDataToPpp( kal_uint8 app );
void nspePurgeIPDataQueue( kal_uint8 app );
kal_uint8 nspeGetAppByPDNId(kal_uint8 PDNId);
void nspeSetPdnId( kal_uint8 app, kal_uint8 PdnId );
kal_uint8 nspeGetPdnId( kal_uint8 app);
void nspeIpData2Ppp(kal_uint8 app);
#ifdef WeDoPacketMode
kal_bool nspeGetBufferfromTxQueue( kal_uint8 *buffer, kal_uint16 *size, kal_uint8 app );
void nspePacketBufferRxd( kal_uint8 app, kal_uint8 *data, kal_uint16 len, kal_uint16 prot );
void nspePassPacketDataToHost( kal_uint8 app );
void nspePerformMqueueFlowCtl( void );
void nspeQueuePacket( kal_uint8 app, kal_uint8 *data, kal_uint16 len, kal_uint16 prot );
void nspeDequeuePacket( kal_uint8 app, kal_uint8 *data, kal_uint16 *len, kal_uint16 *prot );
void nspePassIpDataToPacket( void );
void nspePacketInit( void );
#else
#define nspePacketBufferRxd( a,b,c,d )
#define nspeQueuePacket( a,b,c,d )
#define nspeDequeuePacket( a,b,c,d )
#define nspePassIpDataToPacket()
#endif /* WeDoPacketMode */
/* functions support network layer */
void umReConnected(void);
struct scb* nspeAllocScb(void);
struct scb* nspeGetScbBySap(kal_uint8 sap);
#endif /* _7074STAT_H_ */