[Feature]Upload Modem source code

Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/interface/protocol/l4_c2k/valsmsapi.h b/mcu/interface/protocol/l4_c2k/valsmsapi.h
new file mode 100644
index 0000000..7ea5e2a
--- /dev/null
+++ b/mcu/interface/protocol/l4_c2k/valsmsapi.h
@@ -0,0 +1,831 @@
+/*****************************************************************************
+*  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) 2006-2010 VIA Telecom, Inc.  All rights reserved.
+*
+*************************************************************/
+#ifndef VALSMSAPI_H
+#define VALSMSAPI_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*===========================================================================
+
+                 V A L   S M S   A P I   H E A D E R    F I L E
+
+  This file contains the exported interfaces for the  SMS
+  module of the VIA Abstraction Layer.
+
+
+===========================================================================*/
+
+#include "sysdefs.h"
+#include "valapi.h"
+#include "valsmsdefine.h"
+#include "c2k_nvram_def.h"
+#include "c2k_sms_struct.h"
+#include "kal_public_defs.h"
+
+
+#define VAL_SMS_MAX_REGISTERED_IDS           10      /*!< Max registered app */
+#define VAL_SMS_TELESRVID_COUNT              20      /*!< Max registered teleservice id */
+#define VAL_SMS_MAX_SMS_PDU_LEN             253      /*!< Max sms pdu length */
+#define VAL_SMS_CLASS_SUCESS        0
+#define VAL_SMS_CAUSECODE_SUCESS   32768
+#define VAL_SMS_MOSEQ_ID_MAX   0xFE
+#define VAL_MAX_SAVED_SMS_ID_PAIR 20
+#define VAL_SMS_MO_TYPE_3GPP2    01
+#define VAL_SMS_TRANS_LEN  10
+#define CNMATIMEOUT 2000  /* according 3gpp2 spec, SMS ack should be returned in 2 seconds. */
+
+/*Timer duration of CNMA for UIM related MT SMS, sometimes SIM takes more than 2s to handle the data.*/
+#define CNMA_TIMEOUT_FOR_UIM_SMS 5000
+
+
+#ifdef MTK_CBP_ENCRYPT_VOICE
+#define MODE_MANUAL  0
+#define MODE_AUTO    1
+#define NUMBER_MAX_LEN  11
+
+typedef enum
+{
+  VAL_SMS_MODE_ERROR,
+  VAL_SMS_DECRYPT_ERROR,
+  VAL_SMS_SIGNATURE_VERFY_ERROR,
+  VAL_SMS_SEND_FAIL,
+  VAL_SMS_OTHER_ERROR,
+} ValSmsReportErrClassT;
+
+#endif
+
+/*! Sms in PDU format*/
+typedef  struct
+{
+  kal_uint8 SmsState;  
+#ifdef MTK_CBP_ENCRYPT_VOICE
+  kal_bool CryptSmsPres;
+#endif
+  kal_uint8 SmsLength;
+  kal_uint8 SmsData[VAL_SMS_MAX_SMS_PDU_LEN];
+} ValSmsPduRecordT;
+
+typedef struct
+{
+  kal_uint16 SeqNum;
+  ValSmsPduRecordT PduRecord;
+}ValSmsRecordT;
+
+/*! Val sms sending info */
+typedef  struct
+{
+  kal_bool   Acked;         /*!< Acked flag */
+  kal_uint16 MoSeqNum;      /*!< Sending equence number */
+#ifdef SYS_OPTION_NO_UI  
+  kal_uint16 StoredRecId;
+#endif  
+}   ValSmsSendInfoT;
+
+/*! Val sms Updating status */
+typedef enum
+{
+  VAL_SMS_UPDATE_NONE,   /*!< Free for update */
+  VAL_SMS_UPDATE_BUSY    /*!< Busy for update */
+}ValSmsUpdateStatusIdT;
+
+/*! Val sms update info */
+typedef  struct
+{
+  kal_uint16 UpdateRecId;                   /*!< Update recored id */        
+  ValSmsUpdateStatusIdT UpdateStatus;   /*!< Update status */
+}   ValSmsUpdateInfoT;
+
+#ifdef SYS_OPTION_NO_UI
+typedef enum
+{
+  VAL_SMS_EVENT_INCOMING_MESSAGE       = 0x00000001,
+  VAL_SMS_EVENT_SEND_STATUS_MESSAGE,
+  VAL_SMS_EVENT_MEM_STATUS_MESSAGE,
+  VAL_SMS_EVENT_SMS_WRITE_ERR_MESSAGE,     /*incoming msg write error event*/
+  VAL_SMS_EVENT_SMS_SRV_READY_MESSAGE,     /*the vsms service is ready*/
+  VAL_SMS_EVENT_SMS_RECEIVED_BUT_MEM_FULL, /*received a msg, but memory full, so the msg lost*/
+  VAL_SMS_MAX_EVENTS
+} ValSmsEventIdT;
+#else
+typedef kal_uint32 ValSmsEventIdT;
+#endif
+/*! SMS callback function structure */
+typedef void (*ValSmsEventFunc) ( RegIdT RegId, ValSmsEventIdT Event, void *MsgP );
+
+/*! SMS Event register table structure */
+typedef struct
+{
+  kal_bool            IsUse;            /*!< if this entry is in use */
+  kal_uint8           NumTeleSrvId;     /*!< Teleservice Id count */
+  kal_uint16          TeleSrvId[VAL_SMS_TELESRVID_COUNT]; /*!< Teleservice id */
+  ValSmsEventFunc CallBack;         /*!< Function to call back */
+} ValSmsRegTableT;
+
+/*! VAL SMS general result type   */
+typedef enum
+{
+  VAL_SMS_SUCCESS,
+  VAL_SMS_ERR_SMS_NOT_READY,
+  VAL_SMS_ERR_MSG_FORMAT,
+  VAL_SMS_ERR_INVALID_PARAMETER,
+  VAL_SMS_ERR_BUSY_SENDING, /* while a register application send a sms message while the previous was not acknowleged*/
+  VAL_SMS_ERR_DESTINATION_BUSY,
+  VAL_SMS_ERR_NO_MEMORY,
+  VAL_SMS_FDN_APPROVE_REQ_SENT,
+  VAL_SMS_FDN_APPROVE_FAILED = 14,
+  VAL_SMS_ERR_OTHER_FAILED
+#ifdef __TC10_IPC_CDMA_SUPPORT__
+  ,VAL_SMS_ERR_FDN
+#endif
+} ValSmsResultT;
+
+/*! Sms terminal status */
+typedef enum
+{
+  VAL_SMS_NO_TERMINAL_PROBLEMS,
+  VAL_SMS_DESTINATION_RESOURSE_SHORTAGE,
+  VAL_SMS_DESTINATION_OUT_OF_SERVICE,
+  VAL_SMS_MAX_TERM_STATUS
+} ValSmsTermStatusT;
+
+#define IS_VALID_SMS_TERM_STATUS(a)  ((VAL_SMS_NO_TERMINAL_PROBLEMS <= (a)) && ((a) < VAL_SMS_MAX_TERM_STATUS))
+
+/*! Val sms cause code define */
+typedef enum
+{
+  VAL_SMS_CC_ADDRESS_VACANT                   = 0,
+  VAL_SMS_CC_ADDRESS_TRANSLATION_FAILURE      = 1,
+  VAL_SMS_CC_NETWORK_RESOURCE_SHORTAGE        = 2,
+  VAL_SMS_CC_NETWORK_FAILURE                  = 3,
+  VAL_SMS_CC_INVALID_TELESERVICE_ID           = 4,
+  VAL_SMS_CC_OTHER_NETWORK_PROBLEM            = 5,
+  VAL_SMS_CC_OTHER_NETWORK_PROBLEM_MORE_FIRST = 6,
+  VAL_SMS_CC_OTHER_NETWORK_PROBLEM_MORE_LAST  = 31,
+  VAL_SMS_CC_NO_PAGE_RESPONSE_S               = 32,
+  VAL_SMS_CC_DESTINATION_BUSY                 = 33,
+  VAL_SMS_CC_NO_ACKNOWLEDGEMENT               = 34,
+  VAL_SMS_CC_DESTINATION_RESOURCE_SHORTAGE    = 35,
+  VAL_SMS_CC_SMS_DELIVERY_POSTPONED           = 36,
+  VAL_SMS_CC_DESTINATION_OUT_OF_SERVICE       = 37,
+  VAL_SMS_CC_DESTINATION_NO_LONGER_AT_THIS_ADDRESS = 38,
+  VAL_SMS_CC_OTHER_TERMINAL_PROBLEM                = 39,
+  VAL_SMS_CC_OTHER_TERMINAL_PROBLEM_FIRST          = 40,
+  VAL_SMS_CC_OTHER_TERMINAL_PROBLEM_LAST           = 47,
+  VAL_SMS_CC_SMS_DELIVER_POSTPONED_MORE_FIRST      = 48,
+  VAL_SMS_CC_SMS_DELIVER_POSTPONED_MORE_LAST       = 63,
+  VAL_SMS_CC_RADIO_INTERFACE_RESOURCE_SHORTAGE     = 64,
+  VAL_SMS_CC_RADIO_INTERFACE_INCOMPATIBILITY       = 65,
+  VAL_SMS_CC_OTHER_RADIO_INTERFACE_PROBLEM         = 66,
+  VAL_SMS_CC_OTHER_RADIO_IF_PROBLEM_MORE_FIRST     = 67,
+  VAL_SMS_CC_OTHER_RADIO_IF_PROBLEM_MORE_LAST      = 95,
+  VAL_SMS_CC_ENCODING_PROBLEM                      = 96,
+  VAL_SMS_CC_SMS_ORIGINATION_DENIED                = 97,
+  VAL_SMS_CC_SMS_TERMINATION_DENIED                = 98,
+  VAL_SMS_CC_SUPPLEMENTARY_SERVICE_NOT_SUPPORTED   = 99,
+  VAL_SMS_CC_SMS_NOT_SUPPORTED                     = 100,
+  VAL_SMS_CC_RESERVED                              = 101,
+  VAL_SMS_CC_MISSING_EXPECTED_PARAMETER            = 102,
+  VAL_SMS_CC_MISSING_MANDATORY_PARAMETER           = 103,
+  VAL_SMS_CC_UNRECOGNIZED_PARAMETER_VALUE          = 104,
+  VAL_SMS_CC_UNEXPECTED_PARAMETER_VALUE            = 105,
+  VAL_SMS_CC_USER_DATA_SIZE_ERROR                  = 106,
+  VAL_SMS_CC_OTHER_GENERAL_PROBLEMS                = 107,
+  VAL_SMS_CC_OTHER_GENERAL_PROBLEMS_MORE_FIRST     = 108,
+  VAL_SMS_CC_OTHER_GENERAL_PROBLEMS_MORE_LAST      = 255,
+  VAL_SMS_CC_MESSAGE_DELIVERED_SUCCESSFULLY        = 32768,
+  VAL_SMS_CC_WAITING_FOR_TL_ACK                    = 32769,
+  VAL_SMS_CC_OUT_OF_RESOURCES                      = 32770,
+  VAL_SMS_CC_ACCESS_TOO_LARGE                      = 32771,
+  VAL_SMS_CC_DRC_TOO_LARGE                         = 32772,
+  VAL_SMS_CC_NETWORK_NOT_READY                     = 32773,
+  VAL_SMS_CC_PHONE_NOT_READY                       = 32774,
+  VAL_SMS_CC_NOT_ALLOWED_IN_AMPS                   = 32775,
+  VAL_SMS_CC_NOT_SUPPORTED                         = 32776,
+  VAL_SMS_CC_INVALID_TRANSACTION                   = 32777,
+  VAL_SMS_CC_MESSAGE_NOT_SENT                      = 32778,
+  VAL_SMS_CC_MESSAGE_BEGIN_SENT                    = 32779,
+  VAL_SMS_MAX_CC
+} ValSmsCCT;
+
+/*! Macro for validating ValSmsCauseCodeT */
+#define IS_VALID_SMS_CAUSE_CODE(a)                              \
+     (((VAL_SMS_CC_ADDRESS_VACANT == (a)) || ((VAL_SMS_CC_ADDRESS_VACANT <(a)) &&                    \
+                                         ((a) <= VAL_SMS_CC_OTHER_NETWORK_PROBLEM))) || \
+      ((VAL_SMS_CC_NO_PAGE_RESPONSE_S <= (a)) &&                \
+                                       ((a) <= VAL_SMS_CC_OTHER_TERMINAL_PROBLEM))  || \
+      ((VAL_SMS_CC_RADIO_INTERFACE_RESOURCE_SHORTAGE <= (a)) && \
+                                             ((a) <= VAL_SMS_CC_SMS_NOT_SUPPORTED)) || \
+      ((VAL_SMS_CC_MISSING_EXPECTED_PARAMETER <= (a)) && ((a) < VAL_SMS_MAX_CC)))
+
+
+/*! Send status */
+/*val sms event message type for ui*/
+typedef  struct
+{
+  ValSmsRecIdT recid;
+}   ValSmsIncomingMsgT;
+
+typedef  struct
+{
+  kal_uint8 SeqNum;       /* The PSW-MMI SeqNum id used in msg assembly  */
+  ValSmsErrClassT  ErrClass;
+  ValSmsCauseCodeT CauseCode;
+}   ValSmsSendStatusMsgT;
+
+/* val message type for sms uint */
+typedef  struct
+{
+  ValDeviceT device;
+  kal_bool       MemStatusFull;      /*KAL_TRUE for memory full, KAL_FALSE for memory enough */
+}   ValSmsMemStatMsgT;
+
+typedef  struct
+{
+  kal_bool       SmsMemFull;   /*KAL_TRUE for no memory, KAL_FALSE for memory enough */
+  ValDeviceT device;
+}   ValSmsMemStatusMsgT;
+
+typedef  struct
+{
+  ValDeviceT device;
+}   ValSmsWriteErrMsgT;
+
+/*----------------------------------
+message storage type define
+------------------------------------*/
+
+typedef enum
+{
+ /*VAL SMS Msg type               teleservice value in IS-637:*/
+
+  MSG_IS91_PAGE_MSG,
+  MSG_IS91_VOICE_MAIL,        /* analog mode teleservice */
+  MSG_IS91_SHORT_MESSAG,
+  MSG_VOICE_MAIL_MWI,
+
+  MSG_TELE_SRV_IS91,    /* IS91_TS_ID_IS91           = 4096, */
+  MSG_TELE_SRV_PAGE,    /* VAL_SMS_TS_ID_PAGE        = 4097, */
+  MSG_TELE_SRV_MESSAGE, /* VAL_SMS_TS_ID_MESSAGE     = 4098, */
+  MSG_TELE_SRV_VMN,     /* VAL_SMS_TS_ID_VOICE_MAIL  = 4099, */
+  MSG_TELE_SRV_WAP,     /* VAL_SMS_TS_ID_WAP,    */
+  MSG_TELE_SRV_WEMT,    /* VAL_SMS_TS_ID_WEMT,   */
+  MSG_TELE_SRV_SCPT,    /* VAL_SMS_TS_ID_SCPT,   */
+  MSG_TELE_SRV_CATPT,   /* VAL_SMS_TS_ID_CATPT   */
+  MSG_BROAD_CAST_SRV,   /* broadcast SMS service, not a teleservice, here for the purpose of  management for all SMS service */
+#if defined(LGT_EXTENSIONS)
+  MSG_TELE_SRV_UNKNOWN,   /* VAL_SMS_LGT_UNKNOWN   */
+#endif
+  MSG_TELE_SRV_UNICOM,
+  MSG_AUTO_REG_SRV,
+  MSG_AUTO_DM_PUSH,
+  MSG_TELE_SRV_GPS,
+  MSG_TELE_SRV_DANDCN,
+  MAX_REG_MSG
+} ValSmsTeleSrvType;
+
+typedef  struct
+{
+  kal_bool isUse;
+#ifdef SYS_OPTION_NO_UI  
+  ValSmsTeleSrvIdT TeleSrvId;
+#else
+  kal_uint16 TeleSrvId;
+#endif  
+  kal_uint8            RegIdCount;
+  kal_bool             NeedSave;
+  kal_uint8            NeedSaveCount;
+}   RegEvtInfoT;
+
+
+/*the memory status*/
+typedef  struct
+{
+  kal_uint16 nFlashMaxSmsRec;
+  kal_uint16 nFlashFreeSmsRec;
+  kal_uint16 nUimMaxSmsRec;
+  kal_uint16 nUimFreeSmsRec;
+}   ValSmsStorParamsT;
+
+
+typedef struct
+{
+  kal_int16 refNum;
+  kal_uint8  maxNum;
+  kal_uint8  seqNum;
+  kal_uint8  numSegments;
+  kal_uint16 recid;
+}ValEmsHeaderT;
+
+typedef enum
+{
+  Unused      =0,
+  RxUnReadBox,
+  RxReadBox,
+  TxSentBox,
+  DraftBox,
+  RxUnRead,
+  DuplicateUnRead, 
+  RxRead, 
+  DuplicateRead, 
+  TxSent, 
+  TxNotSent, 
+  SentDelivered, 
+  SentIncompleteDelivery, 
+  SentDeliveryFailed, 
+  SentNoServicePending, 
+  DraftRead, 
+  DraftSent, 
+  DraftNotSent, 
+  NUM_ETS_SMS_BOX
+} ValSmsEtsMsgTypeT;
+
+
+typedef enum
+{
+  SMS_ETS_EVT_ADDED,
+  SMS_ETS_EVT_DELETED,
+  SMS_ETS_EVT_MODIFIED,
+  SMS_ETS_EVT_RECEIVED,
+  SMS_ETS_EVT_SENT
+} ValSmsEtsEventT;
+
+typedef enum
+{
+  /*=== General errors ===*/
+  
+  UI_General_SUCCESS,
+  UI_General_Index_Out_Of_Range,
+  UI_General_Not_Implemented,
+  UI_General_Storage_Full,
+  UI_General_Empty_Index,
+  
+  /*=== SMS errors ===*/
+  
+  /*Network Problems*/
+  UI_SMS_ADDRESS_VACANT,
+  UI_SMS_ADDRESS_TRANSLATION, 
+  UI_SMS_NETWORK_RESOURCE_SHORTAGE,
+  UI_SMS_NETWORK_FAILURE,  
+  UI_SMS_INVALID_TELESERVICE_ID,
+  UI_SMS_OTHER_NETWORK_PROBLEM,
+  UI_SMS_OTHER_NETWORK_PROBLEM_MORE_FIRST,
+  UI_SMS_OTHER_NETWORK_PROBLEM_MORE_LAST,
+  
+  /*General Problems*/
+  UI_SMS_NO_PAGE_RESPONSE,  
+  UI_SMS_DESTINATION_BUSY,  
+  UI_SMS_NO_ACKNOWLEDGEMENT,  
+  UI_SMS_DESTINATION_RESOURCE_SHORTAGE,  
+  UI_SMS_DELIVERY_POSTPONED,  
+  UI_SMS_DESTINATION_OUT_OF_SERVICE,
+  UI_SMS_DESTINATION_NO_LONGER_AT_THIS_ADDRESS,
+  UI_SMS_OTHER_TERMINAL_PROBLEM,
+  UI_SMS_OTHER_TERMINAL_PROBLEM_MORE_FIRST,
+  UI_SMS_OTHER_TERMINAL_PROBLEM_MORE_LAST,
+  UI_SMS_DELIVER_POSTPONED_MORE_FIRST,
+  UI_SMS_DELIVER_POSTPONED_MORE_LAST,
+  UI_SMS_RADIO_INTERFACE_RESOURCE_SHORTAGE,
+  UI_SMS_RADIO_INTERFACE_INCOMPATIBILITY,
+  UI_SMS_OTHER_RADIO_INTERFACE_PROBLEM,
+  UI_SMS_OTHER_RADIO_INTERFACE_PROBLEM_MORE_FIRST,
+  UI_SMS_OTHER_RADIO_INTERFACE_PROBLEM_MORE_LAST,
+  UI_SMS_ENCODING_PROBLEM,
+  UI_SMS_SUPPLEMENTARY_SERVICE_NOT_SUPPORTED,
+  UI_SMS_RESERVED,
+  UI_SMS_MISSING_EXPECTED_PARAMETER,
+  UI_SMS_MISSING_MANDATORY_PARAMETER,
+  UI_SMS_UNRECOGNIZED_PARAMATER_VALUE,
+  UI_SMS_UNEXPECTED_PARAMATER_VALUE,
+  UI_SMS_OTHER_GENERAL_PROBLEMS,
+  UI_SMS_OTHER_GENERAL_PROBLEMS_MORE_FIRST,
+  UI_SMS_OTHER_GENERAL_PROBLEMS_MORE_LAST,
+  
+  /*SERVICE NOT AVAILABLE*/
+  UI_SMS_ORIGINATION_DENIED,
+  
+  /*INVALID DESTINATION*/
+  UI_SMS_TERMINATION_DENIED,
+  
+  /*SERVICE NOT SUPPORTED*/
+  UI_SMS_NOT_SUPPORTED,
+  
+  /*MESSAGE TOO LONG FOR NETWORK*/
+  UI_SMS_USER_DATA_SIZE_ERROR,
+  
+  /*Other Messages*/
+  UI_SMS_WAITING_FOR_TL_ACK,
+  UI_SMS_OUT_OF_RESOURCES,
+  UI_SMS_ACCESS_TOO_LARGE,
+  UI_SMS_DRC_TOO_LARGE,
+  UI_SMS_NETWORK_NOT_READY,
+  UI_SMS_PHONE_NOT_READY,
+  UI_SMS_NOT_ALLOWED_IN_AMPS,
+  UI_SMS_INVALID_TRANSACTION,
+  UI_SMS_MESSAGE_NOT_SENT,
+  UI_SMS_MESSAGE_BEGIN_SENT,
+  UI_SMS_MAX_NUMBER_OF_DESTINATIONS_IS_10,
+  UI_SMS_MESSAGE_DELIVERY_FAILED
+} ValSmsEtsStatT;
+
+/* VAL_SMS_GET_COUNT_MSG */
+typedef  struct
+{
+  kal_uint8 Storage;
+}   ValSmsEtsGetCountMsgT;
+
+typedef  struct
+{
+  kal_uint32 MsgCount[NUM_ETS_SMS_BOX];
+}   ValSmsEtsGetCountRspMsgT;
+
+/* VAL_SMS_GET_FIRST_MSG */
+typedef  struct
+{
+  kal_uint8 Type;
+  kal_uint8 Storage;
+}   ValSmsEtsGetFirstMsgT;
+
+typedef  struct
+{
+  kal_uint8 Status;
+  kal_uint8 Type;
+  kal_uint8 Storage;
+  kal_uint16 Index;
+  kal_uint8 EmsFlag;
+  kal_uint8 EmsSegment;
+  kal_uint8 EmsLast;
+  kal_uint8 PhbType;
+  kal_uint8 PhbByteCount;
+  kal_uint8 Pb_Pdu_data[1];
+}   ValSmsEtsGetMsgRspMsgT;
+
+/* VAL_SMS_GET_NEXT_MSG */
+
+/* VAL_SMS_WRITE_MSG */
+typedef  struct
+{
+  kal_uint8 Type;
+  kal_uint8 Storage;
+  kal_uint16 Index;    /* for EMS only? */
+  kal_uint8 EmsFlag;
+  kal_uint8 EmsSegment;
+  kal_uint8 EmsLast;
+  kal_uint8 pdu_len;
+  kal_uint8 Pdu[VAL_SMS_MAX_SMS_PDU_LEN];
+}   ValSmsEtsWriteMsgT;
+
+typedef  struct
+{
+  kal_uint8  Status;
+  kal_uint8  Storage;
+  kal_uint16 Index;
+  kal_uint8  EmsSegment;
+  kal_uint16 RefNum;
+}   ValSmsEtsWriteRspMsgT;
+
+/* VAL_SMS_DEL_ALL_MSG */
+typedef  struct
+{
+  kal_uint8 Type;
+  kal_uint8 Storage;
+}   ValSmsEtsDelAllMsgT;
+
+typedef  struct
+{
+  kal_uint8 Status;
+  kal_uint8 Type;
+  kal_uint8 Storage;
+}   ValSmsEtsDelAllRspMsgT;
+
+/* VAL_SMS_DEL_MSG */
+typedef  struct
+{
+  kal_uint16 Index;
+  kal_uint8  Storage;
+}   ValSmsEtsDelMsgT;
+
+typedef  struct
+{
+  kal_uint8 Status;
+  kal_uint16 Index;
+  kal_uint8 Storage;
+}   ValSmsEtsDelRspMsgT;
+
+/* VAL_SMS_SEND_MSG */
+typedef  struct
+{
+  kal_uint8 Storage;
+  kal_uint16 Index;    /* for EMS only? */
+  kal_uint8 EmsFlag;
+  kal_uint8 EmsSegment;
+  kal_uint8 EmsLast;
+  kal_uint8 Save;
+  kal_uint8 Confirmation;
+  kal_uint8 pdu_len;
+  kal_uint8 Pdu[VAL_SMS_MAX_SMS_PDU_LEN];
+}   ValSmsEtsSendMsgT;
+
+typedef  struct
+{   
+  kal_uint8  Status;
+  kal_uint8  Storage;
+  kal_uint16 Index;
+  kal_uint8  EmsSegment;
+  kal_uint16 RefNum;
+  kal_uint8  ErrorClass;
+}   ValSmsEtsSendRspMsgT;
+
+/* VAL_SMS_SEND_INDEX_MSG */
+typedef  struct
+{
+  kal_uint8  Storage;
+  kal_uint16 Index;
+  kal_uint8 Save;
+  kal_uint8 Confirmation;
+}   ValSmsEtsSendIndexMsgT;
+
+typedef  struct
+{
+  kal_uint8  Status;
+  kal_uint8  Storage;
+  kal_uint16 Index;
+}   ValSmsEtsSendIndexRspMsgT;
+
+/* VAL_SMS_SET_STATUS_MSG */
+typedef  struct
+{
+  kal_uint8  Storage;
+  kal_uint16 Index;
+  kal_bool   Read;
+}   ValSmsEtsSetStatusMsgT;
+
+typedef  struct
+{
+  kal_uint8  Status;
+  kal_uint8  Storage;
+  kal_uint16 Index;
+}   ValSmsEtsSetStatusRspMsgT;
+
+/* VAL_SMS_SPY_MSG */
+typedef  struct
+{
+  kal_uint8  Event;
+  kal_uint8  Storage;
+  kal_uint16 Index;
+}   ValSmsEtsSpyMsgT;
+
+#ifdef MTK_CBP_ENCRYPT_VOICE
+typedef struct
+{
+   kal_uint8 len;
+   kal_uint8 CallNum[NUMBER_MAX_LEN];
+} ValSmsMocKeyReqMsgT;
+typedef struct
+{
+   kal_uint8 OpType;
+   kal_uint8 Result;
+} ValSmsRemoteCtrlInsRspMsgT;
+
+typedef ValSmsRemoteCtrlInsRspMsgT ValEncrySmsRemoteCtrlInsRspMsgT;
+
+typedef struct
+{
+   kal_uint8 len;
+   kal_uint8 CallNum[NUMBER_MAX_LEN];
+} ValMtEncryptNotificationIndMsgT;
+
+typedef struct
+{
+   kal_uint8 keyReqtype;/*1 MO,0 MT*/
+   kal_uint8 mode; /*0: MANUAL,1: auto*/
+   kal_uint8 calledNum[NUMBER_MAX_LEN];/*number ,max =11*/
+   kal_uint8 calledBytes;                                            
+} ValSmsEncryKeyReqMsgT;
+
+typedef struct
+{
+   kal_uint8 mode;/*1 MO,0 MT*/                                       
+} ValSmsModuleClearContextMsgT;
+
+#endif
+
+
+typedef  struct { 
+   kal_uint8  sms_format;    /* reply sequence used in bearer reply opt */
+   kal_uint8  sms_status;
+   kal_uint16 msg_id;
+   kal_uint8 seq_id; /* SMS sequence Number */
+   kal_bool  is_used;
+   kal_uint8 pduLen;
+   kal_uint8 *pduPt;
+}  ValSmsTransAseT;
+
+typedef  struct { 
+   kal_uint16 msg_id;
+   kal_uint16 seq_id;
+   kal_bool is_used;
+}  ValSmsIdPairT;
+#if (defined MTK_DEV_CCCI_FS) || (defined MTK_PLT_ON_PC_UT)
+void valsmsDbmResponse(ilm_struct* current_ilm);
+#endif
+
+typedef PACKED_PREFIX struct {
+    
+   kal_uint8         send_over_ims_cs;  
+   kal_uint16        length;   
+   kal_uint8         pdu[VAL_SMS_MAX_SMS_PDU_LEN];
+   kal_bool          is_no_error; //KAL_TRUE: no error, KAL_FALSE: has error
+} PACKED_POSTFIX ValC2kSmsRspT;
+
+typedef PACKED_PREFIX struct {
+   kal_uint16	     length;
+   kal_uint8         pdu[VAL_SMS_MAX_SMS_PDU_LEN];
+} PACKED_POSTFIX SdmValC2kSmsSendReqT ;
+
+/* MSG_ID_IMCSMS_VAL_C2K_SMS_SEND_REQ */
+typedef PACKED_PREFIX struct {
+	kal_uint16  length;
+	kal_uint8   data[VAL_SMS_MAX_SMS_PDU_LEN];
+} PACKED_POSTFIX ImcValC2kSmsSendReqT; 
+
+typedef struct {
+   kal_uint16	     length;
+   kal_uint8         pdu[MAX_C2K_SMS_PDU_LEN];
+   c2k_sms_rat_enum  send_over_ims_cs;
+} SdmCvalC2kSmsSendReqT;
+
+typedef struct{	
+	kal_uint16  length;
+	kal_uint8   data[MAX_C2K_SMS_PDU_LEN];
+} ImcsmsCvalC2kSmsSendReqT;
+
+typedef struct{	
+	kal_uint16  length;
+	kal_uint8   data[MAX_C2K_SMS_PDU_LEN];
+} ImcsmsCvalC2kSmsRecvReqT;
+
+typedef  struct
+{
+  kal_uint16    msg_id;
+  kal_uint16    pdulen;
+  kal_uint8     pdumsg[VAL_SMS_MAX_SMS_PDU_LEN];
+}   ValSmsSdmSendReqPendingInfoT;
+
+typedef struct {
+    LOCAL_PARA_HDR
+    kal_uint8 src_id; /* Required for L4C*/
+    l4_addr_bcd_struct tel_number; /* The telephone number to be approved*/
+    kal_uint8 is_retrieve; /* Whether retrieving the hit entry of the given number is required*/
+    l4c_phb_approval_type_enum approval_type; /* l4c_phb_approval_type_enum */
+} l4cphb_approve_req_struct;
+
+typedef struct {
+    kal_uint8 src_id; /* The `src_id' of the corresponding reqest is forwarded back in this field.*/
+    phb_errno_enum result; /* phb_errno_enum; Operation result*/
+    kal_uint16 cause;
+    phb_type_enum type; /* phb_type_enum; Type of phone number entries*/
+    kal_uint8 esc;
+} l4cphbapprovecnftT;
+
+typedef struct {   
+   c2k_sms_rat_enum  send_over_ims_cs;  
+   kal_uint16        length;   
+   kal_uint8         pdu[MAX_C2K_SMS_PDU_LEN];
+   kal_bool          is_no_error; //KAL_TRUE: no error, KAL_FALSE: has error
+} SdmCvalC2kSmsRspT;
+
+
+/*****************************************************************************
+
+  FUNCTION NAME: ValSmsGetStorParams
+
+  DESCRIPTION:
+
+      To get current storage memory statue parameters.
+
+  PARAMETERS:
+
+   pSmsStorParams: the buffer where to write the ValSmsStorParamsT info back
+
+  RETURNED VALUES:
+    success is true.failed is false
+
+*****************************************************************************/
+kal_bool ValSmsGetStorParams( ValSmsStorParamsT* pSmsStorParams );
+
+/*! Macro for valid sms service option */
+#define IS_VALID_SMS_SO(a)   (((a) == 0) || ((a) == VAL_SERVICE_OPTION_6) || ((a) == VAL_SERVICE_OPTION_14))
+
+void ValSmsInitUimSms( void );
+void ValSmsInit( void );
+kal_bool ValSmsProcessMsg( kal_uint32 MsgId, void *MsgBufP, kal_uint32 MsgLen );
+void ValSmsSendCbsCfgToPsw(ValSmsCbsInfoT* CbsInfo);
+
+RegIdT ValSmsRegister( ValSmsEventFunc CallBack );
+//don't modify following Function, brew has referred to it
+ValSmsResultT ValSmsUnregister( RegIdT RegId );
+ValSmsResultT ValSmsStartRegSrv( RegIdT RegId, ValSmsTeleSrvIdT TeleSrvId);
+ValSmsResultT ValSmsStopRegSrv( RegIdT RegId, ValSmsTeleSrvIdT TeleId );
+
+//don't modify following Function, brew has referred to it
+kal_bool ValSmsGetSmsStatus( void );
+void ValSmsSetSmsStatus(kal_bool Flg);
+
+void ValSmsSetSendOnTraffic( kal_bool sendOnTraffic );
+ValSmsResultT ValSmsSetPrefSvcOpt( ValServiceOptionT SmsSo );
+ValSmsResultT ValSmsSetBroadcastParams( kal_uint32 SvcMask, kal_uint32 LangMask, kal_uint8  Priority );
+ValSmsResultT ValSmsUpdateTxtMessage(ValSmsTxtRecordT *pSmsTxtMsg,kal_uint16 recId);
+ValSmsResultT ValSmsUpdatePduMessage(ValSmsPduRecordT *pSmsRecord,kal_uint16 recId);
+ValSmsResultT ValSmsReadTxtMessage(ValSmsTxtRecordT *pSmsMessage,kal_uint16 recId);
+ValSmsResultT ValSmsReadPduMessage(ValSmsPduRecordT *pSmsRecord,kal_uint16 recId);
+
+#ifdef  SYS_OPTION_NO_UI
+ValSmsResultT ValSmsSendPduMessage( RegIdT RegId, ValSmsRecIdT*  recidP, kal_uint8* MsgBufP, kal_uint8 nbytes, kal_uint16* MsgId, kal_bool ToBeSave );
+ValSmsResultT ValSmsSendTxtMessage( RegIdT   RegId, ValSmsRecIdT* recid,  ValSmsTxtRecordT*   SmsTxtMsgP, kal_uint16* MsgId, kal_bool ToBeSave);
+#else
+ValSmsResultT ValSmsSendPduMessage(RegIdT RegId, kal_uint8 *MsgBufP, kal_uint8 MsgLength);
+ValSmsResultT ValSmsSendTxtMessage(RegIdT RegId, ValSmsTxtRecordT *TxtRecord);
+#endif
+kal_bool ValSmsProcessMsg( kal_uint32 MsgId, void*  MsgBuf, kal_uint32 MsgLen );
+void ValSmsSendAck(ValSmsResultT Result, kal_uint32 SeqNumber);
+
+ValSmsTeleSrvIdT ValSmsGetTeleSrvFromPdu(kal_uint8 *DataP, kal_uint8 Length);
+
+kal_bool CheckSmsPdu(kal_uint8 *ValSmsPduP, kal_uint8 Length);
+ValDeviceT ValSmsGetStorage( void );
+void ValSmsSetMultiSMSMode(kal_bool IsMultiSMS);
+
+int  ValSmsSendMessage( ValSmsTxtRecordT *MessageP );
+
+
+
+#ifdef MTK_DEV_C2K_IRAT
+void valProcSdmC2kSmsSendReqMsg(kal_uint16 length,kal_uint8* pdu);
+void valProcSdmC2kSmsOverImsSendReqMsg(kal_uint16 length,kal_uint8 *pdu);
+void valProcImcsmsC2kSmsSendReqMsg(kal_uint16 length,kal_uint8 *pdu);
+void valProcSdmC2kSmsSendIndMsg(kal_uint8 format,kal_uint16 length,kal_uint8* pdu);
+void valProcSdmC2kSmsSendRspMsg(kal_uint8 send_over_ims_cs,kal_uint16 length,kal_uint8 *pdu);
+void valProcSdmC2kSmsRspMsg(SdmCvalC2kSmsRspT* pValSmsRsp);
+void valProcUiccPPdownLoadRspMsg(kal_uint8 *pdu,kal_uint8 length,kal_uint8 seq_id);
+void valPreProcPPdownloadMsg(kal_uint8 *pdu,kal_uint8 length,kal_uint8 seq_id);
+void valProcUtkSmsMsg(kal_uint8 *pdu,kal_uint8 length);
+void valProcImcsmsC2kSmsRecvReqMsg(kal_uint16 length,kal_uint8 *data);
+void SendSmsAckForIms(kal_uint8 *ackPdu, kal_uint8 pduLen);
+
+#endif
+
+void CNMASendSMSMsg(kal_uint8 length, kal_uint8 *pduBuf,kal_uint16 seqNum);
+kal_bool ValSmsIsAddrE911(kal_uint8 *data, kal_uint16 length);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+
+#endif  /* VALSMSAPI_H */
+
+
+