/************************************************* Function: LoadScene Description: ��������UI ���Ե� Input: Output: �� Return: �� Others: *************************************************/ static void LoadScene(void) { uint32_t tick1, tick2; if (theScene.root) { ituSceneExit(&theScene); #ifdef _WIN32 //_CrtMemDumpAllObjectsSince(&state); #endif } #ifdef _WIN32 else { //_CrtMemCheckpoint(&state); //_CrtSetBreakAlloc(8003); } #endif // load itu file tick1 = SDL_GetTicks(); ituSceneLoadFile(&theScene, CFG_PRIVATE_DRIVE ":/doorbell_indoor.itu"); tick2 = SDL_GetTicks(); printf("itu loading time: %dms\n", tick2 - tick1); tick1 = tick2; //resetScene(); ItuSetLanguage(storage_get_language()); tick2 = SDL_GetTicks(); printf("itu init time: %dms\n", tick2 - tick1); SceneGetAllProgressBar(); }
/************************************************* Function: DrawStringHint Description: 画状态提示 Input: 无 Output: 无 Return: 无 Others: 无 *************************************************/ static void DrawStringHint(void) { char time[10] = { 0 }; char temp[50] = { 0 }; char DevDesc[50] = { 0 }; char NoText[100] = { 0 }; uint32 StrId = 0; switch (g_InterState) { case CALL_STATE_REQUEST: StrId = SID_Inter_Connecting; break; case CALL_STATE_CALLING: if (g_OperType == INTER_CALLOUT_E) { StrId = SID_Inter_Calling; } else if (g_OperType == INTER_CALLIN_E) { StrId = SID_Inter_BeCalling; } break; case CALL_STATE_RECORDHINT: StrId = SID_Inter_RecordHinting; break; case CALL_STATE_RECORDING: StrId = SID_Inter_Recording; break; case CALL_STATE_TALK: StrId = SID_Inter_Talking; break; case CALL_STATE_END: StrId = 0; break; default: StrId = 0; break; } // 画设备描述 if (strlen(g_DevNo) > 0) { if (atoi(g_DevNo) == 0xFF) { strcpy(DevDesc, get_str(SID_DevManager)); } else { get_dev_description(g_DevType, g_DevNo, DevDesc, 50); // 获得设备描述 } } sprintf(temp, "[%s]", DevDesc); if (g_ErrHintTxtID) { sprintf(NoText, "%s %s", temp, get_str(g_ErrHintTxtID)); ituTextSetString(BecallCallNoText, NoText); } else if (StrId) { sprintf(NoText, "%s %s", temp, get_str(StrId)); ituTextSetString(BecallCallNoText, NoText); } else { ituTextSetString(BecallCallNoText, temp); } if (ENGLISH == storage_get_language()) { text_ctrl_too_long_show_ellipsis(BecallCallNoText); } // 画时间提示: time if (g_RemainTime) { sprintf(time, "%d", g_RemainTime); ituTextSetString(BeCallTimeText, time); } // 画新来电提示 if (strlen(g_NewCallNo) > 0) { uint16 DevType = g_NewCallNo[1]; char NewCallNo[30] = { 0 }; sprintf(NewCallNo, "%s", g_NewCallNo+2); memset(DevDesc, 0, sizeof(DevDesc)); memset(temp, 0, sizeof(temp)); memset(NoText, 0, sizeof(NoText)); get_dev_description(DevType, NewCallNo, DevDesc, 50); StrId = SID_Inter_BeCalling; sprintf(temp, "[%s]", DevDesc); sprintf(NoText, "%s %s", temp, get_str(StrId)); ituTextSetString(BecallNewCallNoText, NoText); if (ENGLISH == storage_get_language()) { text_ctrl_too_long_show_ellipsis(BecallNewCallNoText); } } }
/************************************************* Function: OnNetDoorDeal Description: 处理网络门前机 Input: 1.win: 当前处理的窗口 2.wParam: Output: Return: Others: *************************************************/ static void OnNetDoorDealNetParam(uint32 wParam) { uint32 ret = 0; PNET_PARAM pnet_param = storage_get_netparam(); switch (wParam) { case CMD_GATEWAY_GET_NET_PARAM: MsgWaitHitLayerOnShow("SetNetDoorNetParamLayer", SID_Inter_Search, SID_Msg_Connect_Outtime); ret = logic_get_netdevice_netparam(); if (NETDOOR_ECHO_SUCESS != ret) { memset(&g_ndparam, 0, sizeof(g_ndparam)); memset(&g_old_ndparam, 0, sizeof(NET_PARAM)); MsgWaitHitLayerOnHide(); MsgLinkOutTimeOnShow(SID_Msg_Connect_Outtime); //显示连接超时 } break; case CMD_GATEWAY_SET_NET_PARAM: MsgWaitHitLayerOnShow("SetNetDoorNetParamLayer", SID_Inter_Search, 0); set_default_ip(); //设置网络门前机设备编号以及规则 ret = logic_set_netdoor_devnoinfo(&g_netdoorno, NULL); // 将中心机等参数从本机中取重新设置门前机 memcpy((char*)&g_ndparam + 12, (char*)pnet_param + 12, sizeof(NET_PARAM)-12); if (ENGLISH == storage_get_language()) { g_ndparam.DNS1 = 0xEE; // 语言,英语 } g_ndparam.DNS2 = 0xCF; // 视频格式,CIF格式 //设置网络门前机网络参数 ret |= logic_set_netdoor_netparam(&g_ndparam); if (NETDOOR_ECHO_SUCESS != ret) { MsgWaitHitLayerOnHide(); ShowMsgFailHintSuccessLayer(HIT_SPRITE_TO_ERROR, SID_Msg_Save_Err, "SetNetDoorNetParamLayer"); if (readmacflag) { net_set_local_param(); readmacflag = FALSE; } } break; case CMD_GATEWAY_GET_MAC: MsgWaitHitLayerOnShow("SetNetDoorNetParamLayer", SID_Inter_Search, SID_Msg_Connect_Outtime); set_default_ip(); ret = logic_get_netdoor_mac(g_devIndex, HWaddr); if (NETDOOR_ECHO_SUCESS != ret) { MsgWaitHitLayerOnHide(); MsgLinkOutTimeOnShow(SID_Msg_Connect_Outtime); if (readmacflag) { net_set_local_param(); readmacflag = FALSE; } } break; } }
/************************************************* Function: ShowSetJDScenceCoverFlowList Description: 显示情景设置列表 Input: 无 Output: 无 Return: TRUE 是 FALSE 否 Others: *************************************************/ static void ShowSetJDScenceCoverFlowList() { int i, max = 0; char text_tmp[80]; uint32 TextID[JD_SCENE_MAX] = { SID_Jd_Mode_Huike, SID_Jd_Mode_Jiucan, SID_Jd_Mode_Yejian, SID_Jd_Mode_Jiedian, SID_Jd_Mode_Putong }; free_scene_memory(&g_SceneList); g_SceneList = storage_get_aurine_scene_info(0); if (g_SceneList) { g_SceneList->nCount = 32; max = 32; } for (i = 0; i < max; i++) { if (i < JD_SCENE_MAX) { ituTextSetString(SetJDSceneList1Text[i], get_str(TextID[i])); ituTextSetString(SetJDSceneList2Text[i], get_str(SID_Set_Used)); } else { memset(text_tmp, 0, sizeof(text_tmp)); if (g_SceneList->pjd_scene_info[i].IsUsed == 1) { ituTextSetString(SetJDSceneList2Text[i], get_str(SID_Set_Used)); #ifdef _IP_MODULE_JD_ if (JD_FACTORY_ACBUS == storage_get_extmode(EXT_MODE_JD_FACTORY) && get_ipmodule()) { if (ENGLISH == storage_get_language()) { strcpy(text_tmp, g_SceneList->pjd_scene_info[i].SceneName); } else { gbkToUtf8(text_tmp, MAX_JD_NAME, g_SceneList->pjd_scene_info[i].SceneName, MAX_JD_NAME); } } else #endif { #ifdef _USERDEFINE_JDNAME_ strcpy(text_tmp1, g_SceneList->pjd_scene_info[i].SceneName); #else strcpy(text_tmp, get_str(g_SceneList->pjd_scene_info[i].TextIDPos)); strcat(text_tmp, get_str(g_SceneList->pjd_scene_info[i].TextIDName)); #endif } } else { ituTextSetString(SetJDSceneList2Text[i], get_str(SID_Set_UnUsed)); sprintf(text_tmp, "%s%d", get_str(SID_Jd_Mode_Self), i + 1); } ituTextSetString(SetJDSceneList1Text[i], text_tmp); } } }
/************************************************* Function: ProcessCommand Description: ��Ϣ����ִ�к��� Input: Output: �� Return: �� Others: *************************************************/ static void ProcessCommand(void) { Command cmd; if (mq_receive(g_CommandQueue, (char*)&cmd, sizeof(Command), 0) > 0) { switch (cmd.id) { case CMD_LOAD_SCENE: { LoadScene(); } break; case CMD_GOTO_MAINMENU: { GotoLayer(_MAIN_MENU_LAYER_); } break; case CMD_CHANGE_LANG: { ItuSetLanguage(storage_get_language()); } break; case CMD_PREDRAW: { ituScenePreDraw(&theScene, g_ScreenSurf); } break; case CMD_REFRESH: { ituSceneDraw(&theScene, g_ScreenSurf); ituFlip(g_ScreenSurf); } break; case CMD_SYNC_MAINMENU: { ituSceneSendEvent(&theScene, EVENT_CUSTOM0_STATE_UPDATE, NULL); } break; case CMD_CALLIN_CALLBAK: { char buf[MAX_STRARG_LEN]; memset(buf, 0, sizeof(buf)); memcpy(buf, cmd.strarg1, MAX_STRARG_LEN); ituSceneSendEvent(&theScene, EVENT_CUSTOM13_CALLIN, buf); } break; case CMD_CALLREQUEST_CALLBAK: { char buf[MAX_STRARG_LEN]; memset(buf, 0, sizeof(buf)); memcpy(buf, cmd.strarg1, MAX_STRARG_LEN); ituSceneSendEvent(&theScene, EVENT_CUSTOM11_CALLREQUEST, buf); } break; case CMD_CALLOUT_CALLBAK: { char buf[MAX_STRARG_LEN]; memset(buf, 0, sizeof(buf)); memcpy(buf, cmd.strarg1, MAX_STRARG_LEN); ituSceneSendEvent(&theScene, EVENT_CUSTOM12_CALLOUT, buf); } break; case CMD_MONITOR_LIST_CALLBAK: { char buf[MAX_STRARG_LEN]; memset(buf, 0, sizeof(buf)); memcpy(buf, cmd.strarg1, MAX_STRARG_LEN); ituSceneSendEvent(&theScene, EVENT_CUSTOM14_MONITOR_LIST, buf); } break; case CMD_MONITOR_CALLBAK: { char buf[MAX_STRARG_LEN]; memset(buf, 0, sizeof(buf)); memcpy(buf, cmd.strarg1, MAX_STRARG_LEN); ituSceneSendEvent(&theScene, EVENT_CUSTOM15_MONITOR, buf); } break; case CMD_RTSP_LIST_CALLBAK: { char buf[MAX_STRARG_LEN]; memset(buf, 0, sizeof(buf)); memcpy(buf, cmd.strarg1, MAX_STRARG_LEN); ituSceneSendEvent(&theScene, EVENT_CUSTOM16_RTSP_LIST, buf); } break; case CMD_RTSP_CALLBAK: { char buf[MAX_STRARG_LEN]; memset(buf, 0, sizeof(buf)); memcpy(buf, cmd.strarg1, MAX_STRARG_LEN); ituSceneSendEvent(&theScene, EVENT_CUSTOM17_RTSP_MONITOR, buf); } break; case CMD_KEY_DOWN: { char buf[MAX_STRARG_LEN]; memset(buf, 0, sizeof(buf)); memcpy(buf, cmd.strarg1, MAX_STRARG_LEN); ituSceneSendEvent(&theScene, EVENT_CUSTOM18_KEY_DOWN, buf); } break; case CMD_GOTO_BECALL: { char buf[MAX_STRARG_LEN]; memset(buf, 0, sizeof(buf)); memcpy(buf, cmd.strarg1, sizeof(INTER_INFO_S)); LogicShowWin(SHOW_BECALL_WIN, buf); } break; case CMD_ALARM_CALLBAK: { ituSceneSendEvent(&theScene, EVENT_CUSTOM0_STATE_UPDATE, NULL); UpdataAlarmLayerOnShow(NULL, NULL); } break; case CMD_GOTO_ALARM: if (FALSE == ui_show_win_arbitration(SYS_OPER_ALARMING)) { return FALSE; } AlarmLayerOnGoto(NULL, NULL); break; case CMD_SET_NETDOOR: { char buf[MAX_STRARG_LEN]; memset(buf, 0, sizeof(buf)); memcpy(buf, cmd.strarg1, MAX_STRARG_LEN); ituSceneSendEvent(&theScene, EVENT_CUSTOM19_NETDOOR_SET, buf); } break; case CMD_DIRECT_CALLBAK: { char buf[MAX_STRARG_LEN]; memset(buf, 0, sizeof(buf)); memcpy(buf, cmd.strarg1, MAX_STRARG_LEN); ituSceneSendEvent(&theScene, EVENT_CUSTOM20_OTHER_FUNC, buf); } break; default: break; } } }
void fsm_msgGetFeatures(GetFeatures *msg) { (void)msg; RESP_INIT(Features); /* Vendor */ resp->has_vendor = true; strlcpy(resp->vendor, "keepkey.com", sizeof(resp->vendor)); /* Version */ resp->has_major_version = true; resp->major_version = MAJOR_VERSION; resp->has_minor_version = true; resp->minor_version = MINOR_VERSION; resp->has_patch_version = true; resp->patch_version = PATCH_VERSION; /* Device ID */ resp->has_device_id = true; strlcpy(resp->device_id, storage_get_uuid_str(), sizeof(resp->device_id)); /* Security settings */ resp->has_pin_protection = true; resp->pin_protection = storage_has_pin(); resp->has_passphrase_protection = true; resp->passphrase_protection = storage_get_passphrase_protected(); #ifdef SCM_REVISION int len = sizeof(SCM_REVISION) - 1; resp->has_revision = true; memcpy(resp->revision.bytes, SCM_REVISION, len); resp->revision.size = len; #endif /* Bootloader hash */ resp->has_bootloader_hash = true; resp->bootloader_hash.size = memory_bootloader_hash( resp->bootloader_hash.bytes); /* Settings for device */ if(storage_get_language()) { resp->has_language = true; strlcpy(resp->language, storage_get_language(), sizeof(resp->language)); } if(storage_get_label()) { resp->has_label = true; strlcpy(resp->label, storage_get_label(), sizeof(resp->label)); } /* Coin type support */ resp->coins_count = COINS_COUNT; memcpy(resp->coins, coins, COINS_COUNT * sizeof(CoinType)); /* Is device initialized? */ resp->has_initialized = true; resp->initialized = storage_is_initialized(); /* Are private keys imported */ resp->has_imported = true; resp->imported = storage_get_imported(); /* Cached pin and passphrase status */ resp->has_pin_cached = true; resp->pin_cached = session_is_pin_cached(); resp->has_passphrase_cached = true; resp->passphrase_cached = session_is_passphrase_cached(); msg_write(MessageType_MessageType_Features, resp); }