[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/service/sys_svc/msm_service.h b/mcu/interface/service/sys_svc/msm_service.h
new file mode 100644
index 0000000..4245254
--- /dev/null
+++ b/mcu/interface/service/sys_svc/msm_service.h
@@ -0,0 +1,281 @@
+/*****************************************************************************
+*  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) 2005
+*
+*  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:
+ * ---------
+ *   msm_service.h
+ *
+ * Project:
+ * --------
+ *   UMOLYE
+ *
+ * Description:
+ * ------------
+ *   The source is for software management
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ *             HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+
+#ifndef __MSM_SERVICE__
+#define __MSM_SERVICE__
+
+#define MSM_RSA_KEY_SIZE      256  //RSA 2048
+#define MSM_AES_KEY_SIZE      16
+
+#define MSM_RND_LEN	16
+#define MSM_ENC_RND_LEN	MSM_RSA_KEY_SIZE   
+
+#define MSM_CERT_MAGIC               0x00534D43  // "SMC"
+#define MSM_AUTH_MAGIC               0x00534D41  // "SMA"
+#define MSM_PLAT_MAGIC                0x5041  //"PA"
+#define MSM_GET_MAGIC(magic_ver)    ((magic_ver)&0x00FFFFFF)
+#define MSM_GET_VER(magic_ver)      ((magic_ver)>>24)
+
+#define MSM_FEATURE_MAX  16
+#define MSM_PLAT_MAX  32
+
+#define MSM_DEV_ID_LEN     20
+#define MSM_DEV_ID_HRID_OFFSET  4
+
+typedef enum{
+    MSM_ERROR_NONE = 0x0000,
+        
+    MSM_ERROR_START = 0x600,    
+
+    /* General error */
+    MSM_GEN_RND_ERR = 0x601, 
+    MSM_CONTEXT_FULL_ERR = 0x602, 
+    MSM_BLOCKING_ERR = 0x603, 
+    MSM_DEAD_ERR  = 0x604, 
+    MSM_UNEXPECT_STATE_ERR = 0x605, 
+    MSM_NULL_PTR_ERR = 0x606, 
+
+    /* Receive command in wrong state, the last 4bit indicates the state information */
+    MSM_WRONG_STATE_ERR = 0x610,   
+
+    /* CERT verification error */
+    MSM_CERT_VERIFY_ERR = 0x620, 
+    MSM_CERT_MAGIC_ERR = 0x621, 
+    MSM_CERT_SIZE_ERR = 0x622, 
+    MSM_CERT_TOTAL_SIZE_ERR = 0x623, 
+    MSM_CERT_RKEY_N_SIZE_ERR = 0x624, 
+    MSM_CERT_RKEY_E_SIZE_ERR = 0x625, 
+    MSM_CERT_PLAT_MATCH_ERR = 0x626, 
+    MSM_CERT_EXPIRED_ERR = 0x627, 
+
+     /* customer key verification error */
+    MSM_CUST_KEY_DEC_ERR = 0x630, 
+    MSM_CUST_KEY_N_LEN_ERR = 0x631, 
+    MSM_CUST_KEY_E_LEN_ERR = 0x632, 
+    MSM_CUST_KEY_SIZE_ERR = 0x633, 
+    MSM_CUST_KEY_RND_BUF_LEN_ERR = 0x634,  
+
+     /* AUTH msg verification error */
+    MSM_AUTH_RND_DEC_ERR = 0x640, 
+    MSM_AUTH_RND_LEN_ERR = 0x641, 
+    MSM_AUTH_RND_COMPARE_ERR = 0x642, 
+    MSM_AUTH_MSG_SIZE_ERR = 0x643, 
+    MSM_AUTH_KEY_SIZE_ERR = 0x644, 
+    MSM_AUTH_MAGIC_ERR = 0x645, 
+    MSM_AUTH_GEN_KEY_ERR = 0x646, 
+    MSM_AUTH_PLAT_MSG_SIZE_ERR = 0x647, 
+    MSM_AUTH_PLAT_MSG_DEC_ERR = 0x648, 
+    MSM_AUTH_PLAT_MSG_MAGIC_ERR = 0x649, 
+    MSM_AUTH_PLAT_MSG_VER_ERR = 0x650, 
+    MSM_AUTH_PLAT_MSG_SP_VER_ERR = 0x651, 
+    MSM_AUTH_PLAT_MSG_CERT_EXPIRED_ERR = 0x652, 
+
+     /* CERT cancel error */
+    MSM_CERT_CANCEL_DEC_ERR = 0x650, 
+    MSM_CERT_CANCEL_COMPARE_ERR = 0x651, 
+    MSM_CERT_CANCEL_ID_SIZE_ERR = 0x652, 
+
+     /* AT command decryption error */
+    MSM_AT_DEC_ECMD_SIZE_ERR = 0x660, 
+    MSM_AT_DEC_OUT_BUF_SIZE_ERR = 0x661, 
+    MSM_AT_DEC_CTX_NOT_FOUND_ERR = 0x662, 
+    MSM_AT_DEC_FAIL_ERR = 0x663, 
+
+     /* Feature checking error */
+    MSM_FEATURE_CTX_NOT_FOUND_ERR = 0x671,
+    MSM_FEATURE_NOT_SUPPORT_ERR = 0x672, 
+    MSM_FEATURE_DENIED = 0x673,
+
+    MSM_FEATURE_NOT_EXIST = 0x680,
+    
+    MSM_ERROR_END = 0x6FF
+}MSM_ERROR_E;
+
+typedef struct MSM_DEV_INFO
+{
+    kal_uint32 m_feature_support;
+    kal_uint8 m_dev_id[MSM_DEV_ID_LEN];
+}MSM_DEV_INFO_t;
+
+/*****************************************************************************
+ * FUNCTION
+ *  MSM_Rcv_Auth_0
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  p_cert          [IN]  pointer of CERT(X)  
+ *  c_size          [IN]  size of CERT     
+ *  p_cust_id       [OUT]  Customer id <CUST_ID> 
+ * RETURNS
+ *   0 : successfully 
+ *   otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+kal_uint32 MSM_Rcv_Auth_0(kal_uint8 *p_cert, kal_uint32 c_size, kal_uint32 *p_cust_id);
+
+/*****************************************************************************
+ * FUNCTION
+ *  MSM_Rcv_Auth_1
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  cust_id         [IN]  Customer id <CUST_ID>
+ *  p_e_cust_key    [IN]  pointer of "E(K(XR)pri, K(XD)pub)" 
+ *  e_size          [IN]  size of e_cust_key
+ *  p_rnd_buf       [IN/OUT] Input the buffer pointer / function stores <RND(M)> into this buffer
+ *  rnd_buf_len     [IN] size of rnd_buf (must be MSM_RND_LEN )
+ * RETURNS
+ *   0 : successfully 
+ *   otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+kal_uint32 MSM_Rcv_Auth_1(kal_uint32 cust_id, kal_uint8 *p_e_cust_key, kal_uint32 e_size, kal_uint8 *p_rnd_buf, kal_uint32 rnd_buf_len);
+
+/*****************************************************************************
+ * FUNCTION
+ *  MSM_Rcv_Auth_2
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  p_auth_msg      [IN]  pointer of "AUTH_MSG"
+ *  a_size          [IN]  size of auth_msg
+ *  p_sym_key       [IN/OUT] Input the buffer pointer / function stores K(M)sym into this buffer
+ *  s_size          [IN] size of sym_key (must be MSM_AES_KEY_SIZE)
+ *  p_cust_id       [OUT]  Customer id <CUST_ID> 
+ *  p_dev_info      [OUT] function stores the device information
+ * RETURNS
+ *   0 : successfully 
+ *   otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+kal_uint32 MSM_Rcv_Auth_2(kal_uint8 *p_auth_msg, kal_uint32 a_size, kal_uint8 *p_plat_msg, kal_uint32 p_size, kal_uint8 *p_sym_key, kal_uint32 s_size, kal_uint32 *p_cust_id, MSM_DEV_INFO_t *p_dev_info);
+
+/*****************************************************************************
+ * FUNCTION
+ *  MSM_Rcv_Auth_3
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  cust_id         [IN]  Customer id <CUST_ID>
+ *  p_e_cust_id     [IN]  pointer of "AES(E(K(M)sym, CUST_ID))"
+ *  e_size          [IN]  size of e_cust_id
+ * RETURNS
+ *   0 : successfully 
+ *   otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+kal_uint32 MSM_Rcv_Auth_3(kal_uint32 cust_id, kal_uint8 *p_e_cust_id , kal_uint32 e_size);
+
+/*****************************************************************************
+ * FUNCTION
+ *  MSM_Decrypt_Cmd
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  cust_id         [IN]  Customer id <CUST_ID>
+ *  p_e_cmd         [IN]  pointer of encrypted command
+ *  in_size         [IN]  size of e_cmd
+ *  p_cmd           [IN/OUT] Input the buffer pointer / function stores descrypted command into this buffer
+ *  p_out_size      [IN] size of cmd buffer
+ * RETURNS
+ *   0 : successfully 
+ *   otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+kal_uint32 MSM_Decrypt_Cmd(kal_uint32 cust_id, kal_uint8 *p_e_cmd, kal_uint32 in_size, kal_uint8 *p_cmd, kal_uint32 out_size);
+
+/*****************************************************************************
+ * FUNCTION
+ *  MSM_Decrypt_Cmd
+ * DESCRIPTION
+ *  
+ * PARAMETERS
+ *  cust_id         [IN]  Customer id <CUST_ID>
+ *  feature         [IN]  feature "XXXX"
+ * RETURNS
+ *   0 : successfully 
+ *   otherwise : failure (reference to enum TYPE_CUST_CHL_ERROR for error code)
+ *****************************************************************************/
+kal_uint32 MSM_Check_Feature_Sts(kal_uint32 cust_id, kal_uint32 feature);
+
+#endif /*__MSM_SERVICE__*/