[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/interface/general/rfc2507_lib.h b/mcu/protocol/interface/general/rfc2507_lib.h
new file mode 100644
index 0000000..4a41b91
--- /dev/null
+++ b/mcu/protocol/interface/general/rfc2507_lib.h
@@ -0,0 +1,297 @@
+/******************************************************************************
+* Copyright Statement:
+* --------------------
+* This software is protected by Copyright and the information contained
+* herein is confidential. The software may not be copied and the information
+* contained herein may not be used or disclosed except with the written
+* permission of MediaTek Inc. (C) 2007
+*
+* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
+* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
+* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
+* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
+* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
+* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
+* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
+* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
+* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
+* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
+*
+* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
+* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
+* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
+* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
+* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
+*
+* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
+* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
+* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
+* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
+* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
+*
+*******************************************************************************/
+
+/*******************************************************************************
+ * Filename:
+ * --------------------------------------------------------
+ * rfc2507_lib.h
+ *
+ * Project:
+ * --------------------------------------------------------
+ * MONZA
+ *
+ * Description:
+ * --------------------------------------------------------
+ * RFC2507 library extern function declaration.
+ *
+ * Author:
+ * --------------------------------------------------------
+ * -------
+ *
+ * --------------------------------------------------------
+ * $Log$
+ *
+ * 12 12 2014 tc.chang
+ * [MOLY00087434] [Universal Bin] Check in.
+ * RFC2507
+ *
+ * 08 03 2011 tc.chang
+ * removed!
+ * .
+ *
+ * 05 25 2011 tc.chang
+ * removed!
+ * .
+ *
+ * 05 23 2011 tc.chang
+ * removed!
+ * .
+ *
+ * 12 14 2010 max.yin
+ * removed!
+ * .
+ *
+ * 10 18 2010 max.yin
+ * removed!
+ * .
+ *
+ * 09 03 2010 max.yin
+ * removed!
+ * .
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ * removed!
+ * removed!
+ *
+ *
+ ******************************************************************************/
+
+#ifndef _RFC2507_LIB_H
+#define _RFC2507_LIB_H
+
+#include "kal_general_types.h"
+#include "kal_public_api.h"
+
+#define RFC2507_ASSERT(x) DEBUG_ASSERT(x)
+
+typedef kal_uint32 RFC2507_TIME_OF_DAY;
+typedef kal_uint32 RFC2507_TIME_DIFFERENCE;
+
+/*
+ * Macro for definitions for RFC2507 PID references.
+ *
+ * The number of RFC2507 PIDs.
+ */
+#define RFC2507_NO_OF_PIDS 5
+
+#define IP_V4_HEADER_LEN 20
+#define IP_V6_HEADER_LEN 40
+
+#define RFC2507_DEBUG_FULL_HEADER_LEN 40
+#define RFC2507_DEBUG_HEADER_LEN 10
+#define RFC2507_COMPRESSED_MAX_HEADER_LEN 40
+
+#define RFC2507_PACKET_FLOW_TCP_MASK 0X01
+#define RFC2507_PACKET_FLOW_NONTCP_MASK 0X02
+
+#define RFC2507_SKIPPED_CID_NUMBER 0xFF
+
+#define CID_COUNT(_CID_LIST_) (_CID_LIST_.uCount)
+
+typedef void (*rfc2507_reg_callback_func_ptr)(kal_uint32, kal_uint8 *);
+
+typedef enum
+{
+ RFC2507_DECOMPRESS_SUCCESS,
+ RFC2507_DECOMPRESS_SUCCESS_MORE_TO_GO,
+ RFC2507_DECOMPRESS_SUCCESS_RCV_CONTEXT_STATE,
+ RFC2507_DECOMPRESS_FAIL_FREED,
+ RFC2507_DECOMPRESS_FAIL_STORED,
+ RFC2507_DECOMPRESS_FAIL_FREED_SEND_CONTEXT_STATE,
+ RFC2507_DECOMPRESS_FAIL_STORED_SEND_CONTEXT_STATE
+} RFC2507_DECOMPRESS_RESULT_ENUM;
+
+typedef enum
+{
+ RFC2507_FULL_HEADER,
+ RFC2507_COMPRESSED_TCP,
+ RFC2507_COMPRESS_TCP_NO_DELTA,
+ RFC2507_COMPRESS_NON_TCP,
+ RFC2507_CONTEXT_STATE
+} RFC2507_PACKET_TYPE_ENUM;
+
+typedef struct _RFC2507_COMMON_CID
+{
+ struct _RFC2507_COMMON_CID *pPrev;
+ struct _RFC2507_COMMON_CID *pNext;
+} RFC2507_COMMON_CID;
+
+typedef struct _RFC2507_CID_LIST
+{
+ kal_uint32 uCount;
+ struct _RFC2507_COMMON_CID *pFirst;
+ struct _RFC2507_COMMON_CID *pLast;
+} RFC2507_CID_LIST;
+
+typedef struct
+{
+ kal_uint16 Rfc2507MaxPeriod; /*
+ * Largest number of
+ * COMPRESSED_NON_TCP
+ * packets that may be
+ * sent without sending
+ * a FULL_HEADER packet
+ */
+ kal_uint8 Rfc2507MaxTime; /*
+ * COMRESSED_NON_TCP
+ * packets may not be
+ * sent more than this
+ * number of seconds
+ * after sending a
+ * FULL_HEADER packet
+ */
+ kal_uint16 Rfc2507MaxHeader; /*
+ * The largest header
+ * size (in bytes) that
+ * may be compressed
+ */
+ kal_uint8 Rfc2507MaxTcpSpace; /*
+ * The maximum TCP CID
+ * value
+ */
+ kal_uint16 Rfc2507MaxNonTcpSpace; /*
+ * The maximum non-TCP
+ * CID value
+ */
+ kal_bool Rfc2507ExpectReordering; /*
+ * Whether the algorithm
+ * shall re-order PDCP
+ * SDUs, or not
+ */
+
+ /* New: Register callback function to free memory of stored compressed packets */
+ kal_uint32 u4DecompSrcId;
+ rfc2507_reg_callback_func_ptr pfDeallocDecompSrc;
+} RFC2507_ENTITY_PARAMS;
+
+/*
+ * RFC2507 information structure.
+ */
+typedef struct
+{
+ RFC2507_TIME_OF_DAY BootingTime;
+
+ RFC2507_ENTITY_PARAMS Params; /*
+ * The RFC2507 parameters received
+ * when the PDCP entity was created
+ * or reconfigured
+ */
+ kal_uint8 FirstPid; /*
+ * The first protocol identifier
+ * used with RFC2507 - this value
+ * identifies FULL_HEADER packets
+ * and other packet type PIDs are
+ * offsets from this value
+ */
+ RFC2507_CID_LIST TcpCompressorInfo; /*
+ * List of compressor TCP CIDs
+ */
+ RFC2507_CID_LIST TcpDecompressorInfo; /*
+ * List of decompressor TCP CIDs
+ */
+ RFC2507_CID_LIST NonTcpCompressorInfo; /*
+ * List of compressor non-TCP CIDs
+ */
+ RFC2507_CID_LIST NonTcpDecompressorInfo; /*
+ * List of decompressor non-TCP CIDs
+ */
+ void *pSubHdrChain;
+ kal_uint8 *pDecompressedHeader;
+} RFC2507_ENTITY_INFO;
+
+typedef struct
+{
+ kal_uint8* pSrc;
+ kal_uint8* pDst;
+ kal_uint16 SrcLen;
+ kal_uint16 DstLen;
+ kal_uint16 CompressedLength;
+ kal_uint8 DesiredCompressType;
+ kal_uint16 CidNumber; // Output: CidNumber for this PDU
+ kal_bool TcpPDU; // Output: KAL_FALSE for NonTCP, KAL_TRUE for Tcp
+ kal_uint8 CompressedHdr[RFC2507_COMPRESSED_MAX_HEADER_LEN];
+} RFC2507_COMPRESS_INPUT_INFO;
+
+typedef struct
+{
+ kal_uint8* pSrc;
+ kal_uint16 SrcOffset;
+ kal_uint16 SrcLen;
+ kal_uint8 SrcPid;
+ kal_uint8 SrcInfo;
+ kal_uint8* pDst;
+ kal_uint8* pCid;
+ kal_uint16 DstLen;
+ kal_uint16 DecompressedLength;
+ kal_uint8* pNextSrc;
+ kal_uint16 NextSrcOffset;
+ kal_uint16 NextSrcLen;
+ kal_uint8 NextSrcPid;
+ kal_uint8 NextSrcInfo;
+ kal_uint8 L2HdrLength;
+ kal_uint32 NextSrcNonTcpTime;
+} RFC2507_DECOMPRESS_INPUT_INFO;
+
+extern RFC2507_DECOMPRESS_INPUT_INFO Rfc2507DecompInputBuff;
+extern RFC2507_COMPRESS_INPUT_INFO Rfc2507CompInputBuff;
+
+extern RFC2507_ENTITY_INFO *rfc2507_create(void);
+extern kal_bool rfc2507_config(RFC2507_ENTITY_INFO *pEntity, RFC2507_ENTITY_PARAMS* pRfc2507Params, kal_uint8 ucFirstPid);
+extern kal_uint8 rfc2507_compress(RFC2507_ENTITY_INFO *pEntity, RFC2507_COMPRESS_INPUT_INFO* pInput);
+extern kal_uint8 rfc2507_decompress(RFC2507_ENTITY_INFO *pEntity, RFC2507_DECOMPRESS_INPUT_INFO *pInput);
+extern kal_uint8 rfc2507_get_first_pid(RFC2507_ENTITY_INFO *pEntity);
+extern void rfc2507_reset(RFC2507_ENTITY_INFO *pEntity);
+extern void rfc2507_release(RFC2507_ENTITY_INFO *pEntity);
+extern void rfc2507_set_full_header_status(RFC2507_ENTITY_INFO *pEntity, kal_bool bTcp, kal_uint8 CidNumber, kal_bool bSendFullHeader);
+#endif /* _RFC2507_LIB_H */