FreeCalypso > hg > fc-magnetite
view src/gpf3/ccd/asn1_bitstr.c @ 547:c3f2f79dc5b8
l1_rf12.c compiled-in default RF band tables: a round of cleanup
* Uncalibrated default g_magic values changed from old Clara RF numbers
(yes, Clara, not even Leonardo) to the approximately correct value
for our current hw;
* Uncalibrated default Rx and Tx channel calibration tables providing
neutral correction values: fixed bogus ARFCNs from blind copy-n-paste
between different bands;
* Restored #if (ORDER2_TX_TEMP_CAL==1) in the Tx temperature compensation
tables;
* Fully rewrote the big comment before these rf_XXX structures to reflect
the current situation.
This change is part of the larger transition in FreeCalypso from reverse
to forward engineering, from reconstruction of lost original bits to
ongoing forward development and maintenance.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 17 Nov 2018 19:57:34 +0000 |
parents | c41a534f33c6 |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | Project : | Modul : asn1_bitstr.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 : Definition of encoding and decoding functions for ASN1_BITSTRING | elements +----------------------------------------------------------------------------- */ /* * Standard definitions like UCHAR, ERROR etc. */ #include "typedefs.h" #include "header.h" /* * Prototypes of ccd (USE_DRIVER EQ undef) for prototypes only * look at ccdapi.h */ #undef USE_DRIVER #include "ccdapi.h" /* * Types and functions for bit access and manipulation */ #include "ccd_globs.h" #include "bitfun.h" /* * Prototypes of ccd internal functions */ #include "ccd.h" /* * Declaration of coder/decoder tables */ #include "ccdtable.h" #include "ccddata.h" #ifndef RUN_INT_RAM /* +--------------------------------------------------------------------+ | PROJECT : CCD (6144) MODULE : CDC_GSM | | STATE : code ROUTINE : cdc_bitstring_decode | +--------------------------------------------------------------------+ PURPOSE : UNALIGNED PER decoding of the bit string type (UMTS) The coded bits are preceded by a length indicator, if they are not of fixed length. The length indicator is decoded as an ASN1_INTEGER type. */ SHORT cdc_bitstring_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs) { ULONG repeat; U8 *old_pstruct = NULL; #ifdef DEBUG_CCD #ifndef CCD_SYMBOLS TRACE_CCD (globs, "cdc_asn1_bitstring_decode()"); #else TRACE_CCD (globs, "cdc_asn1_bitstring_decode() '%s'", ccddata_get_alias((USHORT) e_ref, 1)); #endif #endif /* * Set pstrcutOffs and maxRep. * Check the valid flag in case of optional elements. */ if (PER_CommonBegin (e_ref, &repeat, globs) NEQ ccdOK) return 1; #ifdef DYNAMIC_ARRAYS /* * Check for pointer types, and allocate memory if necessary. * May overwrite globs->pstruct (and initialize globs->pstructOffs to 0). */ if ( is_pointer_type(e_ref) ) { old_pstruct = globs->pstruct; if ( PER_allocmem_and_update(e_ref, (USHORT) ((repeat >> 3) +1), globs) NEQ ccdOK) /* No memory - Return. Error already set in function call above. */ return 1; } #endif bf_readBitStr_PER ((USHORT) repeat, globs); #ifdef DYNAMIC_ARRAYS if (old_pstruct NEQ NULL) globs->pstruct = old_pstruct; #endif return 1; } #endif /* !RUN_INT_RAM */ #ifndef RUN_INT_RAM /* +--------------------------------------------------------------------+ | PROJECT : CCD (6144) MODULE : CDC_GSM | | STATE : code ROUTINE : cdc_bitstring_encode | +--------------------------------------------------------------------+ PURPOSE : UNALIGNED PER encoding of the bit string type (UMTS) The coded bits are preceded by a length indicator, if they are not of fixed length. The length indicator is decoded as an ASN1_INTEGER type. */ SHORT cdc_bitstring_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs) { ULONG repeat; U8 *old_pstruct = NULL; #ifdef DEBUG_CCD #ifndef CCD_SYMBOLS TRACE_CCD (globs, "cdc_asn1_bitstring_encode()"); #else TRACE_CCD (globs, "cdc_asn1_bitstring_encode() '%s'", ccddata_get_alias((USHORT) e_ref, 1)); #endif #endif /* * Set pstructOffs and maxRep. * Check the valid flag in case of optional elements. */ if (PER_CommonBegin (e_ref, &repeat, globs) NEQ ccdOK) return 1; #ifdef DYNAMIC_ARRAYS if ( is_pointer_type(e_ref) ) { old_pstruct = globs->pstruct; globs->pstruct = *(U8 **)(globs->pstruct + globs->pstructOffs); if (ccd_check_pointer(globs->pstruct) == ccdOK) { globs->pstructOffs = 0; } else { ccd_recordFault (globs, ERR_INVALID_PTR, BREAK, (USHORT) e_ref, &globs->pstruct[globs->pstructOffs]); return 1; } } #endif bf_writeBitStr_PER ((USHORT) repeat, globs); #ifdef DYNAMIC_ARRAYS if ( old_pstruct NEQ NULL ) globs->pstruct = old_pstruct; #endif return 1; } #endif /* !RUN_INT_RAM */