line source
/*
+-----------------------------------------------------------------------------
| Project : GSM-PS
| Modul : dti_conn_mng.h
+-----------------------------------------------------------------------------
| Copyright 2002 Texas Instruments Berlin, AG
| All rights reserved.
|
| This file is confidential and a trade secret of Texas
| Instruments Berlin, AG
| The receipt of or possession of this file does not convey
| any rights to reproduce or disclose its contents or to
| manufacture, use, or sell anything it may describe, in
| whole, or in part, without the specific written consent of
| Texas Instruments Berlin, AG.
+-----------------------------------------------------------------------------
| Purpose : Header file for DTI Connection Manager
+-----------------------------------------------------------------------------
*/
#ifndef DTI_CONN_H
#define DTI_CONN_H
#define DTI_DTI_ID_NOTPRESENT NOT_PRESENT_8BIT
#define DTI_TUPLE_NO_NOTPRESENT NOT_PRESENT_8BIT
#define DTI_LINK_ID_NOTPRESENT NOT_PRESENT_32BIT
#define NUM_OF_PEERS 2
#define MAX_DTI_CONN_TUPLES 5 /* max. number of tuples in an end-to-end connection */
#define MAX_DTI_CONN_ENTIES_PER_CHANNEL MAX_DTI_CONN_TUPLES+1
#define MAX_DTI_CONN_CHANNELS 32 /* can be max 32 because of tst_id, max number of end-to-end connections */
#define MAX_DTI_CONN_LINK_IDS MAX_DTI_CONN_TUPLES*MAX_DTI_CONN_CHANNELS /* max number of link ids */
#define EXTRACT_TUPLE_NO( link_id )\
(UBYTE)(link_id & 0x000000FF)
#define EXTRACT_DTI_ID( link_id )\
(UBYTE)((link_id & 0x0000FF00) >> 8)
#define DTI_CONNECT 0x00
#define DTI_DISCONNECT 0x01
typedef ULONG T_DTI_CONN_LINK_ID;
typedef enum
{
DTI_ENTITY_INVALID = -1,
#ifdef GPRS
DTI_ENTITY_SNDCP,
#endif
DTI_ENTITY_ACI,
DTI_ENTITY_UART,
DTI_ENTITY_PPPS,
DTI_ENTITY_PPPC,
DTI_ENTITY_L2R,
DTI_ENTITY_T30,
DTI_ENTITY_IP,
DTI_ENTITY_TRA,
DTI_ENTITY_UDP,
#ifdef FF_GPF_TCPIP
DTI_ENTITY_TCPIP,
#endif
DTI_ENTITY_WAP,
DTI_ENTITY_MTST,
DTI_ENTITY_BLUETOOTH,
DTI_ENTITY_SIM,
DTI_ENTITY_NULL,
DTI_ENTITY_AAA,
#ifdef GPRS
DTI_ENTITY_PKTIO,
#endif
DTI_ENTITY_PSI,
DTI_ENTITY_MAX
} T_DTI_ENTITY_ID;
typedef struct
{
CHAR *name;
T_DTI_ENTITY_ID id;
} T_DTI_ENTITY_NAME;
/*
* the XXX_NAME are defined in custom.h and gprs.h
*/
static const T_DTI_ENTITY_NAME dti_entity_name[] =
{
#ifdef GPRS
{SNDCP_NAME, DTI_ENTITY_SNDCP },
#endif
{ACI_NAME, DTI_ENTITY_ACI },
{UART_NAME, DTI_ENTITY_UART },
{PPP_NAME, DTI_ENTITY_PPPS },
{PPP_NAME, DTI_ENTITY_PPPC },
{L2R_NAME, DTI_ENTITY_L2R },
{T30_NAME, DTI_ENTITY_T30 },
{IP_NAME, DTI_ENTITY_IP },
{TRA_NAME, DTI_ENTITY_TRA },
{UDP_NAME, DTI_ENTITY_UDP },
#ifdef FF_GPF_TCPIP
{TCPIP_NAME, DTI_ENTITY_TCPIP },
#endif
{WAP_NAME, DTI_ENTITY_WAP },
{MTST_NAME, DTI_ENTITY_MTST },
{BTI_NAME, DTI_ENTITY_BLUETOOTH },
{SIM_NAME, DTI_ENTITY_SIM },
{NULL_NAME, DTI_ENTITY_NULL },
{RIV_NAME, DTI_ENTITY_AAA }, /* entity AAA is an AT cmd gate only, but for DTI it is "RIV" */
#ifdef GPRS
{PKTIO_NAME, DTI_ENTITY_PKTIO },
#endif
{PSI_NAME, DTI_ENTITY_PSI},
{"", DTI_ENTITY_MAX }
};
typedef enum
{
SPLIT = 0,
APPEND
} T_DTI_CONN_MODE;
typedef enum {
DTI_CONN_STATE_UNKNOWN = -1,
DTI_CONN_STATE_CONNECTING,
DTI_CONN_STATE_CONNECTED,
DTI_CONN_STATE_DISCONNECTING,
DTI_CONN_STATE_DISCONNECTED,
DTI_CONN_STATE_ERROR
} T_DTI_CONN_STATE;
typedef enum
{
DTI_OK,
DTI_ERROR
} T_DTI_CONN_RESULT;
typedef struct {
T_DTI_CONN_STATE state;
T_DTI_ENTITY_ID ent_id;
} T_DTI_CONN_PEER;
typedef struct {
UBYTE tuple_no;
T_DTI_CONN_STATE state;
T_DTI_CONN_PEER peers[NUM_OF_PEERS];
} T_DTI_CONN_TUPLE;
typedef BOOL T_DTI_CONN_CB (UBYTE dti_id,
T_DTI_CONN_STATE result_type );
typedef BOOL T_DTI_CONN_MNG_ENT_CB( T_DTI_CONN_LINK_ID link_id,
T_DTI_ENTITY_ID entity_id,
T_DTI_ENTITY_ID peer_entity_id,
UBYTE dti_conn);
typedef struct {
BOOL erase_channel;
UBYTE dti_id;
UBYTE num_of_conns;
T_DTI_CONN_CB* conn_cb;
T_DTI_CONN_TUPLE tuple_list[MAX_DTI_CONN_TUPLES];
T_DTI_CONN_STATE state;
} T_DTI_CONN_CHANNEL;
typedef struct {
T_DTI_CONN_MNG_ENT_CB* mng_ent_cb;
T_DTI_CONN_CB* conn_cb;
UBYTE num_entities;
T_DTI_ENTITY_ID entity_list_buf[MAX_DTI_CONN_ENTIES_PER_CHANNEL];
} T_DTI_CONN_PARAMS;
EXTERN T_DTI_CONN_LINK_ID dti_conn_compose_link_id ( UBYTE dummy,
UBYTE assoc,
UBYTE dti_id,
UBYTE tuple_no);
EXTERN void dti_conn_init( T_DTI_CONN_MNG_ENT_CB* mng_ent_cb );
EXTERN UBYTE dti_conn_new( UBYTE dti_id );
EXTERN void dti_conn_erase_entry( UBYTE dti_id );
EXTERN BOOL dti_conn_est_dpath( UBYTE dti_id,
T_DTI_ENTITY_ID* entity_list,
UBYTE num_entities,
T_DTI_CONN_MODE mode,
T_DTI_CONN_CB* cb );
EXTERN BOOL dti_conn_close_dpath( UBYTE dti_id );
EXTERN BOOL dti_conn_is_dti_channel_connected( T_DTI_ENTITY_ID ent_id, UBYTE dti_id );
EXTERN BOOL dti_conn_is_dti_channel_disconnected( UBYTE dti_id );
EXTERN void dti_conn_entity_connected( T_DTI_CONN_LINK_ID link_id,
T_DTI_ENTITY_ID ent_id,
T_DTI_CONN_RESULT result );
EXTERN void dti_conn_entity_disconnected( T_DTI_CONN_LINK_ID link_id,
T_DTI_ENTITY_ID ent_id );
EXTERN void dti_conn_close_all_connections ( );
#endif /* DTI_CONN_H */