Add toolchain and mbtk source
Change-Id: Ie12546301367ea59240bf23d5e184ad7e36e40b3
diff --git a/mbtk/include/ql/ql_vcall.h b/mbtk/include/ql/ql_vcall.h
new file mode 100755
index 0000000..c1b0545
--- /dev/null
+++ b/mbtk/include/ql/ql_vcall.h
@@ -0,0 +1,296 @@
+/**
+ *@file ql_voicecall.h
+ *@date 2017-05-02
+ *@author
+ *@brief
+ */
+
+#ifndef __QL_VCALL_H__
+#define __QL_VCALL_H__
+
+#define QL_QMI_VCALL_ECALL_MSD_MAX_LEN 140
+
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * Reference returned by Start function and used by End function
+ */
+//--------------------------------------------------------------------------------------------------
+//typedef struct QL_VCALL_Call* ST_VCALL_CallRef;
+typedef int ST_VCALL_CallRef;
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * SIM identifiers.
+ *
+ */
+//--------------------------------------------------------------------------------------------------
+typedef enum
+{
+ E_QL_VCALL_EXTERNAL_SLOT_1,
+ E_QL_VCALL_EXTERNAL_SLOT_2,
+ E_QL_VCALL_EMBEDDED,
+ E_QL_VCALL_REMOTE,
+ E_QL_VCALL_ID_MAX
+}E_QL_VCALL_ID_T;
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * Voice call establishment states.
+ */
+//--------------------------------------------------------------------------------------------------
+typedef enum
+{
+ E_QL_VCALL_EVENT_ALERTING = 0,
+ ///< Voice call establishment in progress.
+ ///< Far end is now alerting its user (outgoing call).
+
+ E_QL_VCALL_EVENT_CONNECTED = 1,
+ ///< Call has been established, and is media is active.
+
+ E_QL_VCALL_EVENT_TERMINATED = 2,
+ ///< Call has terminated.
+
+ E_QL_VCALL_EVENT_OFFLINE = 3,
+ ///< NO Service available to try establish a voice call.
+
+ E_QL_VCALL_EVENT_BUSY = 4,
+ ///< Remote party (callee) is busy.
+
+ E_QL_VCALL_EVENT_RESOURCE_BUSY = 5,
+ ///< All local connection resources (lines/channels) are in use.
+
+ E_QL_VCALL_EVENT_CALL_END_FAILED = 6,
+ ///< Call ending failed.
+
+ E_QL_VCALL_EVENT_CALL_ANSWER_FAILED = 7,
+ ///< Call answering failed.
+
+ E_QL_VCALL_EVENT_INCOMING = 8
+ ///< Incoming voice call in progress.
+}E_QL_VCALL_EVENT_T;
+
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * Voice call termination reason.
+ */
+//--------------------------------------------------------------------------------------------------
+typedef enum
+{
+ E_QL_VCALL_TERM_NETWORK_FAIL = 0,
+ ///< Network could not complete the call.
+
+ E_QL_VCALL_TERM_BAD_ADDRESS = 1,
+ ///< Remote address could not be resolved.
+
+ E_QL_VCALL_TERM_BUSY = 2,
+ ///< Caller is currently busy and cannot take the call.
+
+ E_QL_VCALL_TERM_LOCAL_ENDED = 3,
+ ///< Local party ended the call.
+
+ E_QL_VCALL_TERM_REMOTE_ENDED = 4,
+ ///< Remote party ended the call.
+
+ E_QL_VCALL_TERM_UNDEFINED = 5
+ ///< Undefined reason.
+}E_QL_VCALL_TerminationReason_t;
+
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * Reference type used by Add/Remove functions for EVENT 'QL_VCALL_State'
+ */
+//--------------------------------------------------------------------------------------------------
+//typedef struct QL_VCALL_StateHandler* QL_VCALL_StateHandlerRef_t;
+typedef int QL_VCALL_StateHandlerRef_t;
+
+
+typedef enum
+{
+ E_QL_VCALL_DIRECTION_MO = 1,
+ E_QL_VCALL_DIRECTION_MT = 2
+}E_QL_VCALL_DIRECTION_T;
+
+typedef enum
+{
+ E_QL_VCALL_STATE_ORIGINATING = 1, //Origination
+ E_QL_VCALL_STATE_INCOMING, //Incoming
+ E_QL_VCALL_STATE_CONVESATION, //Conversation
+ E_QL_VCALL_STATE_CC_IN_PROGRESS, //Call is originating but waiting for call control to complete
+ E_QL_VCALL_STATE_ALERTING, //Alerting
+ E_QL_VCALL_STATE_HOLD, //Hold
+ E_QL_VCALL_STATE_WAITING, //Waiting
+ E_QL_VCALL_STATE_DISCONNECTING, //Disconnecting
+ E_QL_VCALL_STATE_END, //End
+ E_QL_VCALL_STATE_SETUP, //MT call is in setup state in 3GPP
+}E_QL_VCALL_STATE_T;
+
+typedef enum
+{
+ E_QL_VCALL_TYPE_VOICE = 0, //Voice
+ E_QL_VCALL_TYPE_VOICE_FORCED, //Avoid modem call classification
+ E_QL_VCALL_TYPE_VOICE_IP, //Voice over IP
+ E_QL_VCALL_TYPE_VT, //VideoTelephony call over IP
+ E_QL_VCALL_TYPE_VIDEOSHARE , //Videoshare
+ E_QL_VCALL_TYPE_TEST, //Test call
+ E_QL_VCALL_TYPE_OTAPA, //OTAPA
+ E_QL_VCALL_TYPE_STD_OTASP, //Standard OTASP
+ E_QL_VCALL_TYPE_NON_STD_OTASP, //Nonstandard OTASP
+ E_QL_VCALL_TYPE_EMERGENCY, //Emergency
+ E_QL_VCALL_TYPE_SUPS, //Supplementary Service
+ E_QL_VCALL_TYPE_EMERGENCY_IP, //Emergency VoIP
+ E_QL_VCALL_TYPE_ECALL //eCall
+}E_QL_VCALL_TYPE_T;
+
+typedef struct
+{
+ uint8_t call_id;
+ char PhoneNum[20]; ///Telephone number string.
+ E_QL_VCALL_DIRECTION_T e_direct;
+ E_QL_VCALL_STATE_T e_state;
+ E_QL_VCALL_TYPE_T e_type;
+} vcall_info_t;
+
+typedef enum
+{
+ E_QL_VCALL_ECALL_MANUAL = 5,
+ E_QL_VCALL_ECALL_AUTO = 6
+}E_QL_VCALL_ECALL_CAT_T;
+
+typedef enum
+{
+ E_QL_VCALL_ECALL_TEST = 0x01,
+ E_QL_VCALL_ECALL_EMERGENCY = 0x02,
+ E_QL_VCALL_ECALL_RECONFIG = 0x03,
+}E_QL_VCALL_ECALL_VARIANT_T;
+
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * Handler for voice call state changes.
+ *
+ * @param reference
+ * Event voice call object reference.
+ * @param identifier
+ * Identifier of the remote party
+ * @param event
+ * Voice call event.
+ * @param contextPtr
+ */
+//--------------------------------------------------------------------------------------------------
+typedef void (*QL_VCALL_StateHandlerFunc_t)
+(
+ ST_VCALL_CallRef reference,
+ const char* identifier,
+ E_QL_VCALL_STATE_T event,
+ void* contextPtr
+);
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * Add handler function for EVENT 'QL_VCALL_State'
+ *
+ * This event provides information on voice call state changes
+ */
+//--------------------------------------------------------------------------------------------------
+QL_VCALL_StateHandlerRef_t QL_VCALL_AddStateHandler
+(
+ QL_VCALL_StateHandlerFunc_t handlerPtr,
+ ///< [IN]
+
+ void* contextPtr
+ ///< [IN]
+);
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * Remove handler function for EVENT 'QL_VCALL_State'
+ */
+//--------------------------------------------------------------------------------------------------
+void QL_VCALL_RemoveStateHandler
+(
+ QL_VCALL_StateHandlerRef_t addHandlerRef
+ ///< [IN]
+);
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * Start a voice call.
+ *
+ * @return
+ * - Reference to the voice call (to be used later for releasing the voice call)
+ * - NULL if the voice call could not be processed
+ */
+//--------------------------------------------------------------------------------------------------
+ST_VCALL_CallRef QL_VCALL_Start
+(
+ E_QL_VCALL_ID_T simId,
+ const char* DestinationID
+ ///< [IN] Destination identifier for the voice
+);
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * Release a voice call.
+ *
+ * @return
+ * - E_QL_OK if the end of voice call can be processed.
+ * - E_QL_NOT_FOUND if the voice call object reference is not found.
+ */
+//--------------------------------------------------------------------------------------------------
+int QL_VCALL_End
+(
+ ST_VCALL_CallRef reference
+ ///< [IN] Voice call object reference to hang-up.
+);
+
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * Answer to incoming voice call.
+ *
+ * @return
+ * - E_QL_OK if the incoming voice call can be answered
+ * - E_QL_NOT_FOUND if the incoming voice call object reference is not found.
+ */
+//--------------------------------------------------------------------------------------------------
+int QL_VCALL_Answer
+(
+ ST_VCALL_CallRef reference
+ ///< [IN] Incoming voice call object reference to answer.
+);
+
+//--------------------------------------------------------------------------------------------------
+/**
+ * Get the termination reason of a voice call reference.
+ *
+ * @return
+ * - E_QL_OK if the termination reason is got
+ * - E_QL_NOT_FOUND if the incoming voice call object reference is not found.
+ * - E_QL_FAULT if the voice call is not terminated.
+ */
+//--------------------------------------------------------------------------------------------------
+int QL_VCALL_GetTerminationReason
+(
+ ST_VCALL_CallRef reference,
+ ///< [IN] Voice call object reference to read from.
+
+ E_QL_VCALL_TerminationReason_t* reasonPtr
+ ///< [OUT] Termination reason of the voice call.
+);
+
+
+int QL_VCALL_Ecall(E_QL_VCALL_ID_T simId,
+ char* phone_number,
+ char* ecall_msd,
+ E_QL_VCALL_ECALL_CAT_T emer_cat,
+ E_QL_VCALL_ECALL_VARIANT_T eCallModeType,
+ ST_VCALL_CallRef *reference); //call id
+
+int QL_VCALL_UpdateMsd( const char *msd);
+
+
+#endif // __QL_VCALL_H__
+