FreeCalypso > hg > fc-magnetite
view src/g23m-fad/ppp/ppp_pei.c @ 636:57e67ca2e1cb
pcmdata.c: default +CGMI to "FreeCalypso" and +CGMM to model
The present change has no effect whatsoever on Falconia-made and Openmoko-made
devices on which /pcm/CGMI and /pcm/CGMM files have been programmed in FFS
with sensible ID strings by the respective factories, but what should AT+CGMI
and AT+CGMM queries return when the device is a Huawei GTM900 or Tango modem
that has been converted to FreeCalypso with a firmware change? Before the
present change they would return compiled-in defaults of "<manufacturer>" and
"<model>", respectively; with the present change the firmware will self-identify
as "FreeCalypso GTM900-FC" or "FreeCalypso Tango" on the two respective targets.
This firmware identification will become important if someone incorporates an
FC-converted GTM900 or Tango modem into a ZeroPhone-style smartphone where some
high-level software like ofono will be talking to the modem and will need to
properly identify this modem as FreeCalypso, as opposed to some other AT command
modem flavor with different quirks.
In technical terms, the compiled-in default for the AT+CGMI query (which will
always be overridden by the /pcm/CGMI file in FFS if one is present) is now
"FreeCalypso" in all configs on all targets; the compiled-in default for the
AT+CGMM query (likewise always overridden by /pcm/CGMM if present) is
"GTM900-FC" if CONFIG_TARGET_GTM900 or "Tango" if CONFIG_TARGET_TANGO or the
original default of "<model>" otherwise.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 19 Jan 2020 20:14:58 +0000 |
parents | 90eb61ecd093 |
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 : This module implements the process body interface | for the entity Point-to-Point Protocol (PPP) | | Exported functions: | | pei_create - Create the Protocol Stack Entity | pei_init - Initialize Protocol Stack Entity | pei_primitive - Process Primitive | pei_timeout - Process Timeout | pei_exit - Close resources and terminate | pei_run - Process Primitive | pei_config - Dynamic Configuration | pei_monitor - Monitoring of physical Parameters +----------------------------------------------------------------------------- */ #define PPP_PEI_C #define ENTITY_PPP /*==== INCLUDES =============================================================*/ #include <stddef.h> #include "typedefs.h" /* to get Condat data types */ #include "vsi.h" /* to get a lot of macros */ /*lint -efile(766,macdef.h) */ #include "macdef.h" /* to get a lot of macros */ #include "custom.h" /* to get a lot of macros */ #include "gsm.h" /* to get a lot of macros */ /*lint -efile(766,cnf_ppp.h) */ #include "cnf_ppp.h" /* to get cnf-definitions */ #include "mon_ppp.h" /* to get mon-definitions */ #include "prim.h" /* to get the definitions of used SAP and directions */ #include "dti.h" /* to get the DTILIB definitions */ #include "ppp.h" /* to get the global entity definitions */ #ifdef FF_STATUS_TE #include "gdi.h" /* To include driver type-defines */ #include "ste.h" /* To include function interface for TE status driver */ #endif /* FF_STATUS_TE */ #include "ppp_rtf.h" /* to get rt functions */ #include "ppp_rtp.h" /* to get rt primitives */ #include "ppp_rts.h" /* to get rt signals */ /*lint -efile(766,ppp_prxp.h) */ #include "ppp_prxf.h" /* to get prx functions */ #include "ppp_prxp.h" /* to get prx primitives */ #include "ppp_prxs.h" /* to get prx signals */ /*lint -efile(766,ppp_ptxp.h) */ #include "ppp_ptxf.h" /* to get ptx functions */ #include "ppp_ptxp.h" /* to get ptx primitives */ #include "ppp_ptxs.h" /* to get ptx signals */ /*lint -efile(766,ppp_frxp.h) */ #include "ppp_frxf.h" /* to get frx functions */ #include "ppp_frxp.h" /* to get frx primitives */ #include "ppp_frxs.h" /* to get frx signals */ /*lint -efile(766,ppp_ftxp.h) */ #include "ppp_ftxf.h" /* to get ftx functions */ #include "ppp_ftxp.h" /* to get ftx primitives */ #include "ppp_ftxs.h" /* to get ftx signals */ #include "ppp_arbf.h" /* to get arb functions */ #include "ppp_arbp.h" /* to get arb primitives */ #include "ppp_arbs.h" /* to get arb signals */ /*lint -efile(766,ppp_lcpp.h) */ /*lint -efile(766,ppp_lcps.h) */ #include "ppp_lcpf.h" /* to get lcp functions */ #include "ppp_lcpp.h" /* to get lcp primitives */ #include "ppp_lcps.h" /* to get lcp signals */ /*lint -efile(766,ppp_onap.h) */ /*lint -efile(766,ppp_onas.h) */ #include "ppp_onaf.h" /* to get ona functions */ #include "ppp_onap.h" /* to get ona primitives */ #include "ppp_onas.h" /* to get ona signals */ /*lint -efile(766,ppp_ncpp.h) */ /*lint -efile(766,ppp_ncps.h) */ #include "ppp_ncpf.h" /* to get ncp functions */ #include "ppp_ncpp.h" /* to get ncp primitives */ #include "ppp_ncps.h" /* to get ncp signals */ /*lint -efile(766,ppp_papp.h) */ /*lint -efile(766,ppp_paps.h) */ #include "ppp_papf.h" /* to get pap functions */ #include "ppp_papp.h" /* to get pap primitives */ #include "ppp_paps.h" /* to get pap signals */ /*lint -efile(766,ppp_capp.h) */ /*lint -efile(766,ppp_caps.h) */ #include "ppp_capf.h" /* to get chap functions */ #include "ppp_capp.h" /* to get chap primitives */ #include "ppp_caps.h" /* to get chap signals */ #include "ppp_dti.h" /* to get the DTI signals */ /*==== DEFINITIONS ==========================================================*/ /*==== TYPES ================================================================*/ /*==== GLOBAL VARS ==========================================================*/ /*==== LOCAL VARS ===========================================================*/ static BOOL first_access = TRUE; static T_MONITOR ppp_mon; /* * Jumptables to primitive handler functions. One table per SAP. * * Use MAK_FUNC_0 for primitives which contains no SDU. * Use MAK_FUNC_S for primitives which contains a SDU. */ /* * Function is needed for developing. This declaration can be removed * as soon as this function is no more called (i.e. all primitives are * handled). */ LOCAL void primitive_not_supported (void *data); LOCAL void pei_dti_dti_ready_ind (T_DTI2_READY_IND *dti_ready_ind); LOCAL void pei_dti_dti_data_req (T_DTI2_DATA_REQ *dti_data_req); LOCAL void pei_dti_dti_data_ind (T_DTI2_DATA_IND *dti_data_ind); LOCAL void pei_dti_dti_getdata_req (T_DTI2_GETDATA_REQ *dti_getdata_req); LOCAL void pei_dti_dti_data_test_ind (T_DTI2_DATA_TEST_IND *dti_data_test_ind); LOCAL void pei_dti_dti_data_test_req (T_DTI2_DATA_TEST_REQ *dti_data_test_req); LOCAL void pei_dti_dti_connect_req (T_DTI2_CONNECT_REQ *dti_connect_req ); LOCAL void pei_dti_dti_disconnect_ind (T_DTI2_DISCONNECT_IND *dti_disconnect_ind); LOCAL void pei_dti_dti_connect_cnf (T_DTI2_CONNECT_CNF *dti_connect_cnf); LOCAL void pei_dti_dti_connect_ind (T_DTI2_CONNECT_IND *dti_connect_ind); LOCAL void pei_dti_dti_connect_res (T_DTI2_CONNECT_RES *dti_connect_res); LOCAL void pei_dti_dti_disconnect_req (T_DTI2_DISCONNECT_REQ *dti_disconnect_req); static const T_FUNC ppp_table[] = { MAK_FUNC_0(arb_ppp_establish_req, PPP_ESTABLISH_REQ), /* 7500 */ MAK_FUNC_0(arb_ppp_terminate_req, PPP_TERMINATE_REQ), /* 7501 */ MAK_FUNC_S(arb_ppp_pdp_activate_res, PPP_PDP_ACTIVATE_RES),/* 7502 */ MAK_FUNC_0(arb_ppp_pdp_activate_rej, PPP_PDP_ACTIVATE_REJ),/* 7503 */ MAK_FUNC_0(arb_ppp_modification_req, PPP_MODIFICATION_REQ) /* 7504 */ }; LOCAL const T_FUNC dti_dl_table[] = { MAK_FUNC_0( pei_dti_dti_connect_ind , DTI2_CONNECT_IND ), MAK_FUNC_0( pei_dti_dti_connect_cnf , DTI2_CONNECT_CNF ), MAK_FUNC_0( pei_dti_dti_disconnect_ind , DTI2_DISCONNECT_IND) , MAK_FUNC_0( pei_dti_dti_ready_ind , DTI2_READY_IND ), MAK_FUNC_0( pei_dti_dti_data_ind , DTI2_DATA_IND ) #if defined (_SIMULATION_) , MAK_FUNC_S( pei_dti_dti_data_test_ind , DTI2_DATA_TEST_IND ) #endif }; LOCAL const T_FUNC dti_ul_table[] = { MAK_FUNC_0( pei_dti_dti_connect_req , DTI2_CONNECT_REQ ), MAK_FUNC_0( pei_dti_dti_connect_res , DTI2_CONNECT_RES ), MAK_FUNC_0( pei_dti_dti_disconnect_req, DTI2_DISCONNECT_REQ) , MAK_FUNC_0( pei_dti_dti_getdata_req , DTI2_GETDATA_REQ ), MAK_FUNC_0( pei_dti_dti_data_req , DTI2_DATA_REQ ) #if defined (_SIMULATION_) , MAK_FUNC_S( pei_dti_dti_data_test_req , DTI2_DATA_TEST_REQ ) #endif }; /*==== DIAGNOSTICS ==========================================================*/ #ifdef _DEBUG #endif /* _DEBUG */ /*==== END DIAGNOSTICS ======================================================*/ /*==== PRIVATE FUNCTIONS ====================================================*/ /* +------------------------------------------------------------------------------ | Function : primitive_not_supported +------------------------------------------------------------------------------ | Description : This function handles unsupported primitives. | | Parameters : - | | Return : - | +------------------------------------------------------------------------------ */ LOCAL void primitive_not_supported (void *data) { TRACE_FUNCTION ("primitive_not_supported"); PFREE (data); } /*==== PUBLIC FUNCTIONS =====================================================*/ /* qqq hier malen +------------------------------------------------------------------------------ | Function : pei_primitive +------------------------------------------------------------------------------ | Description : This function is called by the frame when a primitive is | received and needs to be processed. | | | | | MMI DTI UPLINK | | | | +--------v--------v--------+ | | | | | PPP | | | | | +-------------^------------+ | | | DTI DOWNLINK | | | | | Parameters : prim - Pointer to the received primitive | | Return : PEI_OK - function succeeded | PEI_ERROR - function failed | +------------------------------------------------------------------------------ */ /*qqq hier kucken*/ LOCAL SHORT pei_primitive (void * primptr) { TRACE_FUNCTION ("pei_primitive"); if (primptr NEQ NULL) { T_PRIM *prim = (T_PRIM *)primptr; USHORT opc = (USHORT)prim->custom.opc; USHORT n; const T_FUNC *table; /* * This must be called for Partition Pool supervision. Will be replaced * by another macro some time. */ VSI_PPM_REC (&prim->custom, __FILE__, __LINE__); PTRACE_IN (opc); switch (opc & OPC_MASK) { case PPP_DL: table = ppp_table; n = TAB_SIZE (ppp_table); break; case DTI_UL: table = dti_ul_table; n = TAB_SIZE (dti_ul_table); break; case DTI_DL: table = dti_dl_table; n = TAB_SIZE (dti_dl_table); break; default: table = NULL; n = 0; break; } if (table NEQ NULL) { #define PRIM_OFFSET_DTI2 0x50 #define PRM_MASK2 0x000F if (((opc & PRM_MASK) - PRIM_OFFSET_DTI2) < n) { table += opc & PRM_MASK2; #ifdef PALLOC_TRANSITION P_SDU(prim) = table->soff ? (T_sdu*) (((char*)&prim->data) + table->soff) : 0; /*lint !e740 !e545 */ #ifndef NO_COPY_ROUTING P_LEN(prim) = table->size + sizeof (T_PRIM_HEADER); #endif /* NO_COPY_ROUTING */ #endif /* PALLOC_TRANSITION */ JUMP (table->func) (P2D(prim)); } else { primitive_not_supported (P2D(prim)); } return PEI_OK; } /* * primitive is not a GSM primitive - forward it to the environment */ if (opc & SYS_MASK) vsi_c_primitive (VSI_CALLER prim); /*lint !e534 */ else { PFREE (P2D(prim)); return PEI_ERROR; } } return PEI_OK; } /* +------------------------------------------------------------------------------ | Function : pei_init +------------------------------------------------------------------------------ | Description : This function is called by the frame. It is used to initialise | the entitiy. | | Parameters : handle - task handle | | Return : PEI_OK - entity initialised | PEI_ERROR - entity not (yet) initialised | +------------------------------------------------------------------------------ */ /*qqq hier Kommunikationskanaele eintragen*/ LOCAL SHORT pei_init (T_HANDLE handle) { TRACE_FUNCTION ("pei_init"); /* * Initialize task handle */ PPP_handle = handle; /* * Open communication channel */ if (hCommMMI < VSI_OK) { if ((hCommMMI = vsi_c_open (VSI_CALLER ACI_NAME)) < VSI_OK) /*lint !e605 */ return PEI_ERROR; } if (hCommPPP < VSI_OK) { if ((hCommPPP = vsi_c_open (VSI_CALLER PPP_NAME)) < VSI_OK) /*lint !e605 */ return PEI_ERROR; } /* * Initialize global pointer ppp_data. This is required to access all * entity data. */ ppp_data = &ppp_data_base; ppp_data->fcstab = fcstab_base; ppp_data->ftx.accmtab = accmtab_base; /* * Initialize entity data (call init function of every service) */ rt_init(); prx_init(); ptx_init(); frx_init(); ftx_init(); arb_init(); lcp_init(); ona_init(); ncp_init(); pap_init(); chap_init(); /* * initialize global entity variables */ ppp_data->mc = PPP_MC_DEFAULT; ppp_data->mt = PPP_MT_DEFAULT; ppp_data->mf = PPP_MF_DEFAULT; /* * a value different from 0 indicates an error or * administrative termination */ ppp_data->ppp_cause = 0; ppp_data->mru = PPP_MRU_DEFAULT; ppp_data->n_hc = PPP_HC_OFF; ppp_data->pco_mask = PPP_PCO_MASK_DEFAULT; /* * Init DTILIB channels and allocate the DTI Database */ if ( ( ppp_data->ppphDTI = dti_init ( MAX_PPP_LINKS, PPP_handle, DTI_DEFAULT_OPTIONS, sig_callback ) ) EQ D_NO_DATA_BASE) { TRACE_ERROR("Open the DTILIB Databank not correct"); return PEI_ERROR; } return PEI_OK; } /* +------------------------------------------------------------------------------ | Function : pei_timeout +------------------------------------------------------------------------------ | Description : This function is called by the frame when a timer has expired. | | Parameters : index - timer index | | Return : PEI_OK - timeout processed | PEI_ERROR - timeout not processed | +------------------------------------------------------------------------------ */ /*qqq hier noch ppp timer eintragen!!!*/ LOCAL SHORT pei_timeout (USHORT index) { TRACE_FUNCTION ("pei_timeout"); /* * Process timeout */ switch (index) { case RT_INDEX: /* * RT expired. */ rt_rt_expired(); break; default: TRACE_ERROR("Unknown Timeout"); break; } return PEI_OK; } /* +------------------------------------------------------------------------------ | Function : pei_signal +------------------------------------------------------------------------------ | Description : This function is called by the frame when a signal has been | received. | | Parameters : opc - signal operation code | *data - pointer to primitive | | Return : PEI_OK - signal processed | PEI_ERROR - signal not processed | +------------------------------------------------------------------------------ */ LOCAL SHORT pei_signal (ULONG opc, void *data) { TRACE_FUNCTION ("pei_signal"); /* * Process signal */ switch (opc) { #ifdef FF_STATUS_TE /* * Call-back from TE status driver - power status has changed */ case NEW_POWER_STATUS: new_power_status_TE ( ); break; #endif /* FF_STATUS_TE */ default: TRACE_ERROR("Unknown Signal OPC"); break; } /*lint !e764 switch statement does not have a case */ return PEI_OK; } /*lint !e715 data not referenced */ /* +------------------------------------------------------------------------------ | Function : pei_exit +------------------------------------------------------------------------------ | Description : This function is called by the frame when the entity is | terminated. All open resources are freed. | | Parameters : - | | Return : PEI_OK - exit sucessful | PEI_ERROR - exit not sueccessful | +------------------------------------------------------------------------------ */ LOCAL SHORT pei_exit (void) { TRACE_FUNCTION ("pei_exit"); /* * Stop timer */ sig_any_rt_srt_req (); /* * Close communication channel */ vsi_c_close (VSI_CALLER hCommMMI); /*lint !e534 Ignoring return value */ hCommMMI = VSI_ERROR; /* * Deinit the DTI Database */ dti_deinit(ppp_data->ppphDTI); return PEI_OK; } /* +------------------------------------------------------------------------------ | Function : pei_run +------------------------------------------------------------------------------ | Description : This function is called by the frame when entering the main | loop. This fucntion is only required in the active variant. | | This function is not used. | | Parameters : handle - Communication handle | | Return : PEI_OK - sucessful | PEI_ERROR - not successful | +------------------------------------------------------------------------------ */ LOCAL SHORT pei_run (T_HANDLE TaskHandle, T_HANDLE ComHandle ) { return PEI_OK; } /*lint !e715 TaskHandle and ComHandle not referenced */ /* +------------------------------------------------------------------------------ | Function : pei_config +------------------------------------------------------------------------------ | Description : This function is called by the frame when a primitive is | received indicating dynamic configuration. | | This function is not used in this entity. | | Parameters : handle - Communication handle | | Return : PEI_OK - sucessful | PEI_ERROR - not successful | +------------------------------------------------------------------------------ */ LOCAL SHORT pei_config (char *inString) { #ifndef NCONFIG ULONG new_mask; #endif /* !NCONFIG */ TRACE_FUNCTION ("pei_config"); TRACE_FUNCTION (inString); #ifndef NCONFIG /* * Parse next keyword and number of variables */ /*if(!strcmp(inString,"PCO="))*/ if (inString[0] EQ 'P' && inString[1] EQ 'C' && inString[2] EQ 'O' && inString[3] EQ '=') { TRACE_EVENT ("New PCO content:"); new_mask = 0; /* * LCP MRU */ if((inString[4] EQ 0x31) || ((inString[4] NEQ 0x30) && (ppp_data->pco_mask & PPP_PCO_MASK_LCP_MRU))) { TRACE_EVENT(" - LCP MRU"); new_mask|= PPP_PCO_MASK_LCP_MRU; } /* * LCP AP */ if((inString[5] EQ 0x31) || ((inString[5] NEQ 0x30) && (ppp_data->pco_mask & PPP_PCO_MASK_LCP_AP))) { TRACE_EVENT(" - LCP Authentication protocol"); new_mask|= PPP_PCO_MASK_LCP_AP; } /* * LCP TWO */ if((inString[6] EQ 0x31) || ((inString[6] NEQ 0x30) && (ppp_data->pco_mask & PPP_PCO_MASK_LCP_TWO))) { TRACE_EVENT(" - two LCP packets"); new_mask|= PPP_PCO_MASK_LCP_TWO; } /* * Authentication Protocol */ if((inString[7] EQ 0x31) || ((inString[7] NEQ 0x30) && (ppp_data->pco_mask & PPP_PCO_MASK_AUTH_PROT))) { TRACE_EVENT(" - PAP/CHAP Authentication packet(s)"); new_mask|= PPP_PCO_MASK_AUTH_PROT; } /* * IPCP HC */ if((inString[8] EQ 0x31) || ((inString[8] NEQ 0x30) && (ppp_data->pco_mask & PPP_PCO_MASK_IPCP_HC))) { TRACE_EVENT(" - VJ Header Compression"); new_mask|= PPP_PCO_MASK_IPCP_HC; } /* * IPCP IP */ if((inString[9] EQ 0x31) || ((inString[9] NEQ 0x30) && (ppp_data->pco_mask & PPP_PCO_MASK_IPCP_IP))) { TRACE_EVENT(" - IP address"); new_mask|= PPP_PCO_MASK_IPCP_IP; } /* * IPCP PDNS */ if((inString[10] EQ 0x31) || ((inString[10] NEQ 0x30) && (ppp_data->pco_mask & PPP_PCO_MASK_IPCP_PDNS))) { TRACE_EVENT(" - primary DNS address"); new_mask|= PPP_PCO_MASK_IPCP_PDNS; } /* * IPCP SDNS */ if((inString[11] EQ 0x31) || ((inString[11] NEQ 0x30) && (ppp_data->pco_mask & PPP_PCO_MASK_IPCP_SDNS))) { TRACE_EVENT(" - secondary DNS address"); new_mask|= PPP_PCO_MASK_IPCP_SDNS; } /* * IPCP GATEWAY */ if((inString[12] EQ 0x31) || ((inString[12] NEQ 0x30) && (ppp_data->pco_mask & PPP_PCO_MASK_IPCP_GATEWAY))) { TRACE_EVENT(" - Gateway address"); new_mask|= PPP_PCO_MASK_IPCP_GATEWAY; } if(new_mask EQ 0) { TRACE_EVENT(" - no content"); } /* * set new PCO mask */ ppp_data->pco_mask = new_mask; } else { TRACE_ERROR("config command does not exist"); } #endif /* !NCONFIG */ return PEI_OK; } /* +------------------------------------------------------------------------------ | Function : pei_config +------------------------------------------------------------------------------ | Description : This function is called by the frame in case sudden entity | specific data is requested (e.g. entity Version). | | Parameters : out_monitor - return the address of the data to be | monitoredCommunication handle | | Return : PEI_OK - sucessful (address in out_monitor is valid) | PEI_ERROR - not successful | +------------------------------------------------------------------------------ */ LOCAL SHORT pei_monitor (void ** out_monitor) { TRACE_FUNCTION ("pei_monitor"); /* * Version = "0.S" (S = Step). */ ppp_mon.version = VERSION_PPP; /*lint !e605 Increase in pointer capability */ *out_monitor = &ppp_mon; return PEI_OK; } /* +------------------------------------------------------------------------------ | Function : pei_create +------------------------------------------------------------------------------ | Description : This function is called by the frame when the process is | created. | | Parameters : out_name - Pointer to the buffer in which to locate | the name of this entity | | Return : PEI_OK - entity created successfuly | PEI_ERROR - entity could not be created | +------------------------------------------------------------------------------ */ GLOBAL SHORT pei_create (T_PEI_INFO **info) { static T_PEI_INFO pei_info = { "PPP", /*lint !e605 Increase in pointer capability */ { /* pei-table */ pei_init, pei_exit, pei_primitive, pei_timeout, pei_signal, pei_run, pei_config, pei_monitor }, 2048, /* stack size */ 10, /* queue entries */ 185, /* priority (1->low, 255->high) */ TIMER_MAX, /* number of timers */ 0x03|PRIM_NO_SUSPEND /* flags: bit 0 active(0) body/passive(1) */ }; /* bit 1 com by copy(0)/reference(1) */ TRACE_FUNCTION ("pei_create"); /* * Close Resources if open */ if (first_access) first_access = FALSE; else pei_exit(); /*lint !e534 Ignoring return value */ /* * Export startup configuration data */ *info = &pei_info; return PEI_OK; } /* +------------------------------------------------------------------------------ | Function : sig_callback +------------------------------------------------------------------------------ | Description : This is the DTI Callback Function which handles the DTI signals. | | | Parameters : instance - DTI instance | inter_face - DTI interface | channel - DTI channel | reason - DTI reason | *dti_data_ind - Ptr. to the data primitive | +------------------------------------------------------------------------------ */ GLOBAL void sig_callback(U8 instance, U8 inter_face, U8 channel, U8 reason, T_DTI2_DATA_IND *dti_data_ind) { DTI_HANDLE hDTI; TRACE_FUNCTION("sig_callback"); hDTI = ppp_data->ppphDTI; if (hDTI NEQ D_NO_DATA_BASE) { switch (reason) { case DTI_REASON_CONNECTION_OPENED: /* * DTI connect */ sig_dti_arb_connection_opened_ind (hDTI, instance, inter_face, channel); break; case DTI_REASON_CONNECTION_CLOSED: /* * DTI disconnect */ sig_dti_arb_connection_closed_ind (hDTI, instance, inter_face, channel); break; case DTI_REASON_DATA_RECEIVED: if(inter_face EQ PROT_LAYER) /* * Data packet recived from Protocol Layer. Process it and send. */ sig_dti_prx_data_received_ind(dti_data_ind); else /* * Data packet recived from Peer Layer. Process it and send. */ sig_dti_frx_data_received_ind (dti_data_ind); break; case DTI_REASON_TX_BUFFER_FULL: if(inter_face EQ PROT_LAYER) /* * Buffer full for sending data to Protocol Layer. */ sig_dti_ptx_tx_buffer_full_ind(); else /* * Buffer full for sending data to Peer Layer. */ sig_dti_ftx_tx_buffer_full_ind (); break; case DTI_REASON_TX_BUFFER_READY: if(inter_face EQ PROT_LAYER) /* * Buffer ready Protocol Layer. */ sig_dti_ptx_tx_buffer_ready_ind(); else /* * Buffer ready Peer Layer. */ sig_dti_ftx_tx_buffer_ready_ind(); break; default: TRACE_ERROR("Pointer to no DTI database"); break; } /* end switch */ } /* end if */ else { TRACE_ERROR("Pointer to DTILIB database non existing"); } } /* sig_callback() */ /* +------------------------------------------------------------------------------ | Function : sig_any_dti_data_ind +------------------------------------------------------------------------------ | Description : This function sends a Data Primitive | | Parameters : *hDTI - Ptr. to DTI Databank | *dti_data_ind - Ptr. to Primitive which shall be sended | instance - DTI instance | interface - DTI interface | channel - DTI channel | +------------------------------------------------------------------------------ */ GLOBAL void sig_any_dti_data_ind ( DTI_HANDLE hDTI, T_DTI2_DATA_IND *dti_data_ind, UBYTE instance, UBYTE inter_face, UBYTE channel, UBYTE p_id ) { T_desc2* temp_desc; TRACE_FUNCTION ("sig_any_dti_data_ind()"); dti_data_ind->parameters.p_id = p_id; dti_data_ind->parameters.st_lines.st_flow = DTI_FLOW_ON; dti_data_ind->parameters.st_lines.st_line_sa = DTI_SA_ON; dti_data_ind->parameters.st_lines.st_line_sb = DTI_SB_ON; dti_data_ind->parameters.st_lines.st_break_len = DTI_BREAK_OFF; /* * This PPP does not support handle of offset in the descriptor. * Offset is set to 0 and size to len. */ temp_desc = (T_desc2*)dti_data_ind->desc_list2.first; while(temp_desc) { temp_desc->offset = 0; temp_desc->size = temp_desc->len; temp_desc = (T_desc2*)temp_desc->next; } dti_send_data(hDTI, instance, inter_face, channel, dti_data_ind); } /* sig_any_dti_data_ind () */ /* +------------------------------------------------------------------------------ | Function : pei_dti_dti_connect_req +------------------------------------------------------------------------------ | Description : Helpfunction to activate dti_dti_connect_req | | Parameters : Ptr. to primitive | +------------------------------------------------------------------------------ */ GLOBAL void pei_dti_dti_connect_req ( T_DTI2_CONNECT_REQ *dti_connect_req ) { dti_dti_connect_req (ppp_data->ppphDTI, dti_connect_req); } /* +------------------------------------------------------------------------------ | Function : pei_dti_dti_disconnect_ind +------------------------------------------------------------------------------ | Description : Helpfunction to activate dti_dti_disconnect_ind | | Parameters : Ptr. to primitive | +------------------------------------------------------------------------------ */ GLOBAL void pei_dti_dti_disconnect_ind ( T_DTI2_DISCONNECT_IND *dti_disconnect_ind ) { dti_dti_disconnect_ind (ppp_data->ppphDTI, dti_disconnect_ind); } /* +------------------------------------------------------------------------------ | Function : pei_dti_dti_connect_cnf +------------------------------------------------------------------------------ | Description : Helpfunction to activate dti_dti_connect_cnf | | Parameters : Ptr. to primitive | +------------------------------------------------------------------------------ */ GLOBAL void pei_dti_dti_connect_cnf ( T_DTI2_CONNECT_CNF *dti_connect_cnf ) { dti_dti_connect_cnf(ppp_data->ppphDTI, dti_connect_cnf); } /* +------------------------------------------------------------------------------ | Function : pei_dti_dti_connect_ind +------------------------------------------------------------------------------ | Description : Helpfunction to activate dti_dti_connect_ind | | Parameters : Ptr. to primitive | +------------------------------------------------------------------------------ */ GLOBAL void pei_dti_dti_connect_ind ( T_DTI2_CONNECT_IND *dti_connect_ind ) { dti_dti_connect_ind(ppp_data->ppphDTI, dti_connect_ind); } /* +------------------------------------------------------------------------------ | Function : pei_dti_dti_connect_res +------------------------------------------------------------------------------ | Description : Helpfunction to activate dti_dti_connect_res | | Parameters : Ptr. to primitive | +------------------------------------------------------------------------------ */ GLOBAL void pei_dti_dti_connect_res ( T_DTI2_CONNECT_RES *dti_connect_res ) { dti_dti_connect_res(ppp_data->ppphDTI, dti_connect_res); } /* +------------------------------------------------------------------------------ | Function : pei_dti_dti_disconnect_req +------------------------------------------------------------------------------ | Description : Helpfunction to activate dti_dti_disconnect_req | | Parameters : Ptr. to primitive | +------------------------------------------------------------------------------ */ GLOBAL void pei_dti_dti_disconnect_req ( T_DTI2_DISCONNECT_REQ *dti_disconnect_req ) { dti_dti_disconnect_req (ppp_data->ppphDTI, dti_disconnect_req); } /* +------------------------------------------------------------------------------ | Function : pei_dti_dti_ready_ind +------------------------------------------------------------------------------ | Description : Helpfunction to activate dti_dti_ready_ind | | Parameters : Ptr. to primitive | +------------------------------------------------------------------------------ */ GLOBAL void pei_dti_dti_ready_ind ( T_DTI2_READY_IND *dti_ready_ind ) { dti_dti_ready_ind (ppp_data->ppphDTI, dti_ready_ind); } /* +------------------------------------------------------------------------------ | Function : pei_dti_dti_data_req +------------------------------------------------------------------------------ | Description : Helpfunction to activate dti_dti_data_req | | Parameters : Ptr. to primitive | +------------------------------------------------------------------------------ */ GLOBAL void pei_dti_dti_data_req ( T_DTI2_DATA_REQ *dti_data_req ) { dti_dti_data_req (ppp_data->ppphDTI, dti_data_req); } /* +------------------------------------------------------------------------------ | Function : pei_dti_dti_data_ind +------------------------------------------------------------------------------ | Description : Helpfunction to activate dti_dti_data_ind | | Parameters : Ptr. to primitive | +------------------------------------------------------------------------------ */ GLOBAL void pei_dti_dti_data_ind ( T_DTI2_DATA_IND *dti_data_ind ) { dti_dti_data_ind (ppp_data->ppphDTI, dti_data_ind); } /* +------------------------------------------------------------------------------ | Function : pei_dti_dti_getdata_req +------------------------------------------------------------------------------ | Description : Helpfunction to activate dti_dti_getdata_req | | Parameters : Ptr. to primitive | +------------------------------------------------------------------------------ */ GLOBAL void pei_dti_dti_getdata_req ( T_DTI2_GETDATA_REQ *dti_getdata_req ) { dti_dti_getdata_req (ppp_data->ppphDTI, dti_getdata_req); } /*==== Start functions only use with Windows ===============================*/ #if defined (_SIMULATION_) /* +------------------------------------------------------------------------------ | Function : pei_dti_dti_data_test_req +------------------------------------------------------------------------------ | Description : Helpfunction to activate dti_dti_data_test_req | | Parameters : Ptr. to primitive | +------------------------------------------------------------------------------ */ GLOBAL void pei_dti_dti_data_test_req ( T_DTI2_DATA_TEST_REQ *dti_data_test_req ) { dti_dti_data_test_req (ppp_data->ppphDTI, dti_data_test_req); } /* +------------------------------------------------------------------------------ | Function : pei_dti_dti_data_test_ind +------------------------------------------------------------------------------ | Description : Helpfunction to activate dti_dti_data_test_req | | Parameters : Ptr. to primitive | +------------------------------------------------------------------------------ */ GLOBAL void pei_dti_dti_data_test_ind ( T_DTI2_DATA_TEST_IND *dti_data_test_ind ) { dti_dti_data_test_ind (ppp_data->ppphDTI, dti_data_test_ind); } #endif /* _SIMULATION_) */ /*==== END OF FILE =========================================================*/