FreeCalypso > hg > fc-magnetite
view src/g23m-fad/tcpip/tcpip_sim_utils.c @ 635:baa0a02bc676
niq32.c DTR handling restored for targets that have it
TI's original TCS211 fw treated GPIO 3 as the DTR input (wired so on C-Sample
and D-Sample boards, also compatible with Leonardo and FCDEV3B which have a
fixed pull-down resistor on this GPIO line), and the code in niq32.c called
UAF_DTRInterruptHandler() (implemented in uartfax.c) from the
IQ_KeypadGPIOHandler() function. But on Openmoko's GTA02 with their official
fw this GPIO is a floating input, all of the DTR handling code in uartfax.c
including the interrupt logic is still there, but the hobbled TCS211-20070608
semi-src delivery which OM got from TI contained a change in niq32.c (which
had been kept in FC until now) that removed the call to
UAF_DTRInterruptHandler() as part of those not-quite-understood "CC test"
hacks.
The present change fixes this bug at a long last: if we are building fw for a
target that has TI's "classic" DTR & DCD GPIO arrangement (dsample, fcmodem and
gtm900), we bring back all of TI's original code in both uartfax.c and niq32.c,
whereas if we are building fw for a target that does not use this classic GPIO
arrangement, the code in niq32.c goes back to what we got from OM and all
DTR & DCD code in uartfax.c is conditioned out. This change also removes the
very last remaining bit of "CC test" bogosity from our FreeCalypso code base.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 19 Jan 2020 01:41:35 +0000 |
parents | 90eb61ecd093 |
children |
line wrap: on
line source
/* +------------------------------------------------------------------------------ | File: tcpip_utils.c +------------------------------------------------------------------------------ | Copyright 2003 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 : Utility functions for GPF-based TCP/IP +----------------------------------------------------------------------------- */ #define TCPIP_UTILS_C #define ENTITY_TCPIP /*==== INCLUDES =============================================================*/ #include <string.h> /* String functions, e. g. strncpy(). */ #include <stdio.h> #include "typedefs.h" /* to get Condat data types */ #include "vsi.h" /* to get a lot of macros */ #include "custom.h" #include "gsm.h" /* to get a lot of macros */ #include "prim.h" /* to get the definitions of used SAP and directions */ #include "pei.h" /* to get PEI interface */ #include "tools.h" /* to get common tools */ #include "dti.h" /* For DTI library definitions. */ #include "glob_defs.h" #include "tcpip.h" /* to get the global entity definitions */ /* RNET includes */ #include "rv_general.h" #include "rnet_api.h" #include "rnet_rt_env.h" #include "rnet_message.h" #include "rnet_rt_i.h" /*==== Local prototypes =====================================================*/ /*==== Macros ===============================================================*/ /*==== Types ================================================================*/ /*==== Local data ===========================================================*/ /*==== Other public functions ===============================================*/ unsigned long tcpip_sim_fake_data(int socket, U16 len) { static char tmp[100000] ; /* MALLOC(tmp, len) ; */ *tmp = 0 ; if (len > 30) { sprintf(tmp, "data len 0x%0.4x for socket %-.2d\n", len, socket) ; } if (len > strlen(tmp)) { memset(tmp + strlen(tmp), '0' + socket, len - strlen(tmp)) ; } return (unsigned long) tmp ; } void tcpip_dump_packet(char *title, U8 *data, U16 len) { static char buf[80] ; int i = 0 ; strcpy(buf, "pkt dump from ") ; strcat(buf, title) ; strcat(buf, "\n ") ; while (len-- > 0) { sprintf(buf + strlen(buf), " %02x", *data++) ; if (!(++i % 4)) { if (!(i % 8)) { TRACE_EVENT(buf) ; sprintf(buf, " ") ; } else { sprintf(buf + strlen(buf), " ") ; } } } printf("%s", buf) ; } static char *inet_ntoa(U32 ipaddr) { static char ipaddr_string[sizeof("000.000.000.000")] ; UBYTE *addrbyte_p ; /* Pointer to single address bytes. */ addrbyte_p = (UBYTE *) &ipaddr ; sprintf(ipaddr_string,"%u.%u.%u.%u", addrbyte_p[3], addrbyte_p[2], addrbyte_p[1], addrbyte_p[0]); return ipaddr_string ; } void tcpip_if_properties(NGifnet *netp) { char *name ; U32 value ; ngIfGenCntl(netp, NG_CNTL_GET, NG_IFO_NAME, &name) ; TRACE_EVENT_P1("Interface name %s", name) ; ngIfGenCntl(netp, NG_CNTL_GET, NG_IFO_OUTQ_MAX, &value) ; TRACE_EVENT_P1(" NG_IFO_OUTQ_MAX = %d", value) ; ngIfGenCntl(netp, NG_CNTL_GET, NG_IFO_ADDR, &value) ; TRACE_EVENT_P1(" NG_IFO_ADDR = %s", inet_ntoa(ngNTOHL(value))) ; ngIfGenCntl(netp, NG_CNTL_GET, NG_IFO_NETMASK, &value) ; TRACE_EVENT_P1(" NG_IFO_NETMASK = 0x%x", ngNTOHL(value)) ; ngIfGenCntl(netp, NG_CNTL_GET, NG_IFO_DSTADDR, &value) ; TRACE_EVENT_P1(" NG_IFO_DSTADDR = %s", inet_ntoa(ngNTOHL(value))) ; ngIfGenCntl(netp, NG_CNTL_GET, NG_IFO_FLAGS, &value) ; TRACE_EVENT_P1(" NG_IFO_FLAGS = 0x%x", value) ; ngIfGenCntl(netp, NG_CNTL_GET, NG_IFO_DEV1, &value) ; TRACE_EVENT_P1(" NG_IFO_DEV1 = 0x%x", value) ; ngIfGenCntl(netp, NG_CNTL_GET, NG_IFO_DEV2, &value) ; TRACE_EVENT_P1(" NG_IFO_DEV2 = 0x%x", value) ; ngIfGenCntl(netp, NG_CNTL_GET, NG_IFO_DEVPTR1, &value) ; TRACE_EVENT_P1(" NG_IFO_DEVPTR1 = 0x%x", value) ; ngIfGenCntl(netp, NG_CNTL_GET, NG_IFO_DEVPTR2, &value) ; TRACE_EVENT_P1(" NG_IFO_DEVPTR2 = 0x%x", value) ; ngIfGenCntl(netp, NG_CNTL_GET, NG_IFO_PROMISC, &value) ; TRACE_EVENT_P1(" NG_IFO_PROMISC = 0x%x", value) ; ngIfGenCntl(netp, NG_CNTL_GET, NG_IFO_ALLMULTI, &value) ; TRACE_EVENT_P1(" NG_IFO_ALLMULTI = 0x%x", value) ; ngIfGenCntl(netp, NG_CNTL_GET, NG_IFO_MTU, &value) ; TRACE_EVENT_P1(" NG_IFO_MTU = %d", value) ; }