Merge branch 'Branch_S550_GUI' of gitlab.sifar.tech:linux-em-group/s530-ntk into branch_s550_gui

This commit is contained in:
xiaojiazhu 2023-11-23 09:13:31 +08:00
commit 7771d8e7a6
2 changed files with 109 additions and 98 deletions

View File

@ -303,11 +303,10 @@ static lv_obj_t* pMenu = NULL;
static lv_obj_t *plabel = NULL; static lv_obj_t *plabel = NULL;
static int ProfileTotal = 0; static int ProfileTotal = 0;
static int ProfileSelected = 0; static int ProfileSelected = 0;
static int ProfileFocused = 0;
static unsigned char ProfileNameList[PROFILE_MAX][PROFILE_NAME_SIZE] = {0}; static unsigned char ProfileNameList[PROFILE_MAX][PROFILE_NAME_SIZE] = {0};
//优化需要的点 static int Countdown = 0;
//按键加锁
//回调取消延时
static void update_Network_Selection_msg(lv_obj_t* obj) static void update_Network_Selection_msg(lv_obj_t* obj)
{ {
@ -317,31 +316,33 @@ static void update_Network_Selection_msg(lv_obj_t* obj)
return; return;
} }
if(ProfileSelected > PROFILE_MAX) if(ProfileFocused > PROFILE_MAX)
{ {
printf("[error]ProfileSelected exceed the limit\n"); printf("[error]ProfileFocused exceed the limit\n");
ProfileSelected = 0; ProfileFocused = 0;
} }
// int selectedIndex = ProfileSelected % ITEMS_PER_PAGE; int selectedPage = ProfileFocused / ITEMS_PER_PAGE;
int selectedPage = ProfileSelected / ITEMS_PER_PAGE;
int ishidden = 0; int ishidden = 0;
for(int i = 0; i < ITEMS_PER_PAGE; i++) for(int i = 0; i < ITEMS_PER_PAGE; i++)
{ {
printf("i:%d data:%d\n", i, (IDS_NETWORK_SELECTION_1 + (ITEMS_PER_PAGE * selectedPage) + i)); // printf("i:%d data:%d\n", i, (IDS_NETWORK_SELECTION_1 + (ITEMS_PER_PAGE * selectedPage) + i));
// lv_plugin_menu_set_item_string_id(pMenu, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, (IDS_NETWORK_SELECTION_1 + (ITEMS_PER_PAGE * selectedPage) + i));
lv_plugin_menu_set_item_string_id(pMenu, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, lv_plugin_menu_set_item_string_id(pMenu, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM,
(IDS_NETWORK_SELECTION_1 + (ITEMS_PER_PAGE * selectedPage) + i)); (IDS_NETWORK_SELECTION_1 + (ITEMS_PER_PAGE * selectedPage) + i));
lv_plugin_menu_set_item_img_id(pMenu, i, LV_PLUGIN_MENU_ITEM_STATE_DISABLED, LV_PLUGIN_IMG_ID_ICON_OK); lv_plugin_menu_set_item_img_id(pMenu, i, LV_PLUGIN_MENU_ITEM_STATE_DISABLED, LV_PLUGIN_IMG_ID_ICON_OK);
ishidden = true; ishidden = true;
if((ITEMS_PER_PAGE * selectedPage) + i < ProfileTotal) if((ITEMS_PER_PAGE * selectedPage) + i < ProfileTotal)
{ {
lv_plugin_menu_set_item_hidden(pMenu, i, false);//整项 lv_plugin_menu_set_item_hidden(pMenu, i, false);//整项
if((ITEMS_PER_PAGE * selectedPage) + i == ProfileFocused)
{
lv_plugin_menu_select_item(pMenu, i);//白条
}
if((ITEMS_PER_PAGE * selectedPage) + i == ProfileSelected) if((ITEMS_PER_PAGE * selectedPage) + i == ProfileSelected)
{ {
ishidden = false; ishidden = false;
lv_plugin_menu_select_item(pMenu, i);//白条
} }
} }
else else
@ -381,6 +382,23 @@ static void network_scan_task_cb(lv_task_t* task)
lv_obj_t* obj = (lv_obj_t*)task->user_data; lv_obj_t* obj = (lv_obj_t*)task->user_data;
if(Countdown)
{
printf("[%s]Countdown:%d\n", __FUNCTION__, Countdown);
Countdown--;
if(Countdown <= 0)
{
network_scan_task_end();
lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0));
hidde_Network_Selection_page();
return;
}
else
{
return;
}
}
if(sf_cardv_4G_status_get() == SF_4G_SEARCHING) if(sf_cardv_4G_status_get() == SF_4G_SEARCHING)
{ {
printf("[%s]Searching...\n", __FUNCTION__); printf("[%s]Searching...\n", __FUNCTION__);
@ -390,26 +408,14 @@ static void network_scan_task_cb(lv_task_t* task)
if(sf_cardv_get_sim_insert() == 0) if(sf_cardv_get_sim_insert() == 0)
{ {
network_scan_task_end();
lv_label_set_text(plabel, "\n\nCheck SIM"); lv_label_set_text(plabel, "\n\nCheck SIM");
Countdown = 3;
sleep(3);
lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0));
hidde_Network_Selection_page();
return; return;
} }
else if(sf_cardv_get_is_esim() == 0) else if(sf_cardv_get_is_esim() == 0)
{ {
network_scan_task_end();
lv_label_set_text(plabel, "\n\nNetwork selection is only available with SIM cards that have multiple networks."); lv_label_set_text(plabel, "\n\nNetwork selection is only available with SIM cards that have multiple networks.");
Countdown = 3;
sleep(3);
lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0));
hidde_Network_Selection_page();
return; return;
} }
else else
@ -422,7 +428,6 @@ static void network_scan_task_cb(lv_task_t* task)
stMessageBuf.arg3 = 1; stMessageBuf.arg3 = 1;
stMessageBuf.cmdId = CMD_DEV; stMessageBuf.cmdId = CMD_DEV;
sf_com_message_send_to_app(&stMessageBuf); sf_com_message_send_to_app(&stMessageBuf);
// usleep(100);
} }
if(sf_file_IsExsit(NETMSGPATH)) if(sf_file_IsExsit(NETMSGPATH))
@ -448,6 +453,7 @@ static void network_scan_task_cb(lv_task_t* task)
int ProfileOffset = 11 + OPERATOR_INFO_SIZE*OperatorTotal; int ProfileOffset = 11 + OPERATOR_INFO_SIZE*OperatorTotal;
ProfileTotal = Buff[ProfileOffset]; ProfileTotal = Buff[ProfileOffset];
ProfileSelected = Buff[ProfileOffset + 1]; ProfileSelected = Buff[ProfileOffset + 1];
ProfileFocused = ProfileSelected;
printf("\nOperatorTotal:%d ProfileOffset:%d ProfileTotal:%d ProfileSelected:%d\n", OperatorTotal, ProfileOffset, ProfileTotal, ProfileSelected); printf("\nOperatorTotal:%d ProfileOffset:%d ProfileTotal:%d ProfileSelected:%d\n", OperatorTotal, ProfileOffset, ProfileTotal, ProfileSelected);
@ -468,35 +474,9 @@ static void network_scan_task_cb(lv_task_t* task)
tmpPluginStr = (lv_plugin_string_t*)lv_plugin_get_string(IDS_NETWORK_SELECTION_1 + i); tmpPluginStr = (lv_plugin_string_t*)lv_plugin_get_string(IDS_NETWORK_SELECTION_1 + i);
tmpstr = (char*)tmpPluginStr->ptr; tmpstr = (char*)tmpPluginStr->ptr;
snprintf(tmpstr, PROFILE_NAME_SIZE, "%s", ProfileNameList[i]); snprintf(tmpstr, PROFILE_NAME_SIZE, "%s", ProfileNameList[i]);
printf("i:%d tmpstr:%s len:%d p:%p\n", i, tmpstr, tmpPluginStr->size, tmpstr); // printf("i:%d tmpstr:%s len:%d p:%p\n", i, tmpstr, tmpPluginStr->size, tmpstr);
} }
// lv_plugin_string_t*test = (lv_plugin_string_t*)lv_plugin_get_string(8);
// char* str = (char*)test->ptr;
// snprintf(str, test->size, "");
// printf("//////////////////////\n\n");
// lv_plugin_string_t* tmpPluginStr1 = (lv_plugin_string_t*)lv_plugin_get_string(IDS_NETWORK_SELECTION_1);
// lv_plugin_string_t* tmpPluginStr2 = (lv_plugin_string_t*)lv_plugin_get_string(IDS_NETWORK_SELECTION_2);
// lv_plugin_string_t* tmpPluginStr3 = (lv_plugin_string_t*)lv_plugin_get_string(IDS_NETWORK_SELECTION_3);
// lv_plugin_string_t* tmpPluginStr4 = (lv_plugin_string_t*)lv_plugin_get_string(IDS_NETWORK_SELECTION_4);
// lv_plugin_string_t* tmpPluginStr5 = (lv_plugin_string_t*)lv_plugin_get_string(IDS_NETWORK_SELECTION_5);
// printf("%p\n%p\n%p\n%p\n%p\n\n", tmpPluginStr1, tmpPluginStr2, tmpPluginStr3, tmpPluginStr4, tmpPluginStr5);
// printf("%p\n%p\n%p\n%p\n%p\n\n", tmpPluginStr1->ptr, tmpPluginStr2->ptr, tmpPluginStr3->ptr, tmpPluginStr4->ptr, tmpPluginStr5->ptr);
// char* tmpstr1 = (char*)tmpPluginStr1->ptr;
// char* tmpstr2 = (char*)tmpPluginStr2->ptr;
// char* tmpstr3 = (char*)tmpPluginStr3->ptr;
// char* tmpstr4 = (char*)tmpPluginStr4->ptr;
// char* tmpstr5 = (char*)tmpPluginStr5->ptr;
// printf("%p\n%p\n%p\n%p\n%p\n\n", tmpstr1, tmpstr2, tmpstr3, tmpstr4, tmpstr5);
// printf("//////////////////////\n\n");
update_Network_Selection_msg(obj); update_Network_Selection_msg(obj);
lv_obj_set_hidden(container_main_menu_scr_uiflowmenucommonoption, false); lv_obj_set_hidden(container_main_menu_scr_uiflowmenucommonoption, false);
} }
@ -519,32 +499,40 @@ static void network_select_task_cb(lv_task_t* task)
{ {
lv_obj_t* obj = (lv_obj_t*)task->user_data; lv_obj_t* obj = (lv_obj_t*)task->user_data;
if(Countdown)
{
printf("[%s]Countdown:%d\n", __FUNCTION__, Countdown);
Countdown--;
if(Countdown <= 0)
{
network_select_task_end();
lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0));
hidde_Network_Selection_page();
return;
}
else
{
return;
}
}
int resp = sf_cardv_get_operationSelectResp(); int resp = sf_cardv_get_operationSelectResp();
printf("network_select_task_cb:%d\n",resp); printf("network_select_task_cb:%d\n",resp);
switch (resp) switch (resp)
{ {
case 0x00:/*CMD_SUCCESS*/ case 0x00:/*CMD_SUCCESS*/
network_select_task_end();
lv_label_set_text(plabel, "\n\nCompleted"); lv_label_set_text(plabel, "\n\nCompleted");
sleep(3); Countdown = 3;
lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0));
hidde_Network_Selection_page();
break; break;
case 0x34:/*NETWORK_NOT_NEED_SET*/ case 0x34:/*NETWORK_NOT_NEED_SET*/
network_select_task_end();
lv_label_set_text(plabel, "\n\nProfile is enabled"); lv_label_set_text(plabel, "\n\nProfile is enabled");
sleep(3); Countdown = 3;
lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0));
hidde_Network_Selection_page();
break; break;
case 0xff: case 0xff:
break; break;
default: default:
network_select_task_end();
lv_label_set_text(plabel, "\n\nCurrently network is busy, Please try it later"); lv_label_set_text(plabel, "\n\nCurrently network is busy, Please try it later");
sleep(3); Countdown = 3;
lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0));
hidde_Network_Selection_page();
break; break;
} }
} }
@ -564,6 +552,7 @@ void show_Network_Selection_page(lv_obj_t* obj, lv_obj_t* menu_obj)
lv_obj_add_style(plabel, 0, &gMatrixStylebtn); lv_obj_add_style(plabel, 0, &gMatrixStylebtn);
if(network_scan_task == NULL){ if(network_scan_task == NULL){
Countdown = 0;
network_scan_task = lv_task_create(network_scan_task_cb, 1000, LV_TASK_PRIO_MID, (void*)obj); network_scan_task = lv_task_create(network_scan_task_cb, 1000, LV_TASK_PRIO_MID, (void*)obj);
} }
} }
@ -578,40 +567,43 @@ void hidde_Network_Selection_page(void)
if(plabel) if(plabel)
{ {
lv_obj_del(plabel); lv_obj_del(plabel);
plabel = NULL;
} }
} }
void Option_Network_Selection_Key(lv_obj_t* obj, uint32_t key) void Option_Network_Selection_Key(lv_obj_t* obj, uint32_t key)
{ {
// UIMenuStoreInfo *puiPara = sf_ui_para_get();
// char result[2];
// char tmpchar;
// char* p;
printf("key:%d\n",key); printf("key:%d\n",key);
switch(key) switch(key)
{ {
case LV_USER_KEY_NEXT: case LV_USER_KEY_NEXT:
if(ProfileSelected >= 0 && ProfileSelected < (ProfileTotal - 1)) if(network_scan_task == NULL && network_select_task == NULL)
{ {
ProfileSelected++; if(ProfileFocused >= 0 && ProfileFocused < (ProfileTotal - 1))
{
ProfileFocused++;
}
else
{
ProfileFocused = 0;
}
update_Network_Selection_msg(obj);
} }
else
{
ProfileSelected = 0;
}
update_Network_Selection_msg(obj);
break; break;
case LV_USER_KEY_PREV: case LV_USER_KEY_PREV:
if(ProfileSelected > 0 && ProfileSelected < ProfileTotal) if(network_scan_task == NULL && network_select_task == NULL)
{ {
ProfileSelected--; if(ProfileFocused > 0 && ProfileFocused < ProfileTotal)
{
ProfileFocused--;
}
else
{
ProfileFocused = 0;
}
update_Network_Selection_msg(obj);
} }
else
{
ProfileSelected = 0;
}
update_Network_Selection_msg(obj);
break; break;
case LV_USER_KEY_LEFT: case LV_USER_KEY_LEFT:
lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0)); lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0));
@ -620,17 +612,21 @@ void Option_Network_Selection_Key(lv_obj_t* obj, uint32_t key)
case LV_USER_KEY_RIGHT: case LV_USER_KEY_RIGHT:
break; break;
case LV_KEY_ENTER: case LV_KEY_ENTER:
lv_obj_set_hidden(container_main_menu_scr_uiflowmenucommonoption, true); if(network_scan_task == NULL && network_select_task == NULL)
lv_label_set_text(plabel, "\n\nNetwork Switching..."); {
sf_cardv_set_operationSelectResp(0xff); lv_obj_set_hidden(container_main_menu_scr_uiflowmenucommonoption, true);
SF_MESSAGE_BUF_S stMessageBuf = {0}; lv_label_set_text(plabel, "\n\nNetwork Switching...");
stMessageBuf.arg1 = SF_DEV_CMD_ESIM_OPERATION_SELECT; sf_cardv_set_operationSelectResp(0xff);
stMessageBuf.arg2 = SF_CONTROL_TYPE_LOCAL; SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.arg3 = ProfileSelected; stMessageBuf.arg1 = SF_DEV_CMD_ESIM_OPERATION_SELECT;
stMessageBuf.cmdId = CMD_DEV; stMessageBuf.arg2 = SF_CONTROL_TYPE_LOCAL;
sf_com_message_send_to_app(&stMessageBuf); stMessageBuf.arg3 = ProfileFocused;
if(network_select_task == NULL){ stMessageBuf.cmdId = CMD_DEV;
network_select_task = lv_task_create(network_select_task_cb, 1000, LV_TASK_PRIO_MID, (void*)obj); sf_com_message_send_to_app(&stMessageBuf);
if(network_select_task == NULL){
Countdown = 0;
network_select_task = lv_task_create(network_select_task_cb, 1000, LV_TASK_PRIO_MID, (void*)obj);
}
} }
break; break;
default: default:

View File

@ -3208,9 +3208,10 @@ void sf_network_select_thread(void* args)
//clear lpa switch flag. //clear lpa switch flag.
sf_set_lpa_switch_flag(0); sf_set_lpa_switch_flag(0);
//SF_POWEROFF_REBOOT
if(errCode == CMD_SUCCESS) if(errCode == CMD_SUCCESS)
{ {
#if 0
SLOGE("Reboot module,try again!\n"); SLOGE("Reboot module,try again!\n");
int retryTime = 0; int retryTime = 0;
int rebootTime=0; int rebootTime=0;
@ -3223,7 +3224,6 @@ void sf_network_select_thread(void* args)
sleep(SF_MODULE_RESET_WAIT_TIME); sleep(SF_MODULE_RESET_WAIT_TIME);
sf_set_module_reset_flag(0); sf_set_module_reset_flag(0);
#if 0
while(sf_get_ttyfd() < 0) while(sf_get_ttyfd() < 0)
{ {
sf_ttyfd_init_tryother(); sf_ttyfd_init_tryother();
@ -3238,13 +3238,28 @@ void sf_network_select_thread(void* args)
sf_set_module_reset_flag(0); sf_set_module_reset_flag(0);
sf_ttyfd_init_tryother(); sf_ttyfd_init_tryother();
} }
#endif
//if(sf_get_ttyfd() < 0) //if(sf_get_ttyfd() < 0)
{ {
errCode = NETWORK_CMD_READ_SIM_FAIL; errCode = NETWORK_CMD_READ_SIM_FAIL;
} }
#endif
if(controlType == SF_CONTROL_TYPE_LOCAL)
{
SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.cmdId = CMD_DEV;
stMessageBuf.arg1 = SF_DEV_CMD_ESIM_OPERATION_SELECT_RESP;
stMessageBuf.arg2 = errCode;
stMessageBuf.arg3 = 0;
sf_com_message_send_to_cardv(&stMessageBuf);
}
// sf_mcu_reg_set(SF_MCU_RESET_MODULE, 0);
// sleep(2);
// sf_mcu_reg_set(SF_MCU_POWEROFF, 0);
sf_mcu_reg_set(SF_MCU_POWER_RESTART, 0);
} }
else else
{ {