FreeCalypso > hg > fc-magnetite
diff src/condat3/com/include/dti.h @ 18:c8bd5a927942
src/condat3: import of "condat" tree from TCS3.2, pruned
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 27 Sep 2016 21:25:36 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/condat3/com/include/dti.h Tue Sep 27 21:25:36 2016 +0000 @@ -0,0 +1,453 @@ +/* ++----------------------------------------------------------------------------- +| Project : DTILIB +| Modul : DTI ++----------------------------------------------------------------------------- +| 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 : Definitions for the Data Transmission Interface, DTI. +| Includefile for every entity using DTILIB. ++----------------------------------------------------------------------------- +*/ +/* + * Version 1.6 + */ + +/**********************************************************************************/ + +/* NOTE: + * there is a MACRO definition for "interface" in objbase.h + * which says + * #define interface struct + * and thus would collide with the name "interface" + * as a quick fix, all "interface" have been changed to "interfac" + * in the dtilib project. This should not affect any external files + */ + +/**********************************************************************************/ + +#ifndef DTI_H +#define DTI_H + +/**********************************************************************************/ + +#if defined (DTI2) +/* + * Use SAP DTI2.DOC + */ +#include "P_DTI2.h" +#else +/* + * Make this code compatible to SAP dti.doc. + */ +#include "P_DTI.h" + +#define T_DTI2_DATA_IND T_DTI_DATA_IND +#define T_DTI2_DATA_REQ T_DTI_DATA_REQ +#define T_DTI2_READY_IND T_DTI_READY_IND +#define T_DTI2_GETDATA_REQ T_DTI_GETDATA_REQ +#define T_DTI2_DATA_TEST_REQ T_DTI_DATA_TEST_REQ +#define T_DTI2_DATA_TEST_IND T_DTI_DATA_TEST_IND + +/* + * By use the SAP DTI.DOC and the DTI2.DOC there could be double + * defines. So an undef is used. + */ + +#ifdef DTI2_DATA_IND + #undef DTI2_DATA_IND +#endif +#ifdef DTI2_DATA_REQ + #undef DTI2_DATA_REQ +#endif +#ifdef DTI2_READY_IND + #undef DTI2_READY_IND +#endif +#ifdef DTI2_GETDATA_REQ + #undef DTI2_GETDATA_REQ +#endif +#ifdef DTI2_DATA_TEST_REQ + #undef DTI2_DATA_TEST_REQ +#endif +#ifdef DTI2_DATA_TEST_IND + #undef DTI2_DATA_TEST_IND +#endif + +/* + * For calling the primitives over the macros. + */ +#define DTI2_DATA_IND DTI_DATA_IND +#define DTI2_DATA_REQ DTI_DATA_REQ +#define DTI2_READY_IND DTI_READY_IND +#define DTI2_GETDATA_REQ DTI_GETDATA_REQ +#define DTI2_DATA_TEST_REQ DTI_DATA_TEST_REQ +#define DTI2_DATA_TEST_IND DTI_DATA_TEST_IND + +/* + * Version related to DTI SAP 1. + */ + +#define T_desc2 T_desc +#define T_desc_list2 T_desc_list +#define desc_list2 desc_list + +#endif + +/********************************************************************************** + * Externally visible dtilib defines + **********************************************************************************/ +/* + * Reason parameter for the callback function + */ +#define DTI_NO_SIGNAL 0 /* No signal shall be sended */ +#define DTI_REASON_CONNECTION_OPENED 1 /* DTI connection opened or reseted */ +#define DTI_REASON_CONNECTION_CLOSED 2 /* DTI connection closed */ +#define DTI_REASON_DATA_RECEIVED 3 /* UL Data primitive received */ +#define DTI_REASON_TX_BUFFER_FULL 4 /* DTI send-queue full */ +#define DTI_REASON_TX_BUFFER_READY 5 /* DTI DTI send-queue no longer full */ + +/* + * Connection states + */ +#define DTI_CLOSED 0 /* DTI connection is not established */ +#define DTI_SETUP 1 /* Waiting for connection_opened signal from DTILIB */ +#define DTI_IDLE 2 /* DTI connection is opened */ + +/* + * dti_open - direction parameter + * + * to lower layer: send request primitives (_REQ / _CNF) + * to higher layer: send indications (_IND / _RES) + * null link: do not send anything + */ +#define DTI_CHANNEL_TO_HIGHER_LAYER 0x00 +#define DTI_CHANNEL_TO_LOWER_LAYER 0x01 +#define DTI_NULL_LINK 0x02 /* null link (null device) */ + +/* + * dti_open - link_options parameter + * + * the 0 is legacy from previous versions - upon reception of this value + * the queue-length parameter has to be used to find out about desired + * behaviour for the send queue + * #define FLOW_CNTRL_ENABLED 0 -- Flow control enabled + */ +#define DTI_FLOW_CNTRL_DISABLED 1 /* Flow control entirely disabled */ +/* + * Modes for handling of the send queue + * + * Queue is not used + */ +#define DTI_QUEUE_UNUSED 2 +/* + * Queue without size limitation + */ +#define DTI_QUEUE_UNBOUNDED 3 +/* + * Notify entity when queue is full, + * afterwards discard oldest piece of data upon arrival of new data packets + */ +#define DTI_QUEUE_RM_FIFO 4 +/* + * Notify entity when queue is full, + * afterwards discard newly arriving data packets + */ +#define DTI_QUEUE_RM_LIFO 5 +/* + * Notify entity when queue is full but keep all buffered data + */ +#define DTI_QUEUE_WATERMARK 6 + +/* + * dti_init - entity_options (flags!) + */ +#define DTI_DEFAULT_OPTIONS 0x0 +#define DTI_NO_TRACE (1<<0) + +/* + * Some parameter which are used for initialization. + */ +#define D_NO_DATA_BASE NULL +#define D_NO_INSTANCE 0xFF +#define D_NO_INTERFACE 0xFF +#define D_NO_CHANNEL_NR 0xFF + +/********************************************************************************** + * Obsolete dtilib defines + * + * NOTE: use of these defines is STRONGLY DISCOURAGED since their functionality + * is no longer needed and they will be removed some time in the future + * + **********************************************************************************/ + +/* + * NOTE: this is _obsolete_ and maintained only for compatibility reasons!! + * (see link_options parameter) + */ +#define DTI_QUEUE_DISABLED 0 /* Queue not used */ +#define DTI_QUEUE_UNLIMITED 255 /* Queue without limitations in size */ + +/* + * Home and neighbor entity. + * NOTE: this is _obsolete_ and maintained only for compatibility reasons!! + * instead use the defines + * DTI_CHANNEL_TO_HIGHER_LAYER and + * DTI_CHANNEL_TO_LOWER_LAYER + */ +#define HOME TRUE /* Indicate the entity or instance which send dti_connect_req */ +#define NEIGHBOR FALSE /* Indicate the entity or instance which send dti_connect_ind */ + +/* + * Type of the link + */ + +#define ENTITY_LINK 0x01 /* normal link with an entity */ +#define NULL_LINK 0x02 /* null link (null device) */ +#define RIVIERA_BT_LINK 0x03 /* link to BT riviera entity */ +#define RIVIERA_ATP_LINK 0x04 /* link to RNET riviera entity */ + +/* + * Communication type + * NOTE: this is _obsolete_ and maintained only for compatibility reasons!! + * (see link_options parameter) + */ +#define FLOW_CNTRL_ENABLED 0 /* Flow control enabled */ +#define FLOW_CNTRL_DISABLED 1 /* Flow control disabled */ + +/* + * Connection states + * NOTE: this is _obsolete_ and maintained only for compatibility reasons!! + * these states should be defined in the entities or the prefixec versiones + * above should be used + */ +#define CLOSED 0 /* DTI connection is not established */ +#define SETUP 1 /* Waiting for connection_opened signal from DTILIB */ +#define IDLE 2 /* DTI connection is opened */ + +/* + * Entity states for sending + * NOTE: this is _obsolete_ and maintained only for compatibility reasons!! + * these states should be defined in the entity itself + * to ensure proper prefixing + */ +#define TX_IDLE 3 /* The entity must not send data primitives (initial state) */ +#define TX_READY 4 /* The entity can send data primitives */ + +/* + * Entity states for receiving + * NOTE: this is _obsolete_ and maintained only for compatibility reasons!! + * these states should be defined in the entity itself + * to ensure proper prefixing + */ +#define RX_IDLE 5 /* Data reception stopped (initial state) */ +#define RX_READY 6 /* Ready to receive data */ + +#define ENTITY_NAME_LEN 0x6 + +#define MAX_ATP_LINKS 0x4 /* max. number of links towards the RIV/ATP environment, + set by AAA*/ +/* + * Value constants for capability + */ +#define DTI_CPBLTY_NO 0x0 /* used as initial value = no capabilities */ +#define DTI_CPBLTY_CMD 0x1 /* AT cmd capability */ +#define DTI_CPBLTY_PKT 0x2 /* packet capability */ +#define DTI_CPBLTY_SER 0x4 /* serial capability */ + +/********************************************************************************** + * typedefs + **********************************************************************************/ + +/* + * Data Base for each entity. + */ + +typedef struct +{ + T_HANDLE handle; /* GPF task handle */ + U8 max_links; /* Number of links in the link list + - started from the pointer first_link */ + U32 entity_options; /* user specified entity_options */ + void ((*sig_callback) /* Callback function */ + (U8 instance, /* Instance of the entity */ + U8 interfac, /* Interface of the entity */ + U8 channel, /* Channel */ + U8 reason, /* Reason for the callback */ + T_DTI2_DATA_IND *dti_data_ind)); /* Data primitive ul */ +#ifdef FF_TCP_IP + char* own_name; /* name of the own entity, held by AAA */ + U16 entity_id_p; /* entity id within ATP, the same for all + entities and AAA */ +#endif + U32 first_link; /* Pointer to link table */ +} DTI_DATA_BASE; + +typedef DTI_DATA_BASE * DTI_HANDLE; /* For calling the data base */ + + +/* + * Link Table, parameter for each DTI connection. + * For detail information - please see the MSC DTILIB.DOC + */ +typedef struct +{ + U32 link_id; /* Identity for the link communication */ + U8 direction; /* Direction for the link communication */ + U32 version; /* DTI Version */ + U8 instance; /* Instance of the entity */ + U8 interfac; /* Selected interface */ + U8 channel; /* Channel number */ + U32 link_options; /* type of flow control, queueing, .. */ + T_HANDLE link_handle; /* Handle for the communication channel */ + U8 queue_size; /* DTI queue size */ + U8 queue_len; /* length of the queue */ + T_DTI2_DATA_IND *dti_data_ind; /* DTI data primitive */ + U8 connect_state; /* State for connect */ + U8 rx_state; /* State for receive */ + U8 tx_state; /* State for send */ + U32 next_link; /* Pointer to next DTI_LINK struct, last */ + /* linkpointer = NULL */ + U8 link_type; /* indicate Riviera, NULL or GPF link */ +#ifdef FF_TCP_IP + U16 ul_next_atp_data; /* data to be got from ATP */ + U8 atp_tx_state; /* flow state of ATP */ + U8 dti_id; /* ACI identity for the link */ + DTI_DATA_BASE* entity_db; /* pointer back to home database */ + UINT16 port_nb; /* port number, if linked towards RIV */ +#endif + +} DTI_LINK; + +/********************************************************************************** + * Prototypes for DTILIB + **********************************************************************************/ + +EXTERN DTI_HANDLE dti_init( + U8 maximum_links, + T_HANDLE handle, + U32 entity_options, + void (sig_callback( + U8 instance, + U8 interfac, + U8 channel, + U8 reason, + T_DTI2_DATA_IND *dti_data_ind + ) ) + ); + +EXTERN void dti_deinit( DTI_HANDLE hDTI); + +EXTERN BOOL dti_open( + DTI_HANDLE hDTI, + U8 instance, + U8 interfac, + U8 channel, + U8 queue_size, + U8 direction, + U32 link_options, + U32 version, + U8 *neighbor_entity, + U32 link_id + ); + +EXTERN BOOL dti_resolve_link_id( + DTI_HANDLE hDTI, + U8 instance, + U8 interfac, + U8 channel, + U32 *link_id + ); + +EXTERN void dti_close( + DTI_HANDLE hDTI, + U8 instance, + U8 interfac, + U8 channel, + BOOL flush + ); + +EXTERN void dti_start( DTI_HANDLE hDTI, U8 instance, U8 interfac, U8 channel); + +EXTERN void dti_stop( DTI_HANDLE hDTI, U8 instance, U8 interfac, U8 channel); + +EXTERN void dti_send_data( + DTI_HANDLE hDTI, + U8 instance, + U8 interfac, + U8 channel, + T_DTI2_DATA_IND *dti_data_ind + ); + +EXTERN void mfree_desc(DTI_HANDLE hDTI, T_desc_list2 * desc_list2); + +EXTERN BOOL dti_tx_buffer_status( + DTI_HANDLE hDTI, + U8 instance, + U8 interfac, + U8 channel, + U8 *queue_len + ); + +/********************************************************************************** + * Functions in ip_kerp.c + **********************************************************************************/ + +#if defined (DTI2) +EXTERN GLOBAL void dti_dti_connect_req (DTI_HANDLE hDTI, + T_DTI2_CONNECT_REQ *dti_connect_req); + +EXTERN GLOBAL void dti_dti_disconnect_req (DTI_HANDLE hDTI, + T_DTI2_DISCONNECT_REQ *dti_disconnect_req); + +EXTERN GLOBAL void dti_dti_disconnect_ind (DTI_HANDLE hDTI, + T_DTI2_DISCONNECT_IND *dti_disconnect_ind); + +EXTERN GLOBAL void dti_dti_connect_cnf (DTI_HANDLE hDTI, + T_DTI2_CONNECT_CNF *dti_connect_cnf); + +EXTERN GLOBAL void dti_dti_connect_res (DTI_HANDLE hDTI, + T_DTI2_CONNECT_RES *dti_connect_res); + +EXTERN GLOBAL void dti_dti_connect_ind (DTI_HANDLE hDTI, + T_DTI2_CONNECT_IND *dti_connect_ind); +#endif + +EXTERN GLOBAL void dti_dti_ready_ind (DTI_HANDLE hDTI, + T_DTI2_READY_IND *dti_ready_ind); + +EXTERN GLOBAL void dti_dti_data_req (DTI_HANDLE hDTI, + T_DTI2_DATA_REQ *dti_data_req); + +EXTERN GLOBAL void dti_dti_getdata_req (DTI_HANDLE hDTI, + T_DTI2_GETDATA_REQ *dti_getdata_req); + +EXTERN GLOBAL void dti_dti_data_ind (DTI_HANDLE hDTI, + T_DTI2_DATA_IND *dti_data_ind); + +/********************************************************************************** + * Test functions used in the windows operating system. + **********************************************************************************/ + +#if defined (_SIMULATION_) +EXTERN void dti_dti_data_test_ind (DTI_HANDLE hDTI, + T_DTI2_DATA_TEST_IND *dti_data_test_ind); + +EXTERN void dti_dti_data_test_req (DTI_HANDLE hDTI, + T_DTI2_DATA_TEST_REQ *dti_data_test_req); + +EXTERN BOOL dti_make_new_desc (DTI_HANDLE hDTI, + T_desc2 **p_desc_new, + U16 malloc_len, + BOOL buff_init_0); + +#endif /* _SIMULATION_ */ +#endif /* DTI_H */