FreeCalypso > hg > fc-tourmaline
view src/g23m-fad/ppp/ppp.h @ 303:f76436d19a7a default tip
!GPRS config: fix long-standing AT+COPS chance hanging bug
There has been a long-standing bug in FreeCalypso going back years:
sometimes in the AT command bring-up sequence of an ACI-only MS,
the AT+COPS command would produce only a power scan followed by
cessation of protocol stack activity (only L1 ADC traces), instead
of the expected network search sequence. This behaviour was seen
in different FC firmware versions going back to Citrine, and seemed
to follow some law of chance, not reliably repeatable.
This bug has been tracked down and found to be specific to !GPRS
configuration, stemming from our TCS2/TCS3 hybrid and reconstruction
of !GPRS support that was bitrotten in TCS3.2/LoCosto version.
ACI module psa_mms.c, needed only for !GPRS, was missing in the TCS3
version and had to be pulled from TCS2 - but as it turns out,
there is a new field in the MMR_REG_REQ primitive that needs to be
set correctly, and that psa_mms.c module is the place where this
initialization needed to be added.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 08 Jun 2023 08:23:37 +0000 |
parents | fa8dc04885d8 |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | Project : | Modul : +----------------------------------------------------------------------------- | 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 | Point-to-Point Protocol (PPP) +----------------------------------------------------------------------------- */ #ifndef PPP_H #define PPP_H /*==== MACROS ======================================================*/ /* * defines the user of the vsi interface */ #define VSI_CALLER PPP_handle, #define VSI_CALLER_SINGLE PPP_handle /* * VERSION * * Description : The constants define the type and the value * of a version identification. The version * is part of the monitor struct. */ #define VERSION_PPP "PPP 1.0" /* * This is just a TEMPORARY define until the issues with OPTION_MULTITHREAD * are settled. This define SHOULD be contained in GSM.H. */ #undef _ENTITY_PREFIXED #define _ENTITY_PREFIXED(N) ppp_##N /* * these macros might be defined more globally!!! */ #ifdef FRAME_OFFSET_ZERO #define GET_PD(s,p) p=s.buf[3] & 0x0F #define GET_TI(s,t) t=(s.buf[3] & 0xF0)>>4 #else /* FRAME_OFFSET_ZERO */ #define GET_PD(s,p) ccd_decodeByte(s.buf, (USHORT)(s.o_buf+4), 4, &p) #define GET_TI(s,t) ccd_decodeByte(s.buf, s.o_buf, 4, &t) #endif /* FRAME_OFFSET_ZERO */ /*==== CONSTANTS ======================================================*/ /* * Bitoffset for encoding/decoding */ #define ENCODE_OFFSET 0 /* * Service definitions. Used to access service data with GET/SET_STATE. * * Services with multiple incarnation have to be defined as xxx-> * Services with only one incarnation have to be defined as xxx. * */ #define PPP_SERVICE_RT rt. #define PPP_SERVICE_PRX prx. #define PPP_SERVICE_PTX ptx. #define PPP_SERVICE_FRX frx. #define PPP_SERVICE_FTX ftx. #define PPP_SERVICE_ARB arb. #define PPP_SERVICE_LCP lcp. #define PPP_SERVICE_ONA ona-> #define PPP_SERVICE_NCP ncp. #define PPP_SERVICE_PAP pap. #define PPP_SERVICE_CHAP chap. /* * Service name definitions for trace purposes. */ #ifndef NTRACE #define SERVICE_NAME_PPP_SERVICE_RT "RT" #define SERVICE_NAME_PPP_SERVICE_PRX "PRX" #define SERVICE_NAME_PPP_SERVICE_PTX "PTX" #define SERVICE_NAME_PPP_SERVICE_FRX "FRX" #define SERVICE_NAME_PPP_SERVICE_FTX "FTX" #define SERVICE_NAME_PPP_SERVICE_ARB "ARB" #define SERVICE_NAME_PPP_SERVICE_LCP "LCP" #define SERVICE_NAME_PPP_SERVICE_ONA "ONA" #define SERVICE_NAME_PPP_SERVICE_NCP "NCP" #define SERVICE_NAME_PPP_SERVICE_PAP "PAP" #define SERVICE_NAME_PPP_SERVICE_CHAP "CHAP" #endif /* !NTRACE */ /* * State definitions for each service. */ #define RT_STOPPED 1 #define RT_STARTED 2 #define PRX_NDTI 3 #define PRX_NDTI_START_FLOW 4 #define PRX_READY 5 #define PRX_DEAD 6 #define PRX_DEAD_DTI 7 #define PTX_READY 8 #define PTX_BLOCKED 9 #define PTX_DEAD 10 #define FRX_READY_NDTI 11 #define FRX_TRANSPARENT_NDTI 12 #define FRX_READY 13 #define FRX_DEAD 14 #define FRX_DEAD_DTI 15 #define FRX_TRANSPARENT 16 #define FTX_READY 17 #define FTX_BLOCKED 18 #define FTX_READY_DTI_FULL 19 #define FTX_BLOCKED_DTI_FULL 20 #define FTX_DEAD 21 #define FTX_DEAD_START_FLOW 22 #define FTX_TRANSPARENT 23 #define FTX_TRANSPARENT_DTI_FULL 24 #define ARB_DEAD 25 #define ARB_LCP_ESTABLISH 26 #define ARB_LCP_PDP 27 #define ARB_LCP_NCP 28 #define ARB_LCP_RECONF 29 #define ARB_LCP_MOD 30 #define ARB_PAP_ESTABLISH 31 #define ARB_PAP_RECONF 32 #define ARB_CHAP_ESTABLISH 33 #define ARB_CHAP_RECONF 34 #define ARB_PDP_WAIT 35 #define ARB_PDP_SENT 36 #define ARB_NCP_ESTABLISH 37 #define ARB_NCP_RECONF 38 #define ARB_NCP_MOD 39 #define ARB_IP 40 #define ARB_TRANSPARENT 41 #define LCP_STATE 42 #define ONA_CLOSED 43 #define ONA_CLOSING 44 #define ONA_REQ_SENT 45 #define ONA_ACK_RCVD 46 #define ONA_ACK_SENT 47 #define ONA_OPENED 48 #define NCP_STATE 49 #define PAP_DOWN 50 #define PAP_UP 51 #define CHAP_DOWN 52 #define CHAP_UP 53 /* * state definitions for PTX TX buffer */ #define PTX_BUFFER_FULL 70 /* a state of PTX TX buffer */ #define PTX_BUFFER_READY 71 /* a state of PTX TX buffer */ /* * state definitions for FTX TX buffer */ #define PTX_FTX_BUFFER_READY 72 /* a state of FTX TX buffer */ #define PTX_FTX_BUFFER_FULL 73 /* a state of FTX TX buffer */ /* * state definitions for uplink data flow */ #define FRX_DATA_FLOW_DEAD 74 /* a state of PTX TX buffer */ #define FRX_DATA_FLOW_READY 75 /* a state of PTX TX buffer */ /* * PPP spicific defines */ #define DTI_PID_IPCP 0x8021 #define DTI_PID_LCP 0xc021 #define DTI_PID_PAP 0xc023 #define DTI_PID_CHAP 0xc223 #define CODE_CONF_REQ 1 #define CODE_CONF_ACK 2 #define CODE_CONF_NAK 3 #define CODE_CONF_REJ 4 #define CODE_TERM_REQ 5 #define CODE_TERM_ACK 6 #define CODE_CODE_REJ 7 #define CODE_PROT_REJ 8 #define CODE_ECHO_REQ 9 #define CODE_ECHO_REP 10 #define CODE_DISC_REQ 11 #define CODE_AUTH_REQ 1 #define CODE_AUTH_ACK 2 #define CODE_AUTH_NAK 3 #define CODE_CHALLENGE 1 #define CODE_RESPONSE 2 #define CODE_SUCCESS 3 #define CODE_FAILURE 4 #define FORWARD_RCRP 1 #define FORWARD_RCRN 2 #define FORWARD_RCA 3 #define FORWARD_RCN 4 #define FORWARD_RTR 5 #define FORWARD_RTA 6 #define FORWARD_RUC 7 #define FORWARD_RXJN 8 #define FORWARD_RER 9 #define FORWARD_RPJ_LCP 10 #define FORWARD_RPJ_PAP 12 #define FORWARD_RPJ_CHAP 13 #define FORWARD_RPJ_IPCP 14 #define FORWARD_RPJ_IP 15 #define FORWARD_RPJ_CTCP 16 #define FORWARD_RPJ_UTCP 17 #define FORWARD_DISCARD 18 #define FORWARD_RARP 19 #define FORWARD_RARN 20 #define FORWARD_RAA 21 #define FORWARD_RAN 22 #define FORWARD_RC 23 #define FORWARD_RRP 24 #define FORWARD_RRN 25 #define FORWARD_RS 26 #define FORWARD_RF 27 #define PROTOCOL_LCP_MSB 0xc0 #define PROTOCOL_LCP_LSB 0x21 #define PROTOCOL_PAP_MSB 0xc0 #define PROTOCOL_PAP_LSB 0x23 #define PROTOCOL_CHAP_MSB 0xc2 #define PROTOCOL_CHAP_LSB 0x23 #define PROTOCOL_VJ_MSB 0x00 #define PROTOCOL_VJ_LSB 0x2d #define PROTOCOL_IPCP_MSB 0x80 #define PROTOCOL_IPCP_LSB 0x21 #define PPP_INITFCS 0xffff #define PPP_GOODFCS 0xf0b8 #define PPP_HDLC_ESCAPE 0x7d #define PPP_HDLC_FLAG 0x7e #define PPP_ASCII_DEL 0x7f #define PPP_AP_DEFAULT PPP_AP_NO #define PPP_ACFC_DEFAULT FALSE #define PPP_PFC_DEFAULT FALSE #define PPP_HC_DEFAULT PPP_HC_OFF #define PPP_MSID_DEFAULT 0 #define PPP_IP_DEFAULT PPP_IP_DYNAMIC #define PPP_PDNS_DEFAULT PPP_DNS1_DYNAMIC #define PPP_SDNS_DEFAULT PPP_DNS2_DYNAMIC #define PPP_GATEWAY_DEFAULT PPP_IP_DYNAMIC #define PPP_MRU_MIN 1500 #define CHAP_MSG_DIGEST_LEN 16 #define FTX_QUEUE_SIZE 1 #define PTX_QUEUE_SIZE 1 #define PPP_PCO_MASK_LCP_MRU 0x00000001 /* MRU value */ #define PPP_PCO_MASK_LCP_AP 0x00000002 /* LCP authentication protocol */ #define PPP_PCO_MASK_LCP_TWO 0x00000004 /* two LCP packets */ #define PPP_PCO_MASK_AUTH_PROT 0x00000008 /* authentification packets (PAP/CHAP) */ #define PPP_PCO_MASK_IPCP_HC 0x00000010 /* VJ header compression */ #define PPP_PCO_MASK_IPCP_IP 0x00000020 /* IP address */ #define PPP_PCO_MASK_IPCP_PDNS 0x00000040 /* primary DNS address */ #define PPP_PCO_MASK_IPCP_SDNS 0x00000080 /* secondary DNS address */ #define PPP_PCO_MASK_IPCP_GATEWAY 0x00000100 /* gateway address */ #ifdef _SIMULATION_ #define PPP_PCO_MASK_DEFAULT (PPP_PCO_MASK_LCP_MRU | \ PPP_PCO_MASK_LCP_AP | \ PPP_PCO_MASK_LCP_TWO | \ PPP_PCO_MASK_AUTH_PROT | \ PPP_PCO_MASK_IPCP_HC | \ PPP_PCO_MASK_IPCP_IP | \ PPP_PCO_MASK_IPCP_PDNS | \ PPP_PCO_MASK_IPCP_SDNS) #else /* _SIMULATION_ */ #define PPP_PCO_MASK_DEFAULT (PPP_PCO_MASK_AUTH_PROT | \ PPP_PCO_MASK_IPCP_PDNS | \ PPP_PCO_MASK_IPCP_SDNS) #endif /* _SIMULATION_ */ /* * size of a descriptor which includes the frame */ #define FTX_GET_DESC_SIZE (400 - (UBYTE)sizeof(T_desc2)) /* * frx_add_desc states */ #define FRX_ADD_HDLC_BEGIN 1 #define FRX_ADD_ADDRESS 2 #define FRX_ADD_CONTROL 3 #define FRX_ADD_PROTOCOL1 4 #define FRX_ADD_PROTOCOL2 5 #define FRX_ADD_INFORMATION 6 #define FRX_ADD_FCS1 7 #define FRX_ADD_FCS2 8 #define FRX_ADD_HDLC_END 9 #define FRX_ADD_ERROR 10 /* * Definitions for DTILIB */ #define PROT_LAYER 0 #define PEER_LAYER 1 #define PROT_CHANNEL 0 #if defined(_SIMULATION_) #define PEER_CHANNEL 0 #else #define PEER_CHANNEL 1 #endif #define MAX_TRIES_OPEN_VSI_CHAN 5 #define PPP_INSTANCE 0 #define MAX_PPP_LINKS 2 /* * packet size for normal PPP packets * this value is just used to reduce the allocated memory */ #define FRX_ADD_SMALL_PACKET_SIZE (100 - (UBYTE)(sizeof(T_desc2))) /* * number of ONA incarnations: LCP and NCP */ #define ONA_NUM_INC 2 #ifdef FF_STATUS_TE /* * driver handle for wakeup driver */ #define STE_HANDLE 0x0001 #endif /* FF_STATUS_TE */ /* * Timer handle definitions. */ #define RT_INDEX 0 #define TIMER_MAX (RT_INDEX + 1) /*==== TYPES ======================================================*/ #ifdef OPTION_TIMER /* * timer configuration table */ typedef struct { UBYTE t_mode; ULONG t_val; } T_TIMER_CONFIG; #endif /* OPTION_TIMER */ /* * Test environment (simulator) vs. Implementation environment. */ typedef enum { TEST_ENV, IMPL_ENV } T_ENVIRONMENT; typedef enum { SERVICE_PTX, SERVICE_PRX, SERVICE_FRX, SERVICE_FTX, SERVICE_RT, SERVICE_ARB, SERVICE_PAP, SERVICE_CHAP, SERVICE_LCP, SERVICE_NCP, SERVICE_ONA, NO_SERVICE } T_SERVICE; /* * dat structure for each service */ typedef struct /* T_RT_DATA */ { UBYTE state; /* * Required for state traces. */ #ifndef NTRACE char *name; char *state_name; #endif /* !NTRACE */ /*ab hier service spezif. * timeout value */ T_TIME time; } T_RT_DATA; typedef struct /* T_PRX_DATA */ { UBYTE state; /* * Required for state traces. */ #ifndef NTRACE char *name; char *state_name; #endif /* !NTRACE */ /* ab hier service spezif. * */ #ifdef FF_STATUS_TE UBYTE TE_data_buffered; /* Status of TE-data-buffer asleep/awake */ UBYTE TE_data_buffer_p_id; /* When TE asleep here the p_id is buffered */ T_desc2* TE_data_buffer_desc_list_first; /* When TE asleep here the desc-list is buffered */ #endif /* FF_STATUS_TE */ } T_PRX_DATA; typedef struct /* T_PTX_DATA */ { UBYTE state; /* * Required for state traces. */ #ifndef NTRACE char *name; char *state_name; #endif /* !NTRACE */ /* * service specific members */ USHORT ftx_buffer_state; /* state of FTX TX buffer */ USHORT ptx_buffer_state; /* state of PTX TX buffer */ } T_PTX_DATA; typedef struct /* T_FRX_DATA */ { UBYTE state; /* * Required for state traces. */ #ifndef NTRACE char *name; char *state_name; #endif /* !NTRACE */ /* ab hier service spezif. * */ T_desc2* received_data; /* last received data stream */ USHORT proceed_data; /* number of octets already proceeded */ UBYTE frame_complete; /* indicates whether a complete frame is received or not */ USHORT stored_ptype; /* stored packet type */ T_desc2* stored_packet; /* stored packet */ USHORT stored_len; /* stored packet length */ USHORT calc_fcs; /* calculated fcs */ UBYTE escape; /* indicates HDLC Control Escape detection */ T_desc2* cur_desc; /* current descriptor for storing */ USHORT cur_desc_size; /* size of the current descriptor buffer */ UBYTE store_state; /* state of frame decoding */ USHORT data_flow_state; /* state of FRX->PTX data flow */ #ifdef PPP_HDLC_TRACE T_desc2* hdlc_frame; /* complete HDLC frame stored for traces */ #endif /* PPP_HDLC_TRACE */ } T_FRX_DATA; typedef struct /* T_FTX_DATA */ { UBYTE state; /* * Required for state traces. */ #ifndef NTRACE char *name; char *state_name; #endif /* !NTRACE */ /* * from here on service specific */ UBYTE* accmtab; /* Async-Control-Character-Map Table */ UBYTE acfc; /* Address and Control Field Compression */ UBYTE pfc; /* Protocol Field Compression */ } T_FTX_DATA; typedef struct /* T_ARB_DATA */ { UBYTE state; /* * Required for state traces. */ #ifndef NTRACE char *name; char *state_name; #endif /* !NTRACE */ /* ab hier service spezif. * */ UBYTE pri; /* Protocol Reject Identifier */ UBYTE to_counter; /* Time Out Counter */ T_desc2* last_ipcp; /* Last sent IPCP packet */ UBYTE dti_connect_state_prot; /* DTI Connect State for the Protocol Layer */ UBYTE dti_connect_state_peer; /* DTI Connect State for the Peer Layer */ } T_ARB_DATA; typedef struct /* T_LCP_DATA */ { UBYTE state; /* * Required for state traces. */ #ifndef NTRACE char *name; char *state_name; #endif /* !NTRACE */ /* ab hier service spezif. * */ USHORT req_mru; /* requested maximum receive unit */ ULONG req_accm; /* requested async control character map */ UBYTE req_ap; /* requested authetication protocol */ USHORT s_mru; /* to send maximum receive unit */ ULONG s_accm; /* to send async control character map */ UBYTE s_pfc; /* to send protocol field compression */ UBYTE s_acfc; /* to send address and control field compression */ USHORT s_rejected; /* indicator of rejection of sent configuration entity_options */ USHORT r_mru; /* received maximum receive unit */ ULONG r_accm; /* received async control character map */ UBYTE r_pfc; /* received protocol field compression */ UBYTE r_acfc; /* received address and control field compression */ UBYTE n_ap; /* negotiated authentication protocol */ UBYTE scr; /* indicator whether configure request was sent */ UBYTE str; /* indicator whether terminate request was sent */ UBYTE rcr; /* indicator whether configure request was received */ UBYTE nscri; /* new send configure request identifier */ UBYTE nstri; /* new send terminate request identifier */ UBYTE nscji; /* new send code reject identifier */ UBYTE lrcri; /* last received configure request identifier */ } T_LCP_DATA; typedef struct /* T_ONA_DATA */ { UBYTE state; /* * Required for state traces. */ #ifndef NTRACE char *name; char *state_name; #endif /* !NTRACE */ /* ab hier service spezif. * */ UBYTE restarts; /* counter for Configure-Request and Terminate-Request sent */ UBYTE failures; /* counter for Configure-Nak and Configure-Reject sent */ UBYTE loops; /* counter for Configure-Ack received */ } T_ONA_DATA; typedef struct /* T_NCP_DATA */ { UBYTE state; /* * Required for state traces. */ #ifndef NTRACE char *name; char *state_name; #endif /* !NTRACE */ /* ab hier service spezif. * */ UBYTE req_hc; /* requested header compression protocol */ UBYTE req_msid; /* requested max slot identifier */ ULONG req_ip; /* requested IP address */ ULONG req_pdns; /* requested primary DNS server address */ ULONG req_sdns; /* requested secondary DNS server address */ ULONG req_gateway; /* requested Gateway address */ UBYTE s_hc; /* sent header compression */ UBYTE s_msid; /* sent max slot identifier */ USHORT s_rejected; /* indicator of rejection of sent configuration entity_options */ UBYTE r_hc; /* received header compression */ UBYTE r_msid; /* received max slot identifier */ ULONG n_ip; /* negotiated IP address */ ULONG n_pdns; /* negotiated primary DNS server address */ ULONG n_sdns; /* negotiated secondary DNS server address */ ULONG n_gateway; /* negotiated Gateway address */ UBYTE scr; /* indicator whether configure request was sent */ UBYTE str; /* indicator whether terminate request was sent */ UBYTE rcr; /* indicator whether configure request was received */ UBYTE nscri; /* new send configure request identifier */ UBYTE nstri; /* new send terminate request identifier */ UBYTE nscji; /* new send code reject identifier */ UBYTE lrcri; /* last received configure request identifier */ } T_NCP_DATA; typedef struct /* T_PAP_DATA */ { UBYTE state; /* * Required for state traces. */ #ifndef NTRACE char *name; char *state_name; #endif /* !NTRACE */ /* ab hier service spezif. * */ T_login login; /* PAP authentication values (client mode) */ T_desc2* ar_packet; /* PAP Authentication Request packet (server mode) */ UBYTE counter; /* counter for timer restart */ UBYTE nari; /* new authenticate request identifier */ } T_PAP_DATA; typedef struct /* T_CHAP_DATA */ { UBYTE state; /* * Required for state traces. */ #ifndef NTRACE char *name; char *state_name; #endif /* !NTRACE */ /* ab hier service spezif. * */ T_desc2* c_packet; /* CHAP Challenge packet (server mode) */ T_desc2* r_packet; /* CHAP Response packet (server mode) */ UBYTE counter; /* counter for timer restart */ UBYTE fails; /* counter for failed authentication */ UBYTE nci; /* new challenge identifier */ UBYTE sc; /* indicator whether Challenge packet was sent */ UBYTE rc; /* indicator whether Challenge packet was received */ UBYTE sr; /* indicator whether Respons packet was sent */ UBYTE rs; /* indicator whether Success packet was received */ } T_CHAP_DATA; /* * summery of all service */ typedef struct /* T_PPP_DATA */ { /* * PPP layer parameters */ UBYTE version; /* * Service data structures * * Services with multiple incarnations require an array of structures * named xxx_base[] with xxx = service abbrevation, and additionally a * pointer named *xxx, which will be accessed instead of xxx_base. * * Services with only one incarnation just have to declare one structure * named xxx (no need for xxx_base[] and *xxx). * * The differentiation between the two access possibilites is made with * the defines of the service names above (PPP_SERVICE_XXX). */ T_RT_DATA rt; T_PRX_DATA prx; T_PTX_DATA ptx; T_FRX_DATA frx; T_FTX_DATA ftx; T_ARB_DATA arb; T_LCP_DATA lcp; T_ONA_DATA ona_base[ONA_NUM_INC]; T_ONA_DATA *ona; T_NCP_DATA ncp; T_PAP_DATA pap; T_CHAP_DATA chap; /* * global PPP variables */ UBYTE mode; /* working mode (client, server or transparent) */ UBYTE mc; /* Max. Configure */ UBYTE mt; /* Max. Terminate */ UBYTE mf; /* Max. Failure */ T_login login; /* CHAP, PAP and AUTO authentication values*/ U16 ppp_cause; /* cause of PPP termination */ USHORT mru; /* Maximum Receive Unit */ UBYTE n_hc; /* negotiated header compression */ ULONG pco_mask; /* determines PCO content */ /* * Global variables used by DTILIB. */ DTI_HANDLE ppphDTI; /* Handle to DTI Data Base */ /* * global PPP constants */ USHORT* fcstab; } T_PPP_DATA; /*==== EXPORT =====================================================*/ /* * Entity data base */ #ifdef PPP_PEI_C T_PPP_DATA ppp_data_base, *ppp_data; #else /* PPP_PEI_C */ EXTERN T_PPP_DATA ppp_data_base, *ppp_data; #endif /* PPP_PEI_C */ #define ENTITY_DATA ppp_data /* * FCS and ACCM lookup tables */ EXTERN USHORT fcstab_base[256]; EXTERN UBYTE accmtab_base[256]; /* * Communication handles (see also PPP_PEI.C, PPP_ARBP.C) */ #define hCommMMI ppp_hCommMMI #define hCommPPP ppp_hCommPPP #define hCommUPLINK ppp_hCommUPLINK #define hCommDOWNLINK ppp_hCommDOWNLINK /* * make PPP functions unique */ #define pei_create _ENTITY_PREFIXED(pei_create) #define rt_init _ENTITY_PREFIXED(rt_init) #ifdef PPP_PEI_C T_HANDLE hCommMMI = VSI_ERROR; T_HANDLE hCommPPP = VSI_ERROR; T_HANDLE hCommUPLINK = VSI_ERROR; T_HANDLE hCommDOWNLINK = VSI_ERROR; T_HANDLE PPP_handle; #else /* PPP_PEI_C */ EXTERN T_HANDLE hCommMMI; EXTERN T_HANDLE hCommPPP; EXTERN T_HANDLE hCommUPLINK; EXTERN T_HANDLE hCommDOWNLINK; EXTERN T_HANDLE PPP_handle; #endif /* PPP_PEI_C */ /* * If all entities are linked into one module this definitions * prefixes the global data with the enity name */ #ifdef OPTION_MULTITHREAD #define _decodedMsg _ENTITY_PREFIXED(_decodedMsg) #endif /* OPTION_MULTITHREAD */ #endif /* PPP_H */