上库LYNQ_SLEEP接口以及添加对应测试demo(LPM接口暂时未完成等驱动配合),优化LYNQ_NW模块支持配置飞行模式,配置OOS
Change-Id: Id6e9d9e05d8392348cf567a22c253c3a4e319af5
diff --git a/mbtk/include/mbtk/mbtk_info_api.h b/mbtk/include/mbtk/mbtk_info_api.h
index ac0bfe3..a0f09d3 100755
--- a/mbtk/include/mbtk/mbtk_info_api.h
+++ b/mbtk/include/mbtk/mbtk_info_api.h
@@ -905,7 +905,7 @@
//Get the searching interval of OOS
int mbtk_oos_get(mbtk_info_handle_t* handle, mbtk_oos_info *oos_info);
//Set the searching interval of OOS
-int mbtk_oos_set(mbtk_info_handle_t* handle, char *oos_info);
+int mbtk_oos_set(mbtk_info_handle_t* handle, mbtk_oos_info *oos_info);
//set dtmf character
diff --git a/mbtk/lynq_lib/src/lynq_network.c b/mbtk/lynq_lib/src/lynq_network.c
index 34f215f..7b5eb9f 100755
--- a/mbtk/lynq_lib/src/lynq_network.c
+++ b/mbtk/lynq_lib/src/lynq_network.c
@@ -10,7 +10,6 @@
nw_client_handle_type g_nw_val = -1;
-
typedef struct
{
QSER_NW_RxMsgHandlerFunc_t handlerPtr;
@@ -51,47 +50,32 @@
void lynq_nw_state_change_cb(const void* data, int data_len)
{
+
+/*
uint8 *net_data = NULL;
net_data = (uint8*)data;
- log_hex(">>>data",data,data_len);
- if (net_data == NULL)
+ if(data && data_len > 0)
{
- LOG(">>>NO DATA");
+ if(*net_data == 0)
+ { // CS
+ printf("CS:act=%d, mode=%d\n", *(net_data + 1), *(net_data + 2));
+ }
+ else
+ { // PS
+ printf("PS[%s]:act=%d, mode=%d\n", *(net_data + 3) == 0 ? "GSM/WCDMA" : "LTE", *(net_data + 1), *(net_data + 2));
+ }
}
else
{
- LOG(">>>net_data =[%0x]\n",net_data[2]);
+ printf("NET_CB : NULL");
}
-
-/*
- uint8 data[3];
- data[0] = (uint8)MBTK_NET_CS_STATE;
-
- net_data[0] = *(uint8 *)(data); //MBTK_NET_PS_STATE
- net_data[1] = *(uint8 *)(data + sizeof(uint8)); //mbtk_net_reg_state_enum state Reg State
- net_data[2] = *(uint8 *)(data + sizeof(uint8) + sizeof(uint8)); //act
*/
- if(roaming_pref == 0)
+ if(lynq_func_cb_handle.handlerPtr != NULL)//数据原样输出
{
- mbtk_modem_info_t info;
- if(*net_data == 5)
- {
- info.fun=4;
- }
- else
- info.fun=1;
- info.rst=0;
- mbtk_set_modem_fun(lynq_nw_info_handle, &info);
- }
-
- if(lynq_func_cb_handle.handlerPtr != NULL)
- {
- //lynq_func_cb_handle.handlerPtr(g_nw_val, NW_IND_VOICE_REG_EVENT_IND_FLAG,&(net_data[2]), sizeof(&(net_data[2])), NULL);
- lynq_func_cb_handle.handlerPtr(g_nw_val, NW_IND_DATA_REG_EVENT_IND_FLAG,&(net_data[2]), sizeof(&(net_data[2])), NULL);
- //lynq_func_cb_handle.handlerPtr(g_nw_val, NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG,&(net_data[2]), sizeof(&(net_data[2])), NULL);
+ lynq_func_cb_handle.handlerPtr(g_nw_val, NW_IND_DATA_REG_EVENT_IND_FLAG, data, data_len, NULL);
}
}
@@ -169,7 +153,7 @@
} else {
switch(net_mode)
{
- //只做234G的only下配 MBTK_NET_PREF_GSM_ONLY/MBTK_NET_PREF_UMTS_ONLY/MBTK_NET_PREF_LTE_ONLY
+ //只做234G的下配 MBTK_NET_PREF_GSM_ONLY/MBTK_NET_PREF_GSM_UMTS_UMTS_PREF/MBTK_NET_PREF_GSM_UMTS_LTE_LTE_PREF
case QSER_NW_MODE_GSM:
mbtk_net_pre = MBTK_NET_PREF_GSM_ONLY;
break;
@@ -584,16 +568,142 @@
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);
+ //UNUSED(h_nw);
+ //UNUSED(pt_info);
+ if (h_nw != g_nw_val || g_nw_val == -1)
+ {
+ printf("handle NULL\n");
+ return -1;
+ }
+
+ if (pt_info == NULL)
+ {
+ printf("QSER_NW_OOS_CONFIG_INFO_T NULL\n");
+ return -1;
+ }
+
+ uint32 oosPhase_0, oosPhase_1, oosPhase_2;
+ char tmp_type;
+ mbtk_oos_info oos_info;
+
+ memset(&oos_info, 0x00, sizeof(mbtk_oos_info));
+
+
+ tmp_type = pt_info->type;
+
+ if (tmp_type == QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN)
+ {//如果没有配置对应的值,例如,10,20
+ //oosPhase_2这个位置没有配置,则使用默认值20,既不限制次数的5s进行一次扫描
+ //同理oosPhase_0,oosPhase_1这个位置没有配置,则使用默认值5,10,既限制次数5次的5s,10s进行一次扫描
+ //输入多少配置多少,可以缺省使用默认值
+ if (pt_info->u.full_band_scan_info.t_min < 0 || pt_info->u.full_band_scan_info.t_step < 0 || pt_info->u.full_band_scan_info.t_max < 0)
+ {
+ printf("qser_nw_set_oos_config set time < 0 \n");
+ return -1;
+ }
+ else if ((pt_info->u.full_band_scan_info.t_min > 0 && pt_info->u.full_band_scan_info.t_min <= 255) && pt_info->u.full_band_scan_info.t_step == 0 && pt_info->u.full_band_scan_info.t_max == 0)
+ {
+ oosPhase_0 = pt_info->u.full_band_scan_info.t_min;
+ oos_info.mode = 1;
+ oos_info.oosPhase[0] = oosPhase_0;
+ }
+ else if ((pt_info->u.full_band_scan_info.t_min > 0 && pt_info->u.full_band_scan_info.t_min <= 255) && (pt_info->u.full_band_scan_info.t_step > 0 && pt_info->u.full_band_scan_info.t_step <= 255) && pt_info->u.full_band_scan_info.t_max == 0)
+ {
+ oosPhase_0 = pt_info->u.full_band_scan_info.t_min;
+ oosPhase_1 = pt_info->u.full_band_scan_info.t_step;
+ oos_info.mode = 1;
+ oos_info.oosPhase[0] = oosPhase_0;
+ oos_info.oosPhase[1] = oosPhase_1;
+ }
+ else if ((pt_info->u.full_band_scan_info.t_min > 0 && pt_info->u.full_band_scan_info.t_min <= 255) && (pt_info->u.full_band_scan_info.t_step > 0 && pt_info->u.full_band_scan_info.t_step <= 255) && (pt_info->u.full_band_scan_info.t_max > 0 && pt_info->u.full_band_scan_info.t_max <= 255))
+ {
+ oosPhase_0 = pt_info->u.full_band_scan_info.t_min;
+ oosPhase_1 = pt_info->u.full_band_scan_info.t_step;
+ oosPhase_2 = pt_info->u.full_band_scan_info.t_max;
+ oos_info.mode = 1;
+ oos_info.oosPhase[0] = oosPhase_0;
+ oos_info.oosPhase[1] = oosPhase_1;
+ oos_info.oosPhase[2] = oosPhase_2;
+ }
+ else if (pt_info->u.full_band_scan_info.t_min == 0 && pt_info->u.full_band_scan_info.t_step == 0 && pt_info->u.full_band_scan_info.t_max == 0)
+ {
+ oos_info.mode = 0;
+ }
+ else
+ {
+ printf("qser_nw_set_oos_config set Format err\n");
+ return -1;
+ }
+
+ int err = mbtk_oos_set(lynq_nw_info_handle, &oos_info);
+ if (err != 0)
+ {
+ printf("qser_nw_set_oos_config mbtk_oos_set err \n");
+ return -1;
+ }
+ }
+ else if (tmp_type == QSER_NW_OOS_CFG_TYPE_FAST_SCAN)
+ {
+ printf("Not currently supported\n");
+ return -1;
+ }
+ else
+ {
+ printf("type is error\n");
+ return -1;
+ }
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);
+ //UNUSED(h_nw);
+ //UNUSED(pt_info);
+ if (h_nw != g_nw_val || g_nw_val == -1)
+ {
+ printf("handle NULL\n");
+ return -1;
+ }
+
+ mbtk_oos_info oos_info;
+ uint32 oosPhase_0, oosPhase_1, oosPhase_2;
+ char cmd[100] = {0};
+
+ memset(&oos_info, 0x00, sizeof(mbtk_oos_info));
+
+ int err = mbtk_oos_get(lynq_nw_info_handle, &oos_info);
+ if (err != 0)
+ {
+ printf("qser_nw_get_oos_config mbtk_oos_get err \n");
+ return -1;
+ }
+
+ printf("oos_info.mode =[%d] \n",oos_info.mode);
+ printf("oos_info.1 =[%d] \n",oos_info.oosPhase[0]);
+ printf("oos_info.2 =[%d] \n",oos_info.oosPhase[1]);
+ printf("oos_info.3 =[%d] \n",oos_info.oosPhase[2]);
+
+ if(oos_info.mode == 0)//关闭状态
+ {
+ pt_info->u.full_band_scan_info.t_min = 0;
+ pt_info->u.full_band_scan_info.t_step = 0;
+ pt_info->u.full_band_scan_info.t_max = 0;
+ }
+ else
+ {
+ pt_info->u.full_band_scan_info.t_min = (int)oos_info.oosPhase[0];
+ pt_info->u.full_band_scan_info.t_step = (int)oos_info.oosPhase[1];
+ pt_info->u.full_band_scan_info.t_max = (int)oos_info.oosPhase[2];
+ }
+ pt_info->type = QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN;
+
+
+ if (pt_info == NULL)
+ {
+ printf("qser_nw_get_oos_config pt_info is null \n");
+ return -1;
+ }
return 0;
}
@@ -603,6 +713,7 @@
//UNUSED(h_nw);
//UNUSED(rf_mode);
int ret;
+ mbtk_modem_info_t info;
if (h_nw != g_nw_val || g_nw_val == -1)
{
@@ -616,13 +727,24 @@
return -1;
}
+/*
if (rf_mode == 4)
{
printf("Flight Mode no Support Now\n");
return -1;
}
+*/
+ if (rf_mode != 4 && rf_mode != 0 && rf_mode != 1)
+ {
+ printf("mode is error!\n");
+ return -1;
+ }
- ret = mbtk_radio_state_set(lynq_nw_info_handle, rf_mode);
+ info.fun = rf_mode;
+ info.rst = 0;
+ ret = mbtk_set_modem_fun(lynq_nw_info_handle, &info);
+
+ //ret = mbtk_radio_state_set(lynq_nw_info_handle, rf_mode);
if (ret != 0)
{
LOGE("mbtk_radio_state_set fail.");
@@ -655,7 +777,9 @@
return -1;
}
- ret = mbtk_radio_state_get(lynq_nw_info_handle, &tmp_rf);
+ ret = mbtk_get_modem_fun(lynq_nw_info_handle, &tmp_rf);
+
+ //ret = mbtk_radio_state_get(lynq_nw_info_handle, &tmp_rf);
if (ret != 0)
{
LOGE("mbtk_radio_state_get fail.");
diff --git a/mbtk/lynq_lib/src/lynq_sleep.c b/mbtk/lynq_lib/src/lynq_sleep.c
index 2b1ef31..b7592bd 100755
--- a/mbtk/lynq_lib/src/lynq_sleep.c
+++ b/mbtk/lynq_lib/src/lynq_sleep.c
@@ -6,6 +6,9 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
+#include <pthread.h>
+#include <string.h>
+
#include "mbtk_type.h"
#include "mbtk_log.h"
@@ -25,6 +28,16 @@
static bool sms_off = FALSE;
static bool data_off = FALSE;
+pthread_t lpm_t;
+static int edge_t = 0;
+
+typedef struct{
+ qser_lpm_wakeupin_data_t wakeupin;
+ qser_lpm_wakeupout_data_t wakeupout;
+}lynq_wake_t;
+
+static lynq_wake_t lpm_init;
+
static int powerrind_get()
{
@@ -57,7 +70,6 @@
static mbtk_info_handle_t* whitelist_info_handle = NULL;
-
int qser_autosuspend_enable(char enable)
{
//UNUSED(enable);
@@ -217,15 +229,46 @@
return 0;
}
+void *threadFunction(void *arg)
+{
+ int pinValue;
+
+
+ edge_t = pinValue;
+ return NULL;
+}
int qser_lpm_init(qser_lpm_Handler_t qser_lpm_handler, qser_pm_cfg_t *qser_lpm_cfg)
{
- UNUSED(qser_lpm_handler);
- UNUSED(qser_lpm_cfg);
+ //UNUSED(qser_lpm_handler);
+ //UNUSED(qser_lpm_cfg);
- //pthread_mutex_init();
+ lpm_init.wakeupin.wakeupin_pin = qser_lpm_cfg->wakeupin.wakeupin_pin;
+ printf(">>pin = %d",lpm_init.wakeupin.wakeupin_pin);
+ lpm_init.wakeupin.wakeupin_edge = qser_lpm_cfg->wakeupin.wakeupin_edge;
+ printf(">>edge = %d",lpm_init.wakeupin.wakeupin_edge);
+ edge_t = qser_lpm_cfg->wakeupin.wakeupin_edge;//保留原始状态值 0 or 1
+ //pthread_attr_t thread_attr;
+ //pthread_attr_init(&thread_attr);
+ /*
+ if(pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_DETACHED))
+ {
+ printf("pthread_attr_setdetachstate() fail\n");
+ return -1;
+ }
+ */
+ //if(pthread_create(&lpm_t, &thread_attr, threadFunction, NULL))
+ if(pthread_create(&lpm_t, NULL, threadFunction, NULL))
+ {
+ printf("qser_lpm_init can't create thread\n");
+ return -1;
+ }
+ //pthread_attr_destroy(&thread_attr);
+
+ if (edge_t != qser_lpm_cfg->wakeupin.wakeupin_edge)//说明有变化,并且和原来的值不相同
+ qser_lpm_handler(edge_t);
return 0;
}
@@ -233,6 +276,18 @@
int qser_lpm_deinit(void)
{
+ if(pthread_cancel(lpm_t) != 0)
+ {
+ printf("qser_lpm_deinit pthread_cancel err\n");
+ return -1;
+ }
+
+ if(pthread_join(lpm_t,NULL) != 0)
+ {
+ printf("qser_lpm_deinit pthread_join err\n");
+ return -1;
+ }
+
return 0;
}
@@ -270,7 +325,8 @@
if (len != 4)
{
- printf("whitelish num error.\n");
+ printf("whitelish num error num=[%d]\n",len);
+ return -1;
}
tmp = atoi(whitelish);
@@ -362,7 +418,7 @@
int qser_whitelist_get(char* whitelish)
{
//UNUSED(whitelish);
- char *list = NULL;
+ char list[10]={0};
int call_t, nw_t, data_t, sms_t;
if (call_Off == TRUE)
@@ -385,9 +441,9 @@
else
sms_t = 0;
- sprintf(list,"%d%d%d%d\n",call_t, nw_t, data_t, sms_t);
- printf(">>>whitelist: %s\n",list);
- whitelish = list;
+ sprintf(list, "%d%d%d%d", call_t, nw_t, data_t, sms_t);
+ //printf(">>>whitelist: %s\n",list);
+ strncpy(whitelish, list, strlen(list));
if(whitelist_info_handle != NULL)
{
diff --git a/mbtk/mbtk_lib/inc/mbtk_info.h b/mbtk/mbtk_lib/inc/mbtk_info.h
index b562cb2..1f035be 100755
--- a/mbtk/mbtk_lib/inc/mbtk_info.h
+++ b/mbtk/mbtk_lib/inc/mbtk_info.h
@@ -216,14 +216,19 @@
MBTK_INFO_ID_PB_END,
- //wakeup
+ //wakeup
+ MBTK_INFO_ID_WAKEUP_STA_BEGIN = 6000,
MBTK_INFO_ID_WAKEUP_STA_REQ,
MBTK_INFO_ID_WAKEUP_STA_RSP,
+ MBTK_INFO_ID_WAKEUP_STA_END,
+
//oos(out of service))
+ MBTK_INFO_ID_OOS_STA_BEGIN = 7000,
MBTK_INFO_ID_OOS_STA_REQ,
MBTK_INFO_ID_OOS_STA_RSP,
+ MBTK_INFO_ID_OOS_STA_END,
// IND Information
MBTK_INFO_ID_IND_BEGIN = 10000,
diff --git a/mbtk/mbtk_lib/src/mbtk_info.c b/mbtk/mbtk_lib/src/mbtk_info.c
index 7ff9345..cdef2b2 100755
--- a/mbtk/mbtk_lib/src/mbtk_info.c
+++ b/mbtk/mbtk_lib/src/mbtk_info.c
@@ -430,6 +430,10 @@
info_id == MBTK_INFO_ID_SMS_END ||
info_id == MBTK_INFO_ID_PB_BEGIN ||
info_id == MBTK_INFO_ID_PB_END ||
+ info_id == MBTK_INFO_ID_WAKEUP_STA_BEGIN ||
+ info_id == MBTK_INFO_ID_WAKEUP_STA_END ||
+ info_id == MBTK_INFO_ID_OOS_STA_BEGIN ||
+ info_id == MBTK_INFO_ID_OOS_STA_END ||
info_id == MBTK_INFO_ID_REQ_UNKNOWN)
{
return MBTK_INFO_TYPE_UNKNOWN;
diff --git a/mbtk/mbtk_lib/src/mbtk_info_api.c b/mbtk/mbtk_lib/src/mbtk_info_api.c
index 1c54ecb..cae9d27 100755
--- a/mbtk/mbtk_lib/src/mbtk_info_api.c
+++ b/mbtk/mbtk_lib/src/mbtk_info_api.c
@@ -2143,17 +2143,15 @@
/*
* oos set .
*/
-int mbtk_oos_set(mbtk_info_handle_t* handle, char *oos_info)
+int mbtk_oos_set(mbtk_info_handle_t* handle, mbtk_oos_info *oos_info)
{
if(handle == NULL)
{
LOGE("ARG error.");
return -1;
}
- if(str_empty(oos_info))
- return -1;
- return info_item_process(handle, MBTK_INFO_ID_OOS_STA_REQ, oos_info, strlen(oos_info), NULL) ? handle->info_err : 0;
+ return info_item_process(handle, MBTK_INFO_ID_OOS_STA_REQ, oos_info, sizeof(mbtk_oos_info), NULL) ? handle->info_err : 0;
}
diff --git a/mbtk/mbtk_ril/src/mbtk_info_server.c b/mbtk/mbtk_ril/src/mbtk_info_server.c
index f731309..861c64b 100755
--- a/mbtk/mbtk_ril/src/mbtk_info_server.c
+++ b/mbtk/mbtk_ril/src/mbtk_info_server.c
@@ -75,7 +75,7 @@
if (state >= 0 && state < 32)
{
sprintf(cmd, "AT*POWERIND=%d", state);
- LOG("Set the powerind command is = %s.\n", cmd);
+ LOG("Set the powerind command is = [%s]\n", cmd);
}
int err = at_send_command(cmd, &response);
if (err < 0 || response->success == 0){
@@ -89,36 +89,56 @@
}
/*
+AT+OOSPP=1
+or
+AT+OOSPP=0
+or
AT+OOSPP=1,20,30,40 //AtOospp()
param1:mode
param2:oosPhasePeriod[0] //5 times, 5s by default;
- param3:oosPhasePeriod[1] //5 times, 5s by default;
- param4:oosPhasePeriod[2] //unlimited, 5s by default;
+ param3:oosPhasePeriod[1] //5 times, 10s by default;
+ param4:oosPhasePeriod[2] //unlimited, 20s by default;
BTW
1, 如果只输入mode=1,其余参数不设置,相当于这个功能打开,时间间隔是这个功能的默认值。
2, 如果当mode=1加上其余设置参数后,功能打开,时间间隔是本次设置的值;
-3,如果再设置mode=0,相当于这个功能关闭,是走默认的搜网间隔。
-
+3,如果再设置mode=0,相当于这个功能关闭,是走平台自己另一套的搜网设置。
+平台本身是有一套间隔搜网,也有历史频点优先处理的逻辑(不需要我们进行处理),
+提供给我们的AT+OOSPP指令是让我们可以自定义搜网间隔
*/
-static int req_oos_set(char* state, int *cme_err)
+static int req_oos_set(mbtk_oos_info* state, int *cme_err)
{
ATResponse *response = NULL;
char cmd[100] = {0};
- int mode;
- mode = atoi(state);
- if (mode == 1 || mode == 0)//只有一个值0/1
+ if ((state->mode == 1 && state->oosPhase[0] == 0 && state->oosPhase[1] == 0 && state->oosPhase[2] == 0) \
+ || state->mode == 0)
{
- sprintf(cmd, "AT+OOSPP=%d", mode);
+ sprintf(cmd, "AT+OOSPP=%d", state->mode);//只有一个值0/1
}
else
{
- sprintf(cmd, "AT+OOSPP=%s", state);
+ if ((state->oosPhase[0] != 0) && (state->oosPhase[1] != 0) && (state->oosPhase[2] != 0))
+ {
+ sprintf(cmd, "AT+OOSPP=%d,%d,%d,%d", state->mode, state->oosPhase[0], state->oosPhase[1], state->oosPhase[2]);
+ }
+ else if ((state->oosPhase[0] != 0) && (state->oosPhase[1] != 0) && (state->oosPhase[2] == 0))
+ {
+ sprintf(cmd, "AT+OOSPP=%d,%d,%d", state->mode, state->oosPhase[0], state->oosPhase[1]);
+ }
+ else if ((state->oosPhase[0] != 0) && (state->oosPhase[1] == 0) && (state->oosPhase[2] == 0))
+ {
+ sprintf(cmd, "AT+OOSPP=%d,%d", state->mode, state->oosPhase[0]);
+ }
+ else
+ {
+ LOG("AT+OOSPP SET ERR");
+ goto exit;
+ }
}
- LOG("Set the oos command is = %s.\n", cmd);
+ LOG("Set the oos command is = [%s]\n", cmd);
int err = at_send_command(cmd, &response);
if (err < 0 || response->success == 0){
*cme_err = at_get_cme_error(response);
@@ -133,8 +153,8 @@
/*
AT+OOSPP?
-开:
-+OOSPP:5,5,5
+开(默认值):
++OOSPP:5,10,20
关:
+OOSPP:0
*/
@@ -142,7 +162,7 @@
{
ATResponse *response = NULL;
- int err = at_send_command_singleline("AT+CSCA?", "+OOSPP:", &response);
+ int err = at_send_command_singleline("AT+OOSPP?", "+OOSPP:", &response);
if (err < 0 || response->success == 0 || !response->p_intermediates){
*cme_err = at_get_cme_error(response);
@@ -152,42 +172,48 @@
char *line = response->p_intermediates->line;
char *tmp_str = NULL;
+ err = at_tok_start(&line);//+OOSPP:10,15,20,过滤+OOSPP:
+ if (err < 0)
+ {
+ goto exit;
+ }
+
+ //LOG("req_oos_get =[%s]",line);
+
err = at_tok_nextstr(&line, &tmp_str);
if (err < 0)
{
goto exit;
}
- LOG("[xiaorui] >>> req_oos_get =[%s]",tmp_str);
-
int mode = atoi(tmp_str);
if (mode == 0)//关闭状态
{
- req->mode = (uint8)mode;
+ req->mode = mode;
}
else//开状态
{
req->mode = 1;
-
- req->oosPhase[0] = (uint8)tmp_str;
+ //LOG("tmp_str =[%s]",tmp_str);
+ req->oosPhase[0] = atoi(tmp_str);
err = at_tok_nextstr(&line, &tmp_str);
if (err < 0)
{
goto exit;
}
- req->oosPhase[1] = (uint8)tmp_str;
+ //LOG("tmp_str =[%s]",tmp_str);
+ req->oosPhase[1] = atoi(tmp_str);
err = at_tok_nextstr(&line, &tmp_str);
if (err < 0)
{
goto exit;
}
- req->oosPhase[2] = (uint8)tmp_str;
+ //LOG("tmp_str =[%s]",tmp_str);
+ req->oosPhase[2] = atoi(tmp_str);
}
- memcpy(req, tmp_str, strlen(tmp_str));
-
exit:
at_response_free(response);
return err;
@@ -5248,17 +5274,22 @@
err = MBTK_INFO_ERR_UNKNOWN;
}
LOG("Get SMS OOS fail.");
- printf("Get OOS fail\n");
}
else
{
- printf("Get OOS suscess\n");
pack_rsp_send(cli_info->fd, MBTK_INFO_ID_OOS_STA_RSP, &oos_t, sizeof(mbtk_oos_info));
}
}
else // Set OOS
{
- char* state = pack->data;
+ mbtk_oos_info *state = (mbtk_oos_info *)pack->data;
+ if(pack->data_len != sizeof(mbtk_oos_info))
+ {
+ err = MBTK_INFO_ERR_REQ_PARAMETER;
+ LOG("Set oos error.");
+ break;
+ }
+
if(req_oos_set(state, &cme_err) || cme_err != MBTK_INFO_ERR_CME_NON)
{
if(cme_err != MBTK_INFO_ERR_CME_NON) {
diff --git a/mbtk/test/asr1806/lynq_nw_test.c b/mbtk/test/asr1806/lynq_nw_test.c
index 62c231d..55b5206 100755
--- a/mbtk/test/asr1806/lynq_nw_test.c
+++ b/mbtk/test/asr1806/lynq_nw_test.c
@@ -18,179 +18,26 @@
u_int32_t ind_msg_len,
void *contextPtr)
{
- switch(ind_flag) {
- case NW_IND_VOICE_REG_EVENT_IND_FLAG:
- {
- printf(">>>>>NW_IND_VOICE_REG_EVENT_IND_FLAG!!! \n");
- QSER_NW_VOICE_REG_EVENT_IND_T *ind = (QSER_NW_VOICE_REG_EVENT_IND_T*)ind_msg_buf;
- printf("Recv event indication : VOICE REG EVENT\n");
-
- if(ind==NULL)
- {
- printf("ind is NULL\n");
- break;
- }
- /*
- if(ind->registration_valid)
- {
- printf("voice_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
- ind->registration.tech_domain,
- ind->registration.radio_tech,
- ind->registration.roaming,
- ind->registration.registration_state);
- }
- */
- if(ind->registration_details_3gpp_valid)
- {
- printf("voice_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
- ind->registration_details_3gpp.tech_domain,
- ind->registration_details_3gpp.radio_tech,
- ind->registration_details_3gpp.mcc,
- ind->registration_details_3gpp.mnc,
- ind->registration_details_3gpp.roaming,
- ind->registration_details_3gpp.forbidden,
- ind->registration_details_3gpp.cid,
- ind->registration_details_3gpp.lac,
- ind->registration_details_3gpp.psc,
- ind->registration_details_3gpp.tac);
- }
- /*
- if(ind->registration_details_3gpp2_valid)
- {
- printf("voice_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, sid=%d, nid=%d, bsid=%d\n",
- ind->registration_details_3gpp2.tech_domain,
- ind->registration_details_3gpp2.radio_tech,
- ind->registration_details_3gpp2.mcc,
- ind->registration_details_3gpp2.mnc,
- ind->registration_details_3gpp2.roaming,
- ind->registration_details_3gpp2.forbidden,
- ind->registration_details_3gpp2.sid,
- ind->registration_details_3gpp2.nid,
- ind->registration_details_3gpp2.bsid);
- }
- */
- break;
- }
- case NW_IND_DATA_REG_EVENT_IND_FLAG:
- {
- printf(">>>>>NW_IND_DATA_REG_EVENT_IND_FLAG!!! \n");
- QSER_NW_DATA_REG_EVENT_IND_T *ind = (QSER_NW_DATA_REG_EVENT_IND_T*)ind_msg_buf;
+ uint8 *net_data = NULL;
- printf("Recv event indication : DATA REG EVENT\n");
-
- if(ind==NULL)
- {
- printf("ind is NULL\n");
- break;
- }
- /*
- if(ind->registration_valid)
- {
- printf("data_registration: \ntech_domain=%s, radio_tech=%s, roaming=%d, registration_state=%d\n",
- ind->registration.tech_domain,
- ind->registration.radio_tech,
- ind->registration.roaming,
- ind->registration.registration_state);
- }
- */
- if(ind->registration_details_3gpp_valid)
- {
- printf("data_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
- ind->registration_details_3gpp.tech_domain,
- ind->registration_details_3gpp.radio_tech,
- ind->registration_details_3gpp.mcc,
- ind->registration_details_3gpp.mnc,
- ind->registration_details_3gpp.roaming,
- ind->registration_details_3gpp.forbidden,
- ind->registration_details_3gpp.cid,
- ind->registration_details_3gpp.lac,
- ind->registration_details_3gpp.psc,
- ind->registration_details_3gpp.tac);
- }
- /*
- if(ind->registration_details_3gpp2_valid)
- {
- printf("data_registration_details_3gpp2: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, prl=%d, css=%d, sid=%d, nid=%d, bsid=%d\n",
- ind->registration_details_3gpp2.tech_domain,
- ind->registration_details_3gpp2.radio_tech,
- ind->registration_details_3gpp2.mcc,
- ind->registration_details_3gpp2.mnc,
- ind->registration_details_3gpp2.roaming,
- ind->registration_details_3gpp2.forbidden,
- ind->registration_details_3gpp2.inPRL,
- ind->registration_details_3gpp2.css,
- ind->registration_details_3gpp2.sid,
- ind->registration_details_3gpp2.nid,
- ind->registration_details_3gpp2.bsid);
- }
- */
- break;
- }
- case NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG:
- {
- printf(">>>>>NW_IND_SIGNAL_STRENGTH_EVENT_IND_FLAG!!! \n");
- QSER_NW_SINGNAL_EVENT_IND_T *ind = (QSER_NW_SINGNAL_EVENT_IND_T*)ind_msg_buf;
+ net_data = (uint8*)ind_msg_buf;
- printf("Recv event indication : SIGNAL STRENGTH EVENT\n");
-
- if(ind==NULL)
- {
- printf("ind is NULL\n");
- break;
- }
-
- if(ind->gsm_sig_info_valid)
- {
- printf("gsm_sig_info: rssi=%d\n",
- ind->gsm_sig_info.rssi);
- }
-
- if(ind->wcdma_sig_info_valid)
- {
- printf("wcdma_sig_info: rssi=%d, ecio=%d\n",
- ind->wcdma_sig_info.rssi,
- ind->wcdma_sig_info.ecio);
- }
- /*
- if(ind->tdscdma_sig_info_valid)
- {
- printf("tdscdma_sig_info: rssi=%d, rscp=%d, ecio=%d, sinr=%d\n",
- ind->tdscdma_sig_info.rssi,
- ind->tdscdma_sig_info.rscp,
- ind->tdscdma_sig_info.ecio,
- ind->tdscdma_sig_info.sinr);
- }
- */
- if(ind->lte_sig_info_valid)
- {
- printf("lte_sig_info: rssi=%d, rsrq=%d, rsrp=%d, snr=%d\n",
- ind->lte_sig_info.rssi,
- ind->lte_sig_info.rsrq,
- ind->lte_sig_info.rsrp,
- ind->lte_sig_info.snr);
- }
- /*
- if(ind->cdma_sig_info_valid)
- {
- printf("cdma_sig_info: rssi=%d, ecio=%d\n",
- ind->cdma_sig_info.rssi,
- ind->cdma_sig_info.ecio);
- }
- if(ind->hdr_sig_info_valid)
- {
- printf("hdr_sig_info: rssi=%d, ecio=%d, sinr=%d, io=%d\n",
- ind->hdr_sig_info.rssi,
- ind->hdr_sig_info.ecio,
- ind->hdr_sig_info.sinr,
- ind->hdr_sig_info.io);
- }
- */
- break;
- }
- default:
- printf(">>>>>NO DATA!!! \n");
- break;
+ if(ind_msg_buf && ind_msg_len > 0)//无处理原始数据传输过来
+ {
+ if(*net_data == 0)
+ { // CS
+ printf("CS:act=%d, mode=%d\n", *(net_data + 1), *(net_data + 2));
+ }
+ else
+ { // PS
+ printf("PS[%s]:act=%d, mode=%d\n", *(net_data + 3) == 0 ? "GSM/WCDMA" : "LTE", *(net_data + 1), *(net_data + 2));
+ }
}
+ else
+ {
+ printf("NET_CB : NULL");
+ }
+
}
@@ -245,6 +92,7 @@
"\t16:LTE \n"
"\t32:TDSCDMA \n"
);
+ memset(operator,0x00, sizeof(operator));
fgets(operator, sizeof(operator), stdin);
fflush(stdin);
opt = atoi(operator);
@@ -297,9 +145,9 @@
} else {
if(reg.voice_registration_details_3gpp_valid)
{
- printf("voice_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
- tech_domain[reg.voice_registration_details_3gpp.tech_domain],
- radio_tech[reg.voice_registration_details_3gpp.radio_tech],
+ printf("voice_registration_details_3gpp: \ntech_domain=%d, radio_tech=%d, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
+ reg.voice_registration_details_3gpp.tech_domain,
+ reg.voice_registration_details_3gpp.radio_tech,
reg.voice_registration_details_3gpp.mcc,
reg.voice_registration_details_3gpp.mnc,
reg.voice_registration_details_3gpp.roaming,
@@ -311,9 +159,9 @@
}
if(reg.data_registration_details_3gpp_valid)
{
- printf("data_registration_details_3gpp: \ntech_domain=%s, radio_tech=%s, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
- tech_domain[reg.data_registration_details_3gpp.tech_domain],
- radio_tech[reg.data_registration_details_3gpp.radio_tech],
+ printf("data_registration_details_3gpp: \ntech_domain=%d, radio_tech=%d, mcc=%s, mnc=%s, roaming=%d, forbidden=%d, cid=0x%X, lac=%d, psc=%d, tac=%d\n",
+ reg.data_registration_details_3gpp.tech_domain,
+ reg.data_registration_details_3gpp.radio_tech,
reg.data_registration_details_3gpp.mcc,
reg.data_registration_details_3gpp.mnc,
reg.data_registration_details_3gpp.roaming,
@@ -348,24 +196,49 @@
}
case 7:
{
- qser_nw_set_oos_config(NULL, NULL);
+ QSER_NW_OOS_CONFIG_INFO_T pt_info_s;
+ memset(&pt_info_s, 0x00, sizeof(QSER_NW_OOS_CONFIG_INFO_T));
+ /*取值范围0-255
+ phase 1 5次 次数无法更改,这五次都是以10秒为一次的间隔搜网
+ phase 2 5次 次数无法更改,这五次都是以15秒为一次的间隔搜网
+ phase 3 不限制次数的秒数设置,第三阶段不限制次数以20秒为一次的间隔搜网
+ 如果要关闭OOS配置,则把min step max 全部配置为0即可
+ */
+ pt_info_s.type = QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN;
+ //if (pt_info.type == QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN)
+ {
+ pt_info_s.u.full_band_scan_info.t_min = 10;
+ pt_info_s.u.full_band_scan_info.t_step = 15;
+ pt_info_s.u.full_band_scan_info.t_num = 0;//可以不配置,并没有使用
+ pt_info_s.u.full_band_scan_info.t_max = 20;
+ }
+ printf("set OOS %d %d %d \n",pt_info_s.u.full_band_scan_info.t_min, pt_info_s.u.full_band_scan_info.t_step, pt_info_s.u.full_band_scan_info.t_max);
+ qser_nw_set_oos_config(handle, &pt_info_s);
break;
}
case 8:
{
- qser_nw_get_oos_config(NULL, NULL);
+ QSER_NW_OOS_CONFIG_INFO_T pt_info_g;
+ qser_nw_get_oos_config(handle, &pt_info_g);
+ if (pt_info_g.type == QSER_NW_OOS_CFG_TYPE_FULL_BAND_SCAN)
+ printf("TYPE: %d min: %d setp: %d max: %d\n", pt_info_g.type, pt_info_g.u.full_band_scan_info.t_min, pt_info_g.u.full_band_scan_info.t_step, pt_info_g.u.full_band_scan_info.t_max);
+ /*
+ else if (pt_info.type == QSER_NW_OOS_CFG_TYPE_FAST_SCAN)
+ printf("TYPE: %d enable: %d time_interval: %d\n", pt_info.type, pt_info.u.fast_can_info.enable, pt_info.u.fast_can_info.enable, pt_info.u.fast_can_info.time_interval);
+ */
+ else
+ printf("type not supported \n");
break;
}
case 9:
{
- printf("please input 0 or 1: \n");
+ printf("please input 0 or 1 or 4: \n");
+ memset(operator,0x00, sizeof(operator));
fgets(operator, sizeof(operator), stdin);
fflush(stdin);
opt = atoi(operator);
- if (opt == 0 || opt == 1)
- qser_nw_set_rf_mode(handle, opt);
- else
- printf(">>>Please re-enter\n");
+ printf("opt: [%d]\n",opt);
+ qser_nw_set_rf_mode(handle, opt);
break;
}
case 10:
diff --git a/mbtk/test/asr1806/lynq_sleep_test.c b/mbtk/test/asr1806/lynq_sleep_test.c
index c390fe1..d88a65b 100755
--- a/mbtk/test/asr1806/lynq_sleep_test.c
+++ b/mbtk/test/asr1806/lynq_sleep_test.c
@@ -32,8 +32,8 @@
"\t5 wakelock destroy\n"
"\t6 whitelist set\n"
"\t7 whitelist get\n"
- "\t6 lpm init\n"
- "\t7 lpm destroy\n"
+ "\t8 lpm init\n"
+ "\t9 lpm destroy\n"
"operator: >> \n");
fgets(operator, sizeof(operator), stdin);
@@ -57,47 +57,63 @@
qser_autosuspend_enable(en);
}
else
- printf(">>>>>Input 0 or 1 error<<<<<\n");
+ printf(">>>>>re Input 0 or 1 error<<<<<\n");
break;
}
case 2:
{
+ printf(">>>>>Input name<<<<<\n");
char *t_name = NULL;
- char t_operator[128];
int len_name;
- memset(t_operator, 0x00, sizeof(t_operator));
- fgets(t_operator, sizeof(t_operator), stdin);
+ memset(operator, 0x00, sizeof(operator));
+ fgets(operator, sizeof(operator), stdin);
fflush(stdin);
- len_name = strlen(t_operator);
- strncpy(t_name, t_operator, len_name);
+ len_name = strlen(operator);
+ strncpy(t_name, operator, len_name);
- fd_t = qser_wakelock_create(t_operator, len_name);
+ fd_t = qser_wakelock_create(t_name, len_name);
+ printf(">>>>>Output ID NUM =[%d]<<<<<\n",fd_t);
break;
}
case 3:
+ printf(">>>>>Input ID NUM<<<<<\n");
+ fgets(operator, sizeof(operator), stdin);
+ fflush(stdin);
+ fd_t = atoi(operator);
qser_wakelock_lock(fd_t);
break;
case 4:
+ printf(">>>>>Input ID NUM<<<<<\n");
+ memset(operator, 0x00, sizeof(operator));
+ fgets(operator, sizeof(operator), stdin);
+ fflush(stdin);
+ fd_t = atoi(operator);
qser_wakelock_unlock(fd_t);
break;
case 5:
+ printf(">>>>>Input ID NUM<<<<<\n");
+ memset(operator, 0x00, sizeof(operator));
+ fgets(operator, sizeof(operator), stdin);
+ fflush(stdin);
+ fd_t = atoi(operator);
qser_wakelock_destroy(fd_t);
break;
case 6:
{
- char* whitelish = NULL;
- memset(operator, 0x00, sizeof(operator));
- fgets(operator, sizeof(operator), stdin);
- fflush(stdin);
- strcpy(whitelish, operator);
+ printf(">>>>>Input whitelish NUM 4位(eg:1010) <<<<<\n");
+ char* whitelish = "1010";
+
+ printf(">>>server list = [%s]\n", whitelish);
qser_whitelist_set(whitelish);
}
break;
case 7:
{
- char* whitelish = NULL;
- qser_whitelist_get(whitelish);
- printf(">>>server list = %s\n", whitelish);
+ char whitelish_get[10]={0};
+ printf(">>>>>get\n");
+
+ qser_whitelist_get(whitelish_get);
+ printf(">>>server list = %s\n", whitelish_get);
}
break;
case 8:
@@ -107,6 +123,7 @@
qser_lpm_cfg->wakeupin.wakeupin_pin = 50;
qser_lpm_cfg->wakeupin.wakeupin_edge = E_QL_LPM_FALLING;
qser_lpm_init(qser_lpm_handler, qser_lpm_cfg);
+ free(qser_lpm_cfg);
}
break;
case 9: