Add toolchain and mbtk source
Change-Id: Ie12546301367ea59240bf23d5e184ad7e36e40b3
diff --git a/mbtk/include/ql/ql_voice.h b/mbtk/include/ql/ql_voice.h
new file mode 100755
index 0000000..7d4e038
--- /dev/null
+++ b/mbtk/include/ql/ql_voice.h
@@ -0,0 +1,201 @@
+/**
+ @file
+ ql_voice.h
+
+ @brief
+ This file provides the definitions for voice, and declares the
+ API functions.
+
+*/
+/*============================================================================
+ Copyright (c) 2017 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
+ Quectel Wireless Solution Proprietary and Confidential.
+ =============================================================================*/
+/*===========================================================================
+
+ EDIT HISTORY FOR MODULE
+
+This section contains comments describing changes made to the module.
+Notice that changes are listed in reverse chronological order.
+
+
+WHEN WHO WHAT, WHERE, WHY
+---------- ------------ ----------------------------------------------------
+14/11/2019 gunner.yang create
+06/01/2020 pony.made add net_state
+18/02/2020 gale.gao Add API: imsd get, wait status get, voice unhold;
+=============================================================================*/
+
+#ifndef __QL_VOICE_H__
+#define __QL_VOICE_H__
+
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum
+{
+ QL_VOICE_SUCCESS,
+ QL_VOICE_GENERIC_FAILURE,
+ QL_VOICE_RADIO_NOT_AVAILABLE,
+}QL_VOICE_ERROR_CODE;
+
+typedef enum{
+ GSM = 0,
+ GSM_COMPACT,
+ GSM_wEGPRS,
+ UTRAN,
+ UTRAN_wHSDPA,
+ UTRAN_wHSUPA,
+ UTRAN_wHSDPA_HSUPA,
+ E_UTRAN,
+ UTRAN_HSPA_PLUS,
+}QL_REG_STATE;
+
+typedef enum{
+ REASON_INVALID=-1,
+ REASON_UNCONDITIONAL =0,
+ REASON_DEVICE_BUSY =1,
+ REASON_DEVICE_NO_REPLY =2,
+ REASON_DEVICE_UNREACHABLE =3,
+ REASON_DEVICE_ALL_FORWARDING =4,
+ REASON_DEVICE_ALL_CONDITIONAL =5,
+}QL_VOICE_CALL_FW_REASON;
+
+typedef enum{
+ MODE_DISABLE=0,
+ MODE_ENABLE,
+ MODE_QUERY_STATUS,
+ MODE_REGISTRATION,
+ MODE_ERASURE,
+}QL_VOICE_CALL_FW_MODE;
+
+typedef struct
+{
+ int status;
+ int fw_class;
+ char num[20];
+ int type;
+ char subaddr[20];
+ int satype;
+ int time;
+} ql_voice_call_fw_list_t;
+
+typedef enum {
+ QL_CALL_ACTIVE = 0,
+ QL_CALL_HOLDING = 1,
+ QL_CALL_DIALING = 2, /* MO call only */
+ QL_CALL_ALERTING = 3, /* MO call only */
+ QL_CALL_INCOMING = 4, /* MT call only */
+ QL_CALL_WAITING = 5, /* MT call only */
+ QL_CALL_OFFERING = 6, /*MT call offering (call setup)*/
+ QL_CALL_DISCONNECTING = 7, /*call in disconnect procedure*/
+ QL_CALL_DISCONNECTED = 8, /*call is disconnected*/
+} QL_CallState;
+
+typedef struct
+{
+ int idx; /*call index, identification number*/
+ int dir; /*0: mobile originated(MO) call, 1: mobile terminated(MT) call*/
+ int state; /*define in QL_CallState*/
+ char number[20]; /*string type phone number in format specified by <type>*/
+ int type; /*type of address octet in interger format(refer TS24.008 subclause 10.5.4.7)*/
+}ql_voice_call_item;
+
+typedef struct
+{
+ int count;
+ ql_voice_call_item items[16];
+}ql_voice_call_list_t;
+/*
+ callbackfunction prototype
+*/
+typedef void (*QL_VOICE_EventHandlerFunc_t)(QL_CallState voice_flag, char *number,void *contextPtr);
+
+QL_VOICE_ERROR_CODE ql_voice_call_init ();
+QL_VOICE_ERROR_CODE ql_voice_call_release();
+
+/*
+ Register voice call event.
+ -handlerPtr : user_cb
+ -contextPtr : user_cb_data
+*/
+QL_VOICE_ERROR_CODE ql_voice_call_event_register(QL_VOICE_EventHandlerFunc_t handlerPtr, void* contextPtr);
+
+
+/*
+ Phone call.
+ -call_num : dst phone number
+*/
+QL_VOICE_ERROR_CODE ql_voice_call_start(char* call_num);
+
+
+/*
+ Put through.
+*/
+QL_VOICE_ERROR_CODE ql_voice_call_answer();
+QL_VOICE_ERROR_CODE ql_voice_auto_answer(int seconds);
+
+
+/*
+ Hang up.
+*/
+QL_VOICE_ERROR_CODE ql_voice_call_end();
+
+
+/* dfmf call */
+QL_VOICE_ERROR_CODE ql_voice_call_dtmf(char *dtmf,int duration);
+
+/* get voice net state
+ * Just use in call to judge Volte or CS-vioce
+ * regstate:
+ * 7 -> Volte call
+ * else -> CS call
+*/
+QL_VOICE_ERROR_CODE ql_voice_call_get_regstate(int* regstate);
+
+/* set imsd value
+ 1: open votle
+ 0: close votle
+ */
+QL_VOICE_ERROR_CODE ql_voice_call_set_imsd(int imsd);
+
+/* get imsd value
+ 1: open volte
+ 0: close volte
+ */
+QL_VOICE_ERROR_CODE ql_voice_call_get_imsd(int *imsd);
+
+/* set call wait
+ 0: close
+ 1: open */
+QL_VOICE_ERROR_CODE ql_voice_call_set_wait(int wait);
+
+/* get call wait status
+ 0: close
+ 1: open */
+QL_VOICE_ERROR_CODE ql_voice_call_get_wait(int *wait);
+
+/* hold the voice */
+QL_VOICE_ERROR_CODE ql_voice_call_hold();
+
+/* unhold the voice */
+QL_VOICE_ERROR_CODE ql_voice_call_unhold();
+
+QL_VOICE_ERROR_CODE ql_voice_call_fw_set(QL_VOICE_CALL_FW_REASON reason, QL_VOICE_CALL_FW_MODE mode, char *num);
+
+QL_VOICE_ERROR_CODE ql_voice_call_fw_query(QL_VOICE_CALL_FW_REASON reason, ql_voice_call_fw_list_t *resp_data);
+
+/**
+ * get the current call list, same as AT+CLCC
+*/
+QL_VOICE_ERROR_CODE ql_voice_call_get_current_list(ql_voice_call_list_t *resp_data);
+#ifdef __cplusplus
+}
+#endif
+
+#endif