修改API框架,兼容1806

Change-Id: Ic68e966a32e4c7ffd7137b3d7ba94e4d813c71b2
diff --git a/mbtk/qser_lib/Makefile b/mbtk/qser_lib/Makefile
new file mode 100755
index 0000000..cc7956f
--- /dev/null
+++ b/mbtk/qser_lib/Makefile
@@ -0,0 +1,70 @@
+ROOT = $(shell pwd)/../..
+include ../Make.defines
+
+LOCAL_PATH=$(BUILD_ROOT)/qser_lib
+
+INC_DIR += -I$(BUILD_ROOT)/mbtk_lib/inc
+
+LIB_DIR +=
+
+LIBS += -llog -lubus -lubox -lblobmsg_json -lrilutil -lmbtk_lib
+
+CFLAGS += -shared -Wl,-shared,-Bsymbolic
+
+DEFINE +=
+
+MY_FILES_PATH:=$(LOCAL_PATH)/src
+#ifeq ($(CONFIG_MBTK_QL_SUPPORT),y)
+#MY_FILES_PATH += $(LOCAL_PATH)/ql
+#endif
+
+#ifeq ($(CONFIG_MBTK_PLATFORM),linux)
+#MY_FILES_PATH += $(LOCAL_PATH)/platform/linux
+#endif
+
+#MY_FILES_SUFFIX:=%.c %.cpp
+#My_All_Files := $(foreach src_path,$(MY_FILES_PATH), $(shell find "$(src_path)" -type f))
+#MY_SRC_LIST  := $(filter $(MY_FILES_SUFFIX),$(My_All_Files))
+#MY_SRC_LIST  := $(MY_SRC_LIST:$(LOCAL_PATH)/%=%)
+
+#LOCAL_SRC_FILES = $(wildcard src/*.c) $(wildcard src/*.cpp)
+LOCAL_SRC_FILES = src/qser_adc.c \
+				src/qser_alarm.c \
+				src/qser_audio.c \
+				src/qser_fota.c \
+				src/qser_gnss.c \
+				src/qser_gpio.c \
+				src/qser_log.c \
+				src/qser_net_light.c \
+				src/qser_sleep.c \
+				src/qser_time.c
+
+# LOCAL_SRC_FILES +=	src/qser_data_call.c \
+						src/qser_irq.c \
+						src/qser_network.c \
+						src/qser_sim.c \
+						src/qser_sms.c \
+						src/qser_voice_call.c
+
+
+$(info LOCAL_SRC_FILES = $(LOCAL_SRC_FILES))
+
+OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
+$(info OBJS = $(OBJS))
+
+dtarget := $(OUT_DIR)/lib/libqser_lib.so
+
+all: $(dtarget)
+
+$(dtarget): $(OBJS)
+	$(CC) $(CFLAGS) $(LIB_DIR) $(LIBS) $(OBJS) -o $@
+
+%.o:%.c
+	$(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
+
+%.o:%.cpp
+	$(CC) $(CFLAGS) $(INC_DIR) $(DEFINE) -c $< -o $@
+
+clean:
+	rm -f $(OBJS) $(dtarget)
+
diff --git a/mbtk/qser_lib/src/qser_adc.c b/mbtk/qser_lib/src/qser_adc.c
new file mode 100755
index 0000000..8efeb03
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_adc.c
@@ -0,0 +1,9 @@
+#include "qser/qser_adc.h"
+
+int qser_adc_show(ADC_CHANNEL_E qadc)
+{
+    UNUSED(qadc);
+
+    return 0;
+}
+
diff --git a/mbtk/qser_lib/src/qser_alarm.c b/mbtk/qser_lib/src/qser_alarm.c
new file mode 100755
index 0000000..537171d
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_alarm.c
@@ -0,0 +1,35 @@
+#include "mbtk_alarm.h"
+#include "qser/qser_alarm.h"
+
+int lynq_set_wakealarm(unsigned long time_sec)
+{
+    UNUSED(time_sec);
+
+    return 0;
+}
+
+int lynq_set_poweralarm(unsigned long time_sec)
+{
+    UNUSED(time_sec);
+
+    return 0;
+}
+
+ssize_t wakealarm(char *buffer)
+{
+    UNUSED(buffer);
+
+    return 0;
+}
+
+ssize_t poweralarm(char *buffer)
+{
+    UNUSED(buffer);
+
+    return 0;
+}
+
+int cancel_wakealarm(void)
+{
+    return 0;
+}
\ No newline at end of file
diff --git a/mbtk/qser_lib/src/qser_audio.c b/mbtk/qser_lib/src/qser_audio.c
new file mode 100755
index 0000000..426dadb
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_audio.c
@@ -0,0 +1,95 @@
+#include "qser/qser_audio.h"
+
+int qser_AudPlayer_Open(char* device, _cb_onPlayer cb_fun)
+{
+    UNUSED(device);
+    UNUSED(cb_fun);
+
+    return 0;
+}
+
+int qser_AudPlayer_PlayFrmFile(int hdl, const char *fd, int offset)
+{
+    UNUSED(hdl);
+    UNUSED(fd);
+    UNUSED(offset);
+
+    return 0;
+}
+
+int qser_AudPlayer_Pause(int hdl)
+{
+    UNUSED(hdl);
+
+    return 0;
+}
+
+int qser_AudPlayer_Resume(int hdl)
+{
+    UNUSED(hdl);
+
+    return 0;
+}
+
+void qser_AudPlayer_Stop(int hdl)
+{
+    UNUSED(hdl);
+
+    return 0;
+}
+
+
+void qser_AudPlayer_Close(int hdl)
+{
+    UNUSED(hdl);
+
+    return 0;
+}
+
+
+int qser_AudRecorder_Open(char* device, _cb_onPlayer cb_fun)
+{
+    UNUSED(device);
+    UNUSED(cb_fun);
+
+
+    return 0;
+}
+
+int qser_AudRecorder_StartRecord(int hdl, const char *fd, int offset)
+{
+    UNUSED(hdl);
+    UNUSED(fd);
+    UNUSED(offset);
+
+
+    return 0;
+}
+
+int qser_AudRecorder_Pause(void)
+{
+
+    return 0;
+}
+
+int qser_AudRecorder_Resume(void)
+{
+
+    return 0;
+}
+
+void qser_AudRecorder_Stop(void)
+{
+
+}
+
+void qser_AudRecorder_Close(void)
+{
+
+}
+
+void qser_Audio_Deinit(void)
+{
+
+}
+
diff --git a/mbtk/qser_lib/src/qser_data_call.c b/mbtk/qser_lib/src/qser_data_call.c
new file mode 100755
index 0000000..e6d07e8
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_data_call.c
@@ -0,0 +1,80 @@
+#include "qser/qser_data_call.h"
+
+
+int qser_data_call_init(qser_data_call_evt_cb_t evt_cb)
+{
+    UNUSED(evt_cb);
+
+    return 0;
+}
+
+void qser_data_call_destroy(void)
+{
+
+}
+
+int qser_data_call_start(qser_data_call_s *data_call, qser_data_call_error_e *err)
+{
+    UNUSED(data_call);
+    UNUSED(err);
+
+    return 0;
+}
+
+int qser_data_call_stop(char profile_idx, qser_data_call_ip_family_e ip_family, qser_data_call_error_e *err)
+{
+    UNUSED(profile_idx);
+    UNUSED(ip_family);
+    UNUSED(err);
+
+    return 0;
+}
+
+int qser_data_call_info_get(char profile_idx,qser_data_call_ip_family_e ip_family,
+        qser_data_call_info_s *info, qser_data_call_error_e *err)
+{
+    UNUSED(profile_idx);
+    UNUSED(ip_family);
+    UNUSED(info);
+    UNUSED(err);
+
+    return 0;
+}
+
+int qser_apn_set(qser_apn_info_s *apn)
+{
+    UNUSED(apn);
+
+    return 0;
+}
+
+int qser_apn_get(unsigned char profile_idx, qser_apn_info_s *apn)
+{
+    UNUSED(profile_idx);
+    UNUSED(apn);
+
+    return 0;
+}
+
+int qser_apn_add(qser_apn_add_s *apn, unsigned char *profile_idx)
+{
+    UNUSED(apn);
+    UNUSED(profile_idx);
+
+    return 0;
+}
+
+int qser_apn_del(unsigned char profile_idx)
+{
+    UNUSED(profile_idx);
+
+    return 0;
+}
+
+int qser_apn_get_list(qser_apn_info_list_s *apn_list)
+{
+    UNUSED(apn_list);
+
+    return 0;
+}
+
diff --git a/mbtk/qser_lib/src/qser_fota.c b/mbtk/qser_lib/src/qser_fota.c
new file mode 100755
index 0000000..43ee6e0
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_fota.c
@@ -0,0 +1,32 @@
+#include "qser/qser_fota.h"
+
+
+int lynq_rock_main(int first_run)
+{
+    UNUSED(first_run);
+
+
+    return 0;
+}
+
+int lynq_fota_set_addr_value(char *value,int size)
+{
+    UNUSED(value);
+    UNUSED(size);
+
+
+    return 0;
+}
+
+int lynq_fota_nrestart(void)
+{
+
+    return 0;
+}
+
+int lynq_get_upgrade_status(void)
+{
+
+    return 0;
+}
+
diff --git a/mbtk/qser_lib/src/qser_gnss.c b/mbtk/qser_lib/src/qser_gnss.c
new file mode 100755
index 0000000..d10c800
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_gnss.c
@@ -0,0 +1,79 @@
+#include "qser/qser_gnss.h"
+
+int qser_Gnss_Init (uint32_t *h_gnss)
+{
+    UNUSED(h_gnss);
+
+
+    return 0;
+}
+
+int qser_Gnss_Deinit (uint32_t h_gnss)
+{
+    UNUSED(h_gnss);
+
+
+    return 0;
+}
+
+int qser_AddRxIndMsgHandler (gnss_handler_func_t handler_ptr,uint32_t h_gnss)
+{
+    UNUSED(handler_ptr);
+    UNUSED(h_gnss);
+
+
+    return 0;
+}
+
+int qser_Set_Indications (uint32_t h_gnss,e_msg_id_t type)
+{
+    UNUSED(h_gnss);
+    UNUSED(type);
+
+
+    return 0;
+}
+
+int qser_Gnss_Start (uint32_t h_gnss)
+{
+    UNUSED(h_gnss);
+
+    return 0;
+}
+
+int qser_Gnss_Stop (uint32_t h_gnss)
+{
+    UNUSED(h_gnss);
+
+    return 0;
+}
+
+int qser_Gnss_InjectTime (uint32_t h_gnss,LYNQ_INJECT_TIME_INTO_T *time_info)
+{
+    UNUSED(h_gnss);
+    UNUSED(time_info);
+
+    return 0;
+}
+
+int qser_Gnss_Delete_Aiding_Data (uint32_t h_gnss,DELETE_AIDING_DATA_TYPE_T flags)
+{
+    UNUSED(h_gnss);
+    UNUSED(flags);
+
+    return 0;
+}
+
+int qser_Gnss_download_tle()
+{
+
+    return 0;
+}
+
+int qser_Gnss_injectEphemeris(uint32_t h_gnss)
+{
+    UNUSED(h_gnss);
+
+    return 0;
+}
+
diff --git a/mbtk/qser_lib/src/qser_gpio.c b/mbtk/qser_lib/src/qser_gpio.c
new file mode 100755
index 0000000..1b1c3de
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_gpio.c
@@ -0,0 +1,61 @@
+#include "mbtk_type.h"
+
+int lynq_gpio_init(int gpio, int direction, int value, int pullsel)
+{
+    UNUSED(gpio);
+    UNUSED(direction);
+    UNUSED(value);
+    UNUSED(pullsel);
+
+    return 0;
+}
+
+int lynq_gpio_deinit(int gpio)
+{
+    UNUSED(gpio);
+
+    return 0;
+}
+
+int lynq_gpio_direction_set(int gpio, int direction)
+{
+    UNUSED(gpio);
+    UNUSED(direction);
+
+    return 0;
+}
+
+
+int lynq_gpio_value_set(int gpio, int value)
+{
+    UNUSED(gpio);
+    UNUSED(value);
+
+    return 0;
+}
+
+int lynq_gpio_value_get(int gpio)
+{
+    UNUSED(gpio);
+
+    return 0;
+}
+
+int lynq_gpio_pullsel_set(int gpio, int pullsel)
+{
+    UNUSED(gpio);
+    UNUSED(pullsel);
+
+    return 0;
+}
+
+
+int lynq_gpio_pullsel_get(int gpio)
+{
+    UNUSED(gpio);
+
+    return 0;
+}
+
+
+
diff --git a/mbtk/qser_lib/src/qser_irq.c b/mbtk/qser_lib/src/qser_irq.c
new file mode 100755
index 0000000..4cf5c15
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_irq.c
@@ -0,0 +1,42 @@
+
+
+int lynq_irq_install(int line, irq_handler irq_test_handler, int trig_type)
+{
+    UNUSED(line);
+    UNUSED(irq_test_handler);
+    UNUSED(trig_type);
+
+    return 0;
+}
+
+int lynq_irq_unstall(int line)
+{
+    UNUSED(line);
+
+    return 0;
+}
+
+int lynq_irq_set_type(int line, int trig_type)
+{
+    UNUSED(line);
+    UNUSED(trig_type);
+
+    return 0;
+}
+
+int lynq_set_wake(int line, int en)
+{
+    UNUSED(line);
+    UNUSED(en);
+
+    return 0;
+}
+
+int lynq_irq_get_wake(int line)
+{
+    UNUSED(line);
+
+    return 0;
+}
+
+
diff --git a/mbtk/qser_lib/src/qser_log.c b/mbtk/qser_lib/src/qser_log.c
new file mode 100755
index 0000000..131e869
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_log.c
@@ -0,0 +1,123 @@
+#include "qser/qser_log.h"
+
+
+void lynq_log_configuration_init(const char *log_name)
+{
+    UNUSED(log_name);
+
+
+}
+
+void lynq_log_global_output(log_level_enum Level,const char *format,...)
+{
+    UNUSED(Level);
+    UNUSED(format);
+
+
+}
+
+int lynq_syslog_set_file_size(int value)
+{
+    UNUSED(value);
+
+    return 0;
+}
+
+int lynq_syslog_get_file_size(void)
+{
+
+    return -1;
+}
+
+int lynq_syslog_set_file_rotate(int value)
+{
+    UNUSED(value);
+
+    return 0;
+}
+
+int lynq_syslog_get_file_rotate(void)
+{
+
+    return 0;
+}
+
+int lynq_set_log_level(const char * module_name, log_level_enum level)
+{
+    UNUSED(module_name);
+    UNUSED(level);
+
+
+    return 0;
+}
+
+int lynq_get_log_level(const char * module_name, log_level_enum *level)
+{
+    UNUSED(module_name);
+    UNUSED(level);
+
+
+    return 0;
+}
+
+int lynq_set_special_log_level(const char * exe_name, const char * module_name, log_level_enum level)
+{
+    UNUSED(exe_name);
+    UNUSED(module_name);
+    UNUSED(level);
+
+
+    return 0;
+}
+
+int lynq_get_special_log_level(const char * exe_name, const char * module_name, log_level_enum *level)
+{
+    UNUSED(exe_name);
+    UNUSED(module_name);
+    UNUSED(level);
+
+
+    return 0;
+}
+
+int lynq_notify_recalc_log_level(pid_t pid)
+{
+    UNUSED(pid);
+
+    return 0;
+}
+
+void lynq_log_debug(const char *format,...)
+{
+    UNUSED(format);
+
+
+}
+
+void lynq_log_info(const char *format,...)
+{
+    UNUSED(format);
+
+
+}
+
+void lynq_log_warning(const char *format,...)
+{
+    UNUSED(format);
+
+
+}
+
+void lynq_log_error(const char *format,...)
+{
+    UNUSED(format);
+
+
+}
+
+void lynq_log_verbose(const char *format,...)
+{
+    UNUSED(format);
+
+
+}
diff --git a/mbtk/qser_lib/src/qser_net_light.c b/mbtk/qser_lib/src/qser_net_light.c
new file mode 100755
index 0000000..9613377
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_net_light.c
@@ -0,0 +1,16 @@
+#include "qser/qser_net_light.h"
+
+int lynq_set_netled_on(int led_mode)
+{
+    UNUSED(led_mode);
+
+    return 0;
+}
+
+int lynq_set_statusled_on(int led_mode)
+{
+    UNUSED(led_mode);
+
+    return 0;
+}
+
diff --git a/mbtk/qser_lib/src/qser_network.c b/mbtk/qser_lib/src/qser_network.c
new file mode 100755
index 0000000..6892129
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_network.c
@@ -0,0 +1,71 @@
+#include "qser/qser_network.h"
+
+int qser_nw_client_init(nw_client_handle_type *ph_nw)
+{
+    UNUSED(ph_nw);
+
+    return 0;
+}
+
+int qser_nw_client_deinit(nw_client_handle_type h_nw)
+{
+    UNUSED(h_nw);
+
+    return 0;
+}
+
+int qser_nw_set_config(nw_client_handle_type h_nw,QSER_NW_CONFIG_INFO_T *pt_info)
+{
+    UNUSED(h_nw);
+    UNUSED(pt_info);
+
+    return 0;
+}
+
+int qser_nw_get_operator_name(nw_client_handle_type h_nw, QSER_NW_OPERATOR_NAME_INFO_T *pt_info)
+{
+    UNUSED(h_nw);
+    UNUSED(pt_info);
+
+    return 0;
+}
+
+int qser_nw_get_reg_status(nw_client_handle_type h_nw, QSER_NW_REG_STATUS_INFO_T *pt_info)
+{
+    UNUSED(h_nw);
+    UNUSED(pt_info);
+
+    return 0;
+}
+
+int qser_nw_get_signal_strength(nw_client_handle_type h_nw,QSER_NW_SIGNAL_STRENGTH_INFO_T *pt_info)
+{
+    UNUSED(h_nw);
+    UNUSED(pt_info);
+
+    return 0;
+}
+
+int qser_nw_add_rx_msg_handler (nw_client_handle_type h_nw, QSER_NW_RxMsgHandlerFunc_t handlerPtr)
+{
+    UNUSED(h_nw);
+    UNUSED(handlerPtr);
+
+    return 0;
+}
+
+int qser_nw_set_oos_config (nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info)
+{
+    UNUSED(h_nw);
+    UNUSED(pt_info);
+
+    return 0;
+}
+
+int qser_nw_get_oos_config (nw_client_handle_type h_nw, QSER_NW_OOS_CONFIG_INFO_T *pt_info)
+{
+    UNUSED(h_nw);
+    UNUSED(pt_info);
+
+    return 0;
+}
\ No newline at end of file
diff --git a/mbtk/qser_lib/src/qser_sim.c b/mbtk/qser_lib/src/qser_sim.c
new file mode 100755
index 0000000..8d5762d
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_sim.c
@@ -0,0 +1,94 @@
+
+int qser_sim_client_init(sim_client_handle_type *ph_sim)
+{
+    UNUSED(ph_sim);
+
+    return 0;
+}
+
+int qser_sim_getimsi(sim_client_handle_type h_sim, QSER_SIM_APP_ID_INFO_T *pt_info,char *imsi,size_t imsiLen)
+{
+    UNUSED(h_sim);
+    UNUSED(pt_info);
+    UNUSED(imsi);
+    UNUSED(imsiLen);
+
+    return 0;
+}
+
+int qser_sim_geticcid(sim_client_handle_type h_sim,QSER_SIM_SLOT_ID_TYPE_T simId,char *iccid, size_t iccidLen)
+{
+    UNUSED(h_sim);
+    UNUSED(simId);
+    UNUSED(iccid);
+    UNUSED(iccidLen);
+
+    return 0;
+}
+
+int qser_sim_getphonenumber(sim_client_handle_type h_sim,QSER_SIM_APP_ID_INFO_T *pt_info, char*phone_num, size_t phoneLen)
+{
+    UNUSED(h_sim);
+    UNUSED(pt_info);
+    UNUSED(phone_num);
+    UNUSED(phoneLen);
+
+    return 0;
+}
+
+int qser_sim_verifypin(sim_client_handle_type h_sim,QSER_SIM_VERIFY_PIN_INFO_T *pt_info)
+{
+    UNUSED(h_sim);
+    UNUSED(pt_info);
+
+    return 0;
+}
+
+int qser_sim_changepin(sim_client_handle_type h_sim,QSER_SIM_CHANGE_PIN_INFO_T *pt_info)
+{
+    UNUSED(h_sim);
+    UNUSED(pt_info);
+
+    return 0;
+}
+
+int qser_sim_unblockpin(sim_client_handle_type h_sim, QSER_SIM_UNBLOCK_PIN_INFO_T *pt_info)
+{
+    UNUSED(h_sim);
+    UNUSED(pt_info);
+
+    return 0;
+}
+
+int qser_sim_enablepin(sim_client_handle_type h_sim, QSER_SIM_ENABLE_PIN_INFO_T *pt_info)
+{
+    UNUSED(h_sim);
+    UNUSED(pt_info);
+
+    return 0;
+}
+
+int qser_sim_disablepin(sim_client_handle_type h_sim, QSER_SIM_DISABLE_PIN_INFO_T *pt_info)
+{
+    UNUSED(h_sim);
+    UNUSED(pt_info);
+
+    return 0;
+}
+
+int qser_sim_getcardstatus(sim_client_handle_type h_sim,QSER_SIM_SLOT_ID_TYPE_T simId,QSER_SIM_CARD_STATUS_INFO_T *pt_info)
+{
+    UNUSED(h_sim);
+    UNUSED(simId);
+    UNUSED(pt_info);
+
+    return 0;
+}
+
+int qser_sim_client_deinit(sim_client_handle_type h_sim)
+{
+    UNUSED(h_sim);
+
+    return 0;
+}
+
diff --git a/mbtk/qser_lib/src/qser_sleep.c b/mbtk/qser_lib/src/qser_sleep.c
new file mode 100755
index 0000000..b0cc807
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_sleep.c
@@ -0,0 +1,40 @@
+#include "qser/qser_sleep.h"
+
+int qser_autosuspend_enable(char enable)
+{
+    UNUSED(enable);
+
+    return 0;
+}
+
+int qser_wakelock_create(const char* name , size_t len)
+{
+    UNUSED(name);
+    UNUSED(len);
+
+    return 0;
+}
+
+int qser_wakelock_lock(int fd)
+{
+    UNUSED(fd);
+
+    return 0;
+}
+
+int qser_wakelock_unlock(int fd)
+{
+    UNUSED(fd);
+
+    return 0;
+}
+
+int qser_wakelock_destroy(int fd)
+{
+    UNUSED(fd);
+
+    return 0;
+}
+
+
+
diff --git a/mbtk/qser_lib/src/qser_sms.c b/mbtk/qser_lib/src/qser_sms.c
new file mode 100755
index 0000000..55a8bcf
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_sms.c
@@ -0,0 +1,56 @@
+
+
+int qser_sms_client_init(sms_client_handle_type *ph_sms)
+{
+    UNUSED(ph_sms);
+
+    return 0;
+}
+
+int qser_sms_client_deinit(sms_client_handle_type h_sms)
+{
+    UNUSED(h_sms);
+
+    return 0;
+}
+
+int qser_sms_send_sms(sms_client_handle_type h_sms, QSER_sms_info_t *pt_sms_info)
+{
+    UNUSED(h_sms);
+    UNUSED(pt_sms_info);
+
+    return 0;
+}
+
+int qser_sms_addrxmsghandler(QSER_SMS_RxMsgHandlerFunc_t handlerPtr, void* contextPtr)
+{
+    UNUSED(handlerPtr);
+    UNUSED(contextPtr);
+
+    return 0;
+}
+
+int qser_sms_deletefromstorage(sms_client_handle_type h_sms, QSER_sms_storage_info_t *pt_sms_storage)
+{
+    UNUSED(h_sms);
+    UNUSED(pt_sms_storage);
+
+    return 0;
+}
+
+int qser_sms_getsmscenteraddress( sms_client_handle_type h_sms,QSER_sms_service_center_cfg_t *set_sca_cfg)
+{
+    UNUSED(h_sms);
+    UNUSED(set_sca_cfg);
+
+    return 0;
+}
+
+int qser_sms_setsmscenteraddress( sms_client_handle_type h_sms, QSER_sms_service_center_cfg_t *get_sca_cfg)
+{
+    UNUSED(h_sms);
+    UNUSED(get_sca_cfg);
+
+    return 0;
+}
+
diff --git a/mbtk/qser_lib/src/qser_time.c b/mbtk/qser_lib/src/qser_time.c
new file mode 100755
index 0000000..f6d0cd0
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_time.c
@@ -0,0 +1,57 @@
+#include "qser/qser_time.h"
+
+int ntp_sync_time(int enable)
+{
+    UNUSED(enable);
+
+    return 0;
+}
+
+int modem_time_enable(int enable)
+{
+    UNUSED(enable);
+
+    return 0;
+}
+
+int gnss_time_enable(int enable)
+{
+    UNUSED(enable);
+
+    return 0;
+}
+
+int user_set_time(char* date, char* time)
+{
+    UNUSED(date);
+    UNUSED(time);
+
+    return 0;
+}
+
+int lynq_sync_time_from_rtc(void)
+{
+
+    return 0;
+}
+
+int lynq_get_time_src_status (time_src_status_s * time_src)
+{
+    UNUSED(time_src);
+
+    return 0;
+}
+
+int lynq_set_rtc_time(void)
+{
+
+    return 0;
+}
+
+int lynq_get_rtc_time(unsigned long *ulsec)
+{
+    UNUSED(ulsec);
+
+    return 0;
+}
+
diff --git a/mbtk/qser_lib/src/qser_voice_call.c b/mbtk/qser_lib/src/qser_voice_call.c
new file mode 100755
index 0000000..794f8a4
--- /dev/null
+++ b/mbtk/qser_lib/src/qser_voice_call.c
@@ -0,0 +1,75 @@
+
+
+int qser_voice_call_client_init(voice_client_handle_type *ph_voice)
+{
+    UNUSED(ph_voice);
+
+    return 0;
+}
+
+int qser_voice_call_client_deinit(voice_client_handle_type h_voice)
+{
+    UNUSED(h_voice);
+
+    return 0;
+}
+
+int qser_voice_call_start(voice_client_handle_type h_voice,E_QSER_VCALL_ID_T simId,char * phone_number, int *call_id)
+{
+    UNUSED(h_voice);
+    UNUSED(simId);
+    UNUSED(phone_number);
+    UNUSED(call_id);
+
+    return 0;
+}
+
+
+int qser_voice_call_end (voice_client_handle_type h_voice,int call_id)
+{
+    UNUSED(h_voice);
+    UNUSED(call_id);
+
+    return 0;
+}
+
+
+int qser_voice_call_anser(voice_client_handle_type h_voice,int call_id)
+{
+    UNUSED(h_voice);
+    UNUSED(call_id);
+
+    return 0;
+}
+
+int qser_voice_call_addstatehandler(voice_client_handle_type h_voice,QSER_VoiceCall_StateHandlerFunc_t handlerPtr,void* contextPtr)
+{
+    UNUSED(h_voice);
+    UNUSED(handlerPtr);
+    UNUSED(contextPtr);
+
+    return 0;
+}
+
+int qser_voice_call_removestatehandle(voice_client_handle_type h_voice)
+{
+    UNUSED(h_voice);
+
+    return 0;
+}
+
+int qser_voice_set_speech_volume(const int volume)
+{
+    UNUSED(volume);
+
+    return 0;
+}
+
+int qser_voice_get_speech_volume(int *volume)
+{
+    UNUSED(volume);
+
+    return 0;
+}
+
+