[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/protocol/interface/lte/lte_macros.h b/mcu/protocol/interface/lte/lte_macros.h
new file mode 100644
index 0000000..c62000b
--- /dev/null
+++ b/mcu/protocol/interface/lte/lte_macros.h
@@ -0,0 +1,209 @@
+/*****************************************************************************
+*  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) 2012
+*
+*  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:
+ * ---------
+ *   lte_macros.h
+ *
+ * Project:
+ * --------
+ *   MOLY
+ *
+ * Description:
+ * ------------
+ *
+ *
+ * Author:
+ * -------
+ * -------
+ *   
+ *
+ * ==========================================================================
+ * $Log$
+ *
+ * 01 16 2014 moja.hsu
+ * [MOLY00053980] Fix complier warning
+ * .
+ *
+ * 01 07 2014 moja.hsu
+ * [MOLY00052548] Add trace for ERT boot up procedure time
+ * add SWLA log.
+ *
+ * 01 06 2014 moja.hsu
+ * [MOLY00052548] Add trace for ERT boot up procedure time
+ * .
+ *
+ * 05 15 2013 moja.hsu
+ * [MOLY00007625] Maintain code
+ * integrate from firstcall
+ * ERT TASK TO ert HISR.
+ * DSP lisr2hisr.
+ * LTM, edyn, etmr trace.
+ * EDYN EM Channel
+ ****************************************************************************/
+/**
+ *  @file   lte_macros.h
+ *  @brief  Common LTE Module Macros 
+ *
+ *  @author Moja Hsu, moja_hsu@mtk.com.tw
+ *  @date   2012/06/19 16:26:04
+ *
+ **/
+
+#ifndef  LTE_MACROS_INC
+#define  LTE_MACROS_INC
+
+#include "kal_general_types.h"
+#include "kal_public_defs.h"
+
+/** 
+ * Goal: 
+ * To reduce construct/destroy 2000 CPU Cycles.
+ * For some special condition(e.g. we know the receiver should finish the ILM before sender next action)
+ * We can use the following marcos to keep local parameter memory.
+ *
+ * Usage example:
+ * //Use static buffer and init it first..
+ * nonFreeLocalPara_Init(&g_elx.xx_para, (sizeof(xxx_yyy_t));
+ *
+ * //sender usage
+ * nonFreeLocalPara_Hold(g_elx.xx_local_para_ptr);
+ * //fill some blah, blah data...
+ *  msg_send6(
+        MOD_ELX,
+        MOD_ELY,
+        XX_YY_SAP,
+        MSG_ID_XX_YY_IND,
+        (local_para_struct*)g_elx.xx_local_para_ptr,
+        NULL
+        );
+ *
+ * //receiver usage
+ * //When receive finish, it only need to use the macro for ilm.
+ * nonFreeILM_Release(p_ilm);
+ */
+#define nonFreeLocalPara_Init(_local_para_ptr, _size) \
+    do{                                               \
+        (_local_para_ptr)->msg_len = _size;           \
+        (_local_para_ptr)->ref_count = 1;             \
+    }while(0)
+
+/** 
+ * @brief nonFreeLocalPara_Hold
+ * Used to hold local parameter and check if the local parameter is released by receiver module.
+ * 
+ * @param _local_para_ptr 
+ * 
+ * @return 
+ */
+#define nonFreeLocalPara_Hold(_local_para_ptr)   \
+    do {                                         \
+        ASSERT((_local_para_ptr)->ref_count == 1); \
+        (_local_para_ptr)->ref_count++;            \
+    }while(0)
+
+/** 
+ * @brief nonFreeLocalPara_Release
+ * Release local parameter and set the local_para_ptr to NULL on ILM.
+ * 
+ * @param _ilm_ptr 
+ * 
+ * @return 
+ */
+#define nonFreeLocalPara_Release(_ilm_ptr)           \
+    do {                                       \
+        (_ilm_ptr)->local_para_ptr->ref_count--; \
+        (_ilm_ptr)->local_para_ptr = NULL;       \
+    }while(0)
+
+/** 
+ * @brief nonFreeLocalPara_Hold2, nonFreeLocalPara_Release2
+ * Used for pure hold and release case.
+ * If the loca parameter will need to be hold, but also don't want to release.
+ * user the macros.
+ * 
+ * @param _local_para_ptr 
+ * 
+ * @return 
+ */
+#define nonFreeLocalPara_Hold2(_local_para_ptr) \
+    do {                                        \
+        (_local_para_ptr)->ref_count++;           \
+    }while(0)
+#define nonFreeLocalPara_Release2(_local_para_ptr) \
+    do {                                           \
+        (_local_para_ptr)->ref_count--;              \
+    }while(0)
+
+/**
+ * Used for init time trace
+ */
+#ifdef __MTK_TARGET__
+#include "kal_public_api.h"
+#include "cpu.h"
+#include "TrcMod.h"
+//prevent compiler warning. So user need to include the header file by itself
+//#include "edyn_str.h"
+#include "swla_public.h"
+/* used to declare variable*/
+#define EINIT_LOG_HEAD() \
+    kal_uint32 __c1, __c2, __sys1, __sys2;
+
+/* used to get cycles*/
+#define EINIT_LOG_START(_a)                            \
+    do {                                               \
+        cpu_event_counter_get_cycle(__c1);             \
+        __sys1 = kal_get_systicks();                   \
+        EINIT_TIME(0, _a, __c1, __sys1);               \
+        SLA_CustomLogging((kal_char *)einit_str_tbl[_a],SA_start); \
+    }while(0)
+
+#define EINIT_LOG_END(_a)                                                       \
+    do {                                                                        \
+        cpu_event_counter_get_cycle(__c2);                                      \
+        __sys2 = kal_get_systicks();                                            \
+        EINIT_TIME(1, _a, cpu_event_get_duration(__c1, __c2), __sys2 - __sys1); \
+        SLA_CustomLogging((kal_char *)einit_str_tbl[_a],SA_stop);               \
+    }while(0)
+
+#else/*MODIS case, just empty them*/
+#define EINIT_LOG_HEAD()
+#define EINIT_LOG_START(_a)
+#define EINIT_LOG_END(_a)
+#endif/*__MTK_TARGET__*/
+
+#endif   /* ----- #ifndef LTE_MACROS_INC  ----- */
+