[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/as_c2k/1xrtt/longcode.h b/mcu/interface/protocol/as_c2k/1xrtt/longcode.h
new file mode 100644
index 0000000..df86965
--- /dev/null
+++ b/mcu/interface/protocol/as_c2k/1xrtt/longcode.h
@@ -0,0 +1,202 @@
+/*****************************************************************************
+*  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) 2016
+*
+*  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).
+*
+*****************************************************************************/
+/*************************************************************
+*
+* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.  
+* 
+* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
+* 
+* Copyright (c) 1999-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+/****************************************************************************
+ *
+ * Filename:   longcode.h
+ *
+ * Purpose:    Definition of LONGCODE and supporting routines.
+ *
+ ****************************************************************************
+ *
+ *                          PVCS Header Information
+ *
+ *  $Workfile$
+ *  $Revision: 1.2 $
+ *   $Modtime$
+ *    $Author: fpeng $
+ *
+ *       $Log: longcode.h $
+ *
+ *       07 06 2017 sue.zhong
+ *       [MOLY00259241] [6293][C2K]Replace with KAL data type
+ *       Correct copyright file header
+ *       Revision 1.2  2004/03/25 12:09:38  fpeng
+ *       Updated from 6.0 CP 2.5.0
+ *       Revision 1.1  2003/05/12 15:38:52  fpeng
+ *       Initial revision
+ *       Revision 1.4  2002/06/06 13:13:31  chinh
+ *       Changed and Added Copyright
+ *       Revision 1.3  2001/08/03 15:15:08  dstecker
+ *       Modifications for IS2000 handoffs
+ *       Revision 1.2  2001/01/29 18:20:53  dstecker
+ *       new access probe architecture
+ *       Revision 1.1  2001/01/17 10:59:00  plabarbe
+ *       Initial revision
+ *       Revision 1.2  2000/11/13 14:26:07  byang
+ *       IS-2000A Idle Mode and LAC intergration - Initial Release.
+ *       Revision 1.1  2000/10/24 21:11:19Z  fpeng
+ *       Initial revision
+ *       Revision 1.3  2000/08/23 22:09:18Z  RSATTARI
+ *       Isotel release 2.8 plus LSI applicable IS-95B changes.
+ *       Revision 1.14  1999/08/16 23:47:08  scotvold
+ *       Cleaned up Long Code Transition processing.
+ *       Long Code Transition to Public does not use Ordq.
+ *
+ *       Revision 1.13  1999/04/12 13:31:46  scotvold
+ *       Added T53 HSPD support.
+ *       Added 95B SCAM support.
+ *       Added 95B GHDM support and consolidated with EHDM.
+ *
+ *       Revision 1.12  1999/01/26 18:50:30  scotvold
+ *       R1.2 API changes.
+ *
+ *       Revision 1.11  1998/11/02 22:07:59  scotvold
+ *       Used ENG_IND_LONG_CODE_CHANGED event instead of action timeout.
+ *
+ *       Revision 1.10  1998/10/20 23:58:23  mhayduk
+ *       Added T53 support.
+ *
+ *       Revision 1.9  1998/10/16 17:10:46  scotvold
+ *       Made ftcOrderData global.
+ *
+ *       Revision 1.8  1998/08/18 16:58:53  scotvold
+ *       Added accessor lcGetTCLongCodeState().
+ *
+ *       Revision 1.7  1998/08/17 23:03:36  scotvold
+ *       Added User long code support.
+ *
+ *       Revision 1.6  1998/07/14 18:51:45  scotvold
+ *       Typo correction.
+ *
+ *       Revision 1.5  1998/07/14 17:24:01  scotvold
+ *       Added voice privacy support.
+ *
+ *       Revision 1.4  1998/06/08 21:48:25  scotvold
+ *       Updated for Release 0.06.
+ *
+ * Revision 1.3  1998/03/30  23:26:03  mhayduk
+ * Release 0.03.
+ *
+ * Revision 1.1  1997/11/06  17:49:24  mhayduk
+ * Initial revision
+ *
+ *
+ ****************************************************************************
+ ****************************************************************************/
+ 
+#ifndef _LONGCODE_H_
+
+  #define _LONGCODE_H_ 1
+
+/*****************************************************************************
+ * Includes
+ ****************************************************************************/
+
+
+/*****************************************************************************
+ * Longcode structure definition ACH physical channel
+ ****************************************************************************/
+#define CP_LONGCODE_LEN   6
+
+  typedef struct
+  {
+    kal_uint8 mask[CP_LONGCODE_LEN];  /* data space for 42 bits ordered as 0..47 */
+                                 /* where bits 0..41 are used               */
+  } Longcode;
+
+/*****************************************************************************
+ * Longcode structure definition EACH physical channel
+ ****************************************************************************/
+#define EACH_LONG_CODE_MASK_PAR_SIZE   2  /* long code mask size in bytes 	*/
+
+typedef struct
+{
+    kal_uint32      MaskPar [EACH_LONG_CODE_MASK_PAR_SIZE]; /* long code mask parameter */
+} EACHlongCodeMaskParT;
+
+
+typedef enum
+{
+   PLCM_ESN          = 0,
+   PLCM_BS           = 1,
+   PLCM_IMSI_M       = 2,
+   PLCM_IMSI_T       = 3,
+   PLCM_MEID         = 4
+} PlcmTypeT;
+
+/*****************************************************************************
+ * Longcode interface prototypes
+ ****************************************************************************/
+  void copyLongCodeState(Longcode *toMask,kal_uint8 *fromMask);
+
+  void setBCCHLongCode(Longcode *pBcchLcode,kal_uint8 bcch,kal_uint16 pilotPN);
+  void setFCCCHLongCode(Longcode *pFccchLcode);
+
+  void setPCHLongCode(Longcode *pchLcode,kal_uint8 pageCh,kal_uint16 pilotPN);
+  void setACHLongCode(Longcode *pchLcode,kal_uint8 acn,kal_uint8 pcn,kal_uint16 base,
+                   kal_uint16 pilotPN);
+
+  void lcPermuteESN (kal_uint32 esn);
+  void lcTCLongCodeInitialization (void);
+  void lcTransitionRequestAck (void);
+  kal_bool lcGetTCLongCodeState (void);
+  kal_bool lcLongCodeTransitionInProgress (void);
+  void lcGetTCPublicLongCodeMask (Longcode* longcode);
+  void lcGetTCPrivateLongCodeMask (Longcode* longcode);
+  void lcMSLongCodeTransitionRequest (kal_uint8 lcRequest);
+  void lcBSLongCodeTransitionRequest (void);
+  void lcLongCodeTransitionComplete (void);
+
+  void lcSetLongCodeState(kal_bool state);
+
+  kal_uint32 lcMeidToPseudoESN(kal_uint8 *MEID);
+  void   lcSetLongCodeMaskType(PlcmTypeT type);
+  void   lcSetLongCodeMask(kal_uint8 *plcm39);
+  kal_bool   lcIsPLCMTypeChanged(PlcmTypeT type);
+  kal_bool   lcIsPLCMChanged(kal_uint8 *plcm39);
+  void   lcSavePLCMParams(void);
+  void   lcRestorePLCMParams(void);
+
+#endif  /*_LONGCODE_H_ */
+