FreeCalypso > hg > fc-magnetite
diff src/aci2/aci/cmh_pktio.c @ 3:93999a60b835
src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 26 Sep 2016 00:29:36 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/aci2/aci/cmh_pktio.c Mon Sep 26 00:29:36 2016 +0000 @@ -0,0 +1,181 @@ +/* ++------------------------------------------------------------------------------ +| File: cmh_pktio.c ++------------------------------------------------------------------------------ +| 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 defines the functions used by the command +| handler for packet I/O (PKTIO). ++------------------------------------------------------------------------------ +*/ + +#if defined (GPRS ) && defined (DTI) +#ifdef FF_PKTIO +#ifndef CMH_PKTIO_C +#define CMH_PKTIO_C +#endif + +#include "aci_all.h" +/*==== INCLUDES ===================================================*/ +#include "gprs.h" + +#include "dti.h" /* functionality of the dti library */ +#include "aci_cmh.h" +#include "ati_cmd.h" +#include "aci_cmd.h" + +#include "aci.h" +#include "psa.h" + +#include "cmh.h" + + +#include "dti_conn_mng.h" +#include "dti_cntrl_mng.h" +#include "sap_dti.h" +#include "gaci.h" +#include "gaci_cmh.h" +#include "cmh_sm.h" +#include "psa_pktio.h" +#include "cmh_pktio.h" + + +/*==== CONSTANTS ==================================================*/ +#define MAX_BAUD_RATE 20 +/*==== TYPES ======================================================*/ + +/*==== EXPORT =====================================================*/ +/*==== VARIABLES ==================================================*/ +/*==== FUNCTIONS ==================================================*/ +LOCAL void set_baudrate (T_ACI_PKTIO_CAP *capabilities); +/* ++--------------------------------------------------------------------+ +| PROJECT : GPRS (8441) MODULE : CMH_PKTIO | +| STATE : finished ROUTINE : search_baudrate | ++--------------------------------------------------------------------+ + + PURPOSE : search and set the highest baudrate in DIO capabilities + to send in response PKT_CONNECT_RES +*/ +LOCAL void set_baudrate (T_ACI_PKTIO_CAP * capabilities) +{ + U32 baud_rate = DIO_BAUD_812500; + UBYTE i; + + for(i= 0;i<MAX_BAUD_RATE;i++) + { + if((capabilities->baud & baud_rate) EQ baud_rate) + { + capabilities->baud = baud_rate; + break; + } + else + { + baud_rate = baud_rate>>1; + } + } +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GPRS (8441) MODULE : CMH_PKTIO | +| STATE : finished ROUTINE : cmhPKT_Ind | ++--------------------------------------------------------------------+ + + PURPOSE : +*/ +GLOBAL void cmhPKT_Ind (T_ACI_PKTIO *pkt_indic_msg) +{ + T_ACI_PKTIO_CAP capabilities; + + TRACE_FUNCTION ("cmhPKT_Ind()"); + + /* register device to the DTI Control Manager */ + dti_cntrl_new_device ( DTI_SRC_ID_NOTPRESENT, /* ATI source ID */ + DTI_ENTITY_PKTIO, /* device ID */ + pkt_indic_msg->device_no, /* device number */ + UART_DLCI_NOT_MULTIPLEXED,/* sub-channel number */ + DTI_PORT_NUMBER_NOTPRESENT,/* ATI-RIV port number */ + pkt_indic_msg->pktio_cap.convergence,/* capabilities */ + DTI_DRIVER_ID_NOTPRESENT, + DTI_DIO_ID_NOTPRESENT); + + memset(&capabilities,0,sizeof(T_ACI_PKTIO_CAP)); + memcpy(&capabilities,&pkt_indic_msg->pktio_cap,sizeof(T_ACI_PKTIO_CAP)); + set_baudrate(&capabilities); + psaPKT_ConnectRes ( pkt_indic_msg->device_no, &capabilities); +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GPRS (8441) MODULE : CMH_PKTIO | +| STATE : finished ROUTINE : cmhPKT_OpenCnf | ++--------------------------------------------------------------------+ + + PURPOSE : +*/ +GLOBAL void cmhPKT_OpenCnf (UBYTE device_number, T_DTI_CONN_RESULT result) +{ + ULONG link_id; + + TRACE_FUNCTION ("cmhPKT_OpenCnf()"); + + link_id = dti_cntrl_get_link_id(DTI_ENTITY_PKTIO, device_number, + UART_DLCI_NOT_MULTIPLEXED); + dti_cntrl_entity_connected( link_id, DTI_ENTITY_PKTIO,result); +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GPRS (8441) MODULE : CMH_PKTIO | +| STATE : finished ROUTINE : cmhPKT_Close | ++--------------------------------------------------------------------+ + + PURPOSE : +*/ +GLOBAL void cmhPKT_Close (UBYTE device_no, T_CMH_PKT_STATE state) +{ + ULONG link_id; + SHORT cid; + + + TRACE_FUNCTION ("cmhPKT_Close()"); + + link_id = dti_cntrl_get_link_id(DTI_ENTITY_PKTIO, device_no, + UART_DLCI_NOT_MULTIPLEXED); + switch(state) + { + case DTI_CLOSE_CNF: + dti_cntrl_entity_disconnected(link_id, DTI_ENTITY_PKTIO); + break; + case DTI_CLOSE_IND: + dti_cntrl_entity_disconnected(link_id, DTI_ENTITY_PKTIO); + dti_cntrl_close_dpath_from_dti_id(EXTRACT_DTI_ID(link_id)); + break; + case DTI_DISC_IND: + return; + default: + return; + } + + cid = gaci_get_cid_over_link_id(link_id); + if( INVALID_CID NEQ cid) + { + gaci_RAT_caller(RAT_NO_CARRIER, cid, AT_CMD_CGDATA, CME_ERR_Unknown); + } + cmhSM_connection_down((UBYTE)EXTRACT_DTI_ID(link_id)); +} + + +#endif +#endif /* GPRS */ +/*==== EOF ========================================================*/