FreeCalypso > hg > freecalypso-citrine
diff ccd/csn1_s0_opt.c @ 0:75a11d740a02
initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 09 Jun 2016 00:02:41 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ccd/csn1_s0_opt.c Thu Jun 09 00:02:41 2016 +0000 @@ -0,0 +1,123 @@ +/* ++----------------------------------------------------------------------------- +| Project : CCD +| Modul : csn1_s0_opt.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 CSN1_S0 elements ++----------------------------------------------------------------------------- +*/ + +/* + * standard definitions like GLOBAL, 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" + +extern SHORT cdc_csn1_sx_decode (int flag, const ULONG e_ref, T_CCD_Globs *globs); +extern SHORT cdc_csn1_sx_encode (int flag, const ULONG e_ref, T_CCD_Globs *globs); + +#ifndef RUN_FLASH +/* ++------------------------------------------------------------------------+ +| PROJECT : CCD (6144) MODULE : CCD | +| STATE : code ROUTINE : cdc_csn1_s0_opt_decode | ++------------------------------------------------------------------------+ + + PURPOSE : Decoding of the non-standard type CSN1 S0 element. + The encoding rule for this type is very similar to the + CSN.1 type. Except for the presence flag which is 0 in + this case. + The encoded IE consists of one bit for presence flag and + a value part. Only if the flag bit is equal 0 the value + part will follow it. + + The element value can be present, then it is preceded by the + flag value 0. If the element is represented by the flag 1 only + the value is absent! Besides the absence of the whole element + is allowed. +*/ + +SHORT cdc_csn1_s0_opt_decode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs) +{ +#ifdef DEBUG_CCD + #ifndef CCD_SYMBOLS + TRACE_CCD (globs, "cdc_csn1_s0_opt_decode()"); + #else + TRACE_CCD (globs, "cdc_csn1_s0_opt_decode() %s", ccddata_get_alias((USHORT) e_ref, 1)); + #endif +#endif + + return cdc_csn1_sx_decode (0, e_ref, globs); +} +#endif /* !RUN_FLASH */ + +#ifndef RUN_FLASH +/* ++------------------------------------------------------------------------+ +| PROJECT : CCD (6144) MODULE : CDC_GSM | +| STATE : code ROUTINE : cdc_csn1_s0_opt_encode | ++------------------------------------------------------------------------+ + + PURPOSE : Encoding of the non-standard type CSN1 S0 element. + The encoding rule for this type is very similar to CSN.1 + type. Except for the presence flag which is 0 in this + case. The encoded bit pattern consists of a 0 bit as + valid flag and a value part. If the element is present + (the v_xxx component is TRUE in the decoded message) + a 0 bit will be coded followed by the encoded value part. + Otherwise a 1 bit will be encoded. + Possible array types are given by melem[e_ref].repType: + 0) ' ' => {0| IE} (no array) + 1) 'i' => {0 IE} ** 1 (many repeations up to a 1 bit) + 2) 'v' => {0|1 IE}* val (val is another IE) + 3) 'c' => {0|1 IE}* 3 (3 is an example) +*/ + +SHORT cdc_csn1_s0_opt_encode (const ULONG c_ref, const ULONG e_ref, T_CCD_Globs *globs) +{ +#ifdef DEBUG_CCD + #ifndef CCD_SYMBOLS + TRACE_CCD (globs, "cdc_csn1_s0_opt_encode()"); + #else + TRACE_CCD (globs, "cdc_csn1_s0_opt_encode() %s", ccddata_get_alias((USHORT) e_ref, 1)); + #endif +#endif + + return cdc_csn1_sx_encode (0, e_ref, globs); +} +#endif /* !RUN_FLASH */