FreeCalypso > hg > fc-magnetite
diff src/g23m-fad/udp/udp.h @ 174:90eb61ecd093
src/g23m-fad: initial import from TCS3.2/LoCosto
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 12 Oct 2016 05:40:46 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/g23m-fad/udp/udp.h Wed Oct 12 05:40:46 2016 +0000 @@ -0,0 +1,365 @@ +/* ++---------------------------------------------------------------------------- +| Project: GSM-WAP (8444) +| Modul: UDP ++---------------------------------------------------------------------------- +| 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 Protocol Stack Entity +| Internet Protocol ++---------------------------------------------------------------------------- +*/ + +#ifndef UDP_H +#define UDP_H + +/*-------------------------------------------------------------------------*/ + +#define UDP_SINGLE_LAYER 0 + +/* Information for DTI library */ + +#define UDP_DTI_DEF_INSTANCE UDP_SINGLE_LAYER + +#define UDP_DTI_LL_INTERFACE 0 /* Lower layer interface */ +#define UDP_DTI_HL_INTERFACE 1 /* Higher layer interface */ + +#define UDP_DTI_DEF_CHANNEL 0 +#define UDP_DTI_INIT_QUEUE_SIZE 0 + +#include "ip_udp.h" + +/*---- Types --------------------------------------------------------------*/ + +/* Instance management */ + +#ifdef OPTION_MULTI_INSTANCE + #define GET_INSTANCE(p) (udp_data_base + p->custom.route.inst_no) + #define UDP_INSTANCES MAX_INSTANCES +#else + #define GET_INSTANCE(p) (udp_data_base + UDP_SINGLE_LAYER) + #define UDP_INSTANCES 1 +#endif + +/*---- Constants ----------------------------------------------------------*/ + +/* Constants for the UDP packet */ + +#define MIN_HEADER_LEN 5 /* Min IP header length in 32 bit words */ + +/* Errors */ +#define NO_ERROR 0 /* No errors found */ + +#define LEN_PSEUDO_HEADER_B 12 /* Length of pseudo header in bytes */ + +/* States of higher layer port */ + +#define PORT_DOWN 0 +#define PORT_BOUND 1 +#define PORT_ACTIVE 2 + +/* States for error downlink */ + +#define STATE_DL_NO_ERROR 0 /* No errors */ +#define STATE_DL_ERROR 1 /* We have one or more errors */ + +/* State index for the entity process/services */ + +#define KER ker. +#define HILA hila. +#define LOLA lola. + +/* States of the entity process kernel */ + +#define DEACTIVATED 0 /* */ +#define ACTIVE_NC 1 /* Not configured */ +#define CONNECTED 2 /* */ + +/* States for send and receive packet services */ + +#define DOWN 0 /* State not active */ +#define CONNECTING 1 /* State is connecting */ +#define IDLE 2 /* State no incoming signals */ +#define SEND 3 /* State sending packet */ +#define WAIT 4 /* State waiting for packet */ + +#ifndef NTRACE + /* For trace purposes */ + #define SERVICE_NAME_KER "KER" + #define SERVICE_NAME_HILA "HILA" + #define SERVICE_NAME_LOLA "LOLA" +#endif + +/*---- TYPES --------------------------------------------------------------*/ + +/* Later on included between WAP and UDP - To do */ + +typedef struct +{ + UBYTE src_ip[4]; + UBYTE des_ip[4]; + UBYTE src_port[2]; + UBYTE des_port[2]; +} T_SRC_DES; + +typedef struct +{ + UBYTE state; +#ifndef NTRACE + char * name; + char * state_name; +#endif + UBYTE dti_state; + ULONG link_id; + BOOL drop_packet; /* TRUE: not sending packet to lower layer */ + char entity_name [UDPA_ENTITY_NAME_LEN]; + + T_DTI2_DATA_REQ * dti_data_req; /* Data primitive to lower layer */ +} T_HILA; + +typedef struct +{ + UBYTE state; +#ifndef NTRACE + char * name; + char * state_name; +#endif + UBYTE dti_state; + ULONG link_id; + BOOL drop_packet; /* TRUE: not sending packet to higher layer */ + char entity_name [UDPA_ENTITY_NAME_LEN]; + + UBYTE state_err; /* State variable for errors */ + ULONG src_addr; /* Source address for DL datagram */ + ULONG dst_addr; /* Destination address for DL datagram */ + USHORT dst_port; /* Destination port for DL datagram */ + USHORT src_port; /* Source port for DL datagram */ + + T_DTI2_DATA_IND * dti_data_ind; /* We are sending data to higher layer */ +} T_LOLA; + +typedef struct +{ + UBYTE state; +#ifndef NTRACE + char * name; + char * state_name; +#endif + BOOL send_icmp; /* We send an ICMP message */ + UBYTE port_state; /* State of the source port */ + USHORT src_port; /* Source port */ + USHORT dst_port; /* Destination port */ + ULONG src_addr; /* Source address in the IP packet */ + ULONG dst_addr; /* Destination IP address */ + + T_DTI2_DATA_REQ * dti_data_req_icmp; /* For ICMP messages */ +} T_KER; + +/* Entity data for each UDP instance */ + +typedef struct +{ + T_HILA hila; /* Data for each higher layer */ + T_LOLA lola; /* Data for each lower layer */ + T_KER ker; +} T_UDP_DATA; + +/*---- EXPORT -------------------------------------------------------------*/ + +/* Instance data base */ + +extern T_UDP_DATA udp_data_base [], * udp_data; + +/* The DTI data base is allocated in function dti_init() */ + +extern DTI_HANDLE udp_hDTI; + +#define ENTITY_DATA udp_data + +/*---- Prototypes ---------------------------------------------------------*/ + +/* Prototypes + * + * UDP KERNEL + * + * KERNEL primitive processing */ + +#ifdef OPTION_MULTITHREAD + + #define ker_udp_shutdown_res _ENTITY_PREFIXED (ker_udp_shutdown_res) + #define ker_udp_bind_req _ENTITY_PREFIXED (ker_udp_bind_req) + #define ker_udp_closeport_req _ENTITY_PREFIXED (ker_udp_closeport_req) + #define ker_udp_error_res _ENTITY_PREFIXED (ker_udp_error_res) + #define ker_udpa_dti_req _ENTITY_PREFIXED (ker_udpa_dti_req) + #define ker_udpa_config_req _ENTITY_PREFIXED (ker_udpa_config_req) + + #define sig_dti_ker_connection_opened_ll_ind \ + _ENTITY_PREFIXED (sig_dti_ker_connection_opened_ll_ind) + #define sig_dti_ker_connection_opened_hl_ind \ + _ENTITY_PREFIXED (sig_dti_ker_connection_opened_hl_ind) + #define sig_dti_ker_connection_closed_ll_ind \ + _ENTITY_PREFIXED (sig_dti_ker_connection_closed_ll_ind) + #define sig_dti_ker_connection_closed_hl_ind \ + _ENTITY_PREFIXED (sig_dti_ker_connection_closed_hl_ind) + #define sig_dti_ker_data_received_ll_ind \ + _ENTITY_PREFIXED (sig_dti_ker_data_received_ll_ind) + #define sig_dti_ker_tx_buffer_ready_hl_ind \ + _ENTITY_PREFIXED (sig_dti_ker_tx_buffer_ready_hl_ind) + #define sig_dti_ker_tx_buffer_full_hl_ind \ + _ENTITY_PREFIXED (sig_dti_ker_tx_buffer_full_hl_ind) + #define sig_dti_ker_data_received_hl_ind \ + _ENTITY_PREFIXED (sig_dti_ker_data_received_hl_ind) + #define sig_dti_ker_tx_buffer_ready_ll_ind \ + _ENTITY_PREFIXED (sig_dti_ker_tx_buffer_ready_ll_ind) + #define sig_dti_ker_tx_buffer_full_ll_ind \ + _ENTITY_PREFIXED (sig_dti_ker_tx_buffer_full_ll_ind) + + #define ker_ip_addr_cnf _ENTITY_PREFIXED (ker_ip_addr_cnf) + #define udp_build_packet _ENTITY_PREFIXED (udp_build_packet) + #define init_udp _ENTITY_PREFIXED (init_udp) + #define deinit_udp _ENTITY_PREFIXED (deinit_udp) + + #define pei_dti_dti_connect_req \ + _ENTITY_PREFIXED (pei_dti_dti_connect_req) + #define pei_dti_dti_connect_cnf \ + _ENTITY_PREFIXED (pei_dti_dti_connect_cnf) + #define pei_dti_dti_connect_ind \ + _ENTITY_PREFIXED (pei_dti_dti_connect_ind) + #define pei_dti_dti_connect_res \ + _ENTITY_PREFIXED (pei_dti_dti_connect_res) + #define pei_dti_dti_disconnect_req \ + _ENTITY_PREFIXED (pei_dti_dti_disconnect_req) + #define pei_dti_dti_disconnect_ind \ + _ENTITY_PREFIXED (pei_dti_dti_disconnect_ind) + #define pei_dti_dti_ready_ind \ + _ENTITY_PREFIXED (pei_dti_dti_ready_ind) + #define pei_dti_dti_data_req \ + _ENTITY_PREFIXED (pei_dti_dti_data_req) + #define pei_dti_dti_data_ind \ + _ENTITY_PREFIXED (pei_dti_dti_data_ind) + #define pei_dti_dti_getdata_req \ + _ENTITY_PREFIXED (pei_dti_dti_getdata_req) + #define pei_sig_callback \ + _ENTITY_PREFIXED (pei_sig_callback) + + #ifdef _SIMULATION_ + #define pei_dti_dti_data_test_req \ + _ENTITY_PREFIXED (pei_dti_dti_data_test_req) + #define pei_dti_dti_data_test_ind \ + _ENTITY_PREFIXED (pei_dti_dti_data_test_ind) + #endif + +#endif + +USHORT inet_checksum (UBYTE * block, USHORT len); +USHORT desc_checksum ( + T_desc_list2 * dlist, + USHORT start_offset, + ULONG start_value +); +ULONG partial_checksum (UBYTE * block, USHORT len); + +/* UDP SAP */ + +void ker_udp_shutdown_res (T_UDP_SHUTDOWN_RES * udp_shutdown_res); +void ker_udp_bind_req (T_UDP_BIND_REQ * udp_bind_req); +void ker_udp_closeport_req (T_UDP_CLOSEPORT_REQ * udp_closeport_req); +void ker_udp_error_res (T_UDP_ERROR_RES * udp_error_res); + +/* UDPA SAP */ + +void ker_udpa_dti_req (T_UDPA_DTI_REQ * udpa_dti_req); +void ker_udpa_config_req (T_UDPA_CONFIG_REQ * udpa_config_req); + +/* Wrapping functions for dtilib primitives */ + +void pei_dti_dti_connect_req (T_DTI2_CONNECT_REQ * dti_connect_req); +void pei_dti_dti_connect_cnf (T_DTI2_CONNECT_CNF * dti_connect_cnf); +void pei_dti_dti_connect_ind (T_DTI2_CONNECT_IND * dti_connect_ind); +void pei_dti_dti_connect_res (T_DTI2_CONNECT_RES * dti_connect_res); + +void pei_dti_dti_disconnect_req (T_DTI2_DISCONNECT_REQ * dti_disconnect_req); +void pei_dti_dti_disconnect_ind (T_DTI2_DISCONNECT_IND * dti_disconnect_ind); + +void pei_dti_dti_data_req (T_DTI2_DATA_REQ * dti_data_req); +void pei_dti_dti_getdata_req (T_DTI2_GETDATA_REQ * dti_getdata_req); +void pei_dti_dti_data_ind (T_DTI2_DATA_IND * dti_data_ind); +void pei_dti_dti_ready_ind (T_DTI2_READY_IND * dti_ready_ind); + +#ifdef _SIMULATION_ + void pei_dti_dti_data_test_req (T_DTI2_DATA_TEST_REQ * dti_data_test_req); + void pei_dti_dti_data_test_ind (T_DTI2_DATA_TEST_IND * dti_data_test_ind); +#endif + +/* UP DTI */ + +void sig_dti_ker_connection_opened_hl_ind (); +void sig_dti_ker_connection_closed_hl_ind (); +void sig_dti_ker_tx_buffer_ready_hl_ind (); +void sig_dti_ker_tx_buffer_full_hl_ind (); +void sig_dti_ker_data_received_hl_ind (T_DTI2_DATA_REQ * dti_data_req); + +/* DN DTI */ + +void sig_dti_ker_connection_opened_ll_ind (); +void sig_dti_ker_connection_closed_ll_ind (); +void sig_dti_ker_tx_buffer_ready_ll_ind (); +void sig_dti_ker_tx_buffer_full_ll_ind (); +void sig_dti_ker_data_received_ll_ind (T_DTI2_DATA_IND * dti_data_ind); + +/* UL IP SAP */ + +void ker_ip_addr_cnf (T_IP_ADDR_CNF * ip_addr_cnf); + +/* DTILIB callback function */ + +void pei_sig_callback ( + U8 instance, + U8 interfac, + U8 channel, + U8 reason, + T_DTI2_DATA_IND * dti_data_ind +); + +/* Functions in udp_kerf.c */ + +void udp_build_packet (BOOL hila, UBYTE to_do); + +void init_udp (void); +void deinit_udp (void); + +/* Communication handles */ + +#ifdef OPTION_MULTITHREAD + #define hCommACI _ENTITY_PREFIXED (hCommACI) + #define hCommLL _ENTITY_PREFIXED (hCommLL) + #define hCommHL _ENTITY_PREFIXED (hCommHL) +#endif + +extern T_HANDLE hCommACI; /* ACI communication */ +extern T_HANDLE hCommLL; /* LL communication */ +extern T_HANDLE hCommHL; /* HL communication */ +extern T_HANDLE udp_handle; + +#ifndef NCONFIG + #ifdef OPTION_MULTITHREAD + #define partab _ENTITY_PREFIXED (partab) + #endif + extern KW_DATA partab []; +#endif + +/*-------------------------------------------------------------------------*/ + +#endif /* UDP_H */ + +/*-------------------------------------------------------------------------*/ +