FreeCalypso > hg > freecalypso-sw
diff gsm-fw/gpf/inc/ccdapi.h @ 316:79080922d8e4
GPF: FRAME C sources and include files imported from LoCosto source
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Thu, 10 Apr 2014 04:06:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gsm-fw/gpf/inc/ccdapi.h Thu Apr 10 04:06:05 2014 +0000 @@ -0,0 +1,557 @@ +/* ++----------------------------------------------------------------------------- +| Project : +| Modul : ccdapi.h ++----------------------------------------------------------------------------- +| 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 : Condat Coder Decoder Application Interface +| +| Use this header to integrate the condat coder decoder +| in your target system ! +| +| The application must define USE_DRIVER if CCD is +| not linked but used as a driver ++----------------------------------------------------------------------------- +*/ + +#ifndef CCDAPI_H +#define CCDAPI_H + +#ifdef __cplusplus +extern "C" { +#endif /*_cplusplus*/ + +/************************************************************** + Types and constants for CCD + used in application, in stub1 (api) and in driver body + **************************************************************/ + +/*==== CONSTANTS ==================================================*/ +/* + * constants for the direction-parameter for coding/decoding + */ + +#define UPLINK 0 +#define DOWNLINK 1 +#define BOTH UPLINK + + /* ccd Error codes */ +#define ccdOK 0 +#define ccdWarning 1 +#define ccdError 2 +#ifdef _TOOLS_ +#define CCD_DLL_ERROR 23 +#endif /* _TOOLS_ */ + +/* reentrancy */ +#define CCD_REENTRANT 0 + +/* + * Error codes to use with ccd_setError() + */ +#define ERR_NO_MORE_ERROR 0 /* Returned by ccd_getFirst/NextError */ + /* in case of the end of the error list */ + +#define ERR_INVALID_CALC 1 /* Invalid combination of calculations */ + /* Error params: none */ + +#define ERR_PATTERN_MISMATCH 2 /* A spare pattern does not match with */ + /* the specified content */ + /* Error params[0] = bitposition */ + +#define ERR_COMPREH_REQUIRED 3 /* Comprehension of an unknown TAG */ + /* required. */ + /* Error params[0] = TAG */ + /* [1] = bitposition */ + +#define ERR_IE_NOT_EXPECTED 4 /* Unknown or unexpected TAG found */ + /* Error params[0] = TAG */ + /* [1] = bitposition */ + +#define ERR_IE_SEQUENCE 5 /* A valid TAG is found but not in the */ + /* defined sequence. */ + /* Error params[0] = TAG */ + /* [1] = bitposition */ + +#define ERR_MAX_IE_EXCEED 6 /* A repeatable TAG is found but it */ + /* occurs more often than it is defined */ + /* Error params[0] = TAG */ + /* [1] = bitposition */ + +#define ERR_MAND_ELEM_MISS 7 /* A as mandatory defined element is */ + /* not in the message */ + /* Error params: none */ + +#define ERR_EOC_TAG_MISSING 8 /* A indefinite length is specified for */ + /* an ASN.1 element but the correspond. */ + /* End of Component TAG is missing */ + /* Error params[0] = TAG */ + /* [1] = bitposition */ + +#define ERR_INVALID_MID 9 /* The message starts with an undefined */ + /* message identifier; more exactly: */ + /* with the three given parameters mId, */ + /* entity, and direction for the coding */ + /* or decoding of a Message functions */ + /* CCD was not able to identify the */ + /* Message */ + /* Error params[0] = Message ID */ + +#define ERR_INVALID_TYPE 10 /* The actual element has an invalid */ + /* type e.g. S_PADDING without a spare */ + /* Error params[0] = bitposition */ + +#define ERR_MAX_REPEAT 11 /* A repeatable element occurs to often */ + /* in the message */ + +#define ERR_NO_MEM 12 /* Memory allocation failed. May result */ + /* occur when using pointer types. */ + /* (Dynamic array addition) */ + +#define ERR_ADDR_INFO_PART 13 /* CCD recognizes a message with a */ + /* disallowed addressing option */ + +#define ERR_DISTRIB_PART 14 /* CCD recognizes an error during */ + /* decoding of the message distribution */ + /* part */ + +#define ERR_NON_DISTRIB_PART 15 /* CCD recognizes an error during */ + /* decoding of the message non- */ + /* distribution part */ + +#define ERR_MESSAGE_ESCAPE 16 /* CCD detects an unknown message part, */ + /* which is marked whith a message */ + /* escape error label being used to */ + /* provide an escape for, e.g. a future */ + /* modification of the message syntax */ + +#define ERR_IGNORE 17 /* CCD detects a part of the message */ + /* that is syntactically incorrect and */ + /* is allowed to ignore this part */ + +#define ERR_18 18 /* dummy to complete error list - */ + /* may be used in furture enhancement */ + +#define ERR_19 19 /* dummy to complete error list - */ + /* may be used in furture enhancement */ + +#define ERR_INTERNAL_ERROR 20 /* An internal error occured */ + /* (hopefully not!) */ + /* Error params[0] = none */ +#define ERR_DEFECT_CCDDATA 21 /* The value read from a ccd table */ + /* (one of the *.cdg files) is not */ + /* expected by CCD, e.g. extGroup has */ + /* another value than ' ', '+', '-', */ + /* '!' or '#'. */ + /* Error params[0] = bitposition */ + /* this error code is needed only in */ + /* the development phase. */ +#define ERR_END_OF_BUF 22 /* According to the lenght indicator */ + /* there must be more bits to read but */ + /* end of bit buffer is reached */ + +#define ERR_INT_VALUE 23 /* Error on encoding of integer value. */ + /* IE of coding type ASN1_INTEGER is */ + /* out of the given range. */ + +#define ERR_LONG_MSG 24 /* UNUSED error code */ + /* According to l_buf and due to an */ + /* unknown message extension there are */ + /* more bits to be decoded than CCD or */ + /* ccddata expects. */ + +#define ERR_ASN1_ENCODING 25 /* Error on IE in the outermost level. */ +#define ERR_ASN1_MAND_IE 26 /* Error on mandatory IE of type */ + /* ASN1_INTEGER. The decoded value is */ + /* out of the range given by the loaded */ + /* ccd data tables. */ + /* data tables. */ +#define ERR_ASN1_OPT_IE 27 /* Error on optional IE of type. */ + /* ASN1_INTEGER. The decoded value is */ + /* out of the range given by the loaded */ + /* ccd data tables. */ +#define ERR_ASN1_COND_IE 28 /* UNUSED error code */ +#define ERR_COND_ELEM_MISS 29 /* UNUSED error code */ + /* Condition is met but the IE is not */ + /* present in the message. */ +#define ERR_BUFFER_OF 30 /* On coding, more bits were written, */ + /* than the input l_buf suggested. */ + +#define ERR_NONCRITICAL_EXT 31 /* Warning (if decoding) or error (if */ + /* encoding) on inappropriate usage of */ + /* a nonCriticalExtensions element. */ + /* The CCDTYPE_NONCRITICAL_EXTENSIONS */ + /* says the IE is not extended yet from */ + /* a CCD point of view. So it needs */ + /* neither to be encoded nor decoded. */ + /* In the latter case additional parts */ + /* at the end the message will be */ + /* ignored by CCD. Known extensions are */ + /* to be encoded by CCD. */ + +#define ERR_CRITICAL_EXT 32 /* Error on inappropriate usage of a */ + /* nonCriticalExtensions element. The */ + /* CCDTYPE_CRITICAL_EXTENSIONS says */ + /* the IE is not extended yet, from a */ + /* CCD point of view. So it needs not */ + /* to be encoded or decoded. In latter */ + /* case message is not comprehendable */ + /* and must be rejected. */ + +#define ERR_INVALID_CCDID 33 /* The ccd identifier for the element */ + /* to be decoded did not result a valid */ + /* data table entry. */ + +#define ERR_MSG_LEN 34 /* Decoding is just finished. But the */ + /* CCD internal bit pointer is beyond */ + /* the given message length, l_buf e.g. */ + +#define ERR_INVALID_PTR 35 /* Pointer used in C struct for encoding*/ + /* is not valid. */ +#define ERR_PROTOCOL_EXTENSION 36 /* IE of type S_PADDING_0 is preceded */ + /* by 1 instead of 0. */ + /* Error params[0] = CCDID */ + /* [1] = bitposition */ + +#define ERR_BITSTR_COMP 37 /* Length of bit array encoded as */ + /* composition is bigger than expected */ + /* Error params[0] = CCDID */ + /* [1] = addr in C-struct */ + +#define ERR_ELEM_LEN 38 /* The current information element's */ + /* length doesn't match to the length */ + /* required by its nested elements */ + +#define ERR_LEN_MISMATCH 39 /* The length of a superordinated */ + /* doesn't match to read an GSM5_V */ + /* element, which extends to the */ + /* message end. */ + +#define ERR_CONCAT_LEN 40 /* Coding of a truncated concatenation */ + /* doesn't fill the rest of message */ + /* buffer.(length given by l_buf) */ + +#define ERR_UNEXPECT_PAD 41 /* an inchoate byte is filled with */ + /* padding bits which are not expected */ + +#define ERR_CSN1_CHOICE 42 /* the number of CHOICE components */ + /* doesn't match to number of possible */ + /* alternatives */ + +#define MAX_CCD_ERROR 43 + +/* + * max number of parameters per error for parlist + * param ccd_getFirst/NextError + */ +#define MAX_ERR_PAR 3 +#define CCD_ERR_KIND_PARA_LIST 1 +#define CCD_ERR_KIND_IE_TYPE 2 + + +/*==== TYPES ======================================================*/ + +/* + * T_MSGBUF contains the coded message. + * o_buf specified the * offset (in Bits), * where the message + * starts in the buffer. + * l_buf contains the * length (in Bits) of the coded message. + * buf contains the * bitcoded message as an array of Bytes. + * + * (Do not modify this structure !) + */ + +typedef struct +{ + USHORT l_buf; + USHORT o_buf; + UBYTE buf [1]; +} T_MSGBUF; + + +/* + * new style of error information container, used in umts + */ +#ifdef CCD_USE_ENUM_IDS +#include "ccdid.h" /* to get enumeration for fault elements */ +typedef T_CCD_ID T_ERR_INFO; +#else +typedef ULONG T_ERR_INFO; +#endif + +typedef struct +{ + T_ERR_INFO err_info; + ULONG err_IEaddr; +} T_CCD_ERR_TYPE; + +/* + * old style of error information container, used in gsm/gprs + */ +#define MAX_ERR_PAR 3 +typedef struct +{ + UBYTE num_para; + USHORT err_list[MAX_ERR_PAR]; +} T_CCD_PARA_LIST; + +/* + * union supports old and new type of error information container + */ +typedef union +{ + T_CCD_PARA_LIST para_list; + T_CCD_ERR_TYPE err_type; +} T_CCD_ERR_PARA; + +/* + * general structure for error information passed to CCD caller + */ +typedef struct +{ + UBYTE error; + UBYTE kind; + T_CCD_ERR_PARA para; +} T_CCD_ERR_ENTRY; + + +/************************************************************** + function codes for CCD interface functions + used in stub1 (application side) and stub2 (driver side) + **************************************************************/ + +#define CCD_INIT 1 +#define CCD_CODMSG 2 +#define CCD_DECMSG 3 +#define CCD_DECBYTE 4 +#define CCD_CODBYTE 5 +#define CCD_DECLONG 6 +#define CCD_CODLONG 7 +#define CCD_BITCOPY 8 +#define CCD_FIRST_ERR 9 +#define CCD_NEXT_ERR 10 + +#if !defined (CCDDATA_PREF) +#if defined (_TOOLS_) && defined (CCDDATA_LOAD) +#define CCDDATA_PREF(ccd_fun) cddl_##ccd_fun +#else +#define CCDDATA_PREF(ccd_fun) ccd_fun +#endif /* _TOOLS_ && CCDDATA_LOAD */ +#endif /* !CCDDATA_PREF */ + +#if defined _TOOLS_ || defined (CCD_TEST) +/* + * Preparation for issue patching coded bits for generating + * air messages with errors. This feature is not yet supported + * by CCD. + */ +#define CCDP_NO_ERROR 0 +#define CCDP_NOT_FOUND 1 +#define CCDP_VALIDFLAG_SEEN 2 +#define CCDP_UNKNOWN_ERROR 3 +#define MAXREC 50 +typedef struct +{ + U16 elemid[MAXREC]; + U16 numelems; + U16 bitwidth; + U8* bits; + U8 errorcode; +} T_patch_info; +#endif /* _TOOLS_ */ + +/*==================== description ===================================*/ + +/* + * ccd_init + * + * Initializing the ccd-Module, must be called once before + * any encoding/decoding + */ + +/* + * ccd_begin + * + * Returns the address of the CCD buffer for decoded + * messages and locks it until ccd_end() is called + */ + +/* + * ccd_end + * + * Unlocks the CCD buffer for decoded + * messages + */ + +/* + * ccd_codeMsg + * + * layer : <IN> CCDENT_CMCE, CCDENT_MLE .. + * direction: <IN> UPLINK, DOWNLINK + * mBuf : <IN> mBuf.o_buf - Offset in Bits from the + * start of mBuf.buf. + * <OUT> mBuf.l_buf - Contains the length of + * the message in Bits after + * coding. + * <OUT> mBuf.buf - Contains the bitcoded message + * after coding. + * mStruct: <IN> Pointer to the message specific structure. + * The first element must contain the + * message-type (PDU-Type) as a UBYTE value. + * + * pt : <IN> If pt != 0xff the CCD will not decode the + * the PDU-Type from the bitstream. In this + * case pt is the coding of the PDU-Type. + */ + +/* + * ccd_decodeMsg + * + * layer : <IN> CCDENT_CMCE, CCDENT_MLE, ... + * direction: <IN> UPLINK, DOWNLINK + * mBuf : <IN> mBuf.o_buf - Offset in Bits from start + * of mBuf.buf where the + * message starts. + * <IN> mBuf.l_buf - Contains the length of the + * message in Bits. + * <IN> mBuf.buf - Contains the bitcoded message. + * mStruct : <OUT> Pointer to the message specific structure. + * The first element contains the message-type + * (PDU-Type) as a UBYTE value after decoding. + * pt : <IN> If pt != 0xff the CCD will not decode the + * the PDU-Type from the bitstream. In this + * case pt is the coding of the PDU-Type. + */ + +/************************************************************** + function prototypes for CCD interface functions + used in application, stub2 (driver side) and driver body + **************************************************************/ +#ifndef CCD_PATCH_C +#ifdef _TOOLS_ + extern int CCDDATA_PREF(ccd_set_patch_infos) (T_patch_info* pinfo); +#endif /* _TOOLS_ */ +#endif /* CCD_PATCH_C */ + +#ifndef CCD_C + extern BYTE CCDDATA_PREF(ccd_init) (void); + extern int CCDDATA_PREF(ccd_exit) (void); + + extern UBYTE* CCDDATA_PREF(ccd_begin) (void); + + extern void CCDDATA_PREF(ccd_end) (void); + + extern BYTE CCDDATA_PREF(ccd_decodeMsg) (UBYTE entity, + UBYTE direction, + T_MSGBUF *mBuf, + UBYTE *mStruct, + UBYTE pt); + + extern S8 CCDDATA_PREF(ccd_decodeMsgPtr) (U8 entity, + U8 direction, + U16 l_buf, + U16 o_buf, + U8 *buf, + U8 **mStructPtr, + U8 pt); + + extern BYTE CCDDATA_PREF(ccd_codeMsg) (UBYTE entity, + UBYTE direction, + T_MSGBUF *mBuf, + UBYTE *mStruct, + UBYTE pt); + + extern S8 CCDDATA_PREF(ccd_codeMsgPtr) (U8 entity, + U8 direction, + U16 *l_buf, + U16 o_buf, + U8 *buf, + U8 *mStruct, + U8 pt); + + extern UBYTE ccd_setStore (ULONG regNo, + ULONG value); +#ifdef _TOOLS_ + extern ULONG CCDDATA_PREF(ccd_init_ccddata) (void); +#else + extern int ccd_register (int decmsgbuf_size); +#endif /* _TOOLS_ */ +#endif /*! CCD_C */ + +#ifndef CCD_ELEM_C + extern int CCDDATA_PREF(ccd_encodeElem) (ULONG ccdid, + USHORT *l_buf, + USHORT o_buf, + UCHAR *buf, + UCHAR *eStruct); + + extern int CCDDATA_PREF(ccd_decodeElem) (ULONG ccdid, + USHORT l_buf, + USHORT o_buf, + UCHAR *buf, + UCHAR *eStruct); + +#endif /* CCD_ELEM_C */ + +#ifndef CCD_ERR_C + extern UBYTE CCDDATA_PREF(ccd_getFirstError) (UBYTE entity, + USHORT *parlist); + + extern UBYTE CCDDATA_PREF(ccd_getNextError) (UBYTE entity, + USHORT *parlist); + + extern ULONG CCDDATA_PREF(ccd_getFirstFault) + (T_CCD_ERR_ENTRY **ccd_err_entry); + + extern ULONG CCDDATA_PREF(ccd_getNextFault) + (T_CCD_ERR_ENTRY **ccd_err_entry); + + extern void CCDDATA_PREF(ccd_free_faultlist) (void); + + extern int CCDDATA_PREF(ccd_get_numFaults) (void); +#endif /*! CCD_ERR_C */ + +#ifndef CDC_STD_C + extern BYTE CCDDATA_PREF(ccd_decodeByte) (UBYTE *bitstream, + USHORT startbit, + USHORT bitlen, + UBYTE *value); + + extern BYTE CCDDATA_PREF(ccd_codeByte) (UBYTE *bitstream, + USHORT startbit, + USHORT bitlen, + UBYTE val); + + extern BYTE CCDDATA_PREF(ccd_codeLong) (UBYTE *bitstream, + USHORT startbit, + USHORT bitlen, + ULONG value); + + extern BYTE CCDDATA_PREF(ccd_decodeLong) (UBYTE *bitstream, + USHORT startbit, + USHORT bitlen, + ULONG *value); + + extern void CCDDATA_PREF(ccd_bitcopy) (UBYTE *dest, + UBYTE *source, + USHORT bitlen, + USHORT offset); +#endif /*! CCD_STD_C */ + + +#ifdef __cplusplus +} +#endif /*_cplusplus*/ + +#endif +