From: SnickerSun Date: Tue, 7 May 2024 02:11:21 +0000 (+0800) Subject: 开启Cat1后5秒更新一次信号状态 X-Git-Tag: release_V1.2.70_20241020_135402~1113^2~18^2~1 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=f2ccb37f05ae3f9e7cd46b03ffd30c7b4dc5661e;p=mirrors%2FFD230.git 开启Cat1后5秒更新一次信号状态 升级py脚本V6支持连接网络种类反馈 添加cat1持续唤醒接口,保证下载时的速度 --- diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.cpp b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.cpp index 24b023451..addab515d 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.cpp +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.cpp @@ -107,11 +107,20 @@ void cat1_ring_isr_callback(pin_t pin, uintptr_t param) do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_ADD_CAT1VOTE,NULL,0); } +static uint8_t cat1_keepon_wakeup = 0; +void uapi_cat1_keep_wakeup(uint8_t keep_wakeup) +{ + cat1_keepon_wakeup = keep_wakeup; + uapi_cat1_wakeup_cat1(cat1_keepon_wakeup); +} void uapi_cat1_wakeup_cat1(uint8_t wakeup) { - - - if( wakeup == 1) + uint8_t wake=wakeup; + if (cat1_keepon_wakeup == 1) + { + wake = 1; + } + if( wake == 1) { WEARABLE_LOGW(WEARABLE_LOG_MODULE_MAIN_SERVICE,"wakeup cat1\n"); uapi_gpio_set_dir(S_AGPIO_L30, GPIO_DIRECTION_OUTPUT); diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.h b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.h index fdba58ea0..f72fba726 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.h +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.h @@ -18,6 +18,7 @@ void uapi_cat1_stop_volte_voice(void); void uapi_cat1_remove_cat1_vote(void); void uapi_cat1_add_cat1_vote(void); void uapi_cat1_wakeup_cat1(uint8_t wakeup); +void uapi_cat1_keep_wakeup(uint8_t keep_wakeup); bool uapi_cat1_get_power_stat(void); void uapi_cat1_suspend(void); diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp index 2457ecbc3..579783a6c 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp @@ -108,6 +108,14 @@ static uint8_t g_time_synced = 0; #define MAX_TIME_SYNC_RETRY_TIME 5 static uint8_t g_time_sync_retry_time = 0; + +#define PY_SRV_VER_4 "PY_SRV_V4" +#define PY_SRV_VER_5 "PY_SRV_V5" +#define PY_SRV_VER_6 "PY_SRV_V6" + +static uint8_t g_py_ver = 4; + + static struct tcp_msg_t *unpack_tlv_format(char *rx_buffer, int length) { char temp[8]={0}; @@ -217,8 +225,9 @@ static int decodeVersion(char* msg) { p = MSG_SPLIT_CHAR2; } - char* s = NULL; - for (s = strtok(buf,p); s!=NULL;s=strtok(NULL,p)) + char *pchStrTmpIn = nullptr; + char *s = nullptr; + for (s = strtok_r(buf,p,&pchStrTmpIn); s!=NULL;s=strtok_r(NULL,p,&pchStrTmpIn)) { if((strncmp(s,"pyVer",5) == 0) && (strlen(s)> 5)) { @@ -230,6 +239,11 @@ static int decodeVersion(char* msg) memset(runtime->cat1_runtime.pyVer,0,sizeof(runtime->cat1_runtime.pyVer)); strcpy_s(runtime->cat1_runtime.pyVer,sizeof(runtime->cat1_runtime.pyVer),ptmp); } + if (strncmp(ptmp,"PY_SRV_V",8)==0 && strlen(ptmp)>8) + { + int pyver = atoi(ptmp+8); + if ( pyver > 0 ) g_py_ver = pyver; + } }else if ((strncmp(s,"modemVer",8) == 0) && (strlen(s)> 8)) { @@ -290,13 +304,22 @@ static int decodeNetStat(char* msg) return -2; } char* p = MSG_SPLIT_CHAR; - if (strstr(buf,MSG_SPLIT_CHAR2) != NULL) + switch(g_py_ver) { - p = MSG_SPLIT_CHAR2; + case 5: + case 6: + p = MSG_SPLIT_CHAR2; + break; + case 4: + default: + break; } + char netstat[20]="0,10,0,10"; + + char *pchStrTmpIn = NULL; char* s = NULL; char* ppbuf = NULL; - for (s = strtok(buf,p); s!=NULL;s=strtok(NULL,p)) + for (s = strtok_r(buf,p,&pchStrTmpIn); s!=NULL;s=strtok_r(NULL,p,&pchStrTmpIn)) { // PRINT("%s\r\n",s ); if(strncmp(s,"imei:",5) == 0) @@ -350,8 +373,49 @@ static int decodeNetStat(char* msg) } continue; } + + if(g_py_ver == 6 && strncmp(s,"net:",4) == 0) + { + ppbuf = s+4; + /** + * 0,10,0,10 + * voice_stat 语音网络状态:1,注冊本地网络,5注册漫游网络,其他不通, + * voice_rat, 语音网络类型: 0 GSM ;1 GSM COMPACT ;2 UTRAN ;3 GSM wEGPRS ; 4 UTRAN wHSDPA ;5 UTRAN wHSUPA ; + * 6 UTRAN wHSDPA HSUPA ;7 E_UTRAN ;8 UTRAN HSPAP ;9 E_UTRAN_CA ;10 NONE + * data_stat, 数据网络状态 + * data_rat 数据网络类型 + * + */ + memset(netstat,0,sizeof(netstat)); + strcpy_s(netstat,sizeof(netstat),ppbuf); + } } + + + if(g_py_ver == 6 ) + { + int idx=0; + pchStrTmpIn=NULL; + for (s = strtok_r(netstat,",",&pchStrTmpIn); s!=NULL;s=strtok_r(NULL,",",&pchStrTmpIn)) + { + switch(idx) + { + case 2: + runtime->cat1_runtime.network_on = atoi(s) ; + break; + case 3: + runtime->cat1_runtime.cat1_network_type = atoi(s); + break; + case 0: + case 1: + default: + break; + } + idx++; + } + } + if (update > 0) return 0; else @@ -552,21 +616,26 @@ static void time_sync_func(void) { PRINT("time_sync_func\n"); - cat1_gettime(); + cat1_getsignal(); if(osTimerIsRunning(g_timer_time_sync)==1 && g_time_synced == 1 ) { - osStatus_t ret = osTimerStop(g_timer_time_sync); - WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_time_synced == 1 stop timer , ret %d\n",ret); + // osStatus_t ret = osTimerStop(g_timer_time_sync); + // WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_time_synced == 1 stop timer , ret %d\n",ret); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_time_synced == 1 stop timer \n"); + return ; }else{ g_time_sync_retry_time ++; } if( g_time_sync_retry_time >= MAX_TIME_SYNC_RETRY_TIME) { - osStatus_t ret = osTimerStop(g_timer_time_sync); - WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_time_sync_retry_time >= %d stop timer ,ret %d\n",MAX_TIME_SYNC_RETRY_TIME,ret); - + // osStatus_t ret = osTimerStop(g_timer_time_sync); + // WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_time_sync_retry_time >= %d stop timer ,ret %d\n",MAX_TIME_SYNC_RETRY_TIME,ret); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_time_sync_retry_time >= %d stop timer \n",MAX_TIME_SYNC_RETRY_TIME); + return ; } + cat1_gettime(); + } void restart_time_sync(void) @@ -637,8 +706,8 @@ static int udp_packet_parse(char *rx_buffer, int len) //"BOOTUP,pyVer,PY_SRV_V4,modemVer,EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_BETA0312" if(strstr(msg->buffer,"BOOTUP")!=NULL) { - cat1_getsignal(); cat1_handle_version_msg(msg); + cat1_getsignal(); restart_time_sync(); } diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/cat1Service.py b/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/cat1Service.py index 2016acff8..4bd9cd684 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/cat1Service.py +++ b/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/cat1Service.py @@ -50,7 +50,7 @@ import request import ql_fs import pm PROJECT_NAME = "Cat1SlipUDPService" -PROJECT_VERSION = "PY_SRV_V5" +PROJECT_VERSION = "PY_SRV_V6" CONFIG_JSON="/usr/system_config.json" CURRENT_APP_TYPE="pysrv" @@ -269,7 +269,11 @@ class Cat1Service: # UDP_CMD_GET_RECV_NETWORKSTAT simstat = sim.getStatus() imei = modem.getDevImei() - netstat = net.getSignal(1) + netstat = "0,10,0,10" + netstat_ = net.getState() + if netstat_ != -1 : + netstat = "{},{},{},{}".format(netstat_[0][0],netstat_[0][3],netstat_[1][0],netstat_[1][3]) + # ([voice_state, voice_lac, voice_cid, voice_rat, voice_reject_cause, voice_psc], [data_state, data_lac, data_cid, data_rat, data_reject_cause, data_psc]) operator = net.operatorName() signal = net.csqQueryPoll() print("imei:{0},sim:{1},oper:{2},signal:{3},net:{4}".format(imei,simstat,operator,signal,netstat))