diff src/condat/com/include/dti.h @ 4:6e457872f745

src/condat: hybrid import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Jul 2018 08:01:56 +0000
parents
children 802c23d09f6f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/condat/com/include/dti.h	Sun Jul 15 08:01:56 2018 +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 */