diff --git a/build/nvt-tools/__pycache__/pyfdt.cpython-36.pyc b/build/nvt-tools/__pycache__/pyfdt.cpython-36.pyc index 532d6c186..4e4c2d356 100644 Binary files a/build/nvt-tools/__pycache__/pyfdt.cpython-36.pyc and b/build/nvt-tools/__pycache__/pyfdt.cpython-36.pyc differ diff --git a/code/.vscode/c_cpp_properties.json b/code/.vscode/c_cpp_properties.json new file mode 100644 index 000000000..78fd69302 --- /dev/null +++ b/code/.vscode/c_cpp_properties.json @@ -0,0 +1,22 @@ +{ + "configurations": [ + { + "name": "Win32", + "includePath": [ + "${workspaceFolder}/**" + ], + "defines": [ + "_DEBUG", + "UNICODE", + "_UNICODE" + ], + "defines": ["_MODEL_565_HUNTING_EVB_LINUX_4G_S530_","_EMBMEM_SPI_NOR_"], + "windowsSdkVersion": "10.0.22000.0", + "compilerPath": "cl.exe", + "cStandard": "c17", + "cppStandard": "c++17", + "intelliSenseMode": "windows-msvc-x64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/code/.vscode/settings.json b/code/.vscode/settings.json new file mode 100644 index 000000000..772c12b3c --- /dev/null +++ b/code/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "files.associations": { + "prjcfg_hunting_s530.h": "c", + "sf_keymng.h": "c", + "sf_inc.h": "c", + "sf_commmng.h": "c" + } +} \ No newline at end of file diff --git a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/IOCfg.c b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/IOCfg.c index e785a7bcf..2648c0152 100755 --- a/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/IOCfg.c +++ b/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/IOCfg.c @@ -460,7 +460,7 @@ void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo { if(flashLed == 0) { - ui_rise = 25;//75% + ui_rise = 30;//70% } else { @@ -471,7 +471,7 @@ void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo { if(flashLed == 0) { - ui_rise = 10;//90% + ui_rise = 15;//85% } else { @@ -505,7 +505,7 @@ void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo } #endif - sprintf(argv, "echo \"w openpwm 3 100 %d 100 0 0 0 0\" > /proc/pwm/cmd", ui_rise); + sprintf(argv, "echo \"w openpwm 3 100 %d 100 14 0 0 0\" > /proc/pwm/cmd", ui_rise); ret = nvt_system(argv); //printf("%s:%d argv:%s\n", __FUNCTION__, __LINE__,argv); diff --git a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h index 208945487..a5ea5a981 100755 --- a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h +++ b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h @@ -918,7 +918,7 @@ #define HUNTING_MCU_I2C DISABLE #define HUNTING_MCU_UART ENABLE #define HUNTING_IR_LED_940 DISABLE -#define SF_BASE_VERSION "7MD4RCwD3T2" +#define SF_BASE_VERSION "7MD4RCwD3T3" #define HW_S530 1 diff --git a/code/application/source/cardv/SrcCode/System/SysMain_Exe.c b/code/application/source/cardv/SrcCode/System/SysMain_Exe.c index efc397cbb..57e1699f6 100755 --- a/code/application/source/cardv/SrcCode/System/SysMain_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysMain_Exe.c @@ -133,6 +133,7 @@ INT32 System_GetPoweronModeByFWInfo(void) INT32 System_GetBootFirstMode(void) { + UIMenuStoreInfo *puiPara = sf_ui_para_get(); #if (IPCAM_MODE == ENABLE) #if 0 return System_GetPoweronModeByFWInfo(); @@ -141,12 +142,12 @@ INT32 System_GetBootFirstMode(void) #endif #else #if !UI_SENSOR - printf("%s:%d CamMode :%d\n", __FUNCTION__, __LINE__,SysGetFlag(CamMode)); - if(SF_CAM_MODE_PHOTO == SysGetFlag(CamMode)) + printf("%s:%d CamMode :%d\n", __FUNCTION__, __LINE__,puiPara->CamMode); + if(SF_CAM_MODE_PHOTO == puiPara->CamMode) { return PRIMARY_MODE_PHOTO; } - else if(SF_CAM_MODE_VIDEO == SysGetFlag(CamMode)) + else if(SF_CAM_MODE_VIDEO == puiPara->CamMode) { return PRIMARY_MODE_MOVIE; } diff --git a/code/application/source/cardv/SrcCode/System/SysStrg_CB.c b/code/application/source/cardv/SrcCode/System/SysStrg_CB.c index 3cf092748..bb847e4a0 100755 --- a/code/application/source/cardv/SrcCode/System/SysStrg_CB.c +++ b/code/application/source/cardv/SrcCode/System/SysStrg_CB.c @@ -46,12 +46,6 @@ void Strg_CB(UINT32 event, UINT32 param1, UINT32 param2) { UINT32 status; SF_MESSAGE_BUF_S stMessageBuf = {0}; - - stMessageBuf.arg1 = event; - stMessageBuf.arg2 = param1; - stMessageBuf.arg3 = param2; - stMessageBuf.cmdId = CMD_SD; - sf_com_message_send_to_app(&stMessageBuf); switch (event) { // part-1 @@ -161,6 +155,11 @@ void Strg_CB(UINT32 event, UINT32 param1, UINT32 param2) DBG_ERR("Strg_CB Err event(%d)", event); break; } + stMessageBuf.arg1 = event; + stMessageBuf.arg2 = param1; + stMessageBuf.arg3 = param2; + stMessageBuf.cmdId = CMD_SD; + sf_com_message_send_to_app(&stMessageBuf); } #endif diff --git a/code/application/source/cardv/SrcCode/System/SysUsb_Exe.c b/code/application/source/cardv/SrcCode/System/SysUsb_Exe.c index b9f50b7fc..c87436ab4 100755 --- a/code/application/source/cardv/SrcCode/System/SysUsb_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysUsb_Exe.c @@ -18,6 +18,7 @@ #include #include #include +#include #define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER /////////////////////////////////////////////////////////////////////////////// #define __MODULE__ SysUsbExe @@ -144,10 +145,12 @@ static BOOL System_InsmodUsb(BOOL isHost) } if(isHost == FALSE){ + sf_usb_mux_s(0); is_usb_dev_driver_inserted = TRUE; return System_WaitUsbDev(); } else{ + sf_usb_mux_s(1); is_usb_host_driver_inserted = TRUE; return TRUE; } diff --git a/code/application/source/cardv/SrcCode/System/main.c b/code/application/source/cardv/SrcCode/System/main.c index a4b5546bc..1c0c7e0e4 100755 --- a/code/application/source/cardv/SrcCode/System/main.c +++ b/code/application/source/cardv/SrcCode/System/main.c @@ -391,6 +391,10 @@ int NvtMain(void) sf_sys_status_led_set(SF_LED_SYS_STATE_PIR_NOT_DETECT); sf_battery_thread_init(); } + else + { + sf_usb_mux_s(0); + } GOIO_Turn_Onoff_IRCUT(1); #endif diff --git a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c index a4d741a36..13cd35d83 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c @@ -38,13 +38,13 @@ #include "vendor_videoout.h" #include "IOCfg.h" -#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define THIS_DBGLVL 5 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER /////////////////////////////////////////////////////////////////////////////// #define __MODULE__ UiAppMovie #define __DBGLVL__ ((THIS_DBGLVL>=PRJ_DBG_LVL)?THIS_DBGLVL:PRJ_DBG_LVL) #define __DBGFLT__ "*" //*=All, [mark]=CustomClass #include - +#include #define VDO_YUV_BUFSIZE(w, h, pxlfmt) ALIGN_CEIL_4(((w) * (h) * HD_VIDEO_PXLFMT_BPP(pxlfmt)) / 8) #define FILE_SN_MAX 999999 @@ -199,6 +199,7 @@ INT32 Set_Cur_Day_Night_Status(BOOL OnOff, UINT8 isSnapVideo) IQT_NIGHT_MODE night_mode = {0}; AWBT_MANUAL awb_manual = {0}; HD_RESULT hd_ret; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); if ((hd_ret = vendor_isp_init()) != HD_OK) { DBG_ERR("vendor_isp_init() fail(%d)\r\n", hd_ret); } @@ -206,7 +207,7 @@ INT32 Set_Cur_Day_Night_Status(BOOL OnOff, UINT8 isSnapVideo) night_mode.id = 0; awb_manual.id = 0; vendor_isp_get_ae(AET_ITEM_STATUS, &ae_status_info); - DBG_ERR(">> aet status lv %d lv_base %d\r\n",ae_status_info.status_info.lv,ae_status_info.status_info.lv_base); + //DBG_ERR(">> aet status lv %d lv_base %d\r\n",ae_status_info.status_info.lv,ae_status_info.status_info.lv_base); //DBG_ERR(">> aet status ev %d ev_base %d\r\n",ae_status_info.status_info.ev,ae_status_info.status_info.ev_base); if (((ae_status_info.status_info.lv / 1000000) < 7)&&(OnOff)) { @@ -219,7 +220,7 @@ INT32 Set_Cur_Day_Night_Status(BOOL OnOff, UINT8 isSnapVideo) night_mode.mode = 1; GOIO_Turn_Onoff_IRCUT(0); //GPIO_IRLed_Turn_Onoff(1); - sf_ir_led_set(((2 == SysGetFlag(NightMode)) ? 2 : 1),SysGetFlag(FlashLed), SysGetFlag(NightMode), isSnapVideo); + sf_ir_led_set(((2 == puiPara->NightMode) ? 2 : 1),puiPara->FlashLed, puiPara->NightMode,isSnapVideo); } else { @@ -233,12 +234,12 @@ INT32 Set_Cur_Day_Night_Status(BOOL OnOff, UINT8 isSnapVideo) vendor_isp_set_iq(IQT_ITEM_NIGHT_MODE, &night_mode); if (OnOff){ - vos_util_delay_ms(1500); + vos_util_delay_ms(100); } if ((hd_ret = vendor_isp_uninit()) != HD_OK) { DBG_ERR("vendor_isp_uninit() fail(%d)\r\n", hd_ret); } - vos_util_delay_ms(20); + //vos_util_delay_ms(20); return 0; } @@ -1119,6 +1120,8 @@ static void MovieExe_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) } else { DCF_GetNextID(&nextFolderID,&nextFileID); DCF_MakeObjPath(nextFolderID, nextFileID, DCF_FILE_TYPE_MP4, pFileName); + DCF_AddDBfile(pFileName); + DBG_DUMP("%s added to DCF\r\n", pFileName); if(id == _CFG_REC_ID_1){ snprintf(thumb_current_path_main, sizeof(thumb_current_path_main), "%s", pFileName); @@ -1298,9 +1301,15 @@ static void MovieExe_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT32 } #elif USE_DCF - MOVIEMULTI_CLOSE_FILE_INFO *info = (MOVIEMULTI_CLOSE_FILE_INFO *)value; - DCF_AddDBfile(info->path); - DBG_DUMP("%s added to DCF\r\n", info->path); + //MOVIEMULTI_CLOSE_FILE_INFO *info = (MOVIEMULTI_CLOSE_FILE_INFO *)value; + //DCF_AddDBfile(info->path); + //DBG_DUMP("%s added to DCF\r\n", info->path); + DBG_IND(" ===== MOVIE_USER_CB_EVENT_CLOSE_FILE_COMPLETED ===== \r\n"); + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + if(SF_CAM_MODE_PHOTO_VIDEO == puiPara->CamMode) + { + sf_share_mem_file_down(0); + } #endif } Ux_PostEvent(NVTEVT_CB_MOVIE_REC_FINISH, 1, value); diff --git a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto.h b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto.h index 58f900b36..827b4f26c 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto.h +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto.h @@ -29,8 +29,8 @@ #if (_SCREENNAIL_SIZE_ == _SCREENNAIL_SIZE_VGA_) #define CFG_SCREENNAIL_SIZE PHOTO_SIZE_VGA -#define CFG_SCREENNAIL_W 640 -#define CFG_SCREENNAIL_H 480 +#define CFG_SCREENNAIL_W 640//1024//640 +#define CFG_SCREENNAIL_H 480//768//480 #else #define CFG_SCREENNAIL_SIZE PHOTO_SIZE_3M #define CFG_SCREENNAIL_W 2048 @@ -109,7 +109,7 @@ #define JPG_BRC_INIT_Q 85 #define JPG_BRC_RETRY_CNT 4 #define THUMBNAIL_TARGETBYTERATE (160*120*2/JPG_COMERESSED_RATIO_5) -#define SCREENNAIL_TARGETBYTERATE (CFG_SCREENNAIL_W*CFG_SCREENNAIL_H*3/(2*JPG_COMERESSED_RATIO_8)) +#define SCREENNAIL_TARGETBYTERATE (CFG_SCREENNAIL_W*CFG_SCREENNAIL_H/(2*JPG_COMERESSED_RATIO_8)) #define PRIMARY_TARGETBYTERATE_UBOUND(TBR) (TBR + (TBR * 15 / 100)) #define PRIMARY_TARGETBYTERATE_LBOUND(TBR) (TBR - (TBR * 15 / 100)) #define JPG_FILE_BUFFER_SIZE(primary, screenail, thumbnail, exif) (primary + screenail + thumbnail + exif*6) diff --git a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c index ec34fd305..035908fb3 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c @@ -29,14 +29,15 @@ #include "UIApp/AppDisp_PipView.h" #include #include "vendor_videocapture.h" -#include "sf_mcu.h" +//#include "sf_mcu.h" #include "IOCfg.h" +#include -#define THIS_DBGLVL 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define THIS_DBGLVL 5 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER #if 1//_TODO #define __MODULE__ UiAppPhoto -#define __DBGLVL__ 2 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER +#define __DBGLVL__ 5 // 0=FATAL, 1=ERR, 2=WRN, 3=UNIT, 4=FUNC, 5=IND, 6=MSG, 7=VALUE, 8=USER #define __DBGFLT__ "*" //*=All, [mark]=CustomClass #include #endif @@ -417,11 +418,12 @@ static UINT32 PhotoExe_GetScreenNailSize(void) UINT32 uiImageSize, ScreenNailSize; UINT32 BitStreamSize; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); ScreenNailSize = CFG_SCREENNAIL_SIZE; uiImageSize = UI_GetData(FL_PHOTO_SIZE); if (uiImageSize < ScreenNailSize) { - BitStreamSize = (sf_get_screen_nail_width(UI_GetData(SendPicSize))) * (sf_get_screen_nail_height(UI_GetData(SendPicSize))) / 2; + BitStreamSize = (sf_get_screen_nail_width(puiPara->SendPicSize)) * (sf_get_screen_nail_height(puiPara->SendPicSize)) / 2; } else { BitStreamSize = 0; } @@ -2368,6 +2370,7 @@ INT32 PhotoExe_OnOpen(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) g_bPhotoOpened = FALSE; localInfo->isStartCapture = FALSE; + //UIMenuStoreInfo *puiPara = sf_ui_para_get(); ImageRatioIdx = GetPhotoSizeRatio(UI_GetData(FL_PHOTO_SIZE)); g_photo_ImageRatioSize = IMAGERATIO_SIZE[ImageRatioIdx]; @@ -2376,7 +2379,7 @@ INT32 PhotoExe_OnOpen(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) FileSys_MakeDir(PHOTO_THUMB_PATH); GOIO_Turn_Onoff_IRCUT(1); - //sf_ir_led_set(((2 == SysGetFlag(NightMode)) ? 2 : 1),SysGetFlag(FlashLed), SysGetFlag(NightMode), 0); + //sf_ir_led_set(((2 == puiPara->NightMode) ? 2 : 1),puiPara->FlashLed, puiPara->NightMode,0); if((0 == access("/mnt/sd/FW98565A.bin", F_OK))){ system("rm -rf /mnt/sd/LD96565A.bin"); system("rm -rf /mnt/sd/FW98565A.bin"); @@ -3134,6 +3137,7 @@ INT32 PhotoExe_OnCaptureStop(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArra Photo_setS2Status(FALSE); ImageApp_Photo_CapStop(); } + return NVTEVT_CONSUME; } @@ -4521,7 +4525,7 @@ static INT32 PhotoExe_Preview_SliceEncode_Init_VF_GFX_Slice( vf_gfx_scale_param->dst_region.w = dst_slice_info.width; vf_gfx_scale_param->dst_region.h = dst_slice_height; vf_gfx_scale_param->dst_img.blk = dst_buffer_info.blk; - vf_gfx_scale_param->quality = HD_GFX_SCALE_QUALITY_BILINEAR; + vf_gfx_scale_param->quality = HD_GFX_SCALE_QUALITY_NULL; offset = video_frame->loff[HD_VIDEO_PINDEX_Y] * slice_idx * src_slice_info.slice_height; @@ -4731,7 +4735,7 @@ ER PhotoExe_Preview_SliceEncode_Scale_YUV( pscale->dst_region.w = pdestwin->w; pscale->dst_region.h = pdestwin->h; pscale->dst_img.blk = mem_info.blk; - pscale->quality = HD_GFX_SCALE_QUALITY_BILINEAR; + pscale->quality = HD_GFX_SCALE_QUALITY_NULL; vf_gfx_scale(pscale, 1); pscale->dst_img.count = 0; @@ -6052,17 +6056,32 @@ INT32 PhotoExe_Preview_SliceEncode_CB3(void* user_data) { char* file_path = ImageApp_Photo_GetLastWriteFilePath(); char tmp[256] = {'\0'}; + char tmp2[64] = {'\0'}; UINT32 length = strlen(file_path); snprintf(tmp, sizeof(tmp), "%s%s", PHOTO_THUMB_PATH, file_path + length - 12); /* DCF 8.3 naming rule */ snprintf(tmp + strlen(tmp) - 3, sizeof(tmp), "%s", "JPG"); - DBG_DUMP("PHOTO THUMB %s\n", tmp); + DBG_DUMP("PHOTO THUMB %s \n %s\n", tmp, file_path); FST_FILE fp = FileSys_OpenFile(tmp, FST_OPEN_ALWAYS | FST_OPEN_WRITE); FileSys_WriteFile(fp, (UINT8*)queue_ele_in->jpg_thumb_addr, &queue_ele_in->jpg_thumb_size, 0, NULL); FileSys_CloseFile(fp); + + memset(tmp, '\0', sizeof(tmp)); + snprintf(tmp, sizeof(tmp), "%s%s", SF_SD_THUMB_PATH, file_path + length - 12); /* DCF 8.3 naming rule */ + snprintf(tmp + strlen(tmp) - 3, sizeof(tmp), "%s", "JPG"); + snprintf(tmp2, sizeof(tmp2), "%s", file_path + length - 12); /* DCF 8.3 naming rule */ + snprintf(tmp2 + strlen(tmp2) - 3, sizeof(tmp2), "%s", "JPG"); + DBG_DUMP("PHOTO THUMB %s \n %s\n", tmp, tmp2); + + sf_file_thumb_cfg_fill(tmp, tmp2, SF_FILE_TYPE_PIC_SMALL); + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + if(SF_CAM_MODE_PHOTO == puiPara->CamMode) + { + sf_share_mem_file_down(0); + } } if(PhotoCapMsgCb){ diff --git a/code/application/source/cardv/SrcCode/UIApp/Setup/UISetup_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Setup/UISetup_Exe.c index 3455e158b..78a018668 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Setup/UISetup_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Setup/UISetup_Exe.c @@ -1212,6 +1212,7 @@ INT32 SetupExe_OnPbRetractLens(VControl *pCtrl, UINT32 paramNum, UINT32 *paramAr INT32 SetupExe_OnSysBootWorkMode(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)///Eric { UINT32 uhSelect = 0; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); DBG_FUNC_BEGIN("\r\n"); if (paramNum > 0) { uhSelect = paramArray[0]; @@ -1219,7 +1220,7 @@ INT32 SetupExe_OnSysBootWorkMode(VControl *pCtrl, UINT32 paramNum, UINT32 *param DBG_IND("uhSelect %d \r\n", uhSelect); - UI_SetData(CamMode, uhSelect); + puiPara->CamMode = uhSelect; DBG_FUNC_END("\r\n"); return NVTEVT_CONSUME; } diff --git a/code/application/source/cardv/SrcCode/UIWnd/ALEXA/UIInfo/UIMovieMapping.c b/code/application/source/cardv/SrcCode/UIWnd/ALEXA/UIInfo/UIMovieMapping.c index bcb9c680e..847721de6 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/ALEXA/UIInfo/UIMovieMapping.c +++ b/code/application/source/cardv/SrcCode/UIWnd/ALEXA/UIInfo/UIMovieMapping.c @@ -147,9 +147,9 @@ static MOVIE_SIZE_ITEM g_MovieSizeTable[] = { }, [MOVIE_SIZE_1920x1080P30] = { - {1920, 1080, 30, 1200 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, + {1920, 1080, 30, 200 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1, 3, 36, 8, -8, 0}, - {1, 4, 30, 1200 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4}, + {1, 4, 30, 200 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4}, }, [MOVIE_SIZE_1280x720P240] = { @@ -171,15 +171,15 @@ static MOVIE_SIZE_ITEM g_MovieSizeTable[] = { }, [MOVIE_SIZE_1280x720P30] = { - {1280, 720, 30, 450 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, + {1280, 720, 30, 100 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1, 3, 36, 8, -8, 0}, - {1, 4, 30, 450 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4}, + {1, 4, 30, 100 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4}, }, [MOVIE_SIZE_848x480P30] = { - {848, 480, 30, 200 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, + {848, 480, 30, 84 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1, 3, 36, 8, -8, 0}, - {1, 4, 30, 200 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4}, + {1, 4, 30, 84 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4}, }, [MOVIE_SIZE_848x480P30_WIFI] = { diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuMode.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuMode.c index 5be7bf940..35e82ecaa 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuMode.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuMode.c @@ -9,9 +9,10 @@ #if(MOVIE_MODE==ENABLE) int MenuCustom_Movie(UINT32 uiMessage, UINT32 uiParam) { + UIMenuStoreInfo *puiPara = sf_ui_para_get(); printf("%s:%d uiParam :%d\n", __FUNCTION__, __LINE__,uiParam); if (System_GetState(SYS_STATE_CURRMODE) != PRIMARY_MODE_MOVIE) { - SysSetFlag(CamMode, SF_CAM_MODE_VIDEO); + puiPara->CamMode = SF_CAM_MODE_VIDEO; Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, PRIMARY_MODE_MOVIE); } else { lv_plugin_scr_close(UIFlowMenuCommonItem, NULL); @@ -20,22 +21,24 @@ int MenuCustom_Movie(UINT32 uiMessage, UINT32 uiParam) } int MenuCustom_Movie_Photo(UINT32 uiMessage, UINT32 uiParam) { + UIMenuStoreInfo *puiPara = sf_ui_para_get(); printf("%s:%d uiParam :%d\n", __FUNCTION__, __LINE__,uiParam); if (System_GetState(SYS_STATE_CURRMODE) != PRIMARY_MODE_PHOTO) { Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, PRIMARY_MODE_PHOTO); } else { lv_plugin_scr_close(UIFlowMenuCommonItem, NULL); } - SysSetFlag(CamMode, SF_CAM_MODE_PHOTO_VIDEO); + puiPara->CamMode = SF_CAM_MODE_PHOTO_VIDEO; return TMF_PROCESSED; } #endif #if(PHOTO_MODE==ENABLE) int MenuCustom_Photo(UINT32 uiMessage, UINT32 uiParam) { + UIMenuStoreInfo *puiPara = sf_ui_para_get(); printf("%s:%d uiParam :%d\n", __FUNCTION__, __LINE__,uiParam); if (System_GetState(SYS_STATE_CURRMODE) != PRIMARY_MODE_PHOTO) { - SysSetFlag(CamMode, SF_CAM_MODE_PHOTO); + puiPara->CamMode = SF_CAM_MODE_PHOTO; Ux_SendEvent(0, NVTEVT_SYSTEM_MODE, 1, PRIMARY_MODE_PHOTO); } else { lv_plugin_scr_close(UIFlowMenuCommonItem, NULL); diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMovie/UIFlowMovieEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMovie/UIFlowMovieEventCallback.c index 9df866679..84fb63585 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMovie/UIFlowMovieEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMovie/UIFlowMovieEventCallback.c @@ -448,6 +448,7 @@ static void set_indev_keypad_group(lv_obj_t* obj) static void UIFlowMovie_ScrOpen(lv_obj_t* obj) { DBG_DUMP("%s\r\n", __func__); + UIMenuStoreInfo *puiPara = sf_ui_para_get(); set_indev_keypad_group(obj); @@ -501,7 +502,7 @@ static void UIFlowMovie_ScrOpen(lv_obj_t* obj) } } //#NT#2018/08/10#KCHong -end - if(SysGetFlag(CamMode) == SF_CAM_MODE_PHOTO_VIDEO) + if(puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) { UIFlowMovie_OnExeRecord(obj); } @@ -1118,6 +1119,7 @@ static void UIFlowMovie_KeyRelease(lv_obj_t* obj, uint32_t key) static void UIFlowMovie_NVTMSG(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* msg) { + UIMenuStoreInfo *puiPara = sf_ui_para_get(); switch(msg->event) { @@ -1136,7 +1138,7 @@ static void UIFlowMovie_NVTMSG(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* m { set_rec_status(false); UIFlowMovie_REC_FINISH(obj,msg); - if(SysGetFlag(CamMode) == SF_CAM_MODE_PHOTO_VIDEO){ + if(puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO){ int iCurrMode = System_GetState(SYS_STATE_CURRMODE); int iNextMode = PRIMARY_MODE_PHOTO; UI_SetData(FL_PreMode, iCurrMode); diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c index 28e91115e..0d9570d01 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c @@ -1026,6 +1026,7 @@ static void task_selftimer_cb(lv_task_t* task) void UIFlowPhoto_UpdateInfo(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* msg) { + UIMenuStoreInfo *puiPara = sf_ui_para_get(); if(msg == NULL){ DBG_ERR("msg is NULL!\r\n"); return; @@ -1065,7 +1066,7 @@ void UIFlowPhoto_UpdateInfo(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* msg) lv_obj_set_hidden(obj, false); UIFlowPhoto_BackPreviewHandle(); - if(SysGetFlag(CamMode) == SF_CAM_MODE_PHOTO_VIDEO){ + if(puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO){ int iCurrMode = System_GetState(SYS_STATE_CURRMODE); int iNextMode = PRIMARY_MODE_MOVIE; UI_SetData(FL_PreMode, iCurrMode); diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h index 1978be37a..c2771a82f 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h @@ -60,19 +60,19 @@ #if (defined(_NVT_ETHREARCAM_TX_)) #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_CLONE_1920x1080P30_1280x720P30 #elif (defined(_NVT_ETHREARCAM_RX_)) -#define DEFAULT_MOVIE_SIZE MOVIE_SIZE_FRONT_1920x1080P30 +#define DEFAULT_MOVIE_SIZE MOVIE_SIZE_DUAL_1920x1080P30_848x480P30//MOVIE_SIZE_FRONT_1920x1080P30 #else #if (MOVIE_AI_DEMO == DISABLE) - #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_FRONT_2560x1440P30 + #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_CLONE_1920x1080P60_640x360P30//MOVIE_SIZE_FRONT_1920x1080P30 #else - #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_FRONT_1920x1080P30 + #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_DUAL_1920x1080P30_848x480P30//MOVIE_SIZE_FRONT_1920x1080P30 #endif #endif #endif -#define DEFAULT_MOVIE_SIZE_DUAL MOVIE_SIZE_FRONT_2560x1440P30 -#define DEFAULT_MOVIE_SIZE_SINGLE MOVIE_SIZE_FRONT_2560x1440P30 +#define DEFAULT_MOVIE_SIZE_DUAL MOVIE_SIZE_CLONE_1920x1080P60_640x360P30//MOVIE_SIZE_FRONT_1920x1080P30//MOVIE_SIZE_FRONT_2560x1440P30 +#define DEFAULT_MOVIE_SIZE_SINGLE MOVIE_SIZE_CLONE_1920x1080P60_640x360P30//MOVIE_SIZE_FRONT_1920x1080P30//MOVIE_SIZE_FRONT_2560x1440P30 #define DEFAULT_MOVIE_QUALITY MOVIE_QUALITY_FINE #define DEFAULT_MOVIE_COLOR MOVIE_COLOR_NORMAL @@ -219,5 +219,6 @@ #define DEFAULT_TIMESEND2_SWITCH SF_OFF #define DEFAULT_TIMESEND3_SWITCH SF_OFF #define DEFAULT_TIMESEND4_SWITCH SF_OFF +#define DEFAULT_FTP_SWITCH SF_FTP_ON #endif diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c index 083ebf663..e0e480f17 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c @@ -498,7 +498,12 @@ void Load_MenuInfo(void) if(Check_OTA() == TRUE){ DBG_DUMP("OTA success, reset system param\n"); + printf("OTA success, reset system param\n"); SysResetFlag(); + if(sf_is_usb_flag()) + { + Save_MenuInfo(); + } return; } @@ -695,10 +700,10 @@ EXIT: } UINT32 sum = MemCheck_CalcCheckSum16Bit((UINT32)tmpInfo, sizeof(UIMenuStoreInfo)); - DBG_DUMP("**************size = %lx / mov size = %u / sum = %lx **************\n", + DBG_DUMP("**************size = %lx / sum = %lx **************\n", sizeof(UIMenuStoreInfo), //((UIMenuStoreInfo*)tmpInfo)->UIParameter[FL_MOVIE_SIZE], - ((UIMenuStoreInfo*)tmpInfo)->UIParameter[CamMode], + //((UIMenuStoreInfo*)tmpInfo)->UIParameter[CamMode], sum); } @@ -1067,9 +1072,9 @@ EXIT: fflush(sys_mtd_fp); UINT32 sum = MemCheck_CalcCheckSum16Bit((UINT32)tmpInfo, sizeof(UIMenuStoreInfo)); - DBG_DUMP("**************size = %lx / CamMode = %u / sum = %lx **************\n", + DBG_DUMP("**************size = %lx / sum = %lx **************\n", sizeof(UIMenuStoreInfo), - ((UIMenuStoreInfo*)tmpInfo)->UIParameter[CamMode], + //((UIMenuStoreInfo*)tmpInfo)->UIParameter[CamMode], sum); sf_share_mem_customer_down(0); } @@ -1342,6 +1347,7 @@ void SysCheckFlag(void) //#2023/02/10#Payton - begin + #if 0 //=====================Sifar============= SysLimitFlag(CamNameSwitch, 0, SF_CAMID_MAX, DEFAULT_SF_CAMID); SysLimitFlag(CamMode, 0, SF_CAM_MODE_MAX, DEFAULT_BOOT_WORK_MODE); @@ -1408,7 +1414,7 @@ void SysCheckFlag(void) SysLimitFlag(TimeSend3Switch, 0, SF_ON_OFF_MAX, DEFAULT_GPS_NUMBER); SysLimitFlag(TimeSend4Switch, 0, SF_ON_OFF_MAX, DEFAULT_GPS_NUMBER); #endif - + #endif printf("%s:%d sifar para e\n", __FUNCTION__, __LINE__); @@ -1609,29 +1615,30 @@ void SysResetFlag(void) //#NT#2023/01/11#Eric - end //#2023/02/10#Payton - begin //=====================Sifar============= - SysSetFlag(CamNameSwitch, DEFAULT_SF_CAMID); - SysSetFlag(CamMode, DEFAULT_BOOT_WORK_MODE); - SysSetFlag(FlashLed, DEFAULT_FLASH_LED); + + puiPara->CamNameSwitch = DEFAULT_SF_CAMID; + puiPara->CamMode = DEFAULT_BOOT_WORK_MODE; + puiPara->FlashLed = DEFAULT_FLASH_LED; //ImgSize - SysSetFlag(NightMode, DEFAULT_NIGHT_MODE); + puiPara->NightMode = DEFAULT_NIGHT_MODE; //Multishot //VideoSize //VideoTimeMenu - SysSetFlag(VideoLenth, DEFAULT_VIDEO_LENTH); - SysSetFlag(PirSwitch, DEFAULT_PIR_SWITCH); - SysSetFlag(PirSensitivity, DEFAULT_PIR_SENSITIVITY); - SysSetFlag(PirDelaySwitch, DEFAULT_PIR_DELAY_SWITCH); + puiPara->VideoLenth = DEFAULT_VIDEO_LENTH; + puiPara->PirSwitch = DEFAULT_PIR_SWITCH; + puiPara->PirSensitivity = DEFAULT_PIR_SENSITIVITY; + puiPara->PirDelaySwitch = DEFAULT_PIR_DELAY_SWITCH; - SysSetFlag(TimelapseSwitch, DEFAULT_TIMELAPSE_SWITCH); - if(SysGetFlag(TimelapseSwitch)) + puiPara->TimelapseSwitch = DEFAULT_TIMELAPSE_SWITCH; + if(puiPara->TimelapseSwitch) { puiPara->TimelapseTime.Hour = 0; puiPara->TimelapseTime.Min = 0; puiPara->TimelapseTime.Sec = 5; } - SysSetFlag(WorkTime1Switch, DEFAULT_WORKTIME_SWITCH); - if(SysGetFlag(WorkTime1Switch)) + puiPara->WorkTime1Switch = DEFAULT_WORKTIME_SWITCH; + if(puiPara->WorkTime1Switch) { puiPara->WorkTime[0].StartTime.Hour = 16; puiPara->WorkTime[0].StartTime.Min = 0; @@ -1639,8 +1646,8 @@ void SysResetFlag(void) puiPara->WorkTime[0].StopTime.Min = 0; } - SysSetFlag(WorkTime2Switch, DEFAULT_WORKTIME_SWITCH); - if(SysGetFlag(WorkTime2Switch)) + puiPara->WorkTime2Switch = DEFAULT_WORKTIME_SWITCH; + if(puiPara->WorkTime2Switch) { puiPara->WorkTime[1].StartTime.Hour = 5; puiPara->WorkTime[1].StartTime.Min = 0; @@ -1648,54 +1655,69 @@ void SysResetFlag(void) puiPara->WorkTime[1].StopTime.Min = 0; } - SysSetFlag(SimAutoSwitch, DEFAULT_SIM_AUTO_SWITCH); - SysSetFlag(SendMaxNum, DEFAULT_SEND_MAX_NUM); - SysSetFlag(GprsMode, DEFAULT_GPRS_MODE); - SysSetFlag(DailyReportSwitch, DEFAULT_DAILY_REPORT_SWITCH); - SysSetFlag(ReDailyReport, DEFAULT_REDAILY_REPORT_SWITCH); - SysSetFlag(SimPinFlag, DEFAULT_SIN_PIN_FLAG); - SysSetFlag(GpsSwitch, DEFAULT_GPS_SWITCH); - SysSetFlag(Language, DEFAULT_LANGUAGE); + puiPara->SimAutoSwitch = DEFAULT_SIM_AUTO_SWITCH; + puiPara->SendMaxNum = DEFAULT_SEND_MAX_NUM; + puiPara->GprsMode = DEFAULT_GPRS_MODE; + puiPara->DailyReportSwitch = DEFAULT_DAILY_REPORT_SWITCH; + puiPara->ReDailyReport = DEFAULT_REDAILY_REPORT_SWITCH; + puiPara->SimPinFlag = DEFAULT_SIN_PIN_FLAG; + puiPara->GpsSwitch = DEFAULT_GPS_SWITCH; + puiPara->Language = DEFAULT_LANGUAGE; /////////////// - SysSetFlag(DateStyle, DEFAULT_DATE_TIME); + puiPara->DateStyle = DEFAULT_DATE_TIME; SysSetFlag(FL_DateFormatIndex, DEFAULT_DATE_TIME); ///////////// - SysSetFlag(StampSwitch, DEFAULT_STAMP_SWITCH); - SysSetFlag(BatteryType, DEFAULT_BATTERY_TYPE); - SysSetFlag(SdLoopSwitch, DEFAULT_SD_LOOP_SWITCH); - SysSetFlag(PwdSwitch, DEFAULT_PWD_SWITCH); - SysSetFlag(SendPhotoSwitch, DEFAULT_SEND_PHOTO_SWITCH); - SysSetFlag(SendVideoSwitch, DEFAULT_SEND_VIDEO_SWITCH); - SysSetFlag(SendPicSize, DEFAULT_SEND_PIC_SIZE); - SysSetFlag(SendMultishotIndex1, DEFAULT_SEND_MULTISHOT_INDEX1); - SysSetFlag(SendMultishotIndex2, DEFAULT_SEND_MULTISHOT_INDEX2); - SysSetFlag(SendMultishotIndex3, DEFAULT_SEND_MULTISHOT_INDEX3); - SysSetFlag(SendMultishotIndex4, DEFAULT_SEND_MULTISHOT_INDEX4); - SysSetFlag(DateAuto, DEFAULT_DATE_AUTO); + puiPara->StampSwitch = DEFAULT_STAMP_SWITCH; + puiPara->BatteryType = DEFAULT_BATTERY_TYPE; + puiPara->SdLoopSwitch = DEFAULT_SD_LOOP_SWITCH; + puiPara->PwdSwitch = DEFAULT_PWD_SWITCH; + puiPara->SendPhotoSwitch = DEFAULT_SEND_PHOTO_SWITCH; + puiPara->SendVideoSwitch = DEFAULT_SEND_VIDEO_SWITCH; + puiPara->SendPicSize = DEFAULT_SEND_PIC_SIZE; + puiPara->SendMultishotIndex1 = DEFAULT_SEND_MULTISHOT_INDEX1; + puiPara->SendMultishotIndex2 = DEFAULT_SEND_MULTISHOT_INDEX2; + puiPara->SendMultishotIndex3 = DEFAULT_SEND_MULTISHOT_INDEX3; + puiPara->SendMultishotIndex4 = DEFAULT_SEND_MULTISHOT_INDEX4; + puiPara->DateAuto = DEFAULT_DATE_AUTO; //NTPZoneS, //NTPZoneH, //NTPZoneM, - SysSetFlag(CamArmDiable, DEFAULT_CAM_ARM_DIABLE); - SysSetFlag(DebugMode, DEFAULT_DEBUG_MODE); - SysSetFlag(AutoOffSwitch, DEFAULT_AUTO_OFF_SWITCH); - SysSetFlag(AutoLogSwitch, DEFAULT_AUTO_LOG_SWITCH); - SysSetFlag(RawSwitch, DEFAULT_RAW_SWITCH); - SysSetFlag(GprsSwitch, DEFAULT_GPRS_SWITCH); - SysSetFlag(GpsSendFlag, DEFAULT_GPS_SEND_FLAG); - SysSetFlag(FristSendDailyAndGps, DEFAULT_FRIST_SEND_DAILY_AND_GPS); - SysSetFlag(NetGeneration, DEFAULT_NET_GENERATION); - SysSetFlag(NeedTimeSyncStartUp, DEFAULT_NEED_TIME_SYNC); - SysSetFlag(NetWorkNeedSearch, DEFAULT_NET_WORK_NEED_SEARCH); - SysSetFlag(QLogSwitch, DEFAULT_QLOG_SWITCH); - SysSetFlag(GpsAntiTheftSwitch, DEFAULT_GPS_ANTI_THEFT_SWITCH); - SysSetFlag(BatteryLogSwitch, DEFAULT_BATTRERY_LOG_SWITCH); + puiPara->CamArmDiable = DEFAULT_CAM_ARM_DIABLE; + puiPara->DebugMode = DEFAULT_DEBUG_MODE; + puiPara->AutoOffSwitch = DEFAULT_AUTO_OFF_SWITCH; + puiPara->AutoLogSwitch = DEFAULT_AUTO_LOG_SWITCH; + puiPara->RawSwitch = DEFAULT_RAW_SWITCH; + puiPara->GprsSwitch = DEFAULT_GPRS_SWITCH; + puiPara->GpsSendFlag = DEFAULT_GPS_SEND_FLAG; + puiPara->FristSendDailyAndGps = DEFAULT_FRIST_SEND_DAILY_AND_GPS; + puiPara->NetGeneration = DEFAULT_NET_GENERATION; + puiPara->NeedTimeSyncStartUp = DEFAULT_NEED_TIME_SYNC; + puiPara->NetWorkNeedSearch = DEFAULT_NET_WORK_NEED_SEARCH; + puiPara->QLogSwitch = DEFAULT_QLOG_SWITCH; + puiPara->GpsAntiTheftSwitch = DEFAULT_GPS_ANTI_THEFT_SWITCH; + puiPara->BatteryLogSwitch = DEFAULT_BATTRERY_LOG_SWITCH; + puiPara->FtpSwitch = DEFAULT_FTP_SWITCH; + + memset(puiPara ->FtpIp,'\0', sizeof(puiPara ->FtpIp)); + memset(puiPara ->FtpPort, '\0', sizeof(puiPara ->FtpPort)); + memset(puiPara ->FtpUsr, '\0', sizeof(puiPara ->FtpUsr)); + memset(puiPara ->FtpPwd,'\0', sizeof(puiPara ->FtpPwd)); + memset(puiPara ->FtpsIp,'\0', sizeof(puiPara ->FtpsIp)); + memset(puiPara ->FtpsPort, '\0', sizeof(puiPara ->FtpsPort)); + memset(puiPara ->FtpsUsr, '\0', sizeof(puiPara ->FtpsUsr)); + memset(puiPara ->FtpsPwd,'\0', sizeof(puiPara ->FtpsPwd)); + + strcpy((char *)puiPara ->FtpIp, "119.23.174.139"); + strcpy((char *)puiPara ->FtpPort, "21"); + strcpy((char *)puiPara ->FtpUsr, "cameraftp"); + strcpy((char *)puiPara ->FtpPwd, "camera123456"); #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) - SysSetFlag(GpsNumber, DEFAULT_GPS_NUMBER); - SysSetFlag(TimeSend1Switch, DEFAULT_TIMESEND1_SWITCH); - SysSetFlag(TimeSend2Switch, DEFAULT_TIMESEND2_SWITCH); - SysSetFlag(TimeSend3Switch, DEFAULT_TIMESEND3_SWITCH); - SysSetFlag(TimeSend4Switch, DEFAULT_TIMESEND4_SWITCH); + puiPara->GpsNumber = DEFAULT_GPS_NUMBER; + puiPara->TimeSend1Switch = DEFAULT_TIMESEND1_SWITCH; + puiPara->TimeSend2Switch = DEFAULT_TIMESEND2_SWITCH; + puiPara->TimeSend3Switch = DEFAULT_TIMESEND3_SWITCH; + puiPara->TimeSend4Switch = DEFAULT_TIMESEND4_SWITCH; sf_set_pir_sensitivity(7); #endif @@ -1710,6 +1732,7 @@ void SysResetFlag(void) void SysExeMenuSettingFuncs(void) { + UIMenuStoreInfo *puiPara = sf_ui_para_get(); #if (PHOTO_MODE==ENABLE) /*--- Photo ---*/ Ux_SendEvent(&CustomPhotoObjCtrl, NVTEVT_EXE_QUALITY, 1, SysGetFlag(FL_QUALITY)); @@ -1780,7 +1803,7 @@ void SysExeMenuSettingFuncs(void) #endif //#NT#2023/01/11#Eric - begin //#NT#Support //=====================Sifar=============///Eric - Ux_SendEvent(&UISetupObjCtrl, NVTEVT_EXE_BOOTWORKMODE, 1, SysGetFlag(CamMode)); + Ux_SendEvent(&UISetupObjCtrl, NVTEVT_EXE_BOOTWORKMODE, 1, puiPara->CamMode); //#NT#2023/01/11#Eric - end } diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h index bbf5f540c..787d4ac87 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h @@ -268,7 +268,7 @@ typedef enum { FL_ETHCAM_TX_IP_ADDR, FL_MOVIE_CODEC_MENU, FL_MOVIE_SENSOR_ROTATE_MENU, - +#if 0 //#2023/02/10#Payton - begin CamNameSwitch,/*ON/OFF ,cam name off*/ CamMode,/* 0 Photo / 1 Video / 2 PIC+Video*/ @@ -341,7 +341,7 @@ typedef enum { SendType, /////////////////////// #endif - +#endif //#2023/02/10#Payton - end FL_IndexInfoMAX @@ -410,6 +410,79 @@ typedef struct _UIMenuUIMenuStoreInfo { SF_PARA_TIME_S TimeSend3; SF_PARA_TIME_S TimeSend4; #endif + //#2023/02/10#Payton - begin + CHAR CamNameSwitch;/*ON/OFF ,cam name off*/ + CHAR CamMode;/* 0 Photo / 1 Video / 2 PIC+Video*/ + CHAR FlashLed;/* 0 High / 1 Low */ + CHAR ImgSize;/* 24M/12M/8M/5M */ + CHAR NightMode;/* Max.Range/Balanced/Min.Blur */ + CHAR Multishot;/*1P/2P/3P/4P/5P*/ + CHAR VideoSize;/*FHD-1080P/HD-720P/WVGA*/ + CHAR VideoTimeMenu;/*5/10/15/20/30/40/50/59*/ + CHAR VideoLenth; + CHAR PirSwitch;/*OFF/ON*/ + CHAR PirSensitivity;/*High/Middle/Low*/ + CHAR PirDelaySwitch;/*OFF/ON*/ + CHAR TimelapseSwitch;/*OFF/ON*/ + CHAR WorkTime1Switch;/*OFF/ON*/ + CHAR WorkTime2Switch;/*OFF/ON*/ + CHAR SimAutoSwitch;/*Auto/Manual*/ + CHAR SendMaxNum;/*Unlimited/1~99*/ + CHAR GprsMode;/*Daily/Instant*/ + CHAR DailyReportSwitch;/*OFF/ON*/ + CHAR ReDailyReport; + CHAR DailyReportTestSwitch; + CHAR SimPinFlag;/*ON*/ + CHAR GpsSwitch;/*0:OFF;1:ON*/ + CHAR Language; + CHAR DateStyle;/*YY/MM/DD-(CN) / MM/DD/YY-(US) / DD/MM/YY-(EU)*/ + CHAR StampSwitch;/*0:OFF;1:ON*///FL_DATE_STAMP + CHAR BatteryType;/*Alkaline/NI-MH/LI*/ + CHAR SdLoopSwitch;/*0:OFF;1:ON*/ + CHAR PwdSwitch;/*0:OFF;1:ON*/ + CHAR SendPhotoSwitch;/*0:OFF;1:ON*/ + CHAR SendVideoSwitch;/*0:OFF;1:ON*/ + CHAR SendPicSize;/*Small/Bigger/Original*/ + CHAR SendMultishotIndex1;/*OFF/ON*/ + CHAR SendMultishotIndex2;/*OFF/ON*/ + CHAR SendMultishotIndex3;/*OFF/ON*/ + CHAR SendMultishotIndex4;/*OFF/ON*/ + CHAR SendMultishotIndex5;/*OFF/ON*/ + CHAR DateAuto;/*Auto/Manual*/ + CHAR NTPZoneS; + CHAR NTPZoneH; + CHAR NTPZoneM; + CHAR DigitPirSensitivity;/*9\7\5*/ + CHAR DigitPirCnt; + CHAR DigitPirWindowTime; + CHAR CamArmDiable; + CHAR DebugMode;/*0:OFF;1:ON*/ + CHAR AutoOffSwitch;/*0:OFF;1:ON*/ + CHAR AutoLogSwitch;/*0:OFF;1:ON*/ + CHAR RawSwitch;/*0:OFF;1:ON*/ + //ProfLogSwitch;/*0:OFF;1:ON*/ + CHAR GprsSwitch;/*0:OFF;1:ON*/ + CHAR GpsSendFlag;/*dp need send flag;*/ + CHAR FristSendDailyAndGps; + CHAR NetGeneration;/*0:NO 1:xx 2:2G 3:3G 4:4G*/ + CHAR NeedTimeSyncStartUp; + CHAR NetWorkNeedSearch; + //SmsNumber; + CHAR QLogSwitch;/*0:OFF;1:ON*/ + CHAR GpsAntiTheftSwitch; + CHAR BatteryLogSwitch; + + #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + ////////////S530//////// + CHAR GpsNumber; + CHAR TimeSend1Switch;/*OFF/ON*/ + CHAR TimeSend2Switch;/*OFF/ON*/ + CHAR TimeSend3Switch;/*OFF/ON*/ + CHAR TimeSend4Switch;/*OFF/ON*/ + CHAR SendType; + /////////////////////// + #endif + CHAR CamNameStr[13]; CHAR PwdStr[7]; CHAR Latitude[16]; @@ -431,6 +504,20 @@ typedef struct _UIMenuUIMenuStoreInfo { CHAR AcmPort[5]; CHAR WebIp[70]; CHAR OperatorCode[8]; + CHAR SimIccid[21]; + CHAR ServiceProvider[64]; + UINT8 SimSignal; + UINT8 SimType; + UINT8 FtpSwitch;/*FTP/OFF/FTPS*/ + UINT8 FtpIp[40]; + UINT8 FtpPort[5]; + UINT8 FtpUsr[40]; + UINT8 FtpPwd[20]; + + UINT8 FtpsIp[40]; + UINT8 FtpsPort[5]; + UINT8 FtpsUsr[40]; + UINT8 FtpsPwd[20]; //============Sifar==============///Payton } UIMenuStoreInfo; @@ -1860,6 +1947,14 @@ typedef enum { SF_BATT_LEVEL_TOTAL } SF_BatteryLevel_e; +typedef enum +{ + SF_FTP_ON = 0x00, + SF_FTP_OFF, + SF_FTPS_ON, + SF_FTP_MAX, +} SF_FTP; + extern void Load_SysInfo(void); extern void Save_SysInfo(void); extern void Init_SysInfo(void); diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIMovieMapping.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIMovieMapping.c index da8518ded..c3c03557e 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIMovieMapping.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIMovieMapping.c @@ -147,9 +147,9 @@ static MOVIE_SIZE_ITEM g_MovieSizeTable[] = { }, [MOVIE_SIZE_1920x1080P30] = { - {1920, 1080, 30, 400 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, + {1920, 1080, 30, 262144/* 2M = 2*1024*1024/8 */, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1, 3, 36, 8, -8, 0}, - {1, 4, 30, 400 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4}, + {1, 4, 30, 262144/* 2M = 2*1024*1024/8 */, 15, 26, 15, 50, 26, 15, 50, 0, 1, 8, 4}, }, [MOVIE_SIZE_1280x720P240] = { @@ -171,15 +171,15 @@ static MOVIE_SIZE_ITEM g_MovieSizeTable[] = { }, [MOVIE_SIZE_1280x720P30] = { - {1280, 720, 30, 240 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, + {1280, 720, 30, 131072 /* 1M = 1*1024*1024/8 */, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1, 3, 36, 8, -8, 0}, - {1, 4, 30, 240 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4}, + {1, 4, 30, 131072 /* 1M = 1*1024*1024/8 */, 15, 26, 15, 50, 26, 15, 50, 0, 1, 8, 4}, }, [MOVIE_SIZE_848x480P30] = { - {848, 480, 30, 120 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, + {848, 480, 30, 110100, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1, 3, 36, 8, -8, 0}, - {1, 4, 30, 120 * 1024, 15, 26, 15, 45, 26, 15, 45, 0, 1, 8, 4}, + {1, 4, 30, 110100, 15, 26, 15, 50, 26, 15, 50, 0, 1, 8, 4}, }, [MOVIE_SIZE_848x480P30_WIFI] = { diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIPhotoMapping.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIPhotoMapping.c index eabc5d83d..7a25e17ef 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIPhotoMapping.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIPhotoMapping.c @@ -52,8 +52,12 @@ static PHOTO_SIZE_PARAM g_ScreenNailSizeTable[PHOTO_SIZE_ID_MAX + 2] = { #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_68CS_) {1024, 768, IMAGERATIO_4_3, "0.78M"}, // 0.78M #elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + {1024, 768, IMAGERATIO_4_3, "0.78M"}, // 0.78M {640, 480, IMAGERATIO_4_3, "VGA"}, // VGA #endif + //CFG_SCREENNAIL_W + //CFG_SCREENNAIL_H + //SCREENNAIL_TARGETBYTERATE }; const CHAR *Get_SizeString(UINT32 uiIndex) diff --git a/code/application/source/sf_app/Makefile b/code/application/source/sf_app/Makefile index cd2506f3a..987130de0 100755 --- a/code/application/source/sf_app/Makefile +++ b/code/application/source/sf_app/Makefile @@ -216,6 +216,7 @@ SRC = \ ./code/source/commMng/sf_share_mem.c \ ./code/source/fileMng/cJSON.c \ ./code/source/fileMng/sf_fileMng.c \ + ./code/source/fileMng/sf_file.c \ ./code/source/signatureMng/aos_util.c \ ./code/source/signatureMng/apr_sha1.c \ ./code/source/signatureMng/HMACSHA.c \ @@ -242,6 +243,7 @@ SRC = \ ./code/source/4gMng/sf_http_server.c \ ./code/source/4gMng/sf_module.c \ ./code/source/4gMng/sf_opera_adapt.c \ + ./code/source/4gMng/sf_ftp.c \ ./code/source/dataMng/sf_dataMng.c \ ./code/source/dataMng/sf_transdata1.c \ ./code/source/dataMng/sf_datahttp.c \ @@ -262,13 +264,15 @@ SRC = \ #--------- ENVIRONMENT SETTING -------------------- INCLUDES = -I$(NVT_HDAL_DIR)/include -I$(LIBRARY_DIR)/include -WARNING = -Wall -Wundef -Wsign-compare -Wno-missing-braces -Wstrict-prototypes +WARNING = -Wall -Wundef -Wsign-compare -Wno-missing-braces -Wstrict-prototypes COMPILE_OPTS = $(INCLUDES) -I. -O2 -fPIC -ffunction-sections -fdata-sections CPPFLAGS = CFLAGS = $(PLATFORM_CFLAGS) $(PRJCFG_CFLAGS) C_FLAGS = $(COMPILE_OPTS) $(EXTRA_INCLUDE) $(EXTRA_LIB_DIR) $(EXTRA_LIB) $(CPPFLAGS) $(CFLAGS) $(WARNING) $(C_PREDEFINED) LD_FLAGS = $(EXTRA_LIB_DIR) $(EXTRA_LIB) +MAKEFLAGS += --silent + C_LDFLAGS = \ --sysroot=$(SYSROOT_DIR) \ --eh-frame-hdr \ @@ -312,7 +316,7 @@ $(BIN): $(OBJ) $(OBJCOPY) -R .comment -R .note.ABI-tag -R .gnu.version $@ %.o: %.c $(HEADER) - $(CC) $(C_FLAGS) -c $< -o $@ + $(CC) $(C_FLAGS) -c $< -o $@ clean: rm -vf $(BIN) $(OBJ) $(BIN).sym *.o *.a *.so* diff --git a/code/application/source/sf_app/code/include/sf_commMng.h b/code/application/source/sf_app/code/include/sf_commMng.h index 1e8ee2b43..aa7ec388c 100755 --- a/code/application/source/sf_app/code/include/sf_commMng.h +++ b/code/application/source/sf_app/code/include/sf_commMng.h @@ -20,6 +20,7 @@ SINT32 sf_sem_up(SINT32 semid, SINT32 who); SINT32 sf_sem_deinit(SINT32 semid); SINT32 sf_share_mem_file_init(void); +SINT32 sf_share_mem_file_down(UINT32 to); SINT32 sf_share_mem_file_deinit(void); diff --git a/code/application/source/sf_app/code/include/sf_common.h b/code/application/source/sf_app/code/include/sf_common.h index 7601927f0..6a4d9ba6b 100755 --- a/code/application/source/sf_app/code/include/sf_common.h +++ b/code/application/source/sf_app/code/include/sf_common.h @@ -7,6 +7,60 @@ extern "C" { #endif #endif +#define IS_RELEASE 1 + +#if IS_RELEASE +#define SF_DEBUG_FAST_CAPTURE 0 /*1:ON -> reuse CameraMode:0 Normal; 1 fast capture*/ +#define SF_DEBUG_COLLECT_EXP_AGC 0 +#define SF_DEBUG_EXIF_LOG 0 +#define SF_DEBUG_EXIF_AE_AWB 0 +#define SF_DEBUG_TEMPER_ADC 0 +#define SF_DEBUG_BATTERY_ADC 0 +#define SF_DEBUG_IQ 0 +#define SF_DEBUG_LIGHT_AE 0 +#define SF_TRIGGER_TIME_TEST 0 +#define SF_DEBUG_CAPTURE_MONITOR 0 +#define SF_TEST_QLOG_CERR 0 /*423 and 407 Error saving test.*/ +#define SF_TEST_ERROR_CODE 0 +#define GSM_LOG_ENCODE 1 +#define SF_TEST_COMPRESSED_GRAPH 0 + +#else /*DEBUG INFO*/ +#define SF_DEBUG_FAST_CAPTURE 0 /*1:ON -> reuse CameraMode:0 Normal; 1 fast capture*/ +#define SF_DEBUG_COLLECT_EXP_AGC 0 +#define SF_DEBUG_EXIF_LOG 0 +#define SF_DEBUG_EXIF_AE_AWB 0 +#define SF_DEBUG_TEMPER_ADC 0 +#define SF_DEBUG_BATTERY_ADC 0 +#define SF_DEBUG_IQ 0 +#define SF_DEBUG_LIGHT_AE 0 +#define SF_TRIGGER_TIME_TEST 0 +#define SF_DEBUG_CAPTURE_MONITOR 0 +#define SF_TEST_QLOG_CERR 1/*423 and 407 Error saving test.*/ +#define SF_TEST_ERROR_CODE 0 +#define GSM_LOG_ENCODE 0 +#define SF_BATTERY_TEST 0 + +#define SF_TEST_COMPRESSED_GRAPH 0 +#endif + +#define SF_LOG_HEAD "[%s:%d]" +#define SF_DEBUG_HEAD "SF_DEBUG[%s:%d]" +#define SF_ERROR_HEAD "SF_ERROR[%s:%d]" +#define LOG_END ";\n" + +#define SF_LOG(format, args...) (printf( SF_LOG_HEAD format LOG_END, __FUNCTION__ , __LINE__, ##args)) +#define SF_DEBUG(format, args...) (printf( SF_DEBUG_HEAD format LOG_END, __FUNCTION__ , __LINE__, ##args)) +#define SF_ERROR(format, args...) (printf( SF_ERROR_HEAD format LOG_END, __FUNCTION__ , __LINE__, ##args)) + +/** Return Result Check */ +#define SF_CHECK_RETURN(ret, errcode) \ + do { \ + if (0 > ret) { \ + printf("Error Code: [0x%08X]\n\n", errcode); \ + return errcode; \ + } \ + } while (0) void app_message_recv_start(void); diff --git a/code/application/source/sf_app/code/include/sf_commu_mcu_reg.h b/code/application/source/sf_app/code/include/sf_commu_mcu_reg.h index 1a556d425..82948abb8 100755 --- a/code/application/source/sf_app/code/include/sf_commu_mcu_reg.h +++ b/code/application/source/sf_app/code/include/sf_commu_mcu_reg.h @@ -340,6 +340,11 @@ UINT8 sf_convert_power_on_mode(void); int sf_mcu_init(void); unsigned char sf_mcu_wdg_off(void); void sf_set_module_sleep_flag(UINT8 flag); +int sf_app_while_flag(void); +void sf_set_sim_insert(UINT32 sim); +UINT8 sf_get_signal_ready(void); +void sf_set_sim_pin_flag(UINT8 simPin, UINT8 simPins, UINT8 simPinPuk); +void sf_set_cq_signal(UINT8 csq); extern unsigned short TrigType; diff --git a/code/application/source/sf_app/code/include/sf_datahttp.h b/code/application/source/sf_app/code/include/sf_datahttp.h index 2bb83e75a..f51347de3 100755 --- a/code/application/source/sf_app/code/include/sf_datahttp.h +++ b/code/application/source/sf_app/code/include/sf_datahttp.h @@ -43,7 +43,9 @@ SF_REPORT_FILE_ATTR_S* sf_get_sub_report_file_attr(void); SF_REPORT_FILE_ATTR_S* sf_get_thm_report_file_attr(void); +void sf_get_date(UINT32 second, SF_PARA_TIME_S *ptmx); +UINT32 sf_get_seconds(SF_PARA_TIME_S rtc); #ifdef __cplusplus diff --git a/code/application/source/sf_app/code/include/sf_eg91_sim.h b/code/application/source/sf_app/code/include/sf_eg91_sim.h index 754a741f2..0fa08d866 100755 --- a/code/application/source/sf_app/code/include/sf_eg91_sim.h +++ b/code/application/source/sf_app/code/include/sf_eg91_sim.h @@ -10,6 +10,20 @@ extern "C" { #include "sf_param_common.h" +#define CUSTOM_STR 1 + +#define MODULE_IMEI_LEN 15 +#define MODULE_ICCID_LEN 20 +//500ms * 480 = 240s = 4min +#define SF_QUECTEL_NET_REG_CALLTIME_MAX 480 + +#define SF_NTP_SITE1 "time.windows.com" +#define SF_NTP_SITE2 "time.nist.gov" + +#define APN_4G_USCC "uscc" +#define APN_4G_ATT "nxtgenphone" +#define APN_4G_VERIZON "VZWINTERNET" +#define APN_4G_TMOBBILE "fast.t-mobile.com" #define EG91 "EG91" @@ -93,11 +107,136 @@ typedef enum USBNET_APN_INIT_E USBNET_APN_INIT_END, }USBNET_APN_INIT_e; +typedef enum SF_QUECTEL_NETREG +{ + QUECTEL_NETREG_FRIST = (unsigned char)0x01, + QUECTEL_NETREG_DBGCTL, + QUECTEL_NETREG_QSIMSTAT, + QUECTEL_NETREG_IPREX, + QUECTEL_NETREG_QURCCFG, + QUECTEL_NETREG_QCFG_NTP, + QUECTEL_NETREG_QCFG_RISIGNALTYPE, + QUECTEL_NETREG_QCFG_URC, + QUECTEL_NETREG_QNVW, + QUECTEL_NETREG_QLWCFG_URC, + QUECTEL_NETREG_QLWCFG_STARTUP, + QUECTEL_NETREG_GSN, + QUECTEL_NETREG_ATI, + QUECTEL_NETREG_QFLST, + QUECTEL_NETREG_QGMR, + QUECTEL_NETREG_QFOPEN, + QUECTEL_NETREG_QNVFR, + QUECTEL_NETREG_CPIN, + QUECTEL_NETREG_READY, + QUECTEL_ATCPIN1, + QUECTEL_ATCPIN2, + QUECTEL_NETREG_QNVFW, + QUECTEL_SEARCH_QICSGP1, + QUECTEL_SEARCH_IPV4V6, + QUECTEL_NETREG_QCCID, + QUECTEL_NETREG_CIMI_1, + QUECTEL_NETREG_CGREG, + QUECTEL_NETREG_QICSGP, + QUECTEL_NETREG_CGDCONT, + QUECTEL_NETREG_QPRTPARA, + QUECTEL_NETREG_MODULE_RESTART, + QUECTEL_NETREG_CIMI_2, + QUECTEL_NETREG_QCFG_PDP, + QUECTEL_NETREG_QCFG_WINDOWSIZE_0, + QUECTEL_NETREG_QCFG_WINDOWSIZE_1, + QUECTEL_NETREG_CSQ, + QUECTEL_NETREG_QCSQ, + QUECTEL_NETREG_QNWINFO, + QUECTEL_NETREG_COPS, + QUECTEL_NETREG_ATW, + QUECTEL_NETREG_QNTP, + QUECTEL_NETREG_QLTS, + +}SF_QUECTEL_NETREG_E; + +typedef enum _GPRS_MODULE_ERR_CODE_E{ + GPRS_MODULE_ERROR_OPEN = 1, + GPRS_MODULE_ERROR_WRITE = 2, + GPRS_MODULE_ERROR_READ = 3, + GPRS_MODULE_ERROR_BUTT, +}GPRS_MODULE_ERR_CODE_e; + +#define SF_GPRS_MODULE_ERROR_OPEN SF_ERR_ID(SF_MOD_4G, GPRS_MODULE_ERROR_OPEN) +#define SF_GPRS_MODULE_ERROR_WRITE SF_ERR_ID(SF_MOD_4G, GPRS_MODULE_ERROR_WRITE) +#define SF_GPRS_MODULE_ERROR_READ SF_ERR_ID(SF_MOD_4G, GPRS_MODULE_ERROR_READ) + +typedef enum _SIM_ERR_CODE_E{ + SIM_COM_SUCCEED = 0, + SIM_ERROR_NO_SIGNAL = 1, + SIM_ERROR_NO_SIMCARD = 2, + SIM_ERROR_AT_TIMEOUT = 3, + SIM_ERROR_UTC = 4, + SIM_ERROR_REG_NET = 5, + SIM_ERROR_APN = 6, + SIM_ERROR_IMEI = 7, + SIM_ERROR_PIN = 8, + SIM_ERROR_PIN_PUK = 9, + SIM_ERROR_NTP = 10, + SIM_ERROR_FAILURE = 11, + SIM_ERROR_MEGA = 12, + SIM_ERROR_BUTT, +}SIM_ERR_CODE_e; + + +#define SF_SIM_ERROR_NO_SIGNAL SF_ERR_ID(SF_MOD_SIM, SIM_ERROR_NO_SIGNAL) +#define SF_SIM_ERROR_NO_SIMCARD SF_ERR_ID(SF_MOD_SIM, SIM_ERROR_NO_SIMCARD) +#define SF_SIM_ERROR_AT_TIMEOUT SF_ERR_ID(SF_MOD_SIM, SIM_ERROR_AT_TIMEOUT) +#define SF_SIM_ERROR_UTC SF_ERR_ID(SF_MOD_SIM, SIM_ERROR_UTC) +#define SF_SIM_ERROR_REG_NET SF_ERR_ID(SF_MOD_SIM, SIM_ERROR_REG_NET) +#define SF_SIM_ERROR_APN SF_ERR_ID(SF_MOD_SIM, SIM_ERROR_APN) +#define SF_SIM_ERROR_IMEI SF_ERR_ID(SF_MOD_SIM, SIM_ERROR_IMEI) +#define SF_SIM_ERROR_PIN SF_ERR_ID(SF_MOD_SIM, SIM_ERROR_PIN) +#define SF_SIM_ERROR_PIN_PUK SF_ERR_ID(SF_MOD_SIM, SIM_ERROR_PIN_PUK) +#define SF_SIM_ERROR_NTP SF_ERR_ID(SF_MOD_SIM, SIM_ERROR_NTP) +#define SF_SIM_ERROR_FAILURE SF_ERR_ID(SF_MOD_SIM, SIM_ERROR_FAILURE) +#define SF_SIM_ERROR_MEGA SF_ERR_ID(SF_MOD_SIM, SIM_ERROR_MEGA) + + +typedef enum SF_SIM +{ + SMS_SIM_INIT_READY= (unsigned char)0x01, + SMS_SIM_INIT_ATI, + SMS_SIM_INIT_IPREX, + SMS_SIM_INIT_ATCSUB, + SMS_SIM_INIT_ATCPIN, + SMS_SIM_INIT_ATCPIN1, + SMS_SIM_INIT_ATCPIN2, + SMS_SIM_INIT_CNVW, + SMS_SIM_INIT_ATW, + SMS_SIM_INIT_CICCID, + SMS_SIM_INIT_ATCIMI, + SMS_SIM_INIT_QICSGP, + SMS_SIM_INIT_QICSGP1, + SMS_SIM_INIT_CGREG, + SMS_SIM_INIT_COPS, + SMS_SIM_INIT_CNSMOD, + SMS_SIM_INIT_CPSI, + SMS_SIM_INIT_CSQ, + SMS_SIM_INIT_CCLK, + SMS_SIM_INIT_CNTP, + SMS_SIM_INIT_CNTPTO, + SMS_SIM_INIT_ATCNTP, + SMS_SIM_INIT_ATCNTP1, + SMS_SIM_INIT_NTP_CCLK, + SMS_SIM_INIT_QIDEACT, + SMS_SIM_INIT_CSCLK, + SMS_SIM_INIT_DTRUP, + SMS_SIM_INIT_EXIT, + SMS_SIM_INIT_CFUN, + SMS_SIM_INIT_CIMI, + +}SF_SIM_E; + SINT32 eg91_iccid_get(SF_CHAR *iccid,SF_FN_PARAM_S *pfnParam); SINT32 eg91_qsclk_set(SF_FN_PARAM_S *pfnParam); -SINT32 eg91_other_sim_apn_cfg(SF_PDT_PARAM_STATISTICS_S *pstaticParam); +SINT32 eg91_other_sim_apn_cfg(UIMenuStoreInfo *pstaticParam); SINT32 eg91_sim_init(SF_FN_PARAM_S *pfnParam); @@ -107,6 +246,22 @@ SINT32 eg91_register_net_auto(SF_FN_PARAM_S *pfnParam); SINT32 eg91_usb_net_apn_cfg(SF_FN_PARAM_S *pfnParam); +void sf_set_netsearch_step(UINT8 stepValue); + +UINT8 sf_get_netsearch_step(void); + +SINT32 sf_get_utc(VOID); + +SINT32 sf_get_ntp(SINT32 value); + +UINT8 sf_get_pdp_index(void); + +void sf_custom_str_get(UINT8 *pCustomStr); + +void sf_get_send_video_fname(UINT8 *videoDirKey, UINT8 *videoFname); + +void sf_gsm_para_buff_clear(void); + #ifdef __cplusplus #if __cplusplus } diff --git a/code/application/source/sf_app/code/include/sf_file.h b/code/application/source/sf_app/code/include/sf_file.h new file mode 100644 index 000000000..b84f55037 --- /dev/null +++ b/code/application/source/sf_app/code/include/sf_file.h @@ -0,0 +1,30 @@ +#ifndef _SF_FILE_H_ +#define _SF_FILE_H_ +#ifdef __cplusplus +#if __cplusplus +extern "C" { +#endif +#endif +#include "sf_type.h" +#include "sf_param_common.h" + + + +SINT32 sf_quectel_upload_file_to_module(UINT8 *fileAbsolutePath, UINT8 *uploadFname); + +SINT32 sf_upload_send_files_to_module(UINT8 mode); +UINT8 sf_check_file_video(void); + +UINT8 sf_get_upload_to_module_flag(void); + +void sf_set_upload_to_module_flag(UINT8 Falg); + +#ifdef __cplusplus +#if __cplusplus +} +#endif +#endif + + +#endif + diff --git a/code/application/source/sf_app/code/include/sf_fileMng.h b/code/application/source/sf_app/code/include/sf_fileMng.h index 073b546b3..f55d5f076 100755 --- a/code/application/source/sf_app/code/include/sf_fileMng.h +++ b/code/application/source/sf_app/code/include/sf_fileMng.h @@ -24,6 +24,34 @@ typedef enum sf_SUBSCRIBE_TYPE_E SF_SUBSCRIBE_BUTT, }SF_SUBSCRIBE_TYPE_E; +typedef enum _SF_QUECTEL_UPLOAD +{ + QUECTEL_UPLOAD_FRIST = (unsigned char)0x01, + QUECTEL_UPLOAD_QFLDS, + QUECTEL_UPLOAD_QFLST, + QUECTEL_UPLOAD_QFDEL, + QUECTEL_UPLOAD_QFUPL, + QUECTEL_UPLOAD_END, + +}SF_QUECTEL_UPLOAD_E; + +typedef enum _UPLOAD_ERR_CODE_E{ + UPLOAD_ERROR_AT_TIMEOUT = 1, + UPLOAD_ERROR_AT_ERROR = 2, + UPLOAD_ERROR_OPEN_FAIL = 3, + UPLOAD_ERROR_GET_FSIZE_FAIL = 4, + UPLOAD_ERROR_DATA = 5, + UPLOAD_ERROR_RETRY = 6, + +}UPLOAD_ERR_CODE_e; + +#define SF_UPLOAD_ERROR_AT_TIMEOUT SF_ERR_ID(SF_MOD_UPLOAD, UPLOAD_ERROR_AT_TIMEOUT) +#define SF_UPLOAD_ERROR_AT_ERROR SF_ERR_ID(SF_MOD_UPLOAD, UPLOAD_ERROR_AT_ERROR) +#define SF_UPLOAD_ERROR_OPEN_FAIL SF_ERR_ID(SF_MOD_UPLOAD, UPLOAD_ERROR_OPEN_FAIL) +#define SF_UPLOAD_ERROR_GET_FSIZE_FAIL SF_ERR_ID(SF_MOD_UPLOAD, UPLOAD_ERROR_GET_FSIZE_FAIL) +#define SF_UPLOAD_ERROR_DATA SF_ERR_ID(SF_MOD_UPLOAD, UPLOAD_ERROR_DATA) +#define SF_UPLOAD_ERROR_RETRY SF_ERR_ID(SF_MOD_UPLOAD, UPLOAD_ERROR_RETRY) + SINT32 sf_file_remove(SF_CHAR *fileName); SINT32 sf_file_http_header_add(SF_FILE_ATTR_S *pstFileAttr, SF_PDT_PARAM_STATISTICS_S *pstParam); @@ -41,6 +69,7 @@ SINT32 sf_file_IsExsit(CHAR *fileName); void sf_file_thumb_cfg_fill(char* filepath,char* fileName,SF_FILE_TYPE_E enFileType); void sf_file_thumb_cfg_set(SF_SRCFILE_ATTR_S *pThumbFileCfgl); +void sf_file_thumb_cfg_set_down(SF_SRCFILE_ATTR_S *pSfCustomerPara); void sf_file_thumb_cfg_clear(void); @@ -48,8 +77,6 @@ SF_SRCFILE_ATTR_S* sf_file_thumb_cfg_get(void); SINT32 sf_file_size_get(SF_CHAR *filePath,UINT32 *pFileSize); - - #ifdef __cplusplus #if __cplusplus } diff --git a/code/application/source/sf_app/code/include/sf_ftp.h b/code/application/source/sf_app/code/include/sf_ftp.h new file mode 100644 index 000000000..51c481f74 --- /dev/null +++ b/code/application/source/sf_app/code/include/sf_ftp.h @@ -0,0 +1,143 @@ + +/************************************************************************** + * + * Copyright (c) 2009-2018 by SiFar Technology, Inc. + * + * This software is copyrighted by and is the property of SiFar + * Technology, Inc.. All rights are reserved by SiFar Technology, Inc.. + * This software may only be used in accordance with the corresponding + * license agreement. Any unauthorized use, duplication, distribution, + * or disclosure of this software is expressly forbidden. + * + * This Copyright notice MUST not be removed or modified without prior + * written consent of SiFar Technology, Inc.. + * + * SiFar Technology, Inc. reserves the right to modify this software without notice. + * + * Author: hac + * Ver: 1.0.0 2021.12.13 + * Description: + * +**************************************************************************/ + +#ifndef _SF_FTP_H_ +#define _SF_FTP_H_ + +typedef enum _FTP_SIM_E +{ + FTP_SIM_CGDCONT = 0, + FTP_SIM_QICSGP0, + FTP_SIM_NETOPEN, + FTP_SIM_CFTPSSTART, + FTP_SIM_CFTPSSINGLEIP, + FTP_SIM_QSSLCFG0, + FTP_SIM_QSSLCFG1, + FTP_SIM_QSSLCFG2, + FTP_SIM_QSSLCFG3, + FTP_SIM_QSSLCFG4, + FTP_SIM_QSSLCFG5, + + + FTP_SIM_CCHSTART, + FTP_SIM_CFTPSCFG, + FTP_SIM_CSSLCFG, + FTP_SIM_CFTPLOGIN, + FTP_SIM_CFTPSLOGIN, + FTP_SIM_CFTPSPUTFILE, + FTP_SIM_JPG, + FTP_SIM_CFTPSLOGOUT, + FTP_SIM_CCHSTOP, + FTP_SIM_CFTPSSTOP, + FTP_SIM_NETCLOSE, + FTP_SIM_CFTPSTERM, + FTP_SIM_EXIT, +}FTP_SIM_E; + +typedef enum _FTP_ERR_CODE_E{ + FTP_ERROR_AT_TIMEOUT = 1, + FTP_ERROR_AT_ACTIVE = 2, + FTP_ERROR_OPEN = 3, + FTP_ERROR_OPEN_TIMEOUT = 4, + FTP_ERROR_SEND_TIMEOUT = 5, + FTP_ERROR_SEND_CLOSE = 6, + FTP_ERROR_SEND, + FTP_ERROR_AT_ERROR, + FTP_ERROR_NLST, + FTP_ERROR_GET, + FTP_ERROR_CLOSED, + FTP_ERROR_LOGOUT, + FTP_ERROR_STOP, + FTP_ERROR_START, + FTP_ERROR_CCHSTART, + FTP_ERROR_TERM, + FTP_ERROR_LOGOUT_TIMEOUT, + FTP_ERROR_QIDEACT, + FTP_ERROR_BUTT, +}FTP_ERR_CODE_e; + + +#define SF_FTP_ERROR_AT_TIMEOUT SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_AT_TIMEOUT) +#define SF_FTP_ERROR_AT_ACTIVE SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_AT_ACTIVE) +#define SF_FTP_ERROR_OPEN SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_OPEN) +#define SF_FTP_ERROR_OPEN_TIMEOUT SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_OPEN_TIMEOUT) +#define SF_FTP_ERROR_SEND_TIMEOUT SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_SEND_TIMEOUT) +#define SF_FTP_ERROR_SEND_CLOSE SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_SEND_CLOSE) +#define SF_FTP_ERROR_SEND SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_SEND) +#define SF_FTP_ERROR_AT_ERROR SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_AT_ERROR) +#define SF_FTP_ERROR_NLST SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_NLST) +#define SF_FTP_ERROR_GET SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_GET) +#define SF_FTP_ERROR_CLOSED SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_CLOSED) +#define SF_FTP_ERROR_LOGOUT SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_LOGOUT) +#define SF_FTP_ERROR_STOP SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_STOP) +#define SF_FTP_ERROR_START SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_START) +#define SF_FTP_ERROR_CCHSTART SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_CCHSTART) +#define SF_FTP_ERROR_TERM SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_TERM) +#define SF_FTP_ERROR_LOGOUT_TIMEOUT SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_LOGOUT_TIMEOUT) +#define SF_FTP_ERROR_QIDEACT SF_ERR_ID(SF_MOD_FTP, FTP_ERROR_QIDEACT) + +typedef enum _SEND_ERR_CODE_E{ + SEND_ERROR_SIGNAL = 1, + SEND_ERROR_CREAT_DP_FILE = 2, + SEND_ERROR_CREAT_GPS_FILE= 3, + SEND_ERROR_LOG_NOT_EXIST = 4, + SEND_ERROR_BATCH_PIC_NULL= 5, + SEND_ERROR_BATCH_PIC = 6, + SEND_ERROR_APN_NULL = 7, + SEND_ERROR_FTP_NULL = 8, + SEND_ERROR_REACH_MAX_NUM = 9, + SEND_ERROR_BUTT, +}SEND_ERR_CODE_e; + +#define SF_SEND_ERROR_SIGNAL SF_ERR_ID(SF_MOD_4G_SEND, SEND_ERROR_SIGNAL) +#define SF_SEND_ERROR_CREAT_DP_FILE SF_ERR_ID(SF_MOD_4G_SEND, SEND_ERROR_CREAT_DP_FILE) +#define SF_SEND_ERROR_CREAT_GPS_FILE SF_ERR_ID(SF_MOD_4G_SEND, SEND_ERROR_CREAT_GPS_FILE) +#define SF_SEND_ERROR_LOG_NOT_EXIST SF_ERR_ID(SF_MOD_4G_SEND, SEND_ERROR_LOG_NOT_EXIST) +#define SF_SEND_ERROR_BATCH_PIC_NULL SF_ERR_ID(SF_MOD_4G_SEND, SEND_ERROR_BATCH_PIC_NULL) +#define SF_SEND_ERROR_BATCH_PIC SF_ERR_ID(SF_MOD_4G_SEND, SEND_ERROR_BATCH_PIC) +#define SF_SEND_ERROR_APN_NULL SF_ERR_ID(SF_MOD_4G_SEND, SEND_ERROR_APN_NULL) +#define SF_SEND_ERROR_FTP_NULL SF_ERR_ID(SF_MOD_4G_SEND, SEND_ERROR_FTP_NULL) +#define SF_SEND_ERROR_REACH_MAX_NUM SF_ERR_ID(SF_MOD_4G_SEND, SEND_ERROR_REACH_MAX_NUM) + +typedef struct sf_ftp_send_file +{ + int id;/* id number*/ + int gprs_mode;/* 0 Daily, 1 Instant */ + int size;/* file size*/ + char file_path[64];/* file name */ + char ftp_file_path[64];/* Received name */ + + struct sf_ftp_send_file *next;/* next */ +}sf_ftp_send_file_t; + +SINT32 sf_ftp_config(UINT8 ssl, UINT8 GprsMode, UINT8 timeout); +SINT32 sf_ftp_send(UINT8 *ftpFileName, UINT8 *filePath, UINT8 timeout); +SINT32 sf_ftp_stop(UINT8 ssl, UINT8 GprsMode); +SINT32 sf_pic_send_ftp(void); +SINT32 sf_txt_send_ftp(void); +SINT32 sf_video_send_ftp(void); +SINT32 sf_simcom_ftp_dailyreport_send(void); +SINT32 sf_check_ftp_send(UINT8 mode); +SINT32 sf_simcom_ftp_send(UINT8 mode); + +#endif /*_SF_FTP_H_*/ + diff --git a/code/application/source/sf_app/code/include/sf_keymng.h b/code/application/source/sf_app/code/include/sf_keymng.h index fc9896e36..c5145a68e 100755 --- a/code/application/source/sf_app/code/include/sf_keymng.h +++ b/code/application/source/sf_app/code/include/sf_keymng.h @@ -20,6 +20,7 @@ typedef enum sf_KEY_PIN_E SF_KEY_PIN_FORMAT = 66, SF_KEY_PIN_DATAREADY = 6, SF_KEY_PIN_FILESTATUS = 128,/*virtual key*/ + SF_KEY_PIN_AOTU_MODE_POWOFF, } SF_KEY_PIN_E; typedef enum sf_KEY_TYPE_E { diff --git a/code/application/source/sf_app/code/include/sf_ledmng.h b/code/application/source/sf_app/code/include/sf_ledmng.h index 94e75db14..1423bc780 100755 --- a/code/application/source/sf_app/code/include/sf_ledmng.h +++ b/code/application/source/sf_app/code/include/sf_ledmng.h @@ -226,6 +226,7 @@ UINT8 sf_led_set(LedId_t ledId, Ledstate_t ledstate); Ledstate_t sf_led_get(LedId_t ledId); void sf_sys_status_led_set(LedSysState_t ledSysStateId); void sf_trigger_time_led_cb(UINT32 cnt); +void sf_led_stop(void); diff --git a/code/application/source/sf_app/code/include/sf_message_queue.h b/code/application/source/sf_app/code/include/sf_message_queue.h index 57b5cf95a..f4a64316d 100755 --- a/code/application/source/sf_app/code/include/sf_message_queue.h +++ b/code/application/source/sf_app/code/include/sf_message_queue.h @@ -18,6 +18,9 @@ SINT32 sf_com_message_cardv_init(void); SINT32 sf_com_message_send_to_cardv(SF_MESSAGE_BUF_S *pMessageBuf); SINT32 sf_com_message_recv_from_cardv(SF_MESSAGE_BUF_S *pMessageBuf); +BOOL sf_system_check_cardv(void); +BOOL sf_system_cardv_wait_done(void); + #ifdef __cplusplus #if __cplusplus } diff --git a/code/application/source/sf_app/code/include/sf_opera_adapt.h b/code/application/source/sf_app/code/include/sf_opera_adapt.h index 3170b5f6f..393267306 100755 --- a/code/application/source/sf_app/code/include/sf_opera_adapt.h +++ b/code/application/source/sf_app/code/include/sf_opera_adapt.h @@ -28,7 +28,7 @@ extern "C" { #include "sf_param_common.h" #include "sf_module.h" -UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTICS_S *sim_info_t); +UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, UIMenuStoreInfo *sim_info_t); #ifdef __cplusplus #if __cplusplus } diff --git a/code/application/source/sf_app/code/include/sf_param_enum.h b/code/application/source/sf_app/code/include/sf_param_enum.h index d826ae439..715fe8574 100755 --- a/code/application/source/sf_app/code/include/sf_param_enum.h +++ b/code/application/source/sf_app/code/include/sf_param_enum.h @@ -175,6 +175,21 @@ extern "C" { #define SF_DCF_FILE_NAME_PREFIX "SYEW" #endif +#define GPRS_INFO_LINE_MAX 512 +#define MAX_CALL_TIMES 100 +#define SF_SD_DISK "A:" +#define SF_DCIM_DIR SF_SD_DISK"\\DCIM" +#define SF_THUMB_DIR SF_SD_DISK"\\DCIM\\THUMB" +#define SF_THUMB_SMALL_DIR SF_SD_DISK"\\DCIM\\THUMB\\small" +#define SF_THUMB_BIG_DIR SF_SD_DISK"\\DCIM\\THUMB\\big" +#define SF_THUMB_VIDEO_DIR SF_SD_DISK"\\DCIM\\THUMB\\video" +#define DCF_DIR_FREE_CHAR "MEDIA" + +#define SF_TRUE 1 +#define SF_FALSE 0 + +#define SF_AUTO 0 +#define SF_MANUAL 1 @@ -196,8 +211,10 @@ extern "C" { #define SF_ERR_ID(module, err) ((SINT16)(((module) << 8) | (err))) /** SF Module ID */ typedef enum SF_MOD_e { - - SF_MOD_4G = 1, + SF_MOD_SIM = 1, + SF_MOD_FTP, + SF_MOD_4G, + SF_MOD_4G_SEND, SF_MOD_GPS, SF_MOD_FILE, SF_MOD_HTTP, @@ -208,6 +225,7 @@ typedef enum SF_MOD_e { SF_MOD_STORE, SF_MOD_SYS, SF_MOD_APP, + SF_MOD_UPLOAD, SF_MOD_BUTT, } SF_MOD_E; diff --git a/code/application/source/sf_app/code/include/sf_system.h b/code/application/source/sf_app/code/include/sf_system.h index 2f76ca5ae..3dc0bd5f5 100755 --- a/code/application/source/sf_app/code/include/sf_system.h +++ b/code/application/source/sf_app/code/include/sf_system.h @@ -47,7 +47,6 @@ SINT8 app_upgrade_ota_restore_IsRun(void); SINT32 app_preinit(void); - #ifdef __cplusplus #if __cplusplus } diff --git a/code/lib/source/sifar/code/source/module/sf_4G_auto_operation.c b/code/application/source/sf_app/code/source/4gMng/sf_4G_auto_operation.c similarity index 100% rename from code/lib/source/sifar/code/source/module/sf_4G_auto_operation.c rename to code/application/source/sf_app/code/source/4gMng/sf_4G_auto_operation.c diff --git a/code/application/source/sf_app/code/source/4gMng/sf_eg91_sim.c b/code/application/source/sf_app/code/source/4gMng/sf_eg91_sim.c index 27e15f5f0..935d736b3 100755 --- a/code/application/source/sf_app/code/source/4gMng/sf_eg91_sim.c +++ b/code/application/source/sf_app/code/source/4gMng/sf_eg91_sim.c @@ -18,10 +18,22 @@ extern "C" { #include "sf_opera_adapt.h" #include "sf_eg91_sim.h" #include "sf_param_common.h" - +#include "sf_common.h" +#include "sf_commu_mcu_reg.h" +#include "sf_datahttp.h" unsigned long int LocateTime = 0; +char gsmPara[GPRS_INFO_LINE_MAX] = { 0 }; +char logStr[128] = {0}; +UINT8 SimImei[8] = { 0 }; + +UINT8 gprs_search_process = GPRS_SEARCH_STEP_IDLE; +extern SF_PARA_TIME_S rtcTime; + +SF_PARA_TIME_S nowDate = { 0, 0, 0, 0, 0, 0}; + + void eg91_mark_time_set(unsigned long int MarkTime) { MLOGD("markTime:%ld\n", MarkTime); @@ -30,7 +42,8 @@ void eg91_mark_time_set(unsigned long int MarkTime) static void eg91_parse_module_version_detail(SF_CHAR* pTemp, SF_CHAR *pT1, SF_CHAR *pT2, SF_CHAR *pT4, SF_CHAR *version) { - SF_PDT_PARAM_STATISTICS_S *sim_info_t = sf_statistics_param_get(); + UIMenuStoreInfo *sim_info_t = sf_app_ui_para_get(); + //SF_PDT_PARAM_STATISTICS_S *sim_info_t = sf_statistics_param_get(); SF_CHAR str0[5] = { 0 }; SF_CHAR str1[5] = { 0 }; SF_CHAR str2[5] = { 0 }; @@ -45,11 +58,11 @@ static void eg91_parse_module_version_detail(SF_CHAR* pTemp, SF_CHAR *pT1, SF_CH memcpy(str3, pT1 + 6, 2); //printf("str3 = %s\n", str3); - if(strstr(sim_info_t->ModuleVersion, EG91)) + if(strstr(sim_info_t->ModuleVer, EG91)) { sprintf(str0, "%s", "91"); } - else if(strstr(sim_info_t->ModuleVersion, EG95)) + else if(strstr(sim_info_t->ModuleVer, EG95)) { sprintf(str0, "%s", "95"); } @@ -161,12 +174,12 @@ static SINT32 eg91_module_Polling_Comparison_CIMI(SF_CHAR *operatorName) return SF_SUCCESS; } -SINT32 eg91_other_sim_apn_cfg(SF_PDT_PARAM_STATISTICS_S *pstaticParam) +SINT32 eg91_other_sim_apn_cfg(UIMenuStoreInfo *pstaticParam) { FILE *fp = NULL; SF_CHAR linestr[128] = {0}; - SF_CHAR *pTemp = SF_NULL; - UINT32 enbleValue = 0; + //SF_CHAR *pTemp = SF_NULL; + int enbleValue = 0; fp = fopen(SIM_AUTO_MATCH_FILE_PATH, "r"); if(fp == NULL) @@ -193,8 +206,8 @@ SINT32 eg91_other_sim_apn_cfg(SF_PDT_PARAM_STATISTICS_S *pstaticParam) fgets(linestr, 128, fp); if(strstr(linestr, "4G APN:<") != NULL) { - sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->ApnGPRS); - SLOGD("4G APN:<%s>\n", pstaticParam->ApnGPRS); + sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->Sim4gApn); + SLOGD("4G APN:<%s>\n", pstaticParam->Sim4gApn); } if(feof(fp)) { @@ -203,8 +216,8 @@ SINT32 eg91_other_sim_apn_cfg(SF_PDT_PARAM_STATISTICS_S *pstaticParam) } fgets(linestr, 128, fp); if(strstr(linestr, "4G UserName:<") != NULL) { - sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->ApnUsername); - SLOGD("4G UserName:<%s>\n", pstaticParam->ApnUsername); + sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->Sim4gUsr); + SLOGD("4G UserName:<%s>\n", pstaticParam->Sim4gUsr); } if(feof(fp)) { @@ -213,8 +226,8 @@ SINT32 eg91_other_sim_apn_cfg(SF_PDT_PARAM_STATISTICS_S *pstaticParam) } fgets(linestr, 128, fp); if(strstr(linestr, "4G Password:<") != NULL) { - sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->ApnPassword); - SLOGD("4G Password:<%s>\n", pstaticParam->ApnPassword); + sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->Sim4gPwd); + SLOGD("4G Password:<%s>\n", pstaticParam->Sim4gPwd); } if(feof(fp)) { @@ -223,8 +236,8 @@ SINT32 eg91_other_sim_apn_cfg(SF_PDT_PARAM_STATISTICS_S *pstaticParam) } fgets(linestr, 128, fp); if(strstr(linestr, "MMSC:<") != NULL) { - sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->MMSC); - SLOGD("MMSC:<%s>\n", pstaticParam->MMSC); + sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->MmsMmsc); + SLOGD("MMSC:<%s>\n", pstaticParam->MmsMmsc); } if(feof(fp)) { @@ -233,8 +246,8 @@ SINT32 eg91_other_sim_apn_cfg(SF_PDT_PARAM_STATISTICS_S *pstaticParam) } fgets(linestr, 128, fp); if(strstr(linestr, "MMS APN:<") != NULL) { - sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->MMSAPN); - SLOGD("MMS APN:<%s>\n", pstaticParam->MMSAPN); + sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->MmsApn); + SLOGD("MMS APN:<%s>\n", pstaticParam->MmsApn); } if(feof(fp)) { @@ -243,8 +256,8 @@ SINT32 eg91_other_sim_apn_cfg(SF_PDT_PARAM_STATISTICS_S *pstaticParam) } fgets(linestr, 128, fp); if(strstr(linestr, "Proxy:<") != NULL) { - sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->Proxy); - SLOGD("Proxy:<%s>\n", pstaticParam->Proxy); + sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->MmsProxy); + SLOGD("Proxy:<%s>\n", pstaticParam->MmsProxy); } if(feof(fp)) { @@ -253,8 +266,8 @@ SINT32 eg91_other_sim_apn_cfg(SF_PDT_PARAM_STATISTICS_S *pstaticParam) } fgets(linestr, 128, fp); if(strstr(linestr, "Port:<") != NULL) { - sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->Port); - SLOGD("Port:<%s>\n", pstaticParam->Port); + sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->MmsPort); + SLOGD("Port:<%s>\n", pstaticParam->MmsPort); } if(feof(fp)) { @@ -263,8 +276,8 @@ SINT32 eg91_other_sim_apn_cfg(SF_PDT_PARAM_STATISTICS_S *pstaticParam) } fgets(linestr, 128, fp); if(strstr(linestr, "UserName:<") != NULL) { - sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->UserName); - SLOGD("UserName:<%s>\n", pstaticParam->UserName); + sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->MmsUsr); + SLOGD("UserName:<%s>\n", pstaticParam->MmsUsr); } if(feof(fp)) { @@ -273,8 +286,8 @@ SINT32 eg91_other_sim_apn_cfg(SF_PDT_PARAM_STATISTICS_S *pstaticParam) } fgets(linestr, 128, fp); if(strstr(linestr, "Password:<") != NULL) { - sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->Password); - SLOGD("Password:<%s>\n", pstaticParam->Password); + sscanf(linestr, "%*[^<]<%[^>]",pstaticParam->MmsPwd); + SLOGD("Password:<%s>\n", pstaticParam->MmsPwd); } fclose(fp); @@ -362,7 +375,7 @@ SINT32 eg91_qsclk_set(SF_FN_PARAM_S *pfnParam) { case SIM_SLEEP_FIRST: { - SF_PDT_PARAM_CFG_S *pstParam = pfnParam->pstParam; + //SF_PDT_PARAM_CFG_S *pstParam = pfnParam->pstParam; if(sf_poweron_type_get() != SF_MCU_STARTUP_RESET && sf_poweron_type_get() != SF_MCU_STARTUP_DP ) enMmcLocation = SIM_SLEEP_QSCLK; @@ -424,13 +437,13 @@ SINT32 eg91_usb_net_apn_cfg(SF_FN_PARAM_S *pfnParam) UINT16 count = 0; SINT16 ret = SF_SUCCESS; SINT16 ret1 = SF_SUCCESS; - SINT32 fd = 0; - int retryTime = 0; + //SINT32 fd = 0; + //int retryTime = 0; SF_CHAR ttyData[SF_TTYUSB_RECV_MAX] = { 0 }; UINT8 sts = 1; USBNET_APN_INIT_e enMmcLocation; enMmcLocation = USBNET_APN_INIT_FIRST; - SF_PDT_PARAM_STATISTICS_S *pStaticParam = pfnParam->pstaticParam; + UIMenuStoreInfo *pStaticParam = pfnParam->pstaticParam; @@ -465,23 +478,23 @@ SINT32 eg91_usb_net_apn_cfg(SF_FN_PARAM_S *pfnParam) switch (enMmcLocation) { case USBNET_APN_INIT_FIRST: - SLOGD("ApnGPRS:%s\n", pStaticParam->ApnGPRS); - /*if(strstr(sfPara->ApnGPRS, V_MODULE_APN)) + SLOGD("Sim4gApn:%s\n", pStaticParam->Sim4gApn); + /*if(strstr(sfPara->Sim4gApn, V_MODULE_APN)) { sprintf(ttyData, "AT+QICSGP=%d\r", V_PDP_INDEX); enMmcLocation = USBNET_APN_QICSGP1; } - else if(strstr(sfPara->ApnGPRS, A_MODULE_APN)) + else if(strstr(sfPara->Sim4gApn, A_MODULE_APN)) { sprintf(ttyData, "AT+QICSGP=%d,1,\"%s\",\"%s\",\"%s\",1\r", A_PDP_INDEX, - sfPara->ApnGPRS, sfPara->ApnUsername, sfPara->ApnPassword); + sfPara->Sim4gApn, sfPara->Sim4gUsr, sfPara->Sim4gPwd); enMmcLocation = USBNET_APN_QICSGP2; } else*/ { sprintf(ttyData, "AT+QICSGP=%d,1,\"%s\",\"%s\",\"%s\",1\r", E_PDP_INDEX, - pStaticParam->ApnGPRS, pStaticParam->ApnUsername, pStaticParam->ApnPassword); + pStaticParam->Sim4gApn, pStaticParam->Sim4gUsr, pStaticParam->Sim4gPwd); enMmcLocation = USBNET_APN_QICSGP2; } @@ -513,7 +526,7 @@ SINT32 eg91_usb_net_apn_cfg(SF_FN_PARAM_S *pfnParam) count = 0; sprintf(ttyData, "AT+QICSGP=%d,1,\"%s\",\"%s\",\"%s\",1\r", V_PDP_INDEX, - pStaticParam->ApnGPRS, pStaticParam->ApnUsername, pStaticParam->ApnPassword); + pStaticParam->Sim4gApn, pStaticParam->Sim4gUsr, pStaticParam->Sim4gPwd); enMmcLocation = USBNET_APN_QICSGP2; } else @@ -536,7 +549,8 @@ SINT32 eg91_usb_net_apn_cfg(SF_FN_PARAM_S *pfnParam) ret = SF_SUCCESS; } break; - + default: + break; } @@ -569,7 +583,8 @@ SINT32 eg91_sim_init(SF_FN_PARAM_S *pfnParam) SF_CHAR lastICCID[21] = { 0 }; SF_CHAR *pStr = NULL; - SF_PDT_PARAM_STATISTICS_S *pStaticParam = pfnParam->pstaticParam; + UIMenuStoreInfo *pStaticParam = pfnParam->pstaticParam;//sf_app_ui_para_get(); + //SF_PDT_PARAM_STATISTICS_S *pStaticParam = pfnParam->pstaticParam; SIM_INIT_E enMmcLocation; enMmcLocation = SIM_INIT_ATE; @@ -600,7 +615,7 @@ SINT32 eg91_sim_init(SF_FN_PARAM_S *pfnParam) if(callTime > 50) { SLOGE("SimCard not inserted.\n"); - memset(&pStaticParam->SimID,'\0',SF_ICCID_MAX_LEN); + memset(&pStaticParam->SimIccid,'\0',SF_ICCID_MAX_LEN); return SF_4G_ERROR_NO_SIMCARD; } else @@ -623,7 +638,7 @@ SINT32 eg91_sim_init(SF_FN_PARAM_S *pfnParam) else if(strstr(ttyData, "+CPIN: NOT INSERTED")) { MLOGE("SimCard not inserted.\n"); - memset(&pStaticParam->SimID,'\0',SF_ICCID_MAX_LEN); + memset(&pStaticParam->SimIccid,'\0',SF_ICCID_MAX_LEN); return SF_4G_ERROR_NO_SIMCARD; } else @@ -743,13 +758,13 @@ SINT32 eg91_sim_init(SF_FN_PARAM_S *pfnParam) if((GsnNow[0] != '\0') && (strncmp(GsnNow, GsnSaved, IMEI_LEN) == 0)) { - if(strcasecmp(GsnNow, pStaticParam->IMEI) != 0)/* Added by MaxLi 2022/03/02--20:40:51*/ + if(strcasecmp(GsnNow, pStaticParam->ModuleImei) != 0)/* Added by MaxLi 2022/03/02--20:40:51*/ { MLOGD("%s\n", GsnNow); - sprintf(pStaticParam->IMEI, "%s", GsnNow); - //LOGI_R("%s", sim_info_t2->IMEI); - MLOGD("imei:%s\n", pStaticParam->IMEI); + sprintf(pStaticParam->ModuleImei, "%s", GsnNow); + //LOGI_R("%s", sim_info_t2->ModuleImei); + MLOGD("imei:%s\n", pStaticParam->ModuleImei); } strcpy(ttyData, "ATI\r"); @@ -777,9 +792,9 @@ SINT32 eg91_sim_init(SF_FN_PARAM_S *pfnParam) strcpy(modulVerStr, pTemp+10); pTemp = strtok(modulVerStr, "OK"); p = strtok(pTemp, "\r\n"); - if(strcasecmp(p, pStaticParam->ModuleVersion) != 0)/* Added by MaxLi 2022/03/02--20:41:28*/ + if(strcasecmp(p, pStaticParam->ModuleVer) != 0)/* Added by MaxLi 2022/03/02--20:41:28*/ { - strcpy(pStaticParam->ModuleVersion, p); + strcpy(pStaticParam->ModuleVer, p); } } @@ -885,12 +900,12 @@ SINT32 eg91_sim_init(SF_FN_PARAM_S *pfnParam) char subTemp[SF_MODULE_VER_MAX_LEN]={0}; eg91_parse_module_version(strstr(ttyData, GPRS_MODULE_TYPE_EG91), subTemp); - if(strcasecmp(subTemp, pStaticParam->ModuleSubversion) != 0)/* Added by MaxLi 2022/03/02--20:41:52*/ + if(strcasecmp(subTemp, pStaticParam->ModuleSubver) != 0)/* Added by MaxLi 2022/03/02--20:41:52*/ { - strcpy(pStaticParam->ModuleSubversion, subTemp); + strcpy(pStaticParam->ModuleSubver, subTemp); } - if(strstr(pStaticParam->ModuleVersion, GPRS_MODULE_TYPE_EG91_V)) + if(strstr(pStaticParam->ModuleVer, GPRS_MODULE_TYPE_EG91_V)) { enMmcLocation = SIM_INIT_QNVFR; sprintf(ttyData, "%s","at+qnvfr=\"/nv/item_files/modem/uim/gstk/feature_bmsk\"\r"); @@ -912,12 +927,12 @@ SINT32 eg91_sim_init(SF_FN_PARAM_S *pfnParam) char subTemp[SF_MODULE_VER_MAX_LEN]={0}; eg91_parse_module_version(strstr(ttyData, GPRS_MODULE_TYPE_EG95), subTemp); - if(strcasecmp(subTemp, pStaticParam->ModuleSubversion) != 0)/* Added by MaxLi 2022/03/02--20:42:15*/ + if(strcasecmp(subTemp, pStaticParam->ModuleSubver) != 0)/* Added by MaxLi 2022/03/02--20:42:15*/ { - strcpy(pStaticParam->ModuleSubversion, subTemp); + strcpy(pStaticParam->ModuleSubver, subTemp); } - if(strstr(pStaticParam->ModuleVersion, GPRS_MODULE_TYPE_EG95_V)) + if(strstr(pStaticParam->ModuleVer, GPRS_MODULE_TYPE_EG95_V)) { enMmcLocation = SIM_INIT_QNVFR; sprintf(ttyData, "%s","at+qnvfr=\"/nv/item_files/modem/uim/gstk/feature_bmsk\"\r"); @@ -939,14 +954,14 @@ SINT32 eg91_sim_init(SF_FN_PARAM_S *pfnParam) if(callTime > 5) { callTime = 0; - if(strstr(pStaticParam->ModuleVersion, GPRS_MODULE_TYPE_EG91_V)) + if(strstr(pStaticParam->ModuleVer, GPRS_MODULE_TYPE_EG91_V)) { enMmcLocation = SIM_INIT_QNVFR; sprintf(ttyData, "%s","at+qnvfr=\"/nv/item_files/modem/uim/gstk/feature_bmsk\"\r"); sf_hal_ttyusb2_write(ttyData, strlen(ttyData)); } - else if(strstr(pStaticParam->ModuleVersion, GPRS_MODULE_TYPE_EG95_V)) + else if(strstr(pStaticParam->ModuleVer, GPRS_MODULE_TYPE_EG95_V)) { enMmcLocation = SIM_INIT_QNVFR; sprintf(ttyData, "%s","at+qnvfr=\"/nv/item_files/modem/uim/gstk/feature_bmsk\"\r"); @@ -980,8 +995,8 @@ SINT32 eg91_sim_init(SF_FN_PARAM_S *pfnParam) if(strncmp(lastICCID, tempICCID, 21) == 0) { - sprintf(pStaticParam->SimID, "%s", tempICCID); - MLOGD("ICCID=%s\n", pStaticParam->SimID); + sprintf(pStaticParam->SimIccid, "%s", tempICCID); + MLOGD("ICCID=%s\n", pStaticParam->SimIccid); callTime=0; #if defined(CFG_SUPPORT_GPS) enMmcLocation = SIM_INIT_QGPSXTRA; @@ -1056,24 +1071,24 @@ SINT32 eg91_sim_init(SF_FN_PARAM_S *pfnParam) MLOGD("operationCode:%s\n", operationCode); sprintf(pStaticParam->OperatorCode, "%s", operationCode); sf_auto_operation_adaptation(pStaticParam->OperatorCode, pStaticParam); - MLOGD("ApnGPRS:%s\n", pStaticParam->ApnGPRS); - if((strstr(pStaticParam->ApnGPRS, APNGPRS_WUYUAN2)) \ - || (strstr(pStaticParam->ApnGPRS, APNGPRS_WUYUAN)))//20408 sifar kpn sim + MLOGD("Sim4gApn:%s\n", pStaticParam->Sim4gApn); + if((strstr(pStaticParam->Sim4gApn, APNGPRS_WUYUAN2)) \ + || (strstr(pStaticParam->Sim4gApn, APNGPRS_WUYUAN)))//20408 sifar kpn sim { pStaticParam->SimType = SF_SIM_MEGA; //1. mega sim,set pdp 1 apn ret = eg91_module_Polling_Comparison_CIMI(operationCode);//mega sim,recorde sim operation code enMmcLocation = SIM_INIT_END; - sprintf(ttyData,"AT+CGDCONT=1,\"IPV4V6\",\"%s\"\r", pStaticParam->ApnGPRS); + sprintf(ttyData,"AT+CGDCONT=1,\"IPV4V6\",\"%s\"\r", pStaticParam->Sim4gApn); sf_hal_ttyusb2_write(ttyData, strlen(ttyData)); } - else if(strstr(pStaticParam->ApnGPRS, APNGPRSTEMP)) + else if(strstr(pStaticParam->Sim4gApn, APNGPRSTEMP)) { #if defined(CFG_SUPPORT_OTHER_SIM) - MLOGD("CFG_SUPPORT_OTHER_SIM-ApnGPRS:%s\n", pStaticParam->ApnGPRS); + MLOGD("CFG_SUPPORT_OTHER_SIM-Sim4gApn:%s\n", pStaticParam->Sim4gApn); #endif - pStaticParam->SimType = SF_SIM_MEGA_IOT; + //pStaticParam->SimType = SF_SIM_MEGA_IOT; enMmcLocation = SIM_INIT_END; sprintf(ttyData,"AT+CGDCONT=1,\"IPV4V6\",\"\"\r"); sf_hal_ttyusb2_write(ttyData, strlen(ttyData)); @@ -1086,12 +1101,12 @@ SINT32 eg91_sim_init(SF_FN_PARAM_S *pfnParam) pStaticParam->SimType = SF_SIM_OTHER; //2.other sim: version sim - if(strstr(pStaticParam->ApnGPRS, V_MODULE_APN)) + if(strstr(pStaticParam->Sim4gApn, V_MODULE_APN)) { enMmcLocation = SIM_INIT_CGDCONT_1; sprintf(ttyData,"%s","AT+QICSGP=1\r"); } - else if(strstr(pStaticParam->ApnGPRS, A_MODULE_APN)) + else if(strstr(pStaticParam->Sim4gApn, A_MODULE_APN)) { enMmcLocation = SIM_INIT_CGDCONT_2; sprintf(ttyData,"%s","AT+QICSGP=1\r"); @@ -1140,7 +1155,7 @@ SINT32 eg91_sim_init(SF_FN_PARAM_S *pfnParam) if(strncmp(pTemp, "\"ims\"", 5) == 0) { - if((strstr(pStaticParam->ModuleVersion, GPRS_MODULE_TYPE_EG91_V)) || (strstr(pStaticParam->ModuleVersion, GPRS_MODULE_TYPE_EG95_V))) + if((strstr(pStaticParam->ModuleVer, GPRS_MODULE_TYPE_EG91_V)) || (strstr(pStaticParam->ModuleVer, GPRS_MODULE_TYPE_EG95_V))) { enMmcLocation = SIM_INIT_END; sprintf(ttyData,"%s","AT\r"); @@ -1314,7 +1329,7 @@ SINT32 eg91_register_net_auto(SF_FN_PARAM_S *pfnParam) #if SF_QLOG_ENABLE SF_PDT_PARAM_CFG_S *pstparam = pfnParam->pstParam; #endif - SF_PDT_PARAM_STATISTICS_S *pStaticParam = pfnParam->pstaticParam; + UIMenuStoreInfo *pStaticParam = pfnParam->pstaticParam; while(sts) @@ -1368,14 +1383,14 @@ SINT32 eg91_register_net_auto(SF_FN_PARAM_S *pfnParam) { count = 0; callTime = 0; - if(strstr(pStaticParam->ApnGPRS, V_MODULE_APN)) + if(strstr(pStaticParam->Sim4gApn, V_MODULE_APN)) { enMmcLocation = SIM_REG_NET_CGREG; sprintf(ttyData, "AT+CGREG?\r"); sf_hal_ttyusb2_write(ttyData, strlen(ttyData)); } - else if(strstr(pStaticParam->ApnGPRS, A_MODULE_APN)) + else if(strstr(pStaticParam->Sim4gApn, A_MODULE_APN)) { enMmcLocation = SIM_REG_NET_FIRST_2; sprintf(ttyData,"%s","AT+CGDCONT=1,\"IPV4V6\",\"nxtgenphone\"\r"); @@ -1385,8 +1400,8 @@ SINT32 eg91_register_net_auto(SF_FN_PARAM_S *pfnParam) else { enMmcLocation = SIM_REG_NET_FIRST_2; - if(strstr(pStaticParam->ApnGPRS, APNGPRS_WUYUAN) || strstr(pStaticParam->ApnGPRS, APNGPRS_WUYUAN2)) - sprintf(ttyData,"AT+CGDCONT=1,\"IPV4V6\",\"%s\"\r", pStaticParam->ApnGPRS); + if(strstr(pStaticParam->Sim4gApn, APNGPRS_WUYUAN) || strstr(pStaticParam->Sim4gApn, APNGPRS_WUYUAN2)) + sprintf(ttyData,"AT+CGDCONT=1,\"IPV4V6\",\"%s\"\r", pStaticParam->Sim4gApn); else sprintf(ttyData,"%s","AT+CGDCONT=1,\"IPV4V6\",\"\"\r"); sf_hal_ttyusb2_write(ttyData, strlen(ttyData)); @@ -1397,14 +1412,14 @@ SINT32 eg91_register_net_auto(SF_FN_PARAM_S *pfnParam) #else count = 0; callTime = 0; - if(strstr(pStaticParam->ApnGPRS, V_MODULE_APN)) + if(strstr(pStaticParam->Sim4gApn, V_MODULE_APN)) { enMmcLocation = SIM_REG_NET_CGREG; sprintf(ttyData, "AT+CGREG?\r"); sf_hal_ttyusb2_write(ttyData, strlen(ttyData)); } - else if(strstr(pStaticParam->ApnGPRS, A_MODULE_APN)) + else if(strstr(pStaticParam->Sim4gApn, A_MODULE_APN)) { enMmcLocation = SIM_REG_NET_FIRST_2; sprintf(ttyData,"%s","AT+CGDCONT=1,\"IPV4V6\",\"nxtgenphone\"\r"); @@ -1414,8 +1429,8 @@ SINT32 eg91_register_net_auto(SF_FN_PARAM_S *pfnParam) else { enMmcLocation = SIM_REG_NET_FIRST_2; - if(strstr(pStaticParam->ApnGPRS, APNGPRS_WUYUAN) || strstr(pStaticParam->ApnGPRS, APNGPRS_WUYUAN2)) - sprintf(ttyData,"AT+CGDCONT=1,\"IPV4V6\",\"%s\"\r", pStaticParam->ApnGPRS); + if(strstr(pStaticParam->Sim4gApn, APNGPRS_WUYUAN) || strstr(pStaticParam->Sim4gApn, APNGPRS_WUYUAN2)) + sprintf(ttyData,"AT+CGDCONT=1,\"IPV4V6\",\"%s\"\r", pStaticParam->Sim4gApn); else sprintf(ttyData,"%s","AT+CGDCONT=1,\"IPV4V6\",\"\"\r"); sf_hal_ttyusb2_write(ttyData, strlen(ttyData)); @@ -1461,8 +1476,8 @@ SINT32 eg91_register_net_auto(SF_FN_PARAM_S *pfnParam) sprintf(pStaticParam->OperatorCode, "%s", operationCode); sf_auto_operation_adaptation(pStaticParam->OperatorCode, pStaticParam); - if((strstr(pStaticParam->ApnGPRS, APNGPRS_WUYUAN2)) \ - || (strstr(pStaticParam->ApnGPRS, APNGPRS_WUYUAN))) + if((strstr(pStaticParam->Sim4gApn, APNGPRS_WUYUAN2)) \ + || (strstr(pStaticParam->Sim4gApn, APNGPRS_WUYUAN))) { //other sim card module E // enMmcLocation = SIM_REG_NET_FIRST_2; @@ -1510,14 +1525,14 @@ SINT32 eg91_register_net_auto(SF_FN_PARAM_S *pfnParam) { count = 0; callTime = 0; - if(strstr(pStaticParam->ApnGPRS, V_MODULE_APN)) + if(strstr(pStaticParam->Sim4gApn, V_MODULE_APN)) { enMmcLocation = SIM_REG_NET_CGREG; sprintf(ttyData, "AT+CGREG?\r"); sf_hal_ttyusb2_write(ttyData, strlen(ttyData)); } - else if(strstr(pStaticParam->ApnGPRS, A_MODULE_APN)) + else if(strstr(pStaticParam->Sim4gApn, A_MODULE_APN)) { enMmcLocation = SIM_REG_NET_FIRST_2; sprintf(ttyData,"%s","AT+CGDCONT=1,\"IPV4V6\",\"nxtgenphone\"\r"); @@ -1604,7 +1619,7 @@ SINT32 eg91_register_net_auto(SF_FN_PARAM_S *pfnParam) } else if(callTime > 180) { - if((!strstr(pStaticParam->ApnGPRS, APNGPRS_WUYUAN2)) && (!strstr(pStaticParam->ApnGPRS, APNGPRS_WUYUAN))) + if((!strstr(pStaticParam->Sim4gApn, APNGPRS_WUYUAN2)) && (!strstr(pStaticParam->Sim4gApn, APNGPRS_WUYUAN))) { ret = SF_4G_ERROR_REG_NET; MLOGE("Other sim reg net timeout!"); @@ -1627,7 +1642,7 @@ SINT32 eg91_register_net_auto(SF_FN_PARAM_S *pfnParam) SLOGI("%s", ttyData); if(strstr(ttyData, "No Service")) { - pStaticParam->netGeneration = 2; + pStaticParam->NetGeneration = 2; } else if (NULL != strtok(ttyData,"\"")) { @@ -1636,21 +1651,21 @@ SINT32 eg91_register_net_auto(SF_FN_PARAM_S *pfnParam) MLOGD("netStr:%s\n", netStr); if((strstr(netStr,"DD") != NULL)) { - pStaticParam->netGeneration = 4; + pStaticParam->NetGeneration = 4; } else if(strstr(netStr, "CDMA") != NULL || strstr(netStr, "HDR") != NULL \ || strstr(netStr, "HSUPA") != NULL || strstr(netStr, "HSDPA") != NULL \ || strstr(netStr, "HSPA+") != NULL) { - pStaticParam->netGeneration = 3; + pStaticParam->NetGeneration = 3; } else { - pStaticParam->netGeneration = 2; + pStaticParam->NetGeneration = 2; } } - if(pStaticParam->netGeneration == 4)//NetGeneration == 4 + if(pStaticParam->NetGeneration == 4)//NetGeneration == 4 { enMmcLocation = SIM_REG_NET_QCSQ; sprintf(ttyData, "AT+QCSQ\r"); @@ -1695,7 +1710,7 @@ SINT32 eg91_register_net_auto(SF_FN_PARAM_S *pfnParam) pStaticParam->SimSignal = 0; ret = SF_4G_ERROR_NO_SIGNAL; } - MLOGD("apn:%s\n", pStaticParam->ApnGPRS); + MLOGD("apn:%s\n", pStaticParam->Sim4gApn); return SF_SUCCESS; } break; @@ -1733,7 +1748,7 @@ SINT32 eg91_register_net_auto(SF_FN_PARAM_S *pfnParam) { pStaticParam->SimSignal = csq; ret = SF_SUCCESS; - MLOGD("apn:%s\n", pStaticParam->ApnGPRS); + MLOGD("apn:%s\n", pStaticParam->Sim4gApn); return SF_SUCCESS; } } @@ -1784,7 +1799,7 @@ SINT32 eg91_register_net_manual(SF_FN_PARAM_S *pfnParam) SF_CHAR *pTemp = NULL; SIM_REG_NET_e enMmcLocation; enMmcLocation = SIM_REG_NET_FIRST; - SF_PDT_PARAM_STATISTICS_S *pStaticParam = pfnParam->pstaticParam; + UIMenuStoreInfo *pStaticParam = pfnParam->pstaticParam; while(sts) @@ -1821,12 +1836,12 @@ SINT32 eg91_register_net_manual(SF_FN_PARAM_S *pfnParam) sprintf(pStaticParam->OperatorCode, "%s", operationCode); sf_auto_operation_adaptation(pStaticParam->OperatorCode, pStaticParam); - if((strstr(pStaticParam->ApnGPRS, APNGPRS_WUYUAN2)) \ - || (strstr(pStaticParam->ApnGPRS, APNGPRS_WUYUAN)) )//mega sim,use in abord + if((strstr(pStaticParam->Sim4gApn, APNGPRS_WUYUAN2)) \ + || (strstr(pStaticParam->Sim4gApn, APNGPRS_WUYUAN)) )//mega sim,use in abord { enMmcLocation = SIM_REG_NET_FIRST_2; - sprintf(ttyData,"AT+CGDCONT=1,\"IPV4V6\",\"%s\"\r",pStaticParam->ApnGPRS); + sprintf(ttyData,"AT+CGDCONT=1,\"IPV4V6\",\"%s\"\r",pStaticParam->Sim4gApn); //enMmcLocation = SIM_REG_NET_CGREG; //sprintf(ttyData, "AT+CGREG?\r"); sf_hal_ttyusb2_write(ttyData, strlen(ttyData)); @@ -1903,7 +1918,7 @@ SINT32 eg91_register_net_manual(SF_FN_PARAM_S *pfnParam) } else if(callTime > 180) { - if((!strstr(pStaticParam->ApnGPRS, APNGPRS_WUYUAN2)) && (!strstr(pStaticParam->ApnGPRS, APNGPRS_WUYUAN))) + if((!strstr(pStaticParam->Sim4gApn, APNGPRS_WUYUAN2)) && (!strstr(pStaticParam->Sim4gApn, APNGPRS_WUYUAN))) { ret = SF_4G_ERROR_REG_NET; MLOGE("Other sim reg net timeout!"); @@ -1926,7 +1941,7 @@ SINT32 eg91_register_net_manual(SF_FN_PARAM_S *pfnParam) SLOGI("%s", ttyData); if(strstr(ttyData, "No Service")) { - pStaticParam->netGeneration = 2; + pStaticParam->NetGeneration = 2; } else if (NULL != strtok(ttyData,"\"")) { @@ -1935,17 +1950,17 @@ SINT32 eg91_register_net_manual(SF_FN_PARAM_S *pfnParam) MLOGD("netStr:%s\n", netStr); if((strstr(netStr,"DD") != NULL)) { - pStaticParam->netGeneration = 4; + pStaticParam->NetGeneration = 4; } else if(strstr(netStr, "CDMA") != NULL || strstr(netStr, "HDR") != NULL \ || strstr(netStr, "HSUPA") != NULL || strstr(netStr, "HSDPA") != NULL \ || strstr(netStr, "HSPA+") != NULL) { - pStaticParam->netGeneration = 3; + pStaticParam->NetGeneration = 3; } else { - pStaticParam->netGeneration = 2; + pStaticParam->NetGeneration = 2; } } @@ -1969,7 +1984,7 @@ SINT32 eg91_register_net_manual(SF_FN_PARAM_S *pfnParam) printf("cops2 is %s\r\n", pStaticParam->ServiceProvider); } - if(pStaticParam->netGeneration == 4)//NetGeneration == 4 + if(pStaticParam->NetGeneration == 4)//NetGeneration == 4 { enMmcLocation = SIM_REG_NET_QCSQ; sprintf(ttyData, "AT+QCSQ\r"); @@ -2035,7 +2050,7 @@ SINT32 eg91_register_net_manual(SF_FN_PARAM_S *pfnParam) sf_hal_ttyusb2_write(ttyData, strlen(ttyData)); } - //MLOGD("apn:%s\n", sim_info_t->ApnGPRS); + //MLOGD("apn:%s\n", sim_info_t->Sim4gApn); } break; @@ -2073,7 +2088,7 @@ SINT32 eg91_register_net_manual(SF_FN_PARAM_S *pfnParam) pStaticParam->SimSignal = csq; //ret = sf_auto_operation_adaptation(sim_info_t->OperatorCode, sim_info_t); ret = SF_SUCCESS; - MLOGD("apn:%s\n", pStaticParam->ApnGPRS); + MLOGD("apn:%s\n", pStaticParam->Sim4gApn); enMmcLocation = SIM_REG_NET_SAVE; sprintf(ttyData, "AT&W\r"); @@ -2134,6 +2149,1872 @@ SINT32 eg91_register_net_manual(SF_FN_PARAM_S *pfnParam) return ret; } + +/************************************************* + Function: sf_quectel_module_subver_change + Description: change module subver + Input: pTemp + Output: N/A + Return: 0 SUCCESS, 1 error + Others: N/A +*************************************************/ +void sf_quectel_module_subver_change(char *pTemp) +{ + //EUROPE: EG91EXGAR08A07M1G_20.002.20.002 + //AMERICA: EG91NAXDGAR07A01M1G_20.005.20.005 + //AUSTRALIA:EG91AUXGAR08A03M1G_01.002.01.002 + + char *pT1 = NULL; + char *pT2 = NULL; + char *pT3 = NULL; + + UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); + + pT1 = strstr((const char *)pTemp, "FAR"); + + if(pT1 == NULL) + { + pT1 = strstr((const char *)pTemp, "GAR"); + } + + pT2 = strstr((const char *)pTemp, "BETA"); + pT3 = strstr((const char *)pTemp, "_"); + + //SF_LOG("pTemp=%s,pT1=%s,pT2=%s",pTemp,pT1,pT2); + + if(pT1 != NULL) + { + char str1[5] = { 0 }; + char str2[5] = { 0 }; + char str3[5] = { 0 }; + char str4[5] = { 0 }; + char str5[16] = { 0 }; + + memcpy(str1, pTemp + 4, pT1 - pTemp - 4); + memcpy(str2, pT1 + 3, 2); + memcpy(str3, pT1 + 6, 2); + + memset(str5, '\0', sizeof(str5)); + + if(pT3 != NULL) + { + memcpy(str5, pT3, 14); + } + + if(pT2 != NULL) + { + memcpy(str4, pT2 + 4, 4); + //SF_LOG("str1=%s,str2=%s,str3=%s,str4=%s",str1,str2,str3,str4); + sprintf((char *)puiPara->ModuleSubver, "S%sY%sY%sY%sS%s", str1, str2, str3, str4, str5); + } + else + { + sprintf((char *)puiPara->ModuleSubver, "S%sY%sY%sS%s", str1, str2, str3, str5); + } + + SF_DEBUG("ModuleSubver=%s", puiPara->ModuleSubver); + } +} + +/************************************************************ + Function: sf_quectel_module_complete_init + Description: module complete init,for setup/A/8 start mode. + Input: N/A + Output: N/A + Return: 0 SUCCESS, 1 error + Others: N/A +************************************************************/ +SINT32 sf_quectel_module_complete_init(void) +{ + SINT32 ret = SF_SUCCESS; + SF_QUECTEL_NETREG_E eNetRegLocation = QUECTEL_NETREG_FRIST; + UINT16 callTime = 0; + UINT16 time = 0; + UINT32 mm = 0; + SINT32 ttyRet = 0; + UINT8 strSave[21] = { 0 }; + UINT8 strNow[21] = { 0 }; + UINT8 strtmp[12][70] = { { 0 } }; + + char *pTemp = NULL; + char *delim = NULL; + + UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); + + SLOGD(" s"); + + //needRecordLogFlag = 1; + puiPara->NetGeneration = SF_NET_NO; + + while(sf_app_while_flag()) + { + switch(eNetRegLocation) + { + case QUECTEL_NETREG_FRIST: + + if(strstr((const char *)gsmPara, "OK")) + { + eNetRegLocation = QUECTEL_NETREG_GSN; + strcpy(gsmPara, "AT+GSN\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + callTime = 0; + } + else if(strstr((const char *)gsmPara, "CME ERROR: SIM not inserted")) + { + sf_set_sim_insert(0); + ret = SF_SIM_ERROR_NO_SIMCARD; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGD(logStr); + goto SF_MODULE_END; + } + else + { + sf_sleep_ms(800); + strcpy((char *)gsmPara, "ATE1\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + //printf("ttyRet:%d\n", ttyRet); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_NETREG_GSN: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eNetRegLocation, "test"); + #endif + + if(strstr((const char *)gsmPara, "OK")) + { + delim = " \r\n"; + pTemp = strtok((char *)strstr((const char *)gsmPara, "AT+GSN"), delim); + mm = 0; + memset(strtmp, '\0', sizeof(strtmp)); + while((pTemp != NULL) && (mm < 12)) + { + strcpy((char *)strtmp[mm], pTemp); + //printf("---pTemp[%d]:%s\n", mm, pTemp); + mm++; + pTemp = strtok((char *)0, delim); + } + strcpy((char *)strNow, (const char *)strtmp[1]); + SLOGD("strNow=%s,strSave=%s", strNow, strSave); + + if((strNow[0] != '\0') && (strncmp((char *)strNow, (char *)strSave, MODULE_IMEI_LEN) == 0)) + { + if(strcasecmp((const char *)strNow, (const char *)puiPara->ModuleImei) != 0) + { + strncpy((char *)puiPara->ModuleImei, (const char *)strNow, MODULE_IMEI_LEN); + SLOGI(puiPara->ModuleImei); + SF_DEBUG("ModuleImei=%s", puiPara->ModuleImei); + } + + eNetRegLocation = QUECTEL_NETREG_ATI; + strcpy((char *)gsmPara, "ATI\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + callTime = 0; + } + else + { + strcpy((char *)strSave, (const char *)strNow); + memset(strNow, '\0', sizeof(strNow)); + + strcpy((char *)gsmPara, "AT+GSN\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + } + else + { + callTime++; + + if(callTime > 10) + { + ret = SF_SIM_ERROR_AT_TIMEOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_MODULE_END; + } + } + + break; + + case QUECTEL_NETREG_ATI: + + if(strstr((const char *)gsmPara, "OK")) + { + delim = " \r\n"; + pTemp = strtok((char *)strstr((const char *)gsmPara, "Revision"), delim); + mm = 0; + memset(strtmp, '\0', sizeof(strtmp)); + while((pTemp != NULL) && (mm < 12)) + { + strcpy((char *)strtmp[mm], pTemp); + //printf("---pTemp[%d]:%s\n", mm, pTemp); + mm++; + pTemp = strtok((char *)0, delim); + } + + strcpy((char *)puiPara->ModuleVer, (const char *)strtmp[1]); + SF_DEBUG("ModuleVer=%s", puiPara->ModuleVer); + + eNetRegLocation = QUECTEL_NETREG_QGMR; + strcpy((char *)gsmPara, "AT+QGMR\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + callTime = 0; + } + else + { + callTime++; + + if(callTime > 10) + { + ret = SF_SIM_ERROR_AT_TIMEOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_MODULE_END; + } + + strcpy((char *)gsmPara, "ATI\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_NETREG_QGMR: + + if(strstr((const char *)gsmPara, "OK")) + { + pTemp = strstr((const char *)gsmPara, EG91); + + if(pTemp != NULL) + { + sf_quectel_module_subver_change(pTemp); + SLOGI(puiPara->ModuleSubver); + } + + eNetRegLocation = QUECTEL_NETREG_QSIMSTAT; + strcpy((char *)gsmPara, "AT+QSIMSTAT?\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + else + { + callTime++; + + if(callTime > 10) + { + ret = SF_SIM_ERROR_AT_TIMEOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_MODULE_END; + } + } + + break; + + case QUECTEL_NETREG_QSIMSTAT: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eNetRegLocation, "+QSIMSTAT: 0,0"); + #endif + + if((strstr((const char *)gsmPara, "+QSIMSTAT: 0,0")) || (strstr((const char *)gsmPara, "+CPIN: NOT INSERTED"))) + { + callTime++; + + if(callTime >= 75) + { + ret = SF_SIM_ERROR_NO_SIMCARD; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]ErrorCode=0x%08x,Simcard Not Inserted.", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + SF_ERROR("ErrorCode=0x%08x,Simcard Not Inserted.", ret); + sf_set_sim_insert(0); + sf_set_cq_signal(0); + SLOGD("AT+QSIMSTAT? Timeout"); + goto SF_MODULE_END; + } + + strcpy((char *)gsmPara, "AT+QSIMSTAT?\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + break; + } + else if(strstr((const char *)gsmPara, "+QSIMSTAT: 0,1")) + { + eNetRegLocation = QUECTEL_NETREG_DBGCTL; + + if(puiPara->QLogSwitch) + { + sprintf((char *)gsmPara, "at+qcfg=\"dbgctl\",0\r"); + } + else + { + sprintf((char *)gsmPara, "at+qcfg=\"dbgctl\",1\r"); + } + + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + callTime = 0; + } + else if((strstr((const char *)gsmPara, "+QSIMSTAT: 0,2"))) + { + callTime++; + + if(callTime >= 75) + { + ret = SF_SIM_ERROR_AT_TIMEOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]ErrorCode=0x%08x,Unknown, before (U)SIM initialization.", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + SF_ERROR("ErrorCode=0x%08x,Unknown, before (U)SIM initialization.", ret); + sf_set_sim_insert(0); + sf_set_cq_signal(0); + SLOGD("AT+QSIMSTAT? Timeout"); + goto SF_MODULE_END; + } + + strcpy((char *)gsmPara, "AT+QSIMSTAT?\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + break; + } + else + { + callTime++; + + if(callTime > 10) + { + ret = SF_SIM_ERROR_AT_TIMEOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_MODULE_END; + } + + strcpy((char *)gsmPara, "AT+QSIMSTAT?\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_NETREG_DBGCTL: + eNetRegLocation = QUECTEL_NETREG_QCFG_NTP; + strcpy((char *)gsmPara, "AT+QCFG=\"ntp\",3,5\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + callTime = 0; + + break; + + case QUECTEL_NETREG_QCFG_NTP: + + if(strstr((const char *)gsmPara, "OK")) + { + eNetRegLocation = QUECTEL_NETREG_QURCCFG; + strcpy((char *)gsmPara, "AT+QURCCFG=\"urcport\",\"usbat\"\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_NETREG_QURCCFG: + + if(strstr((const char *)gsmPara, "OK")) + { + eNetRegLocation = QUECTEL_NETREG_QCFG_RISIGNALTYPE; + strcpy((char *)gsmPara, "AT+QCFG=\"risignaltype\",\"physical\"\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_NETREG_QCFG_RISIGNALTYPE: + + if(strstr((const char *)gsmPara, "OK")) + { + eNetRegLocation = QUECTEL_NETREG_QNVW; + strcpy((char *)gsmPara, "AT+QCFG=\"urc/ri/other\",\"off\"\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_NETREG_QNVW: + + if(strstr((const char *)gsmPara, "OK")) + { + eNetRegLocation = QUECTEL_NETREG_QLWCFG_URC; + strcpy((char *)gsmPara, "AT+QNVW=3006,0,\"FF00\"\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_NETREG_QLWCFG_URC: + + if(strstr((const char *)gsmPara, "OK")) + { + eNetRegLocation = QUECTEL_NETREG_QLWCFG_STARTUP; + strcpy((char *)gsmPara, "AT+QLWCFG=\"urc\",0\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_NETREG_QLWCFG_STARTUP: + + if(strstr((const char *)gsmPara, "OK")) + { + eNetRegLocation = QUECTEL_NETREG_CPIN; + strcpy((char *)gsmPara, "AT+QLWCFG=\"startup\",0\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_NETREG_CPIN: + + if(strstr((const char *)gsmPara, "OK")) + { + eNetRegLocation = QUECTEL_NETREG_READY; + strcpy((char *)gsmPara, "AT+CPIN?\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_NETREG_READY: + + if(strstr((const char *)gsmPara, "READY")) + { + if(strstr((const char *)gsmPara, "OK")) + { + sf_set_sim_pin_flag(1, 1, 1); + + eNetRegLocation = QUECTEL_NETREG_QCCID; + strcpy((char *)gsmPara, "AT+QCCID\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + else + { + strcpy((char *)gsmPara, "AT+CPIN?\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + sf_sleep_ms(300); + } + + break; + } + else if(strstr((const char *)gsmPara, "SIM")) + { + if(strstr((const char *)gsmPara, "PUK") == 0) + { + printf("puiPara->SimFlag:%d\n", puiPara->SimPinFlag); + + if(puiPara->SimPinFlag) + { + eNetRegLocation = QUECTEL_ATCPIN1; + puiPara->SimPinFlag = 0; + sprintf((char *)gsmPara, "AT+CPIN=%s\r", puiPara->SimPinStr); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + else + { + sf_set_sim_pin_flag(0, 1, 1); + SLOGE(gsmPara); + ret = SF_SIM_ERROR_PIN; + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_MODULE_END; + } + } + else + { + sf_set_sim_pin_flag(1, 1, 0); + printf("--------PUK Error.--------\n"); + ret = SF_SIM_ERROR_PIN_PUK; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_MODULE_END; + } + } + else if(strstr((const char *)gsmPara, "NOT")) + { + sf_set_sim_insert(0); + sf_set_sim_pin_flag(1, 1, 1); + + ret = SF_SIM_ERROR_PIN; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_MODULE_END; + } + else + { + if(time % 10 == 0) + { + SLOGD("--------tempi:%d--------", time); + sprintf((char *)gsmPara, "AT+CPIN?\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + } + + break; + + case QUECTEL_ATCPIN1: + printf("[SMS_SIM_INIT_ATCPIN1]gsmPara:%s\n", gsmPara); + + if(strstr((const char *)gsmPara, "ERROR")) + { + if(strstr((const char *)gsmPara, "PUK")) + { + sf_set_sim_pin_flag(1, 1, 0); + printf("--------PUK Error.---2-----\n"); + ret = SF_SIM_ERROR_PIN_PUK; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_MODULE_END; + } + else + { + printf("[%s:%d]Pin Code Entered Error.\n", __FUNCTION__, __LINE__); + sf_set_sim_pin_flag(1, 0, 1); + ret = SF_SIM_ERROR_PIN; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_MODULE_END; + } + } + else if(strstr((const char *)gsmPara, "OK")) + { + sf_set_sim_pin_flag(1, 1, 1); + eNetRegLocation = QUECTEL_ATCPIN2; + sprintf((char *)gsmPara, "AT+CLCK=\"SC\",0,\"%s\"\r", puiPara->SimPinStr); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + callTime = 0; + } + + break; + + case QUECTEL_ATCPIN2: + printf("[QUECTEL_ATCPIN2]gsmPara:%s\n", gsmPara); + + if(strstr((const char *)gsmPara, "OK")) + { + sf_set_sim_pin_flag(1, 1, 1); + eNetRegLocation = QUECTEL_NETREG_QCCID; + strcpy((char *)gsmPara, "AT+QCCID\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + callTime = 0; + } + else + { + callTime++; + + if(callTime > 10) + { + sf_set_sim_pin_flag(0, 1, 1); + ret = SF_SIM_ERROR_PIN; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_MODULE_END; + } + } + + break; + + case QUECTEL_NETREG_QCCID: + + if(strstr((const char *)gsmPara, "OK")) + { + delim = " \r\n"; + pTemp = strtok((char *)strstr((const char *)gsmPara, "+QCCID:"), delim); + mm = 0; + memset(strtmp, '\0', sizeof(strtmp)); + while((pTemp != NULL) && (mm < 12)) + { + strcpy((char *)strtmp[mm], pTemp); + //printf("---pTemp[%d]:%s\n", mm, pTemp); + mm++; + pTemp = strtok((char *)0, delim); + } + strcpy((char *)strNow, (const char *)strtmp[1]); + SLOGD("strNow=%s,strSave=%s", strNow, strSave); + + if((strNow[0] != '\0') && (strncmp((char *)strNow, (char *)strSave, MODULE_ICCID_LEN) == 0)) + { + if(strcasecmp((const char *)strNow, (const char *)puiPara->SimIccid) != 0) + { + memset(puiPara->SimIccid, '\0', sizeof(puiPara->SimIccid)); + strncpy((char *)puiPara->SimIccid, (const char *)strNow, MODULE_ICCID_LEN); + SF_DEBUG("SimIccid=%s", puiPara->SimIccid); + } + + goto SF_MODULE_END; + } + else + { + strcpy((char *)strSave, (const char *)strNow); + memset(strNow, '\0', sizeof(strNow)); + + strcpy((char *)gsmPara, "AT+QCCID\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + } + else + { + callTime++; + + if(callTime > 10) + { + ret = SF_SIM_ERROR_AT_TIMEOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_MODULE_END; + } + } + + break; + + default: + break; + } + sf_gsm_para_buff_clear(); + sf_hal_ttyusb2_read(gsmPara, 200); + + if(gsmPara[0] != '\0') + { + printf("eNetRegLocation=%d,gsmPara:\n%s", eNetRegLocation, gsmPara); + } + + time++; + + if(time > 800) + { + ret = SF_SIM_ERROR_AT_TIMEOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Wait Init Timeout.", __FUNCTION__, __LINE__); + SLOGE(logStr); + time = 0; + goto SF_MODULE_END; + } + } + + SF_MODULE_END: + printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret); + return ret; +} + + +/************************************************* + Function: sf_quectel_net_regist + Description: net reg + Input: N/A + Output: N/A + Return: 0 SUCCESS, 1 error + Others: N/A +*************************************************/ +SINT32 sf_quectel_net_regist(void) +{ + + SINT32 ret = SF_SUCCESS; + #if 0 + //UINT8 gsmPara[GPRS_INFO_LINE_MAX] = {0}; + SF_QUECTEL_NETREG_E eNetRegLocation = QUECTEL_NETREG_FRIST; + UINT16 callTime = 0; + UINT8 cqSignal = 0; + UINT16 time = 0; + UINT32 mm = 0; + UINT32 StrNumber = 0; + SINT32 ttyRet = 0; + UINT8 netStr[16] = { 0 }; + UINT8 strtmp[12][70] = { { 0 } }; + char *pTemp = NULL; + char *delim = NULL; + + UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); + + SF_LOG(" s"); + +#if MEGA_TEST + + if(puiPara->MegaTestSwitch == 1) + { + callTime = puiPara->NetRegCalltime; + } + +#endif + + + while(sf_app_while_flag()) + { + switch(eNetRegLocation) + { + case QUECTEL_NETREG_FRIST: + eNetRegLocation = QUECTEL_NETREG_CIMI_1; + strcpy((char *)gsmPara, "AT+CIMI\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + break; + + case QUECTEL_NETREG_CIMI_1: + + if(strstr((const char *)gsmPara, "OK")) + { + SLOGI(gsmPara); + + delim = " \r\n"; + + if(strstr((const char *)gsmPara, "AT+CIMI")) + { + pTemp = strtok((char *)strstr((const char *)gsmPara, "AT+CIMI"), delim); + StrNumber = 1; + } + else + { + pTemp = strtok((char *)gsmPara, delim); + StrNumber = 0; + } + + mm = 0; + memset(strtmp, '\0', sizeof(strtmp)); + while((pTemp != NULL) && (mm < 12)) + { + strcpy((char *)strtmp[mm], (const char *)pTemp); + printf("---pTemp[%d]:%s\n", mm, pTemp); + mm++; + pTemp = strtok((char *)0, delim); + } + + if(((strtmp[StrNumber][0] - '0') >= 0) && ((strtmp[StrNumber][0] - '0') <= 9) && ((strtmp[StrNumber][5] - '0') >= 0) && ((strtmp[StrNumber][5] - '0') <= 9)) + { + memset(puiPara->OperatorCode, '\0', sizeof(puiPara->OperatorCode)); + strncpy((char *)puiPara->OperatorCode, (const char *)strtmp[StrNumber], 5); + strncpy((char *)SimImei, (const char *)strtmp[1], 5); + SF_DEBUG("OperatorCode=%s", puiPara->OperatorCode); + + if(puiPara->SimAutoSwitch == 0) + { + if(sf_auto_operation_adjust() == FAIL) + { + SLOGE(gsmPara); + sprintf((char *)logStr, "Auto Operation Fail,MCCMNC:%s", puiPara->OperatorCode); + SLOGE(logStr); + + ret = SF_SIM_ERROR_APN; + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + + //sf_guide_operator_match_status_set(); + goto SF_NET_REG_END; + } + else + { + sprintf((char *)logStr, "Auto Operation Success,MCCMNC:%s", puiPara->OperatorCode); + SLOGI(logStr); + } + + SF_DEBUG("Sim4gApn=%s", puiPara->Sim4gApn); + } + else + { + SF_LOG("operation info manual set,default success.\n"); + } + + if(strstr((const char *)puiPara->Sim4gApn, APN_4G_VERIZON)) + { + eNetRegLocation = QUECTEL_NETREG_QNVFW; + sprintf((char *)gsmPara, "%s", "at+qnvfr=\"/nv/item_files/modem/uim/gstk/feature_bmsk\"\r"); + } + else + { + if(strstr((const char *)puiPara->Sim4gApn, APN_4G_ATT)) + { + sprintf((char *)gsmPara, "AT+CGDCONT=1,\"IPV4V6\",\"%s\"\r", puiPara->Sim4gApn); + } + else + { + sprintf((char *)gsmPara, "%s", "AT+CGDCONT=1,\"IPV4V6\",\"\"\r"); + } + + eNetRegLocation = QUECTEL_NETREG_CGDCONT; + } + + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + + //sf_guide_operator_match_status_set(); + } + else + { + ret = SF_SIM_ERROR_APN; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_NET_REG_END; + } + } + else + { + callTime++; + + if(callTime > 10) + { + ret = SF_SIM_ERROR_APN; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_NET_REG_END; + } + + strcpy((char *)gsmPara, "AT+CIMI\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_NETREG_QNVFW: + + if(strstr((const char *)gsmPara, "+QNVFR:")) + { + if(strstr((const char *)gsmPara, "+QNVFR: 11000000")) + { + eNetRegLocation = QUECTEL_SEARCH_QICSGP1; + sprintf((char *)gsmPara, "%s", "at+qnvfw=\"/nv/item_files/modem/uim/gstk/feature_bmsk\",01000000\r"); + } + else + { + eNetRegLocation = QUECTEL_SEARCH_IPV4V6; + sprintf((char *)gsmPara, "%s", "AT+QICSGP=1\r"); + } + + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + else + { + eNetRegLocation = QUECTEL_NETREG_MODULE_RESTART; + } + + break; + + case QUECTEL_SEARCH_QICSGP1: + + if(strstr((const char *)gsmPara, "OK")) + { + eNetRegLocation = QUECTEL_SEARCH_IPV4V6; + sprintf((char *)gsmPara, "%s", "AT+QICSGP=1\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_SEARCH_IPV4V6: + + if(strstr((const char *)gsmPara, "OK")) + { + //if(puiPara->TestType == 11) + //{ + // sprintf((char *)gsmPara, "+QICSGP: 1,\"ims\",\"\",\"\",0\n"); + // SF_LOG("gsmPara=%s", gsmPara); + //} + + if((strstr((const char *)gsmPara, "\"ims\"") == NULL) && (strstr((const char *)puiPara->Sim4gApn, APN_4G_VERIZON))) + { + eNetRegLocation = QUECTEL_NETREG_QPRTPARA; + sprintf((char *)gsmPara, "AT+QPRTPARA=3\r"); + } + else + { + eNetRegLocation = QUECTEL_NETREG_CGDCONT; + + if(strstr((const char *)puiPara->Sim4gApn, APN_4G_VERIZON)) + { + sprintf((char *)gsmPara, "AT+CGREG?\r"); + eNetRegLocation = QUECTEL_NETREG_CGREG; + callTime = SF_QUECTEL_NET_REG_CALLTIME_MAX; /*4 min*/ + } + else if(strstr((const char *)puiPara->Sim4gApn, APN_4G_ATT)) + { + sprintf((char *)gsmPara, "AT+CGDCONT=1,\"IPV4V6\",\"%s\"\r", puiPara->Sim4gApn); + } + else + { + sprintf((char *)gsmPara, "%s", "AT+CGDCONT=1,\"IPV4V6\",\"\"\r"); + } + } + + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_NETREG_QPRTPARA: + + if(strstr((const char *)gsmPara, "OK") != NULL) + { + if(sf_4g_uart_restart(1) == SUCCESS) + { + callTime = 0; + time = 0; + eNetRegLocation = QUECTEL_NETREG_MODULE_RESTART; + } + else + { + ret = SF_SIM_ERROR_REG_NET; + printf("[%s:%d] tty usb restart err.\n", __FUNCTION__, __LINE__); + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d] tty usb restart err,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_NET_REG_END; + } + } + + break; + + case QUECTEL_NETREG_MODULE_RESTART: + ret = sf_quectel_module_complete_init(); + + if(ret == SF_SUCCESS) + { + eNetRegLocation = QUECTEL_NETREG_FRIST; + } + else + { + goto SF_NET_REG_END; + } + + break; + + case QUECTEL_NETREG_CGDCONT: + + if(strstr((const char *)gsmPara, "OK")) + { + eNetRegLocation = QUECTEL_NETREG_CGREG; + strcpy((char *)gsmPara, "AT+CGREG?\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + + callTime = SF_QUECTEL_NET_REG_CALLTIME_MAX; /*4 min*/ + } + + break; + + case QUECTEL_NETREG_CGREG: +#if MEGA_TEST + + if(puiPara->MegaTestSwitch == 1) + { + strcpy((char *)gsmPara, "sftest\n"); + } + +#endif + #if SF_TEST_ERROR_CODE + sf_test_code_err(eNetRegLocation, "+CGREG: 0,2"); + #endif + + if((strstr((const char *)gsmPara, "+CGREG: 0,1") != NULL) || (strstr((const char *)gsmPara, "+CGREG: 0,5") != NULL)) + { + SLOGI(gsmPara); + + if(PWR_ON_TIME_SYNC == sf_convert_power_on_mode()) + { + eNetRegLocation = QUECTEL_NETREG_QNWINFO; + strcpy((char *)gsmPara, "AT+QNWINFO\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + callTime = 0; + } + else + { + eNetRegLocation = QUECTEL_NETREG_QCFG_WINDOWSIZE_0; + strcpy((char *)gsmPara, "AT+QCFG=\"tcp/windowsize\",0,100\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + } + else + { + callTime--; + sprintf((char *)gsmPara, "AT+CGREG?\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + + sf_sleep_ms(300); + + if(callTime == 0) + { + if((strstr((const char *)puiPara->Sim4gApn, APNGPRS_WUYUAN1)) || (strstr((const char *)puiPara->Sim4gApn, APNGPRS_WUYUAN2))) + { + if(AddCimiTimes == 5) + { + simErrorCode = SIM_NO_SIGNAL; + printf("[%s:%d]:aleady match five cimi,end to AT+CGREG?simErrorCode:%d\n", __FUNCTION__, __LINE__, simErrorCode); + ret = SF_SIM_ERROR_MEGA; + goto SF_NET_REG_END; + } + else + { + eNetRegLocation = QUECTEL_NETREG_CIMI_2; + sprintf((char *)gsmPara, "AT+CIMI\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + } + else + { + ret = SF_SIM_ERROR_REG_NET; + printf("[%s:%d]AT+CGREG? Timeout.\n", __FUNCTION__, __LINE__); + SLOGE((SINT8 *)gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+CGREG? Timeout,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE((SINT8 *)logStr); + goto SF_NET_REG_END; + } + } + } + + break; + + case QUECTEL_NETREG_CIMI_2: + + if(strstr((const char *)gsmPara, "OK")) + { + SLOGI(gsmPara); + + delim = " \r\n"; + pTemp = strtok((char *)strstr((const char *)gsmPara, "AT+CIMI"), delim); + mm = 0; + memset(strtmp, '\0', sizeof(strtmp)); + while((pTemp != NULL) && (mm < 12)) + { + strcpy((char *)strtmp[mm], (const char *)pTemp); + printf("---pTemp[%d]:%s\n", mm, pTemp); + mm++; + pTemp = strtok((char *)0, delim); + } + + if(((strtmp[1][0] - '0') >= 0) && ((strtmp[1][0] - '0') <= 9) && ((strtmp[1][5] - '0') >= 0) && ((strtmp[1][5] - '0') <= 9)) + { + memset(puiPara->OperatorCode, '\0', sizeof(puiPara->OperatorCode)); + strncpy((char *)puiPara->OperatorCode, (const char *)strtmp[1], 5); + strncpy((char *)SimImei, (const char *)strtmp[1], 5); + } + } + + callTime = SF_QUECTEL_NET_REG_CALLTIME_MAX; /*4 min*/ +#if MEGA_TEST + + if(puiPara->MegaTestSwitch == 1) + { + if((sf_test_mode_cimi() == FAIL) && (time < 200)) //wait 200s to scanf cimi,then copy to strok; + { + break; //no scanf,then break,enter next while; + } + + callTime = puiPara->NetRegCalltime; + } + +#endif + + if(sf_add_cimi_id((char *)SimImei) == SUCCESS) //new cimi,total cimi:5 + { + printf("[%s:%d]:puiPara->OperatorCode:%s,new cimi:%s\n", __FUNCTION__, __LINE__, puiPara->OperatorCode, SimImei); + eNetRegLocation = QUECTEL_NETREG_CGREG; //return net reg. + sprintf((char *)gsmPara, "AT+CGREG?\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + AddCimiTimes++; + time = 0; + + sf_set_netsearch_step(GPRS_SEARCH_STEP_RETRYING); + sp5kHostMsgSend(APP_UI_MSG_TRANSFER_REFLUSH, 0, 0, 0); + } + else //cimi already exist + { + simErrorCode = SIM_MEGA_ERROR; + printf("[%s:%d]:exist cimi,end to AT+CGREG?simErrorCode:%d\n", __FUNCTION__, __LINE__, simErrorCode); + ret = SF_SIM_ERROR_MEGA; + goto SF_NET_REG_END; + } + + break; + + case QUECTEL_NETREG_QCFG_PDP: + + if(strstr((const char *)gsmPara, "OK")) + { + eNetRegLocation = QUECTEL_NETREG_QCFG_WINDOWSIZE_0; + strcpy((char *)gsmPara, "AT+QCFG=\"tcp/windowsize\",0,100\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_NETREG_QCFG_WINDOWSIZE_0: + + if(strstr((const char *)gsmPara, "OK")) + { + eNetRegLocation = QUECTEL_NETREG_QCFG_WINDOWSIZE_1; + strcpy((char *)gsmPara, "AT+QCFG=\"tcp/windowsize\",1,100\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case QUECTEL_NETREG_QCFG_WINDOWSIZE_1: + + if(strstr((const char *)gsmPara, "OK")) + { + eNetRegLocation = QUECTEL_NETREG_QNWINFO; + strcpy((char *)gsmPara, "AT+QNWINFO\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + callTime = 0; + } + + break; + + case QUECTEL_NETREG_QNWINFO: + + if(strstr((const char *)gsmPara, "+QNWINFO:") != NULL) + { + SLOGI(gsmPara); + + if(strstr((const char *)gsmPara, "No Service")) + { + puiPara->NetGeneration = 2; + } + else if(NULL != strtok((char *)(char *)gsmPara, "\"")) + { + strcpy((char *)netStr, strtok((char *)NULL, "\"")); + SF_LOG("netStr=%s", netStr); + + if((strstr((const char *)netStr, "DD") != NULL)) + { + puiPara->NetGeneration = 4; + } + else if(strstr((const char *)netStr, "CDMA") != NULL || strstr((const char *)netStr, "HDR") != NULL || strstr((const char *)netStr, "HSUPA") != NULL + || strstr((const char *)netStr, "HSDPA") != NULL || (strstr((const char *)netStr, "HSPA+") != NULL)) + { + puiPara->NetGeneration = 3; + } + else if(strstr((const char *)netStr, "CMDA") != NULL || strstr((const char *)netStr, "G") != NULL) + { + puiPara->NetGeneration = 2; + } + else + { + puiPara->NetGeneration = 2; + } + } + + if(puiPara->NetGeneration == 4) + { + eNetRegLocation = QUECTEL_NETREG_QCSQ; + strcpy((char *)gsmPara, "AT+QCSQ\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + callTime = 0; + } + else + { + eNetRegLocation = QUECTEL_NETREG_CSQ; + strcpy((char *)gsmPara, "AT+CSQ\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + callTime = 0; + } + } + else + { + callTime++; + + if(callTime > 10) + { + ret = SF_SIM_ERROR_AT_TIMEOUT; + SLOGE((SINT8 *)gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE((SINT8 *)logStr); + goto SF_NET_REG_END; + } + } + + break; + + case QUECTEL_NETREG_QCSQ: + + if(strstr((const char *)gsmPara, "+QCSQ:")) + { + #if SF_TEST_ERROR_CODE + sf_test_code_err(eNetRegLocation, "+CGREG:"); + #endif + + if(sf_qcsq_decode(gsmPara, &cqSignal) == SUCCESS) + { + if(cqSignal == 0) + { + callTime++; + + if(callTime <= 10) + { + strcpy((char *)gsmPara, "AT+QCSQ\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + break; + } + } + + sf_set_cq_signal(cqSignal); + + eNetRegLocation = QUECTEL_NETREG_COPS; + strcpy((char *)gsmPara, "AT+COPS?\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + else + { + ret = SF_SIM_ERROR_NO_SIGNAL; + SLOGE((SINT8 *)gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE((SINT8 *)logStr); + goto SF_NET_REG_END; + } + } + else + { + callTime++; + + if(callTime > 10) + { + ret = SF_SIM_ERROR_AT_TIMEOUT; + SLOGE((SINT8 *)gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE((SINT8 *)logStr); + goto SF_NET_REG_END; + } + } + + break; + + case QUECTEL_NETREG_CSQ: + sf_normal_log((SINT8 *)gsmPara); + + if(strstr((const char *)gsmPara, "OK")) + { + delim = " ,\r\n"; + pTemp = strtok((char *)strstr((const char *)gsmPara, "+CSQ:"), delim); + mm = 0; + memset(strtmp, '\0', sizeof(strtmp)); + + while((pTemp != NULL) && (mm < 20)) + { + strcpy((char *)strtmp[mm], (const char *)pTemp); + printf("[%s:%d]pTemp[%d]:%s\n", __FUNCTION__, __LINE__, mm, pTemp); + mm++; + pTemp = strtok((char *)0, delim); + } + + cqSignal = (atoi((const char *)strtmp[1])); + sf_set_cq_signal(cqSignal); + + if(cqSignal > 31) + { + callTime++; + + if(callTime > 10) + { + callTime = 0; + + ret = SF_SIM_ERROR_NO_SIGNAL; + SLOGE((SINT8 *)gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE((SINT8 *)logStr); + goto SF_NET_REG_END; + } + else + { + strcpy((char *)gsmPara, "AT+CSQ\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + sf_sleep_ms(300); + } + } + else if(cqSignal <= 1) + { + callTime = 0; + + ret = SF_SIM_ERROR_NO_SIGNAL; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_NET_REG_END; + } + else + { + eNetRegLocation = QUECTEL_NETREG_COPS; + strcpy((char *)gsmPara, "AT+COPS?\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + } + else + { + callTime++; + + if(callTime > 10) + { + ret = SF_SIM_ERROR_AT_TIMEOUT; + SLOGE((SINT8 *)gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE((SINT8 *)logStr); + goto SF_NET_REG_END; + } + } + + break; + + case QUECTEL_NETREG_COPS: + + if(strstr((const char *)gsmPara, "+COPS:") != NULL) + { + SLOGI(gsmPara); + + strtok((char *)gsmPara, "\""); + pTemp = strtok((char *)NULL, "\""); + + if(pTemp != NULL) + { + memset(OperatorNameL, '\0', sizeof(OperatorNameL)); + strcpy((char *)OperatorNameL, pTemp); + SF_LOG("OperatorNameL=%s", OperatorNameL); + } + } + + if((sf_get_mode_flag()) || (PWR_ON_GPRS_INIT == sf_convert_power_on_mode()) || (PWR_ON_DAILY_REPORT == sf_convert_power_on_mode())) + { + eNetRegLocation = QUECTEL_NETREG_ATW; + strcpy((char *)gsmPara, "AT&W\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + else + { + goto SF_NET_REG_END; + } + + break; + case QUECTEL_NETREG_ATW: + + if(strstr((const char *)gsmPara, "OK")) + { + goto SF_NET_REG_END; + } + + break; + + default: + break; + } + + sf_4g_get_data(gsmPara, 200, 1); + + if(gsmPara[0] != '\0') + { + printf("eNetRegLocation:%d\ngsmPara:%s\n", eNetRegLocation, gsmPara); + } + + time++; + + if(time > 800) + { + time = 0; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Wait Init Timeout.", __FUNCTION__, __LINE__); + printf("%s,GprsMode=%d\n", logStr, puiPara->GprsMode); + SLOGE(logStr); + + ret = SF_SIM_ERROR_AT_TIMEOUT; + goto SF_NET_REG_END; + } + } + + SF_NET_REG_END: + + printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret); +#endif + return ret; +} + +void sf_set_netsearch_step(UINT8 stepValue) +{ + gprs_search_process = stepValue; +} + + +UINT8 sf_get_netsearch_step(void) +{ + return gprs_search_process; +} + +void sf_gsm_para_buff_clear(void) +{ + memset(gsmPara, '\0', sizeof(gsmPara)); +} + +/************************************************* + Function: sf_get_utc + Description: get utc + Input: N/A + Output: N/A + Return: 0 SUCCESS, 1 error + Others: N/A +*************************************************/ +SINT32 sf_get_utc(VOID) +{ + SINT32 ret = SF_SUCCESS; + SF_SIM_E eSmsLocation = SMS_SIM_INIT_CCLK; + SINT32 ttyRet = 0; + UINT8 calltime = 0; + UINT16 time = 0; + + int year = 0; + int month = 0; + int day = 0; + + int hour = 0; + int minute = 0; + int second = 0; + + printf("[%s:%d] s\n", __FUNCTION__, __LINE__); + + UIMenuStoreInfo *pPara = sf_app_ui_para_get(); + + + sf_gsm_para_buff_clear(); + + while(sf_app_while_flag()) + { + switch(eSmsLocation) + { + case SMS_SIM_INIT_CCLK: + + if(strstr((const char *)gsmPara, "\"")) + { + UINT8 *CCLK = (UINT8 *)strstr((const char *)gsmPara, "\""); + + year = (CCLK[3] - '0') * 10 + (CCLK[4] - '0') + 2000; + month = (CCLK[6] - '0') * 10 + (CCLK[7] - '0'); + day = (CCLK[9] - '0') * 10 + (CCLK[10] - '0'); + hour = (CCLK[12] - '0') * 10 + (CCLK[13] - '0'); + minute = (CCLK[15] - '0') * 10 + (CCLK[16] - '0'); + second = (CCLK[18] - '0') * 10 + (CCLK[19] - '0'); + calltime = 0; + + printf("[%s:%d]UTC: %04d/%02d/%02d %02d:%02d:%02d\n", __FUNCTION__, __LINE__, year, month, day, hour, minute, second); + + if(pPara->DateAuto == 0) + { + rtcTime.Year = year; + rtcTime.Mon = month; + rtcTime.Day = day; + rtcTime.Hour = hour; + rtcTime.Min = minute; + rtcTime.Sec = second; + sf_sys_rtc_time_set(&rtcTime); + printf("[%s:%d]set RTC: %04d/%02d/%02d %02d:%02d:%02d\n", __FUNCTION__, __LINE__, rtcTime.Year, rtcTime.Mon, rtcTime.Day, rtcTime.Hour, rtcTime.Min, rtcTime.Sec); + } + + goto SF_UTC_END; + } + else if(strstr((const char *)gsmPara, "OK") != NULL) + { + ret = SF_SIM_ERROR_UTC; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_UTC_END; + } + else + { + calltime++; + + if(calltime > 6) + { + ret = SF_SIM_ERROR_UTC; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_UTC_END; + } + else + { + strcpy((char *)gsmPara, "AT+QLTS=2\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + } + + break; + + default: + break; + } + sf_gsm_para_buff_clear(); + + sf_hal_ttyusb2_read(gsmPara, 200); + + if(gsmPara[0] != '\0') + { + printf("[%s:%d]eSmsLocation:%d\ngsmPara:%s\n", __FUNCTION__, __LINE__, eSmsLocation, gsmPara); + } + + time++; + + if(time > 800) + { + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Wait Init Timeout.", __FUNCTION__, __LINE__); + printf("%s,GprsMode=%d\n", logStr, pPara->GprsMode); + SLOGE(logStr); + + time = 0; + ret = SF_SIM_ERROR_AT_TIMEOUT; + goto SF_UTC_END; + } + } + SF_UTC_END: + printf("%s:%d end %x\n", __FUNCTION__, __LINE__, ret); + return ret; +} + +#if 1 + +/************************************************* + Function: sf_get_ntp + Description: get ntp + Input: N/A + Output: N/A + Return: 0 SUCCESS, 1 error + Others: N/A +*************************************************/ +SINT32 sf_get_ntp(SINT32 value) +{ + SINT32 ret = SF_SUCCESS; + //UINT8 errMsg[128] = {0}; + //UINT8 gsmPara[GPRS_INFO_LINE_MAX] = {0}; + SF_SIM_E eSmsLocation = SMS_SIM_INIT_CNTP; + SINT32 ttyRet = 0; + UINT32 calltime = 0; + int year = 0; + int month = 0; + int day = 0; + UINT16 time = 0; + int hour = 0; + int minute = 0; + int second = 0; + UINT8 pdpIndex = 0; + UINT16 ntpFlag = 0; + + printf("[%s:%d] s\n", __FUNCTION__, __LINE__); + + UIMenuStoreInfo *pPara = sf_app_ui_para_get(); + + sf_gsm_para_buff_clear(); + + pdpIndex = sf_get_pdp_index(); + + while(sf_app_while_flag()) + { + switch(eSmsLocation) + { + case SMS_SIM_INIT_CNTP: + + if(strstr((const char *)pPara->Sim4gApn, APN_4G_VERIZON)) + { + sprintf((char *)gsmPara, "AT+QICSGP=%d\r", pdpIndex); + } + else if(strstr((const char *)pPara->Sim4gApn, APN_4G_ATT)) + { + sprintf((char *)gsmPara, "AT+QICSGP=%d,1,\"%s\",\"%s\",\"%s\",1\r", pdpIndex, pPara->Sim4gApn, pPara->Sim4gUsr, pPara->Sim4gPwd); + } + else + { + sprintf((char *)gsmPara, "AT+QICSGP=%d,1,\"%s\",\"%s\",\"%s\",1\r", pdpIndex, pPara->Sim4gApn, pPara->Sim4gUsr, pPara->Sim4gPwd); + } + + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eSmsLocation = SMS_SIM_INIT_CNTPTO; + break; + + case SMS_SIM_INIT_CNTPTO: + + if(strstr((const char *)gsmPara, "OK") != NULL) + { + sprintf((char *)gsmPara, "AT+QNTP=%d,\"%s\"\r", pdpIndex, SF_NTP_SITE1); + ntpFlag = 0; + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eSmsLocation = SMS_SIM_INIT_ATCNTP; + calltime = 0; + } + + break; + + case SMS_SIM_INIT_ATCNTP: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eSmsLocation, "ERROR"); + #endif + + if(strstr((const char *)gsmPara, "+QNTP: 0") != NULL) + { + time = 0; + int zoneSecond = 0; + UINT8 *CCLK = (UINT8 *)strstr((const char *)gsmPara, "+QNTP: 0"); + + year = (CCLK[10] - '0') * 1000 + (CCLK[11] - '0') * 100 + (CCLK[12] - '0') * 10 + (CCLK[13] - '0'); + month = (CCLK[15] - '0') * 10 + (CCLK[16] - '0'); + day = (CCLK[18] - '0') * 10 + (CCLK[19] - '0'); + hour = (CCLK[21] - '0') * 10 + (CCLK[22] - '0'); + minute = (CCLK[24] - '0') * 10 + (CCLK[25] - '0'); + second = (CCLK[27] - '0') * 10 + (CCLK[28] - '0'); + calltime = 0; + + printf("[%s:%d]UTC: %04d/%02d/%02d %02d:%02d:%02d\n", __FUNCTION__, __LINE__, year, month, day, hour, minute, second); + + nowDate.Year = year; + nowDate.Mon = month; + nowDate.Day = day; + + nowDate.Hour = hour; + nowDate.Min = minute; + nowDate.Sec = second; + + //getUtcTimeFlag = 1; + rtcTime.Year = year; + rtcTime.Mon = month; + rtcTime.Day = day; + rtcTime.Hour = hour; + rtcTime.Min = minute; + rtcTime.Sec = second; + + if((pPara->DateAuto == 0) && (value == SF_SIM_ERROR_UTC)) + { + //int myear = year; + //int mmonth = month; + //int mday = day; + //int mhour = hour; + //int mminute = minute; + //int msecond = second; + + printf("NTPZoneS:%d, NTPZoneH:%d, NTPZoneM:%d\n", pPara->NTPZoneS, pPara->NTPZoneH, pPara->NTPZoneM); + zoneSecond = pPara->NTPZoneH * 3600 + pPara->NTPZoneM * 15 * 60; + + if(pPara->NTPZoneS == 1) + { + zoneSecond = 0 - zoneSecond; + } + zoneSecond = sf_get_seconds(rtcTime) + zoneSecond; + sf_get_date(zoneSecond, &rtcTime); + sf_sys_rtc_time_set(&rtcTime); + printf("[%s:%d]set RTC: %04d/%02d/%02d %02d:%02d:%02d\n", __FUNCTION__, __LINE__, rtcTime.Year, rtcTime.Mon, rtcTime.Day, rtcTime.Hour, rtcTime.Min, rtcTime.Sec); + } + + goto SF_GEN_NTP_QIDEACT; + } + else if((strstr((const char *)gsmPara, "+QNTP:")) || (strstr((const char *)gsmPara, "ERROR")) || (strstr((const char *)gsmPara, "pdpdeact"))) + { + if(ntpFlag == 0) + { + ntpFlag++; + sprintf((char *)gsmPara, "AT+QNTP=%d,\"%s\"\r", pdpIndex, SF_NTP_SITE2); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + else + { + ret = SF_SIM_ERROR_NTP; + sprintf(logStr, "[%s:%d]Error Code:0x%08X;gsmPara:%s", __FUNCTION__, __LINE__, ret, strstr((const char *)gsmPara, "ERROR")); + printf("%s\n", logStr); + SLOGE(logStr); + goto SF_GEN_NTP_QIDEACT; + } + } + else + { + if(calltime > 350) + { + ret = SF_SIM_ERROR_NTP; + sprintf((char *)logStr, "[%s:%d]Error Code:0x%08X;gsmPara:%s", __FUNCTION__, __LINE__, ret, strstr((const char *)gsmPara, "ERROR")); + printf("%s\n", logStr); + SLOGE(logStr); + goto SF_GEN_NTP_QIDEACT; + } + } + + break; + + case SMS_SIM_INIT_QIDEACT: + SF_GEN_NTP_QIDEACT: + sprintf((char *)gsmPara, "AT+QIDEACT=%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen(gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eSmsLocation = SMS_SIM_INIT_EXIT; + //sf_pdp_flg_set(0); + calltime = 0; + + break; + + case SMS_SIM_INIT_EXIT: + + if(strstr((const char *)gsmPara, "OK") || (calltime > 300)) + { + goto SF_GEN_NTP_END; + } + + calltime++; + break; + + default: + break; + } + sf_gsm_para_buff_clear(); + sf_hal_ttyusb2_read(gsmPara, 200); + + if(gsmPara[0] != '\0') + { + printf("%s:%d %d \n%s\n", __FUNCTION__, __LINE__, eSmsLocation, gsmPara); + } + + time++; + + if(time > 800) + { + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Wait Init Timeout.", __FUNCTION__, __LINE__); + printf("%s,GprsMode=%d\n", logStr, pPara->GprsMode); + SLOGE(logStr); + + time = 0; + ret = SF_SIM_ERROR_AT_TIMEOUT; + goto SF_GEN_NTP_END; + } + } + SF_GEN_NTP_END: + printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret); + return ret; +} + + +UINT8 sf_get_pdp_index(void) +{ + UINT8 pdpIndex = 0; + + UIMenuStoreInfo *pPara = sf_app_ui_para_get(); + + if(strstr((const char *)pPara->Sim4gApn, APN_4G_VERIZON)) + { + pdpIndex = V_PDP_INDEX; + } + else if(strstr((const char *)pPara->Sim4gApn, APN_4G_ATT)) + { + pdpIndex = A_PDP_INDEX; + } + else + { + pdpIndex = E_PDP_INDEX; + } + + return pdpIndex; +} + +#endif + + +/************************************************************************** +* F U N C T I O N D E C L A R A T I O N S * +**************************************************************************/ + +/************************************************* + Function: sf_custom_str_get + Description: get custom str. + Input: array pointer for saving + Output: N/A + Return: N/A + Others: N/A +*************************************************/ +void sf_custom_str_get(UINT8 *pCustomStr) +{ + UINT8 customStr[50] = { 0 }; + UIMenuStoreInfo *pPara = sf_app_ui_para_get(); + + printf("[%s:%d]pPara->CamNameSwitch=%d,pPara->CamNameStr:%s\n", __FUNCTION__, __LINE__, pPara->CamNameSwitch, pPara->CamNameStr); + +#if CUSTOM_STR + + if(pPara->CamNameSwitch == SF_CAMID_ON) + { + sprintf((char *)customStr, "%s-", pPara->CamNameStr); + } + else + { + customStr[0] = '\0'; + } + +#else + + if(pPara->CamNameSwitch == SF_CAMID_ON) + { + sprintf((char *)customStr, "%s-", pPara->CamNameStr); + } + else + { + customStr[0] = '\0'; + } + +#endif + printf("[%s:%d]customStr:%s\n", __FUNCTION__, __LINE__, customStr); + sprintf((char *)pCustomStr, "%s", customStr); +} + +void sf_get_send_video_fname(UINT8 *videoDirKey, UINT8 *videoFname) +{ + printf("[%s:%d]videoDirKey:%s,videoFname:%s\n", __FUNCTION__, __LINE__, videoDirKey, videoFname); +} + + #ifdef __cplusplus #if __cplusplus } diff --git a/code/application/source/sf_app/code/source/4gMng/sf_ftp.c b/code/application/source/sf_app/code/source/4gMng/sf_ftp.c new file mode 100644 index 000000000..b7066e184 --- /dev/null +++ b/code/application/source/sf_app/code/source/4gMng/sf_ftp.c @@ -0,0 +1,1283 @@ +/************************************************************************** +* +* Copyright (c) 2009-2018 by SiFar Technology, Inc. +* +* This software is copyrighted by and is the property of SiFar +* Technology, Inc.. All rights are reserved by SiFar Technology, Inc.. +* This software may only be used in accordance with the corresponding +* license agreement. Any unauthorized use, duplication, distribution, +* or disclosure of this software is expressly forbidden. +* +* This Copyright notice MUST not be removed or modified without prior +* written consent of SiFar Technology, Inc.. +* +* SiFar Technology, Inc. reserves the right to modify this software without notice. +* +* Author: HAC +* Ver: 1.0.0 2021.04.12 +* Description: creat +**************************************************************************/ +#include +#include +#include +#include +#include +#include +#ifdef __cplusplus +#if __cplusplus +extern "C" { +#endif +#endif + +#include "sf_log.h" + +#include "sf_hal_ttyusb.h" +#include "sf_systemMng.h" + +#include "sf_opera_adapt.h" +#include "sf_eg91_sim.h" +#include "sf_param_common.h" +#include "sf_common.h" +#include "sf_commu_mcu_reg.h" +#include "sf_datahttp.h" +#include "sf_ftp.h" +#include "sf_fileMng.h" +#include "sf_file.h" + +/************************************************************************** +* C O N S T A N T S * +**************************************************************************/ + +/************************************************************************** +* M A C R O S * +**************************************************************************/ + +/************************************************************************** +* D A T A T Y P E S * +**************************************************************************/ + +/************************************************************************** +* G L O B A L D A T A * +**************************************************************************/ + +/************************************************************************** +* E X T E R N A L R E F E R E N C E S * +**************************************************************************/ +UINT8 smtpUploadPicFlag = 0; /*0:smtp upload pic fail; 1:success.*/ +UINT8 smtpUploadVideoFlag = 0; /*0:smtp upload video fail; 1:success.*/ +UINT8 sendPicSuccessFlag = 0; +UINT8 sendVideoSuccessFlag = 0; +extern char logStr[128]; +extern char gsmPara[GPRS_INFO_LINE_MAX]; + +/************************************************* + Function: sf_check_max_num + Description: check the max num one day limit. + Input: N/A + Output: N/A + Return: 0:can send; else:no send; + Others: N/A +*************************************************/ +SINT32 sf_check_max_num(void) +{ + SINT32 ret = SF_SEND_ERROR_REACH_MAX_NUM; + /*UIMenuStoreInfo *pPara = sf_app_ui_para_get(); + sfPara_t *sfParam = sf_ParaGet(); + SF_PARA_TIME_S rTime; + + printf("[%s:%d]sfParam->SendSuccCntPerDay=%d,puiPara->SendMaxNum=%d\n", __FUNCTION__, __LINE__, sfParam->SendSuccCntPerDay, puiPara->SendMaxNum); + + //the next day or more long time,need clear the max num limit. + sf_sys_rtc_time_get(&rTime); + + if((rTime.year != sfParam->PreYear) || (rTime.mon != sfParam->PreMonth) || (rTime.day != sfParam->Preday)) + { + printf("new day, refresh counter!\n"); + + sfParam->EmailSendCntPerDay = 0; + sfParam->SendSuccCntPerDay = 0; + sfParam->PreYear = rTime.Year; + sfParam->PreMonth = rTime.Mon; + sfParam->Preday = rTime.Day; + } + + if(puiPara->SendMaxNum == 0) + { + sfParam->PreYear = rTime.Year; + sfParam->PreMonth = rTime.Mon; + sfParam->Preday = rTime.Day; + + ret = SF_SUCCESS; + } + else + { + if((sfParam->SendSuccCntPerDay < puiPara->SendMaxNum) || (sf_get_pic() == SF_TRUE)) + { + ret = SF_SUCCESS; + } + } + + if(ConfigureModeFlag) + { + ret = SF_SUCCESS; + } + + if(ret != SF_SUCCESS) + { + sprintf((char *)errMsg, "[%s:%d]Reach Max Num/Day Limit,Error Code:0x%08x", __FUNCTION__, __LINE__, ret); + sf_error_log((SINT8 *)errMsg); + }*/ + ret = SF_SUCCESS; + + printf("[%s:%d]ret=%d\n", __FUNCTION__, __LINE__, ret); + return ret; +} + +/************************************************* + Function: sf_ftp_config + Description: send pic to ftp + Input: N/A + Output: N/A + Return: 0 SUCCESS, 1 error + Others: N/A +*************************************************/ +SINT32 sf_ftp_config(UINT8 ssl, UINT8 GprsMode, UINT8 timeout) +{ +#if 1 + SINT32 ret = SF_SUCCESS; + FTP_SIM_E eFtpLocation = FTP_SIM_CGDCONT; + SINT32 ttyRet = 0; + UINT8 calltime = 0; + UINT16 time = 0; + UINT8 pdpIndex = 0; + + UIMenuStoreInfo *pPara = sf_app_ui_para_get(); + + pdpIndex = sf_get_pdp_index(); + + sf_gsm_para_buff_clear(); + printf("[%s:%d]ssl=%d GprsMode=%d\n", __FUNCTION__, __LINE__, ssl, GprsMode); + + while(sf_app_while_flag()) + { + switch(eFtpLocation) + { + case FTP_SIM_CGDCONT: + eFtpLocation = FTP_SIM_NETOPEN; + + if(strstr((const char *)pPara->Sim4gApn, APN_4G_VERIZON)) + { + sprintf((char *)gsmPara, "AT+QICSGP=%d\r", pdpIndex); + eFtpLocation = FTP_SIM_QICSGP0; + } + else if(strstr((const char *)pPara->Sim4gApn, APN_4G_ATT)) + { + sprintf((char *)gsmPara, "AT+QICSGP=%d,1,\"%s\",\"%s\",\"%s\",1\r", pdpIndex, pPara->Sim4gApn, pPara->Sim4gUsr, pPara->Sim4gPwd); + } + else + { + sprintf((char *)gsmPara, "AT+QICSGP=%d,1,\"%s\",\"%s\",\"%s\",1\r", pdpIndex, pPara->Sim4gApn, pPara->Sim4gUsr, pPara->Sim4gPwd); + } + + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + break; + + case FTP_SIM_QICSGP0: + + if(strstr((const char *)gsmPara, "OK")) + { + eFtpLocation = FTP_SIM_NETOPEN; + + if(strstr((const char *)gsmPara, "+QICSGP: 0") || strstr((const char *)gsmPara, "+QICSGP: 1,\"\"")) + { + sprintf((char *)gsmPara, "AT+QICSGP=%d,1,\"%s\",\"%s\",\"%s\",1\r", pdpIndex, pPara->Sim4gApn, pPara->Sim4gUsr, pPara->Sim4gPwd); + } + else + { + eFtpLocation = FTP_SIM_CFTPSSTART; + sprintf((char *)gsmPara, "AT+QIACT=%d\r", pdpIndex); + calltime = 0; + } + + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case FTP_SIM_NETOPEN: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eFtpLocation, "AT TIMEOUT TEST"); + #endif + + if(strstr((const char *)gsmPara, "OK")) + { + eFtpLocation = FTP_SIM_CFTPSSTART; + sprintf((char *)gsmPara, "AT+QIACT=%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + calltime = 0; + } + else if(strstr((const char *)gsmPara, "ERROR")) + { + ret = SF_FTP_ERROR_AT_ERROR; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QICSGP,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_END_CONFIG; + } + else + { + calltime++; + + if(calltime < 10) + { + sf_sleep_ms(200); + } + else if(calltime > MAX_CALL_TIMES) + { + ret = SF_FTP_ERROR_AT_TIMEOUT; + printf("[%s:%d]FTP Configure Timeout!\n", __FUNCTION__, __LINE__); + sprintf((char *)logStr, "[%s:%d]FTP CFG Timeout,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_END_CONFIG; + } + } + + break; + + case FTP_SIM_CFTPSSTART: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eFtpLocation, "ERROR: "); + #endif + + if(strstr((const char *)gsmPara, "OK")) + { + eFtpLocation = FTP_SIM_CFTPSSINGLEIP; + sprintf((char *)gsmPara, "AT+QFTPCFG=\"contextid\",%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + calltime = 0; + } + else if(strstr((const char *)gsmPara, "ERROR")) + { + calltime++; + + if(calltime < 6) + { + sprintf((char *)gsmPara, "AT+QIACT=%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + sf_sleep_ms(800); + } + else + { + ret = SF_FTP_ERROR_AT_ACTIVE; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QIACT Over Try 6 Times,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_END_CONFIG; + } + } + + break; + + case FTP_SIM_CFTPSSINGLEIP: + + if(strstr((const char *)gsmPara, "OK")) + { + if((pPara->FtpSwitch == 0)) + { + eFtpLocation = FTP_SIM_CCHSTART; + sprintf((char *)gsmPara, "AT+QFTPCFG=\"account\",\"%s\",\"%s\"\r", pPara->FtpUsr, pPara->FtpPwd); + } + else if((pPara->FtpSwitch == 2))//ftps + { + eFtpLocation = FTP_SIM_QSSLCFG0; + sprintf((char *)gsmPara, "AT+QFTPCFG=\"account\",\"%s\",\"%s\"\r", pPara->FtpsUsr, pPara->FtpsPwd); + } + + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + + break; + + case FTP_SIM_QSSLCFG0: + sprintf((char *)gsmPara, "AT+QFTPCFG=\"restenable\",0\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_QSSLCFG1; + break; + + case FTP_SIM_QSSLCFG1: + sprintf((char *)gsmPara, "AT+QFTPCFG=\"ssltype\",2\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_QSSLCFG2; + break; + + case FTP_SIM_QSSLCFG2: + sprintf((char *)gsmPara, "AT+QFTPCFG=\"sslctxid\",1\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_QSSLCFG3; + break; + + case FTP_SIM_QSSLCFG3: + sprintf((char *)gsmPara, "AT+QSSLCFG=\"ciphersuite\",1,0xffff\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_QSSLCFG4; + break; + + case FTP_SIM_QSSLCFG4: + sprintf((char *)gsmPara, "AT+QSSLCFG=\"seclevel\",1,0\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_QSSLCFG5; + break; + + case FTP_SIM_QSSLCFG5: + sprintf((char *)gsmPara, "AT+QSSLCFG=\"sslversion\",1,4\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_CFTPLOGIN; + break; + + case FTP_SIM_CCHSTART: + sprintf((char *)gsmPara, "AT+QFTPCFG=\"filetype\",0\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_CFTPSCFG; + break; + + case FTP_SIM_CFTPSCFG: + sprintf((char *)gsmPara, "AT+QFTPCFG=\"transmode\",1\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_CFTPLOGIN; + break; + + case FTP_SIM_CFTPLOGIN: + + if(strstr((const char *)gsmPara, "OK")) + { + eFtpLocation = FTP_SIM_EXIT; + printf("[%s:%d]log ftp\n", __FUNCTION__, __LINE__); + + if((pPara->FtpSwitch == 0)) + { + sprintf((char *)gsmPara, "AT+QFTPOPEN=\"%s\",%s\r", pPara->FtpIp, pPara->FtpPort); + } + else if((pPara->FtpSwitch == 2)) + { + sprintf((char *)gsmPara, "AT+QFTPOPEN=\"%s\",%s\r", pPara->FtpsIp, pPara->FtpsPort); + } + + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + calltime = 0; + } + + break; + + case FTP_SIM_EXIT: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eFtpLocation, "QFTPOPEN TEST"); + #endif + + if(strstr((const char *)gsmPara, "+QFTPOPEN:")) + { + if(strstr((const char *)gsmPara, "+QFTPOPEN: 0")) + { + goto SF_FTP_END_CONFIG; + } + else //+CFTPSSTART: + { + ret = SF_FTP_ERROR_OPEN; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QFTPOPEN Error,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_END_CONFIG; + } + } + else if(strstr((const char *)gsmPara, "ERROR")) + { + ret = SF_FTP_ERROR_OPEN; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QFTPOPEN,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_END_CONFIG; + } + else + { + calltime++; + sf_sleep_ms(800); + + if(calltime > 30) + { + calltime = 0; + ret = SF_FTP_ERROR_TERM; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QFTPOPEN Timeout,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_END_CONFIG; + } + } + + break; + + default: + break; + } + sf_gsm_para_buff_clear(); + + sf_hal_ttyusb2_read(gsmPara, 200); + printf("eFtpLocation=%d,time=%d\n", eFtpLocation, time); + + if(gsmPara[0] != '\0') + { + SLOGI("gsmPara:%s", gsmPara); + } + + time++; + + if(time > 800) + { + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Wait Init Timeout.", __FUNCTION__, __LINE__); + printf("%s,GprsMode=%d\n", logStr, pPara->GprsMode); + SLOGE(logStr); + + time = 0; + ret = SF_FTP_ERROR_SEND_TIMEOUT; + goto SF_FTP_END_CONFIG; + } + } + + SF_FTP_END_CONFIG: + printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret); + return ret; + +#endif + return 0; +} + +/************************************************* + Function: sf_ftp_send + Description: send pic to ftp + Input: N/A + Output: N/A + Return: 0 SUCCESS, 1 error + Others: N/A +*************************************************/ +SINT32 sf_ftp_send(UINT8 *ftpFileName, UINT8 *filePath, UINT8 timeout) +{ +#if 1 + + SINT32 ret = SF_SUCCESS; + FTP_SIM_E eFtpLocation = FTP_SIM_CFTPSCFG; + SINT32 ttyRet = 0; + UINT8 calltime = 0; + UINT16 time = 0; + printf("[%s:%d]ftpFileName:%s,filePath:%s\n", __FUNCTION__, __LINE__, ftpFileName, filePath); + + UIMenuStoreInfo *pPara = sf_app_ui_para_get(); + //sfPara_t *sfParam = sf_ParaGet(); + sf_gsm_para_buff_clear(); + + while(sf_app_while_flag()) + { + switch(eFtpLocation) + { + case FTP_SIM_CFTPSCFG: + eFtpLocation = FTP_SIM_JPG; + sprintf((char *)gsmPara, "AT+QFTPPUT=\"%s\",\"%s\",0\r", ftpFileName, filePath); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + break; + + case FTP_SIM_JPG: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eFtpLocation, "TIMEOUT TEST"); + #endif + + if(strstr((const char *)gsmPara, "+QFTPPUT:") || strstr((const char *)gsmPara, "PUT:")) + { + #if SF_TEST_ERROR_CODE + sf_test_code_err(FTP_SIM_CFTPSCFG, "+QFTPPUT: 1"); + #endif + + if(strstr((const char *)gsmPara, "+QFTPPUT: 0") || strstr((const char *)gsmPara, "PUT: 0,")) + { + if(sf_get_mode_flag() == 0) //auto mode + { + if(pPara->CamMode != SF_CAM_MODE_VIDEO) + { + sendPicSuccessFlag = 1; + } + else + { + sendVideoSuccessFlag = 1; + } + } + + goto SF_FTP_SEND_END; + } + else + { + ret = SF_FTP_ERROR_SEND; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QFTPPUT Error,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + printf("%s", logStr); + goto SF_FTP_SEND_END; + } + } + else if(strstr((const char *)gsmPara, "ERROR")) + { + ret = SF_FTP_ERROR_SEND; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QFTPPUT Error,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + printf("%s", logStr); + goto SF_FTP_SEND_END; + } + else + { + calltime++; + sf_sleep_ms(800); + + if(calltime > (timeout + 10)) + { + calltime = 0; + ret = SF_FTP_ERROR_SEND_TIMEOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QFTPPUT Timeout,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + printf("%s", logStr); + goto SF_FTP_SEND_END; + } + } + + break; + + default: + break; + } + sf_gsm_para_buff_clear(); + + sf_hal_ttyusb2_read(gsmPara, 200); + + if(gsmPara[0] != '\0') + { + printf("%s:%d %d \n%s\n", __FUNCTION__, __LINE__, eFtpLocation, gsmPara); + } + + time++; + + if(time > 800) + { + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Wait Init Timeout.", __FUNCTION__, __LINE__); + printf("%s,GprsMode=%d\n", logStr, pPara->GprsMode); + SLOGE(logStr); + + time = 0; + ret = SF_FTP_ERROR_SEND_TIMEOUT; + goto SF_FTP_SEND_END; + } + } + + SF_FTP_SEND_END: + printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret); + return ret; + +#endif + return 0; +} + +/************************************************* + Function: sf_ftp_send + Description: send pic to ftp + Input: N/A + Output: N/A + Return: 0 SUCCESS, 1 error + Others: N/A +*************************************************/ +SINT32 sf_ftp_stop(UINT8 ssl, UINT8 GprsMode) +{ +#if 1 + + SINT32 ret = SF_SUCCESS; + FTP_SIM_E eFtpLocation = FTP_SIM_CFTPSLOGOUT; + SINT32 ttyRet = 0; + UINT8 calltime = 0; + UINT16 time = 0; + UINT8 pdpIndex = 0; + + UIMenuStoreInfo *pPara = sf_app_ui_para_get(); + + pdpIndex = sf_get_pdp_index(); + + sf_gsm_para_buff_clear(); + printf("%s:%d start ssl:%d GprsMode:%d\n", __FUNCTION__, __LINE__, ssl, GprsMode); + while(sf_app_while_flag()) + { + switch(eFtpLocation) + { + case FTP_SIM_CFTPSLOGOUT: + eFtpLocation = FTP_SIM_CCHSTOP; + sprintf((char *)gsmPara, "AT+QFTPCLOSE\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + break; + + case FTP_SIM_CCHSTOP: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eFtpLocation, "QFTPCLOSE TIMEOUT TEST"); + #endif + + if(strstr((const char *)gsmPara, "OK")) + { + sprintf((char *)gsmPara, "AT+QIDEACT=%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_CFTPSSTOP; + } + else if(strstr((const char *)gsmPara, "ERROR")) + { + calltime++; + + if(calltime < 3) + { + sprintf((char *)gsmPara, "AT+QFTPCLOSE\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + sf_sleep_ms(400); + } + else + { + calltime = 0; + ret = SF_FTP_ERROR_LOGOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QFTPCLOSE Try 3 Times,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + sprintf((char *)gsmPara, "AT+QIDEACT=%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_CFTPSSTOP; + } + } + else + { + calltime++; + sf_sleep_ms(800); + + if(calltime > 60) + { + calltime = 0; + ret = SF_FTP_ERROR_LOGOUT_TIMEOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+CFTPSLOGOUT Timeout,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + sprintf((char *)gsmPara, "AT+QIDEACT=%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + eFtpLocation = FTP_SIM_CFTPSSTOP; + } + } + + break; + + case FTP_SIM_CFTPSSTOP: + #if SF_TEST_ERROR_CODE + sf_test_code_err(eFtpLocation, "ERROR"); + #endif + + if(strstr((const char *)gsmPara, "OK")) + { + goto SF_FTP_STOP_END; + } + else if(strstr((const char *)gsmPara, "ERROR")) + { + calltime++; + + if(calltime < 6) + { + sprintf((char *)gsmPara, "AT+QIDEACT=%d\r", pdpIndex); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + sf_sleep_ms(400); + } + else + { + calltime = 0; + ret = SF_FTP_ERROR_QIDEACT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QIDEACT Try 6 Times,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_STOP_END; + } + } + else + { + calltime++; + sf_sleep_ms(800); + + if(calltime > 60) + { + calltime = 0; + ret = SF_FTP_ERROR_LOGOUT_TIMEOUT; + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]AT+QIDEACT Timeout,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(logStr); + goto SF_FTP_STOP_END; + } + } + + break; + + default: + break; + } + sf_gsm_para_buff_clear(); + sf_hal_ttyusb2_read(gsmPara, 200); + + if(gsmPara[0] != '\0') + { + printf("eFtpLocation=%d,time=%d\ngsmPara:%s\n", eFtpLocation, time, gsmPara); + } + + time++; + + if(time > 800) + { + SLOGE(gsmPara); + sprintf((char *)logStr, "[%s:%d]Wait Init Timeout.", __FUNCTION__, __LINE__); + printf("%s,GprsMode=%d\n", logStr, pPara->GprsMode); + SLOGE(logStr); + + time = 0; + ret = SF_FTP_ERROR_SEND_TIMEOUT; + goto SF_FTP_STOP_END; + } + } + + SF_FTP_STOP_END: + printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret); + return ret; + +#endif + return 0; +} + +SINT32 sf_pic_send_ftp(void) +{ + //extern UINT8 PicName[5][2][35]; + UINT8 ftpFileName[5][64] = { { 0 } }; + UINT8 filePath[5][64] = { { 0 } }; + UINT8 fileStr[5][64] = { { 0 } }; + UINT8 cameraID[20] = { 0 }; + UIMenuStoreInfo *pPara = sf_app_ui_para_get(); + SINT32 ret = SF_SUCCESS; + UINT8 tempPicSize = 0; + UINT8 piccount = 0; + UINT8 pic = 0; + + UINT8 timeout = 60; + SF_SRCFILE_ATTR_S *pThumbFileCfg = sf_file_thumb_cfg_get(); + + sf_custom_str_get(cameraID); + + if(4 == pPara->NetGeneration) + { + tempPicSize = pPara->SendPicSize; + } + else if(3 == pPara->NetGeneration) + { + tempPicSize = ((1 <= pPara->SendPicSize) ? 1 : 0); + } + else + { + tempPicSize = 0; + } + + if(tempPicSize == 0) + { + timeout = 60; + } + else + { + timeout = 120; + } + + /*if(((pPara->CamMode == 1) || (pPara->CamMode == 2)) && (pPara->SendVideoSwitch == 1) && (pPara->NetGeneration == 4)) //video + { + timeout = 100; + } + else if((2 == pPara->SendPicSize) && (((pPara->CamMode == 0) || (pPara->CamMode == 2)) && (pPara->SendPhotoSwitch == 1))) //pic(+video) + { + timeout = 100; + }*/ + + printf("NetGeneration:%dG,tempPicSize=%d,piccount=%d,pic=%d\n", pPara->NetGeneration, tempPicSize, piccount, pic); + + if((pPara->SendMultishotIndex1) || (SF_MANUAL == sf_get_mode_flag())) + { + /*sprintf((char *)ftpFileName[piccount], "%s%s", cameraID, PicName[0][1]); + + if(2 == tempPicSize) + { + sprintf((char *)fileStr[piccount], "%s\\%s%s\\%s", SF_DCIM_DIR, PicName[0][0], DCF_DIR_FREE_CHAR, PicName[0][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[0][1]); + } + else if(1 == tempPicSize) + { + sprintf((char *)fileStr[piccount], "%s\\%s", SF_THUMB_BIG_DIR, PicName[0][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[0][1]); + } + else + { + sprintf((char *)fileStr[piccount], "%s\\%s", SF_THUMB_SMALL_DIR, PicName[0][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[0][1]); + }*/ + sprintf((char *)ftpFileName[piccount], "%s%s", cameraID, pThumbFileCfg->stfileattr[0].thumbfileName); + sprintf((char *)filePath[piccount], "UFS:/%s", pThumbFileCfg->stfileattr[0].thumbfileName); + + piccount++; + } + + if(SF_AUTO == sf_get_mode_flag()) + { + if(pPara->SendMultishotIndex2) + { + /*sprintf((char *)ftpFileName[piccount], "%s%s", cameraID, PicName[1][1]); + + if(2 == tempPicSize) + { + sprintf((char *)fileStr[piccount], "%s\\%s%s\\%s", SF_DCIM_DIR, PicName[1][0], DCF_DIR_FREE_CHAR, PicName[1][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[1][1]); + } + else if(1 == tempPicSize) + { + sprintf((char *)fileStr[piccount], "%s\\%s", SF_THUMB_BIG_DIR, PicName[1][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[1][1]); + } + else + { + sprintf((char *)fileStr[piccount], "%s\\%s", SF_THUMB_SMALL_DIR, PicName[1][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[1][1]); + }*/ + sprintf((char *)ftpFileName[piccount], "%s%s", cameraID, pThumbFileCfg->stfileattr[1].thumbfileName); + sprintf((char *)filePath[piccount], "UFS:/%s", pThumbFileCfg->stfileattr[1].thumbfileName); + + piccount++; + } + + if(pPara->SendMultishotIndex3) + { + /*sprintf((char *)ftpFileName[piccount], "%s%s", cameraID, PicName[2][1]); + + if(2 == tempPicSize) + { + sprintf((char *)fileStr[piccount], "%s\\%s%s\\%s", SF_DCIM_DIR, PicName[2][0], DCF_DIR_FREE_CHAR, PicName[2][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[2][1]); + } + else if(1 == tempPicSize) + { + sprintf((char *)fileStr[piccount], "%s\\%s", SF_THUMB_BIG_DIR, PicName[2][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[2][1]); + } + else + { + sprintf((char *)fileStr[piccount], "%s\\%s", SF_THUMB_SMALL_DIR, PicName[2][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[2][1]); + }*/ + sprintf((char *)ftpFileName[piccount], "%s%s", cameraID, pThumbFileCfg->stfileattr[2].thumbfileName); + sprintf((char *)filePath[piccount], "UFS:/%s", pThumbFileCfg->stfileattr[2].thumbfileName); + + piccount++; + } + + if(pPara->SendMultishotIndex4) + { + /*sprintf((char *)ftpFileName[piccount], "%s%s", cameraID, PicName[3][1]); + + if(2 == tempPicSize) + { + sprintf((char *)fileStr[piccount], "%s\\%s%s\\%s", SF_DCIM_DIR, PicName[3][0], DCF_DIR_FREE_CHAR, PicName[3][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[3][1]); + } + else if(1 == tempPicSize) + { + sprintf((char *)fileStr[piccount], "%s\\%s", SF_THUMB_BIG_DIR, PicName[3][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[3][1]); + } + else + { + sprintf((char *)fileStr[piccount], "%s\\%s", SF_THUMB_SMALL_DIR, PicName[3][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[3][1]); + }*/ + sprintf((char *)ftpFileName[piccount], "%s%s", cameraID, pThumbFileCfg->stfileattr[3].thumbfileName); + sprintf((char *)filePath[piccount], "UFS:/%s", pThumbFileCfg->stfileattr[3].thumbfileName); + + piccount++; + } + + if(pPara->SendMultishotIndex5) + { + /*sprintf((char *)ftpFileName[piccount], "%s%s", cameraID, PicName[4][1]); + + if(2 == tempPicSize) + { + sprintf((char *)fileStr[piccount], "%s\\%s%s\\%s", SF_DCIM_DIR, PicName[4][0], DCF_DIR_FREE_CHAR, PicName[4][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[4][1]); + } + else if(1 == tempPicSize) + { + sprintf((char *)fileStr[piccount], "%s\\%s", SF_THUMB_BIG_DIR, PicName[4][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[4][1]); + } + else + { + sprintf((char *)fileStr[piccount], "%s\\%s", SF_THUMB_SMALL_DIR, PicName[4][1]); + sprintf((char *)filePath[piccount], "UFS:/%s", PicName[4][1]); + }*/ + sprintf((char *)ftpFileName[piccount], "%s%s", cameraID, pThumbFileCfg->stfileattr[4].thumbfileName); + sprintf((char *)filePath[piccount], "UFS:/%s", pThumbFileCfg->stfileattr[4].thumbfileName); + + piccount++; + } + } + + if(4 == pPara->NetGeneration) + { + if(piccount >= 2) + { + piccount = ((pPara->SendPicSize == 2) ? 2 : piccount); + } + } + else + { + if(piccount >= 1) + { + piccount = 1; + } + } + + printf("[%s:%d]piccount=%d\n", __FUNCTION__, __LINE__, piccount); + + /* dbg log */ + for(pic = 0; pic < piccount; pic++) + { + printf("%s:%d pic:%d ftpFileName:%s filePath:%s fileStr:%s\n", __FUNCTION__, __LINE__, pic, ftpFileName[pic], filePath[pic], fileStr[pic]); + } + + for(pic = 0; pic < piccount; pic++) + { + //ret = sf_simcom_upload_file_to_module(fileStr[pic],ftpFileName[pic]); + ret = SF_SUCCESS; + + if(SF_SUCCESS == ret) + { + ret = sf_ftp_send(ftpFileName[pic], filePath[pic], timeout); + + if(SF_SUCCESS != ret) + { + printf("%s:%d err ftpFileName:%s filePath:%s\n", __FUNCTION__, __LINE__, ftpFileName[pic], filePath[pic]); + } + } + else + { + printf("%s:%d err up file ftpFileName:%s filePath:%s\n", __FUNCTION__, __LINE__, ftpFileName[pic], filePath[pic]); + } + } + + printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret); + return ret; +} + +SINT32 sf_video_send_ftp(void) +{ + //extern UINT8 PicName[5][2][35]; + UINT8 ftpFileName[64] = { 0 }; + UINT8 filePath[64] = { 0 }; + //UINT8 fileStr[64] = {0}; + UINT8 cameraID[20] = { 0 }; + //UINT8 videoDirKey[4] = { 0 }; + UINT8 videoDir[64] = { 0 }; + //UINT8 videoFname[15] = { 0 }; + UIMenuStoreInfo *pPara = sf_app_ui_para_get(); + SINT32 ret = SF_SUCCESS; + UINT8 tempPicSize = 0; + UINT8 piccount = 0; + UINT8 pic = 0; + UINT8 timeout = 120; + UINT8 fileIndex = 0; + SF_SRCFILE_ATTR_S *pThumbFileCfg = sf_file_thumb_cfg_get(); + + sf_custom_str_get(cameraID); + + printf("NetGeneration:%dG,tempPicSize=%d,piccount=%d,pic=%d\n", pPara->NetGeneration, tempPicSize, piccount, pic); + /*sf_get_send_video_fname(videoDirKey, videoFname); + + sprintf((char *)ftpFileName, "%s%s", cameraID, videoFname); + sprintf((char *)filePath, "UFS:/%s", videoFname); + sprintf((char *)videoDir, "%s\\%s%s\\%s", SF_DCIM_DIR, videoDirKey, DCF_DIR_FREE_CHAR, videoFname); +*/ + fileIndex = sf_check_file_video(); + + sprintf((char *)ftpFileName, "%s%s", cameraID, pThumbFileCfg->stfileattr[fileIndex].thumbfileName); + sprintf((char *)filePath, "UFS:/%s", pThumbFileCfg->stfileattr[fileIndex].thumbfileName); + + printf("%s:%d ftpFileName:%s filePath:%s videoDir:%s\n", __FUNCTION__, __LINE__, ftpFileName, filePath, videoDir); + + //ret = sf_simcom_upload_file_to_module(videoDir,ftpFileName); + ret = SF_SUCCESS; + + if(SF_SUCCESS != ret) + { + printf("%s:%d upload err ret: [0x%08X] ftpFileName:%s filePath:%s\n", __FUNCTION__, __LINE__, ret, ftpFileName, filePath); + } + else + { + ret = sf_ftp_send(ftpFileName, filePath, timeout); + + if(SF_SUCCESS != ret) + { + printf("%s:%d err ret: [0x%08X] ftpFileName:%s filePath:%s\n", __FUNCTION__, __LINE__, ret, ftpFileName, filePath); + } + } + + printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret); + return ret; +} + +SINT32 sf_simcom_ftp_dailyreport_send(void) +{ + SINT32 ret = SF_SUCCESS; + #if 0 + UINT8 CamNameStr[20] = { 0 }; + UINT8 uploadFname[64] = { 0 }; + UINT8 customStr[64] = { 0 }; + UINT8 filePath[64] = { 0 }; + UINT8 timeout = 60; + printf("%s:%d start\n", __FUNCTION__, __LINE__); + + if(SF_SUCCESS != sf_create_send_dailyreport()) + { + printf("%s:%d err create dailyreport file\n", __FUNCTION__, __LINE__); + return SF_FAILURE; + } + + sprintf((char *)filePath, "UFS:/%s", SF_DAILYREPORT_TXT); + + printf("%s:%d filePath:%s\n", __FUNCTION__, __LINE__, filePath); + sf_custom_send_str_get((UINT8 *)SF_DAILYREPORT_FILENAME, customStr); + sf_custom_str_get(CamNameStr); + sprintf((char *)uploadFname, "%s-%s%s", customStr, CamNameStr, SF_DAILYREPORT_TXT); + + ret = sf_quectel_upload_file_to_module((UINT8 *)SF_DAILYREPORT_FILENAME, (UINT8 *)SF_DAILYREPORT_TXT); + + if(SF_SUCCESS != ret) + { + printf("%s:%d upload err ret: [0x%08X] filePath:%s\n", __FUNCTION__, __LINE__, ret, filePath); + } + else + { + ret = sf_ftp_send(uploadFname, filePath, timeout); + + if(SF_SUCCESS != ret) + { + printf("%s:%d err ret: [0x%08X] filePath:%s\n", __FUNCTION__, __LINE__, ret, filePath); + } + } +#endif + printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret); + return ret; +} + +/***************************************************************************** + Function: sf_check_ftp_send + Description: check the ftp need send or no. + Input: 0:only need check max num; 1:check pic/video send; 2:check dr send; + Output: N/A + Return: 0:can send; -1:no send; + Others: N/A +*****************************************************************************/ +SINT32 sf_check_ftp_send(UINT8 mode) +{ + SINT32 ret = SF_FAILURE; + UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); + + if((mode == 0) || (mode == 1)) + { + if(sf_check_max_num() == SF_SUCCESS) + { + if(mode == 0) + { + ret = SF_SUCCESS; + } + else + { + if(((puiPara->CamMode == SF_CAM_MODE_PHOTO) && (puiPara->SendPhotoSwitch == 1)) || ((puiPara->CamMode == SF_CAM_MODE_VIDEO) && (puiPara->SendVideoSwitch == 1)) + || ((puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) && ((puiPara->SendPhotoSwitch == 1) || (puiPara->SendVideoSwitch == 1)))) + { + if((puiPara->FtpSwitch != 1) && (puiPara->Sim4gApn[0] != '\0')) + { + //if ftp no set off,and ftps info no null,then send ftps first. + //if ftp no set off,and ftps info is null,then send ftp. + if(((puiPara->FtpSwitch == 0) && (puiPara->FtpIp[0] != '\0') && (puiPara->FtpPort[0] != '\0') && (puiPara->FtpUsr[0] != '\0') && (puiPara->FtpPwd[0] != '\0')) + || ((puiPara->FtpSwitch == 2) && (puiPara->FtpsIp[0] != '\0') && (puiPara->FtpsPort[0] != '\0') && (puiPara->FtpsUsr[0] != '\0') && (puiPara->FtpsPwd[0] != '\0'))) + { + ret = SF_SUCCESS; + } + } + } + } + } + } + else + { + if((puiPara->FtpSwitch != 1) && (puiPara->Sim4gApn[0] != '\0')) + { + //if ftp no set off,and ftps info no null,then send ftps first. + //if ftp no set off,and ftps info is null,then send ftp. + if(((puiPara->FtpSwitch == 0) && (puiPara->FtpIp[0] != '\0') && (puiPara->FtpPort[0] != '\0') && (puiPara->FtpUsr[0] != '\0') && (puiPara->FtpPwd[0] != '\0')) + || ((puiPara->FtpSwitch == 2) && (puiPara->FtpsIp[0] != '\0') && (puiPara->FtpsPort[0] != '\0') && (puiPara->FtpsUsr[0] != '\0') && (puiPara->FtpsPwd[0] != '\0'))) + { + ret = SF_SUCCESS; + } + } + } + + printf("[%s:%d] ret=%d\n", __FUNCTION__, __LINE__, ret); + return ret; +} + +/************************************************* + Function: sf_simcom_ftp_send + Description: ftp send. + Input: 1:send pic/video. 2:send dr. + Output: N/A + Return: 0:success; else:fail; + Others: N/A +*************************************************/ +SINT32 sf_simcom_ftp_send(UINT8 mode) +{ + SINT32 ret1 = SF_SUCCESS; //0:success; else:fail; + SINT32 ret2 = SF_SUCCESS; //0:success; else:fail; + UINT8 ssl = 0; + UINT8 gprsMode = 0; + UINT8 timeout = 30; + UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); + + printf("[%s:%d] s\n", __FUNCTION__, __LINE__); + + ssl = ((2 == puiPara->FtpSwitch) ? 1 : 0); + gprsMode = 0;//puiPara->GprsMode; + printf("[%s:%d] ssl:%d,GprsMode:%d\n", __FUNCTION__, __LINE__, ssl, gprsMode); + + if(mode == 1 ) //send Original+video + { + if(((puiPara->CamMode == SF_CAM_MODE_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO)) && (puiPara->SendVideoSwitch == 1) && (puiPara->NetGeneration == 4)) //video + { + timeout = 100; + } + else if((2 == puiPara->SendPicSize) && (((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO)) && (puiPara->SendPhotoSwitch == 1))) //pic(+video) + { + timeout = 100; + } + } + + ret1 = sf_ftp_config(ssl, gprsMode, timeout); + + if(SF_SUCCESS == ret1) + { + if(mode == 1) + { + if(((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO)) && (puiPara->SendPhotoSwitch == 1)) //pic(+video) + { + if(smtpUploadPicFlag == 0) + { + ret1 = sf_upload_send_files_to_module(1); + + if(SF_UPLOAD_ERROR_RETRY == ret1) + { + printf("[%s:%d] PIC SF_UPLOAD_ERROR_RETRY\n", __FUNCTION__, __LINE__); + ret1 = sf_ftp_config(ssl, gprsMode, timeout); + + if(ret1 == SF_SUCCESS) + { + ret1 = sf_upload_send_files_to_module(1); + } + } + } + + if(ret1 == SF_SUCCESS) + { + ret1 = sf_pic_send_ftp(); + } + } + + printf("[%s:%d]puiPara->NetGeneration=%d\n", __FUNCTION__, __LINE__, puiPara->NetGeneration); + + if(((puiPara->CamMode == SF_CAM_MODE_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO)) && (puiPara->SendVideoSwitch == 1) && (puiPara->NetGeneration == 4)) //video + { + if(smtpUploadVideoFlag == 0) + { + ret1 = sf_upload_send_files_to_module(2); + + if(SF_UPLOAD_ERROR_RETRY == ret1) + { + printf("[%s:%d] SF_UPLOAD_ERROR_RETRY\n", __FUNCTION__, __LINE__); + ret1 = sf_ftp_config(ssl, gprsMode, timeout); + + if(ret1 == SF_SUCCESS) + { + ret1 = sf_upload_send_files_to_module(2); + } + } + } + + if(ret1 == SF_SUCCESS) + { + ret1 = sf_video_send_ftp(); + } + } + } + else + { + ret1 = sf_simcom_ftp_dailyreport_send(); + } + } + + if(ret1 != SF_FTP_ERROR_TERM) + { + ret2 = sf_ftp_stop(ssl, gprsMode); + } + + #if SF_TEST_ERROR_CODE + sf_set_code_err_flag(0); + #endif + printf("[%s:%d]ret1:[0x%08X],ret2:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret1, ret2); + + if(ret1 != SF_SUCCESS) + { + return ret1; + } + else + { + return ret2; + } +} + +#ifdef __cplusplus +#if __cplusplus +} +#endif +#endif + diff --git a/code/application/source/sf_app/code/source/4gMng/sf_http_server.c b/code/application/source/sf_app/code/source/4gMng/sf_http_server.c index ce69a8bbc..a1997e11b 100755 --- a/code/application/source/sf_app/code/source/4gMng/sf_http_server.c +++ b/code/application/source/sf_app/code/source/4gMng/sf_http_server.c @@ -19,6 +19,7 @@ #include "cJSON.h" #include"sf_http_server.h" +#include "sf_base64.h" #ifdef __cplusplus #if __cplusplus extern "C" { @@ -339,17 +340,17 @@ static SINT32 http_pushfile_to_server(SINT32 socketfd, SF_FILE_ATTR_S *stFileAtt SLOGD("SF_SUCCESS!\n"); return SF_SUCCESS; } -static SINT32 http_file_response_parse() +/*static SINT32 http_file_response_parse() { return SF_SUCCESS; -} +}*/ SINT32 sf_usbnet_http_authenrequst(SF_PDT_PARAM_STATISTICS_S *pStaticParam) { SF_COMM_CHECK_POINTER(pStaticParam,SF_FAILURE); SINT32 s32ret = 0; - SINT32 recv_byte = 0; + //SINT32 recv_byte = 0; SINT32 sock_cli = 0; SF_CHAR data_buff[BUFFER_SIZE] = { 0 }; diff --git a/code/application/source/sf_app/code/source/4gMng/sf_module.c b/code/application/source/sf_app/code/source/4gMng/sf_module.c index a06aeda9b..12a18f1c3 100755 --- a/code/application/source/sf_app/code/source/4gMng/sf_module.c +++ b/code/application/source/sf_app/code/source/4gMng/sf_module.c @@ -64,51 +64,31 @@ SINT32 sf_4G_sim_IsInsert(void) static UINT8 sf_4g_net_level_get(UINT8 simSignal) { - if(simSignal == 0) - { - return 0; - } - else if((simSignal <= 95) && (simSignal > 0)) - { - return 4; - } - else if((simSignal <= 105) && (simSignal > 95)) - { - return 3; - } - else if((simSignal <= 115) && (simSignal > 105)) - { - return 3; - } - else if((simSignal > 115)) - return 2; + if(simSignal <= 105) + { + return 4; + } + else if(simSignal <= 115) + { + return 3; + } + else + { + return 2; + } - return SF_SUCCESS; } static UINT8 sf_3g_net_level_get(UINT8 simSignal) { - if(simSignal == 0) - { - return 0; - } - else if(simSignal < 10) - { - return 2; - } - else if(simSignal < 14) - { - return 3;//t100, custumer signal level,20210914 - } - else if(simSignal < 18) - { - return 3;//t100, custumer signal level,20210914 - } - else if(simSignal <= 31) - { - return 4;//t100, custumer signal level,20210914 - } + if (simSignal < 8) + return 2; + else if (simSignal < 14) + return 3; + else + return 4; + return SF_SUCCESS; } @@ -268,6 +248,7 @@ SINT32 sf_4G_gps_search_result(SF_FN_PARAM_S *pfnParam) SINT32 sf_4G_sim_init(SF_FN_PARAM_S *pfnParam) { #if defined(CFG_MODULE_EG91) + //return sf_quectel_module_complete_init(); return eg91_sim_init(pfnParam); #endif } diff --git a/code/application/source/sf_app/code/source/4gMng/sf_opera_adapt.c b/code/application/source/sf_app/code/source/4gMng/sf_opera_adapt.c index 7d1953ef0..f6cd73c0b 100755 --- a/code/application/source/sf_app/code/source/4gMng/sf_opera_adapt.c +++ b/code/application/source/sf_app/code/source/4gMng/sf_opera_adapt.c @@ -37,16 +37,16 @@ extern "C" { #define MMS_SET (0) -UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTICS_S *sim_info_t) +UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, UIMenuStoreInfo *sim_info_t) { MLOGD("Auto_Operation_Adjust NEW, Name:%s\n", operatorName); if((strncmp(operatorName, "46001", 5) == 0) || (strncmp(operatorName, "46010", 5) == 0)) //china union { //SMTP,FTP SET - strcpy(sim_info_t->ApnGPRS, "3gnet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); - //LOGI("Auto_Operation_Adjust NEW, ApnGPRS:%s\n", sim_info_t->ApnGPRS); + strcpy(sim_info_t->Sim4gApn, "3gnet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); + //LOGI("Auto_Operation_Adjust NEW, Sim4gApn:%s\n", sim_info_t->Sim4gApn); #if MMS_SET //MMS SET strcpy(puiPara->APNMMS, "3gwap"); @@ -60,9 +60,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if((strncmp(operatorName, "46000", 5) == 0) || (strncmp(operatorName, "46002", 5) == 0) || (strncmp(operatorName, "46004", 5) == 0) || (strncmp(operatorName, "46007", 5) == 0))//china union { - strcpy(sim_info_t->ApnGPRS, "CMNET"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "CMNET"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "CMWAP"); @@ -75,9 +75,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if((strncmp(operatorName, "46003", 5) == 0) || (strncmp(operatorName, "46005", 5) == 0) || (strncmp(operatorName, "46011", 5) == 0))//china telcom { - strcpy(sim_info_t->ApnGPRS, "CTNET"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "CTNET"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "CTWAP"); @@ -93,9 +93,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI || (strncmp(operatorName, "31127", 5) == 0) || (strncmp(operatorName, "31128", 5) == 0) || (strncmp(operatorName, "31139", 5) == 0) || (strncmp(operatorName, "31148", 5) == 0)) //Vierzon { - strcpy((char *)sim_info_t->ApnGPRS, "vzwinternet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy((char *)sim_info_t->Sim4gApn, "vzwinternet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy((char *)puiPara->MmsApn, "\0"); @@ -108,9 +108,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if((strncmp(operatorName, "50501", 5) == 0) || (strncmp(operatorName, "50511", 5) == 0) || (strncmp(operatorName, "50571", 5) == 0) || (strncmp(operatorName, "50572", 5) == 0))//australia telstra { - strcpy(sim_info_t->ApnGPRS, "telstra.internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "telstra.internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "telstra.mms"); @@ -123,9 +123,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "21910", 5) == 0) //Croatia VIPnet { - strcpy(sim_info_t->ApnGPRS, "data.vip.hr"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "data.vip.hr"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "mms.vipnet.hr"); @@ -138,9 +138,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "21901", 5) == 0) //Croatia T-Mobile { - strcpy(sim_info_t->ApnGPRS, "internet.ht.hr"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet.ht.hr"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "mms.htgprs"); @@ -153,9 +153,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "21902", 5) == 0) // Croatia Tele2 { - strcpy(sim_info_t->ApnGPRS, "internet.tele2.hr"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet.tele2.hr"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "internet.tele2.hr"); @@ -168,9 +168,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if((strncmp(operatorName, "23820", 5) == 0) || (strncmp(operatorName, "23830", 5) == 0))//Danmark Telia { - strcpy(sim_info_t->ApnGPRS, "www.internet.mtelia.dk"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "www.internet.mtelia.dk"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "www.mms.mtelia.dk"); @@ -183,9 +183,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "23801", 5) == 0) //TDC { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://192.168.241.114:8002"); @@ -198,9 +198,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "23802", 5) == 0) //Telenor { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.telenor.dk"); @@ -213,9 +213,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "23806", 5) == 0) //Oister { - strcpy(sim_info_t->ApnGPRS, "Data.dk"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "Data.dk"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.oister.dk"); @@ -229,9 +229,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "24603", 5) == 0)//Lithuania Tele 2 { - strcpy(sim_info_t->ApnGPRS, "internet.tele2.lt"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet.tele2.lt"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "mms.tele2.lt"); @@ -244,9 +244,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "24602", 5) == 0)//Lithuania BITE { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "mms"); @@ -259,9 +259,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "24601", 5) == 0)//Lithuania Omnitel { - strcpy(sim_info_t->ApnGPRS, "omnitel"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "omnitel"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "gprs.mms.lt"); @@ -274,9 +274,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "53001", 5) == 0)//New Zealand Vodafone { - strcpy(sim_info_t->ApnGPRS, "vodafone"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "vodafone"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "live.vodafone.com"); @@ -289,9 +289,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "53024", 5) == 0)//New Zealand Vodafone { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "mms"); @@ -304,9 +304,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "22610", 5) == 0)// Romania Orange { - strcpy(sim_info_t->ApnGPRS, "net"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "net"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "mms"); @@ -319,9 +319,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "22601", 5) == 0)// Romania Vodafone { - strcpy(sim_info_t->ApnGPRS, "live.vodafone.com"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "live.vodafone.com"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "\0"); @@ -334,9 +334,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "22603", 5) == 0)// Romania Romtelecom { - strcpy(sim_info_t->ApnGPRS, "broadband"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "broadband"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "\0"); @@ -349,9 +349,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "22605", 5) == 0)// Romania DIGI.mobil { - strcpy(sim_info_t->ApnGPRS, "prepaid"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "prepaid"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "\0"); @@ -364,9 +364,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if((strncmp(operatorName, "25028", 5) == 0) || (strncmp(operatorName, "25099", 5) == 0))// Russian Federation Beeline { - strcpy(sim_info_t->ApnGPRS, "internet.beeline.ru"); - strcpy(sim_info_t->ApnUsername, "beeline"); - strcpy(sim_info_t->ApnPassword, "beeline"); + strcpy(sim_info_t->Sim4gApn, "internet.beeline.ru"); + strcpy(sim_info_t->Sim4gUsr, "beeline"); + strcpy(sim_info_t->Sim4gPwd, "beeline"); #if MMS_SET strcpy(puiPara->APNMMS, "mms.beeline.ru"); @@ -379,9 +379,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "25001", 5) == 0)// Russian Federation MTS { - strcpy(sim_info_t->ApnGPRS, "internet.mts.ru"); - strcpy(sim_info_t->ApnUsername, "mts"); - strcpy(sim_info_t->ApnPassword, "mts"); + strcpy(sim_info_t->Sim4gApn, "internet.mts.ru"); + strcpy(sim_info_t->Sim4gUsr, "mts"); + strcpy(sim_info_t->Sim4gPwd, "mts"); #if MMS_SET strcpy(puiPara->APNMMS, "mms.mts.ru"); @@ -394,9 +394,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "25002", 5) == 0)// Russian Federation MegaFon { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "gdata"); - strcpy(sim_info_t->ApnPassword, "gdata"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "gdata"); + strcpy(sim_info_t->Sim4gPwd, "gdata"); #if MMS_SET strcpy(puiPara->APNMMS, "mms"); @@ -409,9 +409,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "25020", 5) == 0)// Russian Federation Tele2 { - strcpy(sim_info_t->ApnGPRS, "internet.tele2.ru"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet.tele2.ru"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "mms.tele2.ru"); @@ -424,9 +424,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "25011", 5) == 0)// Russian Federation Yota { - strcpy(sim_info_t->ApnGPRS, "internet.yota"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet.yota"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "mms.yota"); @@ -439,9 +439,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "25035", 5) == 0)// Russian Federation Motiv { - strcpy(sim_info_t->ApnGPRS, "inet.ycc.ru"); - strcpy(sim_info_t->ApnUsername, "motiv"); - strcpy(sim_info_t->ApnPassword, "motiv"); + strcpy(sim_info_t->Sim4gApn, "inet.ycc.ru"); + strcpy(sim_info_t->Sim4gUsr, "motiv"); + strcpy(sim_info_t->Sim4gPwd, "motiv"); #if MMS_SET strcpy(puiPara->APNMMS, "mms.ycc.ru"); @@ -454,9 +454,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "24007", 5) == 0)//Sweden Tele2 COMVIQ { - strcpy(sim_info_t->ApnGPRS, "4G.tele2.se"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "4G.tele2.se"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mmsc.tele2.se"); @@ -469,9 +469,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "24001", 5) == 0)//Sweden TeliaSonera Mobile { - strcpy(sim_info_t->ApnGPRS, "online.telia.se"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "online.telia.se"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mmss"); @@ -484,9 +484,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if((strncmp(operatorName, "24006", 5) == 0) || (strncmp(operatorName, "24008", 5) == 0) || (strncmp(operatorName, "24024", 5) == 0))//Sweden Telenor Mobile Sverige { - strcpy(sim_info_t->ApnGPRS, "services.telenor.se"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "services.telenor.se"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms"); @@ -499,9 +499,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if((strncmp(operatorName, "23433", 5) == 0) || (strncmp(operatorName, "23434", 5) == 0))// United Kingdom Orange { - strcpy(sim_info_t->ApnGPRS, "orangeinternet"); - strcpy(sim_info_t->ApnUsername, "user"); - strcpy(sim_info_t->ApnPassword, "pass"); + strcpy(sim_info_t->Sim4gApn, "orangeinternet"); + strcpy(sim_info_t->Sim4gUsr, "user"); + strcpy(sim_info_t->Sim4gPwd, "pass"); #if MMS_SET strcpy(puiPara->APNMMS, "orangemms"); @@ -515,9 +515,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if((strncmp(operatorName, "23402", 5) == 0) || (strncmp(operatorName, "23410", 5) == 0) || (strncmp(operatorName, "23411", 5) == 0))// United Kingdom O2 { - strcpy(sim_info_t->ApnGPRS, "mobile.o2.co.uk"); - strcpy(sim_info_t->ApnUsername, "web"); - strcpy(sim_info_t->ApnPassword, "password"); + strcpy(sim_info_t->Sim4gApn, "mobile.o2.co.uk"); + strcpy(sim_info_t->Sim4gUsr, "web"); + strcpy(sim_info_t->Sim4gPwd, "password"); #if MMS_SET strcpy(puiPara->APNMMS, "payandgo.o2.co.uk"); @@ -530,9 +530,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "23415", 5) == 0)//United Kingdom Vodafone { - strcpy(sim_info_t->ApnGPRS, "pp.vodafone.co.uk"); - strcpy(sim_info_t->ApnUsername, "web"); - strcpy(sim_info_t->ApnPassword, "web"); + strcpy(sim_info_t->Sim4gApn, "pp.vodafone.co.uk"); + strcpy(sim_info_t->Sim4gUsr, "web"); + strcpy(sim_info_t->Sim4gPwd, "web"); #if MMS_SET strcpy(puiPara->APNMMS, "wap.vodafone.co.uk"); @@ -545,9 +545,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "23430", 5) == 0)//United Kingdom T-Mobile { - strcpy(sim_info_t->ApnGPRS, "general.t-mobile.uk"); - strcpy(sim_info_t->ApnUsername, "user"); - strcpy(sim_info_t->ApnPassword, "wap"); + strcpy(sim_info_t->Sim4gApn, "general.t-mobile.uk"); + strcpy(sim_info_t->Sim4gUsr, "user"); + strcpy(sim_info_t->Sim4gPwd, "wap"); #if MMS_SET strcpy(puiPara->APNMMS, "general.t-mobile.uk"); @@ -560,9 +560,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "23420", 5) == 0)//United Kingdom 3 { - strcpy(sim_info_t->ApnGPRS, "three.co.uk"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "three.co.uk"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "mms.three.co.uk"); @@ -575,9 +575,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if((strncmp(operatorName, "24403", 5) == 0) || (strncmp(operatorName, "24412", 5) == 0))// Finland DNA { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mmsc.dnafinland.fi"); @@ -590,9 +590,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "24421", 5) == 0)// Finland Saunalahti { - strcpy(sim_info_t->ApnGPRS, "internet.saunalahti"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet.saunalahti"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.saunalahti.fi:8002/"); @@ -605,9 +605,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "24405", 5) == 0)// Finland Elisa { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.elisa.fi"); @@ -620,9 +620,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "24491", 5) == 0)// Finland Sonera { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.sonera.net:8002/"); @@ -635,9 +635,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "24410", 5) == 0)// Finland TDC { - strcpy(sim_info_t->ApnGPRS, "inet.tdc.fi"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "inet.tdc.fi"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mmsc.tdc.fi"); @@ -650,9 +650,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "65507", 5) == 0)// South Africa Cell C { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.cmobile.co.za/"); @@ -665,9 +665,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "65510", 5) == 0)// South Africa MTN { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "guest"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "guest"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.mtn.co.za/mms/wapenc"); @@ -680,9 +680,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "65501", 5) == 0)// South Africa Vodacom { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "guest"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "guest"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mmsc.vodacom4me.co.za/"); @@ -695,9 +695,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "65502", 5) == 0)// South Africa 8ta { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "guest"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "guest"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.8ta.com:38090/was"); @@ -710,9 +710,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "22201", 5) == 0)// Italy TIM { - strcpy(sim_info_t->ApnGPRS, "ibox.tim.it"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "ibox.tim.it"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.tim.it/servlets/mms"); @@ -725,9 +725,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "22210", 5) == 0)// Italy Vodafone { - strcpy(sim_info_t->ApnGPRS, "mobile.vodafone.it"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "mobile.vodafone.it"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.vodafone.it/servlets/mms"); @@ -740,9 +740,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "22288", 5) == 0)// Italy wind { - strcpy(sim_info_t->ApnGPRS, "internet.wind"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet.wind"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.wind.it"); @@ -755,9 +755,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "22208", 5) == 0) //Italy Fastweb Mobile { - strcpy(sim_info_t->ApnGPRS, "apn.fastweb.it"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "apn.fastweb.it"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "\0"); @@ -770,9 +770,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "22207", 5) == 0) //Italy Kena Mobile { - strcpy(sim_info_t->ApnGPRS, "web.kenamobile.it"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "web.kenamobile.it"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "\0"); @@ -785,9 +785,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "22215", 5) == 0) //Italy Iliad { - strcpy(sim_info_t->ApnGPRS, "iliad"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "iliad"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "\0"); @@ -800,9 +800,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "22233", 5) == 0) //Italy PosteMobile { - strcpy(sim_info_t->ApnGPRS, "wap.postemobile.it"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "wap.postemobile.it"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "\0"); @@ -815,9 +815,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "20815", 5) == 0)// France Free Mobile { - strcpy(sim_info_t->ApnGPRS, "free"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "free"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.free.fr"); @@ -830,9 +830,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "20801", 5) == 0) // France Orange { - strcpy(sim_info_t->ApnGPRS, "orange"); - strcpy(sim_info_t->ApnUsername, "orange"); - strcpy(sim_info_t->ApnPassword, "orange"); + strcpy(sim_info_t->Sim4gApn, "orange"); + strcpy(sim_info_t->Sim4gUsr, "orange"); + strcpy(sim_info_t->Sim4gPwd, "orange"); #if MMS_SET strcpy(puiPara->URL, "http://mms.orange.fr"); @@ -845,9 +845,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "20820", 5) == 0)// France Bouygues Telecom { - strcpy(sim_info_t->ApnGPRS, "mmsbouygtel.com"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "mmsbouygtel.com"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.bouyguestelecom.fr/mms/wap"); @@ -860,9 +860,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "20810", 5) == 0)// France SFR { - strcpy(sim_info_t->ApnGPRS, "sl2sfr"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "sl2sfr"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms1"); @@ -878,9 +878,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI || (strncmp(operatorName, "31041", 5) == 0) || (strncmp(operatorName, "31056", 5) == 0) \ || (strncmp(operatorName, "31068", 5) == 0) || (strncmp(operatorName, "31028", 5) == 0))// United States AT&T { - strcpy(sim_info_t->ApnGPRS, "nxtgenphone"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "nxtgenphone"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mmsc.mobile.att.net"); @@ -897,9 +897,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI || (strncmp(operatorName, "31025", 5) == 0) || (strncmp(operatorName, "31026", 5) == 0) || (strncmp(operatorName, "31027", 5) == 0) || (strncmp(operatorName, "31029", 5) == 0) || (strncmp(operatorName, "31031", 5) == 0) || (strncmp(operatorName, "31033", 5) == 0) || (strncmp(operatorName, "31058", 5) == 0) || (strncmp(operatorName, "31066", 5) == 0) || (strncmp(operatorName, "31080", 5) == 0))// United States T-Mobile { - strcpy(sim_info_t->ApnGPRS, "fast.t-mobile.com"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "fast.t-mobile.com"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.msg.eng.t-mobile.com/mms/wapenc"); @@ -913,9 +913,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if ((strncmp(operatorName, "26206", 5) == 0) || (strncmp(operatorName, "26212", 5) == 0)) { // Germany Telekom - strcpy(sim_info_t->ApnGPRS, "internet.telekom"); - strcpy(sim_info_t->ApnUsername, "t-mobile"); - strcpy(sim_info_t->ApnPassword, "tm"); + strcpy(sim_info_t->Sim4gApn, "internet.telekom"); + strcpy(sim_info_t->Sim4gUsr, "t-mobile"); + strcpy(sim_info_t->Sim4gPwd, "tm"); #if MMS_SET strcpy(puiPara->URL, "http://mms.t-mobile.de/servlets/mms"); @@ -929,9 +929,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if(strncmp(operatorName, "26201", 5) == 0) { // Germany T-Mobile - strcpy(sim_info_t->ApnGPRS, "internet.t-mobile"); - strcpy(sim_info_t->ApnUsername, "t-mobile"); - strcpy(sim_info_t->ApnPassword, "tm"); + strcpy(sim_info_t->Sim4gApn, "internet.t-mobile"); + strcpy(sim_info_t->Sim4gUsr, "t-mobile"); + strcpy(sim_info_t->Sim4gPwd, "tm"); #if MMS_SET strcpy(puiPara->URL, "http://mms.t-mobile.de/servlets/mms"); @@ -945,9 +945,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if ((strncmp(operatorName, "26202", 5) == 0) || (strncmp(operatorName, "26204", 5) == 0) || (strncmp(operatorName, "26209", 5) == 0)) { // Germany Vodafone - strcpy(sim_info_t->ApnGPRS, "web.vodafone.de"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "web.vodafone.de"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://139.7.24.1/servlets/mms"); @@ -961,9 +961,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if((strncmp(operatorName, "26203", 5) == 0) || (strncmp(operatorName, "26205", 5) == 0) || (strncmp(operatorName, "26277", 5) == 0)) { // Germany E-Plus - strcpy(sim_info_t->ApnGPRS, "internet.eplus.de"); - strcpy(sim_info_t->ApnUsername, "eplus"); - strcpy(sim_info_t->ApnPassword, "internet"); + strcpy(sim_info_t->Sim4gApn, "internet.eplus.de"); + strcpy(sim_info_t->Sim4gUsr, "eplus"); + strcpy(sim_info_t->Sim4gPwd, "internet"); #if MMS_SET strcpy(puiPara->URL, "http://mms/eplus"); @@ -977,9 +977,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if ((strncmp(operatorName, "26207", 5) == 0) || (strncmp(operatorName, "26208", 5) == 0) || (strncmp(operatorName, "26211", 5) == 0)) { // Germany O2 - strcpy(sim_info_t->ApnGPRS, "pinternet.interkom.de"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "pinternet.interkom.de"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://10.81.0.7:8002/"); @@ -993,9 +993,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if((strncmp(operatorName, "29331", 5) == 0) || (strncmp(operatorName, "29341", 5) == 0) || (strncmp(operatorName, "29351", 5) == 0)) { // Slovenia Telekom - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "mobitel"); - strcpy(sim_info_t->ApnPassword, "internet"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "mobitel"); + strcpy(sim_info_t->Sim4gPwd, "internet"); #if MMS_SET strcpy(puiPara->URL, "http://mms.telekom.si"); @@ -1009,9 +1009,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if (strncmp(operatorName, "29340", 5) == 0) { // Slovenia Simobil - strcpy(sim_info_t->ApnGPRS, "internet.simobil.si"); - strcpy(sim_info_t->ApnUsername, "simobil"); - strcpy(sim_info_t->ApnPassword, "internet"); + strcpy(sim_info_t->Sim4gApn, "internet.simobil.si"); + strcpy(sim_info_t->Sim4gUsr, "simobil"); + strcpy(sim_info_t->Sim4gPwd, "internet"); #if MMS_SET strcpy(puiPara->URL, "http://mmc"); @@ -1025,9 +1025,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if (strncmp(operatorName, "29364", 5) == 0) { // Slovenia T2 - strcpy(sim_info_t->ApnGPRS, "mms.t-2.net"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "mms.t-2.net"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://www.mms.t-2.net:8002"); @@ -1041,9 +1041,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if (strncmp(operatorName, "23106", 5) == 0) { //Slovakia O2 - strcpy(sim_info_t->ApnGPRS, "o2internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "o2internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.o2world.sk:8002"); @@ -1057,9 +1057,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if ((strncmp(operatorName, "23102", 5) == 0) || (strncmp(operatorName, "23104", 5) == 0)) { //Slovakia T-Mobile - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms"); @@ -1073,9 +1073,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if (strncmp(operatorName, "23101", 5) == 0) { //Slovakia Orange - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://imms.orange.sk"); @@ -1089,9 +1089,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if (strncmp(operatorName, "23103", 5) == 0) { //Slovakia 4Ka - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms"); @@ -1105,9 +1105,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if (strncmp(operatorName, "42501", 5) == 0) { //Israel orange - strcpy(sim_info_t->ApnGPRS, "uinternet"); - strcpy(sim_info_t->ApnUsername, "orange"); - strcpy(sim_info_t->ApnPassword, "orange"); + strcpy(sim_info_t->Sim4gApn, "uinternet"); + strcpy(sim_info_t->Sim4gUsr, "orange"); + strcpy(sim_info_t->Sim4gPwd, "orange"); #if MMS_SET strcpy(puiPara->URL, "http://192.168.220.15/servlets/mms"); @@ -1121,9 +1121,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if (strncmp(operatorName, "24801", 5) == 0) { //Estonia(Telia) - strcpy(sim_info_t->ApnGPRS, "internet.emt.ee"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet.emt.ee"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "mms.emt.ee"); @@ -1137,9 +1137,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if (strncmp(operatorName, "24802", 5) == 0) { //Estonia(Elisa) - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "mms"); @@ -1153,9 +1153,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if (strncmp(operatorName, "24803", 5) == 0) { //Estonia(Tele2) - strcpy(sim_info_t->ApnGPRS, "internet.tele2.ee"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet.tele2.ee"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->APNMMS, "mms.tele2.ee"); @@ -1169,9 +1169,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if (strncmp(operatorName, "20416", 5) == 0) { //Netherlands T-Mobile - strcpy(sim_info_t->ApnGPRS, "smartsites.t-mobile"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "smartsites.t-mobile"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://t-mobilemms"); @@ -1184,9 +1184,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if (strncmp(operatorName, "24201", 5) == 0) //norway Telenor { - strcpy(sim_info_t->ApnGPRS, "telenor.smart"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "telenor.smart"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mmsc"); @@ -1199,9 +1199,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if (strncmp(operatorName, "24202", 5) == 0) //norway Telia/Chilli Mobil { - strcpy(sim_info_t->ApnGPRS, "telia"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "telia"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mm"); @@ -1214,9 +1214,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if (strncmp(operatorName, "24205", 5) == 0) //norway Ice Net { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.nwn.no"); @@ -1229,9 +1229,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if ((strncmp(operatorName, "24206", 5) == 0) || (strncmp(operatorName, "24214", 5) == 0)) //norway ice net { - strcpy(sim_info_t->ApnGPRS, "ice.net"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "ice.net"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms"); @@ -1244,9 +1244,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if (strncmp(operatorName, "24208", 5) == 0) //norway Get { - strcpy(sim_info_t->ApnGPRS, "internet.no"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet.no"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mmsc.tdc.dk:8002"); @@ -1259,9 +1259,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if (strncmp(operatorName, "26801", 5) == 0) //Portugal vodafone { - strcpy(sim_info_t->ApnGPRS, "net2.vodafone.pt"); - strcpy(sim_info_t->ApnUsername, "vodafone"); - strcpy(sim_info_t->ApnPassword, "vodafone"); + strcpy(sim_info_t->Sim4gApn, "net2.vodafone.pt"); + strcpy(sim_info_t->Sim4gUsr, "vodafone"); + strcpy(sim_info_t->Sim4gPwd, "vodafone"); #if MMS_SET strcpy(puiPara->URL, "http://mms.vodafone.pt/servlets/mms"); @@ -1274,9 +1274,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "26002", 5) == 0) //Polish Tmobile { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "mms/servlets/mms"); @@ -1289,9 +1289,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "26003", 5) == 0) //Polish Orange { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "internet"); - strcpy(sim_info_t->ApnPassword, "internet"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "internet"); + strcpy(sim_info_t->Sim4gPwd, "internet"); #if MMS_SET strcpy(puiPara->URL, "mms.orange.pl"); @@ -1304,9 +1304,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "26001", 5) == 0) //Polish Plus { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "mms.plusgsm.pl:8002"); @@ -1319,9 +1319,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "26006", 5) == 0) //Polish Play { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "mmsc.play.pl/mms/wapenc"); @@ -1334,9 +1334,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if((strncmp(operatorName, "30261", 5) == 0) || (strncmp(operatorName, "30269", 5) == 0) || (strncmp(operatorName, "30263", 5) == 0)) //Canada Bell { - strcpy(sim_info_t->ApnGPRS, "pda.bell.ca"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "pda.bell.ca"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.bell.ca/mms/wapenc"); @@ -1349,9 +1349,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if((strncmp(operatorName, "30232", 5) == 0) || (strncmp(operatorName, "30272", 5) == 0))//Canada Rogers { - strcpy(sim_info_t->ApnGPRS, "rogers-core-appl1.apn"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "rogers-core-appl1.apn"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.gprs.rogers.com"); @@ -1365,9 +1365,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI /* else if(strncmp(operatorName, "30222", 5) == 0) //Canada Telus { - strcpy(sim_info_t->ApnGPRS, "sp.telus.com"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "sp.telus.com"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://aliasredirect.net/proxy/mmsc"); @@ -1381,9 +1381,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI */ else if((strncmp(operatorName, "30268", 5) == 0) || (strncmp(operatorName, "30278", 5) == 0)) //Canada SaskTel { - strcpy(sim_info_t->ApnGPRS, "pda.stm.sk.ca"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "pda.stm.sk.ca"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.sasktel.com"); @@ -1396,9 +1396,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "23002", 5) == 0) //Czech O2 { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.o2active.cz:8002"); @@ -1411,9 +1411,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "23003", 5) == 0) //Czech Vodafone { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms/"); @@ -1426,9 +1426,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "23001", 5) == 0) //Czech T-mobile { - strcpy(sim_info_t->ApnGPRS, "internet.t-mobile.cz"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet.t-mobile.cz"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms"); @@ -1441,9 +1441,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "28601", 5) == 0) //Turkey Turkcell { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "mms.turkcell.com.tr/servlets/mms"); @@ -1456,9 +1456,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "28602", 5) == 0) //Turkey Vodafone { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "vodafone"); - strcpy(sim_info_t->ApnPassword, "vodafone"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "vodafone"); + strcpy(sim_info_t->Sim4gPwd, "vodafone"); #if MMS_SET strcpy(puiPara->URL, "mms:6001/MM1Servlet"); @@ -1471,9 +1471,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if((strncmp(operatorName, "28603", 5) == 0) ||(strncmp(operatorName, "28604", 5) == 0))//Turkey Avea { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "mms.avea.com.tr/servlets/mms"); @@ -1486,9 +1486,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "28401", 5) == 0) //Bulgaria A1 { - strcpy(sim_info_t->ApnGPRS, "internet.a1.bg"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet.a1.bg"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mmsc/"); @@ -1501,9 +1501,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "28405", 5) == 0) //Bulgaria Telenor { - strcpy(sim_info_t->ApnGPRS, "telenorbg"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "telenorbg"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mmsc/"); @@ -1516,9 +1516,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "28403", 5) == 0) //Bulgaria VIVACOM { - strcpy(sim_info_t->ApnGPRS, "internet.vivacom.bg"); - strcpy(sim_info_t->ApnUsername, "VIVACOM"); - strcpy(sim_info_t->ApnPassword, "VIVACOM"); + strcpy(sim_info_t->Sim4gApn, "internet.vivacom.bg"); + strcpy(sim_info_t->Sim4gUsr, "VIVACOM"); + strcpy(sim_info_t->Sim4gPwd, "VIVACOM"); #if MMS_SET strcpy(puiPara->URL, "http://mmsc.vivacom.bg"); @@ -1531,9 +1531,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "25503", 5) == 0) //Ukraine KYIVSTAR { - strcpy(sim_info_t->ApnGPRS, "www.kyivstar.net"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "www.kyivstar.net"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.kyivstar.net"); @@ -1546,9 +1546,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "25501", 5) == 0) //Ukraine Vodafone { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mmsc:8002/"); @@ -1561,9 +1561,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "25506", 5) == 0) //Ukraine LifeCell { - strcpy(sim_info_t->ApnGPRS, "internet"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mms.life"); @@ -1576,9 +1576,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "21407", 5) == 0) //Spain Movistar { - strcpy(sim_info_t->ApnGPRS, "telefonica.es"); - strcpy(sim_info_t->ApnUsername, "telefonica"); - strcpy(sim_info_t->ApnPassword, "telefonica"); + strcpy(sim_info_t->Sim4gApn, "telefonica.es"); + strcpy(sim_info_t->Sim4gUsr, "telefonica"); + strcpy(sim_info_t->Sim4gPwd, "telefonica"); #if MMS_SET strcpy(puiPara->URL, "http://mms.movistar.es"); @@ -1591,9 +1591,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "21401", 5) == 0) //Spain Vodafone { - strcpy(sim_info_t->ApnGPRS, "airtelwap.es"); - strcpy(sim_info_t->ApnUsername, "wap@wap"); - strcpy(sim_info_t->ApnPassword, "wap125"); + strcpy(sim_info_t->Sim4gApn, "airtelwap.es"); + strcpy(sim_info_t->Sim4gUsr, "wap@wap"); + strcpy(sim_info_t->Sim4gPwd, "wap125"); #if MMS_SET strcpy(puiPara->URL, "http://mmsc.vodafone.es/servlets/mms"); @@ -1606,9 +1606,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI } else if(strncmp(operatorName, "21403", 5) == 0) //Spain Simyo { - strcpy(sim_info_t->ApnGPRS, "orangeworld"); - strcpy(sim_info_t->ApnUsername, "orange"); - strcpy(sim_info_t->ApnPassword, "orange"); + strcpy(sim_info_t->Sim4gApn, "orangeworld"); + strcpy(sim_info_t->Sim4gUsr, "orange"); + strcpy(sim_info_t->Sim4gPwd, "orange"); #if MMS_SET strcpy(puiPara->URL, "https://mms.orange.es"); @@ -1623,24 +1623,24 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI || (strncmp(operatorName, "52505", 5) == 0) || (strncmp(operatorName, "30222", 5) == 0) || (strncmp(operatorName, "20809", 5) == 0)) { - if((strstr(sim_info_t->ModuleVersion, GPRS_MODULE_TYPE_EG91_V)) || (strstr(sim_info_t->ModuleVersion, GPRS_MODULE_TYPE_EG95_V)) \ - || (strstr(sim_info_t->ModuleVersion, GPRS_MODULE_TYPE_EG91_NAXD)) || (strstr(sim_info_t->ModuleVersion, GPRS_MODULE_TYPE_EG95_NAXD))) + if((strstr(sim_info_t->ModuleVer, GPRS_MODULE_TYPE_EG91_V)) || (strstr(sim_info_t->ModuleVer, GPRS_MODULE_TYPE_EG95_V)) \ + || (strstr(sim_info_t->ModuleVer, GPRS_MODULE_TYPE_EG91_NAXD)) || (strstr(sim_info_t->ModuleVer, GPRS_MODULE_TYPE_EG95_NAXD))) { - strcpy(sim_info_t->ApnGPRS, "America.bics"); + strcpy(sim_info_t->Sim4gApn, "America.bics"); } else { - strcpy(sim_info_t->ApnGPRS, "bicsapn"); + strcpy(sim_info_t->Sim4gApn, "bicsapn"); } - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); } else if(strncmp(operatorName, "20408", 5) == 0) //kpn sim { - strcpy(sim_info_t->ApnGPRS, "fast.m2m"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "fast.m2m"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "\0"); @@ -1654,9 +1654,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI else if(strncmp(operatorName, "20404", 5) == 0) // wodafeng sim { - strcpy(sim_info_t->ApnGPRS, "spe.inet4gd.gdsp"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "spe.inet4gd.gdsp"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "\0"); @@ -1670,9 +1670,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI /* else if(strncmp(operatorName, "20601", 5) == 0) //Belgium Proximus { - strcpy(sim_info_t->ApnGPRS, "internet.proximus.be"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "internet.proximus.be"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); #if MMS_SET strcpy(puiPara->URL, "http://mmsc.proximus.be/mms"); @@ -1686,9 +1686,9 @@ UINT16 sf_auto_operation_adaptation(SF_CHAR *operatorName, SF_PDT_PARAM_STATISTI */ else { - strcpy(sim_info_t->ApnGPRS, "\0"); - strcpy(sim_info_t->ApnUsername, "\0"); - strcpy(sim_info_t->ApnPassword, "\0"); + strcpy(sim_info_t->Sim4gApn, "\0"); + strcpy(sim_info_t->Sim4gUsr, "\0"); + strcpy(sim_info_t->Sim4gPwd, "\0"); return SF_4G_ERROR_AT_APN; } diff --git a/code/application/source/sf_app/code/source/app/sf_app.c b/code/application/source/sf_app/code/source/app/sf_app.c index 2a023434b..60910c239 100755 --- a/code/application/source/sf_app/code/source/app/sf_app.c +++ b/code/application/source/sf_app/code/source/app/sf_app.c @@ -48,7 +48,7 @@ #include #include #include - +#include "sf_keymng.h" extern pthread_mutex_t Param_mutexLock; extern pthread_mutex_t GPIO_mutexLock; @@ -59,10 +59,11 @@ UIMenuStoreInfo origInfo = {0}; /* backup */ void sf_signalStop(SINT32 signo) { printf("\nsignalStop(signal code: %d) !!!\n", signo); - sf_share_mem_file_deinit(); sf_share_mem_customer_deinit(); - + sf_led_stop(); + sf_commu_mcu_task_stop(); + _exit(0); } @@ -98,33 +99,41 @@ int main(int argc, char *argv[]) //gpio_direction_input(C_GPIO(10)); SINT16 startup = 0; + SF_MUTEX_INIT_LOCK(Param_mutexLock); + SF_MUTEX_INIT_LOCK(GPIO_mutexLock); //test_sd_free(); //return 0; SINT32 isUsb = sf_usb_IsInsert(); - printf("[%s:%d] isUsb = %d\n", isUsb); + SINT32 isCard = sf_in_card_exist(); + printf("[%s:%d] isUsb = %d isCard = %d\n", __FUNCTION__, __LINE__, isUsb,isCard); sf_mcu_init(); sf_get_power_on_mode(); sf_mcu_wdg_set(30); - sf_usb_mux_s(1); - - sf_share_mem_file_init(); + + //sf_share_mem_file_init(); //sf_share_mem_customer_update(); sf_com_message_app_init(); sf_com_message_cardv_init(); sf_customer_param_load(); + + UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); + + printf("[%s:%d] CamMode:%d\n", __FUNCTION__, __LINE__,puiPara->CamMode); if(!isUsb) { + //sf_usb_mux_s(1); sf_load_ko(); sf_mcu_reg_set(SF_MCU_CTRL_MODULE_PIR, 1); } + else + { + // sf_usb_mux_s(0); + } - printf("[%s:%d] CamMode:%d\n", __FUNCTION__, __LINE__,sf_sys_get_flag(CamMode)); - SF_MUTEX_INIT_LOCK(Param_mutexLock); - SF_MUTEX_INIT_LOCK(GPIO_mutexLock); sf_led_init(); sf_sys_status_led_set(SF_LED_SYS_STATE_PIR_NOT_DETECT); sf_sys_status_led_set(SF_LED_SYS_STATE_NORMAL); @@ -145,7 +154,7 @@ int main(int argc, char *argv[]) //app_upgrade_sd_execute(); app_preinit(); - //app_RegisterNet_start(); + app_RegisterNet_start(); startup = sf_poweron_type_get(); SLOGD("poweron type beginning :[%d,%s]\n", startup, sf_poweron_type_string(startup)); if(SF_MCU_STARTUP_ONKEY == startup) @@ -160,6 +169,14 @@ int main(int argc, char *argv[]) app_debug_deinit(); ///////////////////////////// } + else//tese + { + SF_MESSAGE_BUF_S stMessageBuf = {0}; + stMessageBuf.cmdId = CMD_KEY; + stMessageBuf.arg1 = SF_EVENT_KEY_SHORT_CLICK; + stMessageBuf.arg2 = SF_KEY_PIN_AOTU_MODE_POWOFF;//auto mode powoff + sf_com_message_send_to_cardv(&stMessageBuf); + } sf_share_mem_file_deinit(); diff --git a/code/application/source/sf_app/code/source/app/sf_device.c b/code/application/source/sf_app/code/source/app/sf_device.c index a396a431b..33cb3d40e 100755 --- a/code/application/source/sf_app/code/source/app/sf_device.c +++ b/code/application/source/sf_app/code/source/app/sf_device.c @@ -30,6 +30,8 @@ #include "sf_debug.h" #include "sf_device.h" +#include "sf_eg91_sim.h" +#include "sf_commu_mcu_reg.h" #ifdef __cplusplus @@ -338,89 +340,71 @@ SINT32 app_led_net_reg_start(void) { SF_MESSAGE_BUF_S stMessageBuf = {0}; stMessageBuf.cmdId = CMD_LED; - stMessageBuf.arg1 = LED_STATUS_SLOWFLASH_ON; - stMessageBuf.arg2 = LED_GROUP_SIGNAL; - stMessageBuf.arg3 = LED_TYPE_GREEN; + stMessageBuf.arg1 = SF_LED_SYS_STATE_GPRS_SEARCH; sf_com_message_send_to_app(&stMessageBuf); - - stMessageBuf.cmdId = CMD_LED; - stMessageBuf.arg1 = LED_STATUS_SLOWFLASH_ON; - stMessageBuf.arg2 = LED_GROUP_ACCOUNT; - stMessageBuf.arg3 = LED_TYPE_GREEN; - sf_com_message_send_to_app(&stMessageBuf); - return SF_SUCCESS; } SINT32 app_led_net_reg_stop(SINT32 s32ret) { - SF_MESSAGE_BUF_S stMessageBuf = {0}; - stMessageBuf.cmdId = CMD_LED; - stMessageBuf.arg2 = LED_GROUP_SIGNAL; + UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); + UINT8 netSearchStep = sf_get_netsearch_step(); if(s32ret == SF_SUCCESS) { - stMessageBuf.arg1 = LED_STATUS_HOLD_ON; UINT8 signalLevel = 0; - sf_4G_signal_level_get(sf_statistics_param_get()->netGeneration,sf_statistics_param_get()->SimSignal,&signalLevel); + sf_4G_signal_level_get(puiPara->NetGeneration,puiPara->SimSignal,&signalLevel); MLOGI("signalLevel = %d\n",signalLevel); - switch(signalLevel) + if(netSearchStep == GPRS_SEARCH_STEP_LOGIN_FAILED) { - case 2: - stMessageBuf.arg3 = LED_TYPE_RED; - break; - case 3: - stMessageBuf.arg3 = LED_TYPE_YELLOW; - break; - case 4: - stMessageBuf.arg3 = LED_TYPE_GREEN; - break; - default: - stMessageBuf.arg3 = LED_TYPE_RED; - break; + sf_sys_status_led_set(SF_LED_SYS_STATE_SERVER_FAIL); } + else + { + sf_set_sim_insert(1); + sf_set_cq_signal(puiPara->SimSignal); + switch(signalLevel) + { + case 1: + sf_sys_status_led_set(SF_LED_SYS_STATE_GPRS_SIGNAL_1); + break; + case 2: + sf_sys_status_led_set(SF_LED_SYS_STATE_GPRS_SIGNAL_2); + break; + case 3: + sf_sys_status_led_set(SF_LED_SYS_STATE_GPRS_SIGNAL_3); + break; + case 4: + sf_sys_status_led_set(SF_LED_SYS_STATE_GPRS_SIGNAL_4); + break; + default: + sf_sys_status_led_set(SF_LED_SYS_STATE_GPRS_SIGNAL_0); + break; + } + } } else if(s32ret == SF_4G_ERROR_NO_SIMCARD \ || s32ret == SF_4G_ERROR_NO_SUPPOET \ || s32ret == SF_APP_ERROR_NO_SUPPOET) { - stMessageBuf.arg1 = LED_STATUS_SLOWFLASH_ON; - stMessageBuf.arg3 = LED_TYPE_RED; + sf_set_sim_insert(0); + sf_sys_status_led_set(SF_LED_SYS_STATE_SIM_ERROR); } else if(s32ret == SF_HTTP_ERROR_REQUEST) { - stMessageBuf.arg1 = LED_STATUS_HOLD_ON; - stMessageBuf.arg3 = LED_TYPE_RED; + sf_sys_status_led_set(SF_LED_SYS_STATE_ERROR); } else if(s32ret == SF_TTY_ERROR_OPEN) { - stMessageBuf.arg1 = LED_STATUS_QUICKFLASH_ON; - stMessageBuf.arg3 = LED_TYPE_RED; + sf_sys_status_led_set(SF_LED_SYS_STATE_SIM_ERROR); + sf_sys_status_led_set(SF_LED_SYS_STATE_ERROR); } + else if(s32ret == SF_4G_ERROR_REG_NET) { + sf_sys_status_led_set(SF_LED_SYS_STATE_SIM_ERROR); + sf_sys_status_led_set(SF_LED_SYS_STATE_ERROR); + sf_set_sim_insert(0); + } else { - stMessageBuf.arg1 = LED_STATUS_HOLD_ON; - stMessageBuf.arg3 = LED_TYPE_RED; + sf_sys_status_led_set(SF_LED_SYS_STATE_ERROR); } - sf_com_message_send_to_app(&stMessageBuf); - - stMessageBuf.cmdId = CMD_LED; - stMessageBuf.arg2 = LED_GROUP_ACCOUNT; - if(s32ret == SF_SUCCESS) { - stMessageBuf.arg1 = LED_STATUS_HOLD_ON; - stMessageBuf.arg3 = LED_TYPE_GREEN; - } - else { - if(sf_statistics_param_get()->bindFlag) { - if(s32ret == SF_4G_ERROR_NO_SIMCARD \ - || s32ret == SF_4G_ERROR_REG_NET) { - stMessageBuf.arg1 = LED_STATUS_SLOWFLASH_ON; - } - - } - else { - stMessageBuf.arg1 = LED_STATUS_HOLD_ON; - } - stMessageBuf.arg3 = LED_TYPE_RED; - } - sf_com_message_send_to_app(&stMessageBuf); return SF_SUCCESS; } SINT32 app_led_poweroff(void) @@ -523,7 +507,7 @@ SINT32 sf_in_card_exist(void) sf_hal_gpio_deinit(SF_GPIO_CARD_DETECT); SF_MUTEX_UNLOCK(GPIO_mutexLock); - return (regValue & 0xFF) ? 1:0; + return (regValue & 0xFF) ? 0:1; } @@ -557,6 +541,22 @@ void sf_set_pir_statu_flag(SINT32 flag) isGoing2Pir = flag; } +static BOOL sf_system_check_usb_host(void) +{ + char command[26] = "lsmod | grep usbcore"; + FILE *fp = popen(command, "r"); + char result[256]; + fgets(result, sizeof(result), fp); + pclose(fp); + if (result[0] == '\0') { + MLOGI("usbcore module is not loaded.\n"); + return FALSE; + } else { + MLOGI("usbcore module is loaded.\n"); + return TRUE; + } +} + BOOL sf_load_ko(void) { @@ -566,9 +566,15 @@ BOOL sf_load_ko(void) char cmd[256] = {'\0'}; int ret = 0; BOOL ret2 = TRUE; + + if(sf_system_check_usb_host() == TRUE) + { + return TRUE; + } usb_drivers = usb_host_drivers; - + //printf("[%s:%d] s\n", __FUNCTION__, __LINE__); + MLOGI(" s\n"); while(usb_drivers[cnt++]) { } @@ -579,7 +585,7 @@ BOOL sf_load_ko(void) if(driver_path){ snprintf(cmd, sizeof(cmd), "insmod %s/%s", driver_path_prefix, driver_path); - printf("[%s:%d] %s\n", __FUNCTION__, __LINE__, cmd); + //printf("[%s:%d] %s\n", __FUNCTION__, __LINE__, cmd); ret = system(cmd); if(0 != ret) { @@ -587,7 +593,8 @@ BOOL sf_load_ko(void) } } } - + MLOGI(" s\n"); + //printf("[%s:%d] e\n", __FUNCTION__, __LINE__); return ret2; } diff --git a/code/application/source/sf_app/code/source/app/sf_service.c b/code/application/source/sf_app/code/source/app/sf_service.c index 4f93e1588..4b9b07a29 100755 --- a/code/application/source/sf_app/code/source/app/sf_service.c +++ b/code/application/source/sf_app/code/source/app/sf_service.c @@ -42,7 +42,9 @@ #include "sf_device.h" #include "sf_system.h" #include "sf_service.h" - +#include "sf_param_common.h" +#include "sf_eg91_sim.h" +#include "sf_ftp.h" #ifdef __cplusplus #if __cplusplus @@ -65,6 +67,8 @@ SF_THREAD_S ThumbSend = .TskId = -1, }; +UINT32 FtpOpenOk = FAIL; + SINT32 app_ttyusb_IsOpen(void) { int retryTime = 0; @@ -996,7 +1000,7 @@ static SINT16 app_file_transfer(SF_FN_PARAM_S *pfnParam) { SINT16 s32ret = 0; SF_MESSAGE_BUF_S stMessageBuf = {0}; - SF_PDT_PARAM_CFG_S *pCustomerParam =pfnParam->pstParam; + UIMenuStoreInfo *pCustomerParam = pfnParam->pstParam; SF_PDT_PARAM_STATISTICS_S *pStaticParam = pfnParam->pstaticParam; if(sf_usb_IsInsert()) return SF_SUCCESS; @@ -1008,63 +1012,28 @@ static SINT16 app_file_transfer(SF_FN_PARAM_S *pfnParam) case SF_MCU_STARTUP_OFF: break; case SF_MCU_STARTUP_ONKEY: - - stMessageBuf.cmdId = CMD_LED; - stMessageBuf.arg1 = LED_STATUS_SLOWFLASH_ON; - stMessageBuf.arg2 = LED_GROUP_ACCOUNT; - stMessageBuf.arg3 = LED_TYPE_GREEN; - sf_com_message_send_to_app(&stMessageBuf); + if(sf_get_signal_ready()) + { + sf_sys_status_led_set(SF_LED_SYS_STATE_SENDING); -// stMessageBuf.cmdId = CMD_LED; -// stMessageBuf.arg1 = LED_STATUS_SLOWFLASH_ON; -// stMessageBuf.arg2 = LED_GROUP_SIGNAL; -// stMessageBuf.arg3 = LED_TYPE_GREEN; -// sf_com_message_send_to_app(&stMessageBuf); - - sf_thumb_file_creat(); - if(pStaticParam->PicPlan == 1) - s32ret = app_file_thumbsend(pfnParam); - - - s32ret |= app_server_excute_cmd(pfnParam); - - if(s32ret != SF_SUCCESS || pStaticParam->PicPlan != 1) { - stMessageBuf.arg1 = LED_STATUS_SLOWFLASH_ON; - stMessageBuf.arg3 = LED_TYPE_RED; + //sf_thumb_file_creat(); + + sf_share_mem_file_init(); + s32ret = sf_simcom_ftp_send(1); + + if(s32ret == SF_SUCCESS) { + sf_sys_status_led_set(SF_LED_SYS_STATE_SEND_SUCCESS); + } + else { + //FtpOpenOk = FAIL; + sf_sys_status_led_set(SF_LED_SYS_STATE_SEND_FAIL); + } } - else { - stMessageBuf.arg1 = LED_STATUS_HOLD_ON; - stMessageBuf.arg3 = LED_TYPE_GREEN; - } - - stMessageBuf.cmdId = CMD_LED; - stMessageBuf.arg2 = LED_GROUP_ACCOUNT; - sf_com_message_send_to_app(&stMessageBuf); - -// UINT8 signalLevel = 0; -// sf_4G_signal_level_get(sf_statistics_param_get()->netGeneration,sf_statistics_param_get()->SimSignal,&signalLevel); -// MLOGI("signalLevel = %d\n",signalLevel); -// switch(signalLevel) -// { -// case 2: -// stMessageBuf.arg3 = LED_TYPE_RED; -// break; -// case 3: -// stMessageBuf.arg3 = LED_TYPE_YELLOW; -// break; -// case 4: -// stMessageBuf.arg3 = LED_TYPE_GREEN; -// break; -// default: -// stMessageBuf.arg3 = LED_TYPE_RED; -// break; -// } -// stMessageBuf.cmdId = CMD_LED; -// stMessageBuf.arg1 = LED_STATUS_HOLD_ON; -// stMessageBuf.arg2 = LED_GROUP_SIGNAL; -// sf_com_message_send_to_app(&stMessageBuf); + sf_share_mem_file_down(1); + sf_set_upload_to_module_flag(0);//test + break; - +#if 0 case SF_MCU_STARTUP_TIMELAPSE: case SF_MCU_STARTUP_PIR: if(pStaticParam->PicPlan == 0) { @@ -1122,7 +1091,8 @@ static SINT16 app_file_transfer(SF_FN_PARAM_S *pfnParam) case SF_MCU_STARTUP_BATCH_SEND: break; - default: +#endif + default: break; } SLOGD("s32ret:%x\n", s32ret); @@ -1136,22 +1106,25 @@ SINT32 app_FileSend_thread(void) SINT16 s32ret = 0; SF_FN_PARAM_S stpfncallback = { 0 }; stpfncallback.pstParam = sf_customer_param_get(); - stpfncallback.pstaticParam = sf_statistics_param_get(); + stpfncallback.pstaticParam = sf_app_ui_para_get(); + //stpfncallback.pstaticParam = sf_statistics_param_get(); stpfncallback.pfn_AT_instruction_exit = app_disconnect_4g_module; pthread_detach(pthread_self()); - s32ret = app_file_send_check(stpfncallback.pstaticParam); + //s32ret = app_file_send_check(stpfncallback.pstaticParam); + s32ret = sf_check_ftp_send(1); if(s32ret != SF_SUCCESS) { MLOGE("ERROR:%#x\n", s32ret); ThumbSend.IsRun = 0; + sf_share_mem_file_down(1); return s32ret; } s32ret = app_file_transfer(&stpfncallback); - if(s32ret == SF_APP_ERROR_NO_SUPPOET) - app_file_transfer_Error_return_server(&stpfncallback); + //if(s32ret == SF_APP_ERROR_NO_SUPPOET) + // app_file_transfer_Error_return_server(&stpfncallback); ThumbSend.IsRun = 0; return s32ret; @@ -1241,9 +1214,10 @@ static SINT32 app_Register_Net_startup_mode(SF_FN_PARAM_S *pfnParam) //SF_CHAR version[12] = {0}; SF_MESSAGE_BUF_S stMessageBuf = {0}; - SF_PDT_PARAM_CFG_S *pCustomerParam = pfnParam->pstParam; + //SF_PDT_PARAM_CFG_S *pCustomerParam = pfnParam->pstParam; SF_PDT_PARAM_STATISTICS_S *pStaticParam = pfnParam->pstaticParam; + UIMenuStoreInfo *pCustomerParam = pfnParam->pstParam; sf_log_Level_set(SF_LOG_LEVEL_DEBUG); if(sf_usb_IsInsert()) @@ -1290,8 +1264,15 @@ static SINT32 app_Register_Net_startup_mode(SF_FN_PARAM_S *pfnParam) break; #endif - - sf_4G_usb_net_apn_cfg(pfnParam); + + s32ret = sf_get_utc(); + if((s32ret == SF_SIM_ERROR_UTC) || (SF_ON == pCustomerParam->GpsSwitch)) + { + s32ret = sf_get_ntp(s32ret); + } + SF_APPCOMM_CHECK_RETURN(s32ret,s32ret); + + /*sf_4G_usb_net_apn_cfg(pfnParam); sf_USB_net_init(); if(pStaticParam->AcmIP[0] == '\0') @@ -1310,13 +1291,13 @@ static SINT32 app_Register_Net_startup_mode(SF_FN_PARAM_S *pfnParam) s32ret = app_server_excute_cmd(pfnParam); SF_APPCOMM_CHECK_RETURN(s32ret,SF_APP_ERROR_NO_SUPPOET); - + */ break; case SF_MCU_STARTUP_NORMAL: break; - case SF_MCU_STARTUP_RING:/**/ + case SF_MCU_STARTUP_RING:/* #ifdef SF_HARDWARE_TEST app_system_poweroff(SF_POWEROFF_NOT); break; @@ -1379,11 +1360,12 @@ static SINT32 app_Register_Net_startup_mode(SF_FN_PARAM_S *pfnParam) stMessageBuf.cmdId = CMD_POWEROFF; sf_com_message_send_to_app(&stMessageBuf); } - + */ break; case SF_MCU_STARTUP_TIMELAPSE: case SF_MCU_STARTUP_PIR: + /* #ifdef SF_HARDWARE_TEST app_system_poweroff(SF_POWEROFF_NOT); break; @@ -1419,7 +1401,7 @@ static SINT32 app_Register_Net_startup_mode(SF_FN_PARAM_S *pfnParam) s32ret = app_FileSend_thread(); SF_APPCOMM_CHECK_RETURN(s32ret,SF_APP_ERROR_REQUEST); - + */ break; case SF_MCU_STARTUP_WARNING: @@ -1427,7 +1409,7 @@ static SINT32 app_Register_Net_startup_mode(SF_FN_PARAM_S *pfnParam) case SF_MCU_STARTUP_SERVER: break; - case SF_MCU_STARTUP_DP: + case SF_MCU_STARTUP_DP:/* #ifdef SF_HARDWARE_TEST app_system_poweroff(SF_POWEROFF_NOT); break; @@ -1489,12 +1471,12 @@ static SINT32 app_Register_Net_startup_mode(SF_FN_PARAM_S *pfnParam) stMessageBuf.arg1 = SF_POWEROFF_NOT; stMessageBuf.cmdId = CMD_POWEROFF; - sf_com_message_send_to_app(&stMessageBuf); + sf_com_message_send_to_app(&stMessageBuf);*/ break; case SF_MCU_STARTUP_USB: break; - case SF_MCU_STARTUP_RESET: + case SF_MCU_STARTUP_RESET:/* #ifdef SF_HARDWARE_TEST app_system_poweroff(SF_POWEROFF_NOT); break; @@ -1616,7 +1598,7 @@ static SINT32 app_Register_Net_startup_mode(SF_FN_PARAM_S *pfnParam) stMessageBuf.arg1 = SF_POWEROFF_NOT; stMessageBuf.cmdId = CMD_POWEROFF; - sf_com_message_send_to_app(&stMessageBuf); + sf_com_message_send_to_app(&stMessageBuf);*/ break; case SF_MCU_STARTUP_BATCH_SEND: @@ -1632,7 +1614,8 @@ void app_Register_Net_thread(void) SINT32 s32ret = 0; SF_FN_PARAM_S stpfncallback = { 0 }; stpfncallback.pstParam = sf_customer_param_get(); - stpfncallback.pstaticParam = sf_statistics_param_get(); + stpfncallback.pstaticParam = sf_app_ui_para_get(); + //stpfncallback.pstaticParam = sf_statistics_param_get(); stpfncallback.pfn_AT_instruction_exit = app_disconnect_4g_module; pthread_detach(pthread_self()); diff --git a/code/application/source/sf_app/code/source/app/sf_system.c b/code/application/source/sf_app/code/source/app/sf_system.c index fa0ab93a2..9bc8bec89 100755 --- a/code/application/source/sf_app/code/source/app/sf_system.c +++ b/code/application/source/sf_app/code/source/app/sf_system.c @@ -823,13 +823,13 @@ SINT32 app_preinit(void) bUsbIsInsert = sf_usb_IsInsert(); - bSimIsInsert = sf_4G_sim_IsInsert(); + //bSimIsInsert = sf_4G_sim_IsInsert(); if((startup == SF_MCU_STARTUP_NORMAL) && (!bUsbIsInsert)) { app_led_poweroff(); } - if((bSimIsInsert) || (startup == SF_MCU_STARTUP_ONKEY)) + if((!bUsbIsInsert)/* || (startup == SF_MCU_STARTUP_ONKEY)*/) { sf_4G_usb_init(); MLOGD("sim card insert\n"); @@ -846,6 +846,7 @@ SINT32 app_preinit(void) return SF_SUCCESS; } + #ifdef __cplusplus #if __cplusplus } diff --git a/code/application/source/sf_app/code/source/commMng/sf_message_queue.c b/code/application/source/sf_app/code/source/commMng/sf_message_queue.c index c889ae3ef..de50351c5 100755 --- a/code/application/source/sf_app/code/source/commMng/sf_message_queue.c +++ b/code/application/source/sf_app/code/source/commMng/sf_message_queue.c @@ -12,6 +12,7 @@ #include "sf_log.h" #include "sf_type.h" #include "sf_param_common.h" +#include "sf_message_queue.h" #ifdef __cplusplus #if __cplusplus @@ -104,9 +105,56 @@ SINT32 sf_com_message_recv_from_cardv(SF_MESSAGE_BUF_S *pMessageBuf) SINT32 sf_com_message_send_to_cardv(SF_MESSAGE_BUF_S *pMessageBuf) { pMessageBuf->mtype = 1; + sf_system_cardv_wait_done(); return message_queue_send(cardv_msgQueueId,pMessageBuf); } + +BOOL sf_system_check_cardv(void) +{ + FILE *fp = popen("ps | grep cardv", "r"); + if (fp == NULL) { + perror("popen"); + return FALSE; + } + + char result[16]; + if (fgets(result, sizeof(result), fp) == NULL) { + pclose(fp); + printf("cardv is not running.\n"); + return FALSE; + } + + pclose(fp); + printf("cardv is running with PID %s\n", result); + return TRUE; +} + +BOOL sf_system_cardv_wait_done(void) +{ + UINT8 time = 0; + static BOOL flag = FALSE; + if(TRUE == flag) + { + printf("cardv running\n"); + return TRUE; + } + while (time < 40) + { + if(TRUE == sf_system_check_cardv()) + { + printf("cardv wait running\n"); + sf_sleep_ms(100); + flag = TRUE; + return TRUE; + } + sf_sleep_ms(100); + time++; + } + printf("cardv wait running errr\n"); + return FALSE; +} + #ifdef __cplusplus #if __cplusplus } diff --git a/code/application/source/sf_app/code/source/commMng/sf_share_mem.c b/code/application/source/sf_app/code/source/commMng/sf_share_mem.c index 7bcd79b5d..b4117f8d2 100755 --- a/code/application/source/sf_app/code/source/commMng/sf_share_mem.c +++ b/code/application/source/sf_app/code/source/commMng/sf_share_mem.c @@ -178,13 +178,48 @@ SINT32 sf_share_mem_file_init(void) } else { - //sf_file_thumb_cfg_set(pThumbFileCfg); + sf_file_thumb_cfg_set(pThumbFileCfg); + //shmdt(pThumbFileCfg); printf("[%s:%d] creat share mem succeed!!!\n", __FUNCTION__, __LINE__); return SF_SUCCESS; } } return SF_FAILURE; } + + +SINT32 sf_share_mem_file_down(UINT32 to) +{ + SF_SRCFILE_ATTR_S *pThumbFileCfg = sf_file_thumb_cfg_get(); + + if(pThumbFileCfg <= 0) + { + printf("[%s:%d] creat share mem failed!!!\n", __FUNCTION__, __LINE__); + return SF_FAILURE; + } + else + { + //sf_file_thumb_cfg_set_down(pThumbFileCfg); + shmdt(pThumbFileCfg); + SF_MESSAGE_BUF_S stMessageBuf = {0}; + stMessageBuf.arg1 = SF_PARA_CMD_UPDATE; + stMessageBuf.cmdId = CMD_FILE; + if(to)//to cardv + { + sf_com_message_send_to_cardv(&stMessageBuf); + } + else //to sf app + { + sf_com_message_send_to_app(&stMessageBuf); + } + + printf("[%s:%d] creat share mem succeed!!!\n", __FUNCTION__, __LINE__); + return SF_SUCCESS; + } + return SF_FAILURE; + +} + SINT32 sf_share_mem_customer_update(void) { UIMenuStoreInfo *pSfCustomerPara = 0; diff --git a/code/application/source/sf_app/code/source/dataMng/sf_datahttp.c b/code/application/source/sf_app/code/source/dataMng/sf_datahttp.c index af1dc57bd..cfd7313ad 100755 --- a/code/application/source/sf_app/code/source/dataMng/sf_datahttp.c +++ b/code/application/source/sf_app/code/source/dataMng/sf_datahttp.c @@ -325,7 +325,15 @@ extern SF_PARA_TIME_S rtcTime; void sf_get_date(UINT32 second, SF_PARA_TIME_S *ptmx) { SF_PARA_TIME_S tmx; - + tmx.Year = ptmx->Year; + tmx.Mon = ptmx->Mon; + tmx.Day = ptmx->Day; + tmx.Hour = ptmx->Hour; + tmx.Min = ptmx->Min; + tmx.Sec = ptmx->Sec; + printf("-----before------%04d/%02d/%02d %02d:%02d:%02d-------------------------------------\n", + tmx.Year, tmx.Mon, tmx.Day, tmx.Hour, tmx.Min, tmx.Sec); + split_year_day_std(second/86400, (int*)&tmx.Year, (int*)&tmx.Day); get_monthday(tmx.Day, isleap(tmx.Year), &tmx); get_subtime(second%86400,&tmx); diff --git a/code/application/source/sf_app/code/source/devMng/sf_ledmng.c b/code/application/source/sf_app/code/source/devMng/sf_ledmng.c index 278cdc95c..0f9c2f2fc 100755 --- a/code/application/source/sf_app/code/source/devMng/sf_ledmng.c +++ b/code/application/source/sf_app/code/source/devMng/sf_ledmng.c @@ -536,7 +536,38 @@ void sf_led_init(void) printf("[%s:%d] e SF_LED_ALL:%d\n", __FUNCTION__, __LINE__,SF_LED_ALL); } +void sf_led_stop(void) +{ + SINT32 s32ret = SF_SUCCESS; + s32ret = pthread_cancel(ledTskId); + if(s32ret != SF_SUCCESS) + { + MLOGD("ledTskId thread cancel fail!\n"); + //return s32ret; + } + + #if HW_S530 + s32ret = pthread_cancel(ledRunningTskId); + if(s32ret != SF_SUCCESS) + { + MLOGD("ledRunningTskId thread cancel fail!\n"); + } + #endif + s32ret = pthread_join(ledTskId, NULL); + if(s32ret != SF_SUCCESS) + { + MLOGD("ledTskId thread stop fail!\n"); + //return s32ret; + } + #if HW_S530 + s32ret = pthread_join(ledRunningTskId, NULL); + if(s32ret != SF_SUCCESS) + { + MLOGD("ledRunningTskId thread stop fail!\n"); + } + #endif +} void sf_sys_status_led_set(LedSysState_t ledSysStateId) diff --git a/code/application/source/sf_app/code/source/fileMng/sf_file.c b/code/application/source/sf_app/code/source/fileMng/sf_file.c new file mode 100644 index 000000000..7cec8aa60 --- /dev/null +++ b/code/application/source/sf_app/code/source/fileMng/sf_file.c @@ -0,0 +1,781 @@ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include "sf_eg91_sim.h" +#include "sf_common.h" +#include "sf_hal_ttyusb.h" +#include "sf_log.h" +#include "sf_fileMng.h" +#include "sf_file.h" +#include "HMACSHA.h" +#include "sf_commu_mcu_reg.h" +#ifdef __cplusplus +#if __cplusplus +extern "C" { +#endif +#endif + +BOOL delFlag = FALSE; +UINT8 uploadToModuleFalg = 0; //already upload file to module +UINT32 sf_test_uploadFsize = 0; +UINT32 sf_test_upload_tm = 18; +UINT32 sf_test_upload_tm_log = 0; +SINT32 UsbUploadSize = 0; +int UploadCnt = 0; +int sftestus = 60; +UINT32 sf_uart_time_flag = 0; +UINT8 PicName[5][2][35] = { { { 0 } } }; +UINT8 mmsUploadFlg = 0; /*0:mms upload file fail; 1:success.*/ +extern char logStr[128]; +extern char gsmPara[GPRS_INFO_LINE_MAX]; + + + + +UINT8 sf_check_file_video(void) +{ + UINT8 fileIndex = 0; + SF_SRCFILE_ATTR_S* fileCfg = sf_file_thumb_cfg_get(); + + for(fileIndex = 0; fileIndex < fileCfg->filecnt; fileIndex++) + { + if(SF_FILE_TYPE_VIDEO == fileCfg->stfileattr[fileIndex].enFileTye) + { + break; + } + } + + return fileIndex; +} + +void sf_set_del_flag(BOOL flag) +{ + delFlag = flag; +} + +BOOL sf_get_del_flag(void) +{ + return delFlag; +} + +/************************************************* + Function: sf_get_upload_size + Description: get sf_get_upload_size + Input: N/A + Output: N/A + Return: 0:idle upload size:Upload success -1:Upload fail + Others: N/A +*************************************************/ +SINT32 sf_get_upload_size(void) +{ + return UsbUploadSize; +} + +/************************************************* + Function: sf_set_upload_size + Description: sf_set_upload_size + Input: 0:idle upload size:Upload success -1:Upload fail + Output: N/A + Return: N/A + Others: N/A +*************************************************/ +void sf_set_upload_size(SINT32 Size) +{ + UsbUploadSize = Size; +} + +/************************************************* + Function: sf_get_file_size + Description: get file size + Input: N/A + Output: N/A + Return: file size + Others: N/A +*************************************************/ +UINT32 sf_get_file_size(UINT8 * fname) +{ + UINT32 fd = 0, fSize = 0; + struct stat statBuf; + + if(fname == NULL) + { + printf("fname null\n"); + return fSize; + } + fd = open((char *)fname, O_RDONLY); + + if(fd) + { + fstat(fd, &statBuf); + fSize = statBuf.st_size; + close(fd); + } + + return fSize; +} + +/************************************************* + Function: sf_upload_file_thread + Description: upload thread + Input: SF_NET_TRANSFER_S * + Output: N/A + Return: N/A + Others: N/A +*************************************************/ +void* sf_upload_file_thread(void *parm) +{ + printf("[%s:%d] s\n",__FUNCTION__,__LINE__); + char *fname = (char *)parm; + struct stat statBuf; + + if (fname == NULL) + { + sf_set_upload_size(-1); + sprintf((char *)logStr, "%s:%d input parm ERROR! fname null\n",__FUNCTION__,__LINE__); + printf("%s\n",logStr); + SLOGE(logStr); + pthread_exit(NULL); + return NULL; + } + + SINT32 ret = 0; + UINT32 fd=0; + SINT32 tolFileSize = 0; + SINT32 readSize = 0; + char *buf = NULL; + + fd = open(fname, O_RDONLY); + + if(fd) + { + fstat(fd, &statBuf); + tolFileSize = statBuf.st_size; + buf = malloc(tolFileSize); + printf("[%s:%d]tolFileSize=%d\n", __FUNCTION__, __LINE__, tolFileSize); + + if(buf) + { + + readSize = read(fd, buf, tolFileSize); + if(readSize != tolFileSize) + { + printf("[%s:%d]Read fail, readSize:%d\n", __FUNCTION__, __LINE__, readSize); + } + UploadCnt++; + ret = sf_hal_ttyusb2_write(buf, readSize); + if(ret == SF_FAILURE) + { + sf_set_upload_size(ret); + free(buf); + sprintf((char *)logStr, "%s:%d Upload fail! File data err!\n",__FUNCTION__,__LINE__); + printf("%s\n",logStr); + SLOGE(logStr); + pthread_exit(NULL); + return NULL; + } + sf_sleep_ms(100); + free(buf); + } + sf_uart_time_flag = 0; + + close(fd); + } + else + { + sprintf((char *)logStr, "%s:%d open fail!\n",__FUNCTION__,__LINE__); + printf("%s\n",logStr); + SLOGE(logStr); + } + printf("[%s:%d]ret=%d\n",__FUNCTION__,__LINE__,ret); + sf_set_upload_size(readSize); + pthread_exit(NULL); +} + +/************************************************* + Function: sf_upload_file_init + Description: 4g usb net ftp download + Input: SF_NET_TRANSFER_S + Output: N/A + Return: -1:download fail 1:download success + Others: N/A +*************************************************/ +SINT32 sf_upload_file_init(UINT8 * fname) +{ + UINT16 time = 0; + SINT32 ret = 0; + int dltotal = 0; + pthread_t UsbUploadInitThrId; + + if (fname == NULL) + { + sf_set_upload_size(-1); + printf("fname null\n"); + return 0; + } + + dltotal = ((sf_get_file_size(fname))/(1024))/512 + 40; + + printf("[%s:%d] s dltotal:%d\n",__FUNCTION__,__LINE__,dltotal); + sf_set_upload_size(0); + UploadCnt = 0; + pthread_create(&UsbUploadInitThrId, NULL, sf_upload_file_thread, (void *)fname); + + while(sf_app_while_flag()) + { + sf_sleep_ms(500); + time++; + ret = sf_get_upload_size(); + + if (ret != 0) + { + break; + } + + if(time >= dltotal) + { + printf("fail time:%ds UploadCnt:%d\n",time/2, UploadCnt); + ret = pthread_cancel(UsbUploadInitThrId); + if(ret != SF_SUCCESS) + { + MLOGD("ledRunningTskId thread cancel fail!\n"); + } + ret = pthread_join(UsbUploadInitThrId, NULL); + if(ret != SF_SUCCESS) + { + MLOGD("ledTskId thread stop fail!\n"); + //return s32ret; + } + ret = -1; + break; + } + } + + printf("[%s:%d] e time:%ds UploadCnt:%d\n",__FUNCTION__,__LINE__, time/2,UploadCnt); + + return ret; +} + +/************************************************* + Function: sf_quectel_upload_file_to_module + Description: upload file to module. + Input: N/A + Output: N/A + Return: 0:success; else:fail; + Others: N/A +*************************************************/ +SINT32 sf_quectel_upload_file_to_module(UINT8 *fileAbsolutePath, UINT8 *uploadFname) +{ + UINT32 count = 0; + SINT32 uploadFsize = 0; + SINT32 ret = SF_SUCCESS; //0:success; else:fail; + SINT32 ttyRet = SF_FAILURE; + UINT32 fd = 0; + UINT32 countflag = 0; + UINT32 time = 0; + struct stat statBuf; + + //UINT8 sdFname[64] = {0}; + //UINT8 gsmPara[GPRS_INFO_LINE_MAX] = {0}; + SF_QUECTEL_UPLOAD_E enUploadLocation = QUECTEL_UPLOAD_FRIST; + + if(sf_get_del_flag() == FALSE) + { + sf_set_del_flag(TRUE); + enUploadLocation = QUECTEL_UPLOAD_QFDEL; + } + + printf("[%s:%d] s\n", __FUNCTION__, __LINE__); + printf("fileAbsolutePath:%s,uploadFname:%s\n", fileAbsolutePath, uploadFname); + + sf_gsm_para_buff_clear(); + + while(sf_app_while_flag()) + { + sf_gsm_para_buff_clear(); + sf_hal_ttyusb2_read(gsmPara, 200); + + printf("-----enUploadLocation=%d-----count=%d-----\n", enUploadLocation, count); + + if(gsmPara[0] != '\0') + { + printf("gsmPara:%s\n================end\n", gsmPara); + } + + count++; + + if(count > 500) + { + ret = SF_UPLOAD_ERROR_AT_TIMEOUT; + printf("[%s:%d]MMS AT Timeout,enUploadLocation=%d,Error Code:0x%08X", + __FUNCTION__, __LINE__, enUploadLocation, ret); + SLOGE(gsmPara); + sprintf((char *)gsmPara, "[%s:%d]MMS AT Timeout,enUploadLocation=%d,Error Code:0x%08X", + __FUNCTION__, __LINE__, enUploadLocation, ret); + SLOGE(gsmPara); + count = 0; + goto SF_QUECTEL_UPLOAD_END; + } + + switch(enUploadLocation) + { + case QUECTEL_UPLOAD_QFDEL: + enUploadLocation = QUECTEL_UPLOAD_QFLST; + sprintf((char *)gsmPara, "AT+QFDEL=\"*\"\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + break; + + case QUECTEL_UPLOAD_QFLST: + + if(strstr((const char *)gsmPara, "ERROR")) + { + ret = SF_UPLOAD_ERROR_GET_FSIZE_FAIL; + sprintf((char *)gsmPara, "[%s:%d] AT+QFDEL,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(gsmPara); + goto SF_QUECTEL_UPLOAD_END; + } + else if(strstr((const char *)gsmPara, "OK")) + { + enUploadLocation = QUECTEL_UPLOAD_FRIST; + } + + break; + + case QUECTEL_UPLOAD_FRIST: + + fd = open((char*)fileAbsolutePath, O_RDONLY); + + if(fd) + { + fstat(fd, &statBuf); + uploadFsize = statBuf.st_size; + printf("[%s:%d]uploadFsize=%ld\n", __FUNCTION__, __LINE__, uploadFsize); + close(fd); + + if(uploadFsize) + { + enUploadLocation = QUECTEL_UPLOAD_QFUPL; + sprintf((char *)gsmPara, "AT+QFUPL=\"UFS:%s\",%d\r", uploadFname, uploadFsize); + ttyRet = sf_hal_ttyusb2_write(gsmPara, strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + } + else + { + ret = SF_UPLOAD_ERROR_GET_FSIZE_FAIL; + sprintf((char *)gsmPara, "[%s:%d]Get File Szie Fail,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(gsmPara); + goto SF_QUECTEL_UPLOAD_END; + } + } + else + { + printf("[%s:%d]open upload file fail,fileAbsolutePath:%s\n", __FUNCTION__, __LINE__, fileAbsolutePath); + ret = SF_UPLOAD_ERROR_OPEN_FAIL; + sprintf((char *)gsmPara, "[%s:%d]Open Upload File Fail,Error Code:0x%08X", __FUNCTION__, __LINE__, ret); + SLOGE(gsmPara); + goto SF_QUECTEL_UPLOAD_END; + } + + break; + + case QUECTEL_UPLOAD_QFUPL: + #if SF_TEST_ERROR_CODE + + if(2 == countflag) + { + sf_test_code_err(enUploadLocation, "+CME ERROR: 423"); + } + + #endif + + if(strstr((const char *)gsmPara, "ERROR")) + { + if(strstr((const char *)gsmPara, "+CME ERROR: 407")) + { + printf("[%s:%d]file already exist,continue.\n", __FUNCTION__, __LINE__); + //enUploadLocation = QUECTEL_UPLOAD_END; + sf_test_upload_tm_log = 1; + goto SF_QUECTEL_UPLOAD_END; + } + else if((strstr((const char *)gsmPara, "+CME ERROR: 423")) || (strstr((const char *)gsmPara, "+CME ERROR: 407"))) + { + ret = SF_UPLOAD_ERROR_DATA; + SLOGE(gsmPara); + printf("[%s:%d]Upload data error,fileAbsolutePath:%s\n", __FUNCTION__, __LINE__, fileAbsolutePath); + sprintf((char *)gsmPara, "[%s:%d]Upload data error,Error Code:0x%08X,%s", __FUNCTION__, __LINE__, ret, uploadFname); + SLOGE(gsmPara); + //enUploadLocation = QUECTEL_UPLOAD_END; + + /*if(sf_4g_uart_restart(1) == SUCCESS) + { + ret = sf_auto_net_reg(); + + if(SUCCESS == ret) + { + sf_set_del_flag(FALSE); + ret = SF_UPLOAD_ERROR_RETRY; + } + }*/ + + #if SF_TEST_QLOG_CERR + uiPara_t *puiPara = appUiParaGet(); + puiPara->QLogSwitch = 0; + sf_set_save_para(TRUE); + #endif + sf_test_upload_tm_log = 1; + goto SF_QUECTEL_UPLOAD_END; + } + else + { + ret = SF_UPLOAD_ERROR_DATA; + SLOGE(gsmPara); + printf("[%s:%d]Upload data error,fileAbsolutePath:%s\n", __FUNCTION__, __LINE__, fileAbsolutePath); + sprintf((char *)gsmPara, "[%s:%d]Upload data error,Error Code:0x%08X,%s", __FUNCTION__, __LINE__, ret, uploadFname); + SLOGE(gsmPara); + //enUploadLocation = QUECTEL_UPLOAD_END; + sf_test_upload_tm_log = 1; + goto SF_QUECTEL_UPLOAD_END; + } + } + else if((sf_get_upload_to_module_flag() == 1) && (strstr((const char *)gsmPara, "+QFUPL:"))) + { + printf("[%s:%d]upload success\n", __FUNCTION__, __LINE__); + //enUploadLocation = QUECTEL_UPLOAD_END; + //sprintf((char *)gsmPara, "[%s:%d] upload success %s uploadFsize:%ld Speed:%ldK/s\n", __FUNCTION__, __LINE__, uploadFname, sf_test_uploadFsize, (sf_test_uploadFsize / (time * 10))); + //SLOGE(gsmPara); + sf_test_upload_tm_log = 1; + goto SF_QUECTEL_UPLOAD_END; + } + else if(strstr((const char *)gsmPara, "CONNECT") || (1 == countflag)) + { + sf_test_uploadFsize = 0; + //time = sp5kOsTimeGet(); + + if(uploadFsize == sf_upload_file_init(fileAbsolutePath)) + { + // time = sp5kOsTimeGet() - time; + sf_sleep_ms(300); + sf_set_upload_to_module_flag(1); + sf_test_uploadFsize = uploadFsize; + countflag = 2; + } + + #if SF_TEST_ERROR_CODE + sf_test_code_err(enUploadLocation, "+CME ERROR: 423"); + #endif + count = 0; + } + else + { + sf_sleep_ms(1000); + countflag++; + + if(count > sf_test_upload_tm) /*18S*/ + { + //sf_cmd_camera_restart(1); //reboot modu + //enUploadLocation = QUECTEL_UPLOAD_END; + ret = SF_UPLOAD_ERROR_AT_TIMEOUT; + printf("[%s:%d]Upload To Module Timeout,enUploadLocation=%d,Error Code:0x%08X", + __FUNCTION__, __LINE__, enUploadLocation, ret); + SLOGE(gsmPara); + sprintf((char *)gsmPara, "[%s:%d]Upload To Module Timeout,enUploadLocation=%d,Error Code:0x%08X,%s", + __FUNCTION__, __LINE__, enUploadLocation, ret, uploadFname); + SLOGE(gsmPara); + sf_test_upload_tm_log = 1; + goto SF_QUECTEL_UPLOAD_END; + } + } + + break; + + /*case QUECTEL_UPLOAD_QFLST: + enUploadLocation = QUECTEL_UPLOAD_END; + sprintf((char *)gsmPara, "AT+QFLST=\"UFS:*\"\r"); + ttyRet = sf_hal_ttyusb2_write(gsmPara,strlen((const char *)gsmPara)); + SF_CHECK_RETURN(ttyRet, SF_GPRS_MODULE_ERROR_WRITE); + break;*/ + + case QUECTEL_UPLOAD_END: + sf_test_upload_tm_log = 1; + goto SF_QUECTEL_UPLOAD_END; + break; + + default: + break; + } + } + SF_QUECTEL_UPLOAD_END: + SLOGD("End,ret=0x%08x", ret); + return ret; +} + + + +/********************************************************************************* + Function: sf_upload_send_files_to_module + Description: upload all send files to module first before send. + Input: 0:only upload mms pic file; 1:upload all pic files; 2:upload vdeo file; + Output: N/A + Return: 0:success; else:fail; + Others: N/A + **********************************************************************************/ +SINT32 sf_upload_send_files_to_module(UINT8 mode) +{ + UINT8 uploadAbsolutePath[5][64] = { { 0 } }; + UINT8 uploadFname[5][64] = { { 0 } }; + //UINT8 customStr[50] = {0}; + //UINT8 videoDirKey[4] = { 0 }; + //UINT8 videoFname[64] = { 0 }; + + SINT32 ret = SF_SUCCESS; + UINT8 tempPicSize = 0; + UINT8 piccount = 0; + UINT8 pic = 0; + static UINT8 SendPicSize = 0; + UINT8 fileIndex = 0; + + UIMenuStoreInfo *pPara = sf_app_ui_para_get(); + SF_SRCFILE_ATTR_S *pThumbFileCfg = sf_file_thumb_cfg_get(); + + printf("[%s:%d]mode=%d\n", __FUNCTION__, __LINE__, mode); + + //sf_custom_str_get(customStr); + + if(4 == pPara->NetGeneration) + { + tempPicSize = pPara->SendPicSize; + } + else if(3 == pPara->NetGeneration) + { + tempPicSize = ((1 <= pPara->SendPicSize) ? 1 : 0); + } + else + { + tempPicSize = 0; + } + + if(SendPicSize != tempPicSize) + { + sf_set_del_flag(FALSE); + } + + if(mode == 0) + { + //sprintf((char *)uploadAbsolutePath[0], "%s\\%s", SF_THUMB_SMALL_DIR, PicName[0][1]); + //sprintf((char *)uploadFname[0], "%s", PicName[0][1]); + + sprintf((char *)uploadFname[piccount], "%s", pThumbFileCfg->stfileattr[0].thumbfileName); + sprintf((char *)uploadAbsolutePath[piccount], "%s", pThumbFileCfg->stfileattr[0].thumbfilePath); + ret = sf_quectel_upload_file_to_module(uploadAbsolutePath[0], uploadFname[0]); + + if((ret == SF_SUCCESS) && (tempPicSize == 0)) + { + mmsUploadFlg = 1; + } + + SendPicSize = 0; + } + else if(mode == 1) + { + printf("NetGeneration:%dG,tempPicSize=%d,piccount=%d,pic=%d\n", pPara->NetGeneration, tempPicSize, piccount, pic); + + SendPicSize = tempPicSize; + + if(mmsUploadFlg == 1) + { + printf("[%s:%d]no upload again because send mms already upload.\n", __FUNCTION__, __LINE__); + } + else + { + if((pPara->SendMultishotIndex1) || (SF_MANUAL == sf_get_mode_flag())) + { + sprintf((char *)uploadFname[piccount], "%s", pThumbFileCfg->stfileattr[0].thumbfileName); + sprintf((char *)uploadAbsolutePath[piccount], "%s", pThumbFileCfg->stfileattr[0].thumbfilePath); + + /*if(2 == tempPicSize) + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s%s\\%s", SF_DCIM_DIR, PicName[0][0], DCF_DIR_FREE_CHAR, PicName[0][1]); + } + else if(1 == tempPicSize) + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s", SF_THUMB_BIG_DIR, PicName[0][1]); + } + else + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s", SF_THUMB_SMALL_DIR, PicName[0][1]); + }*/ + + piccount++; + } + } + + if(SF_AUTO == sf_get_mode_flag()) + { + if(pPara->SendMultishotIndex2) + { + /*sprintf((char *)uploadFname[piccount], "%s", PicName[1][1]); + + if(2 == tempPicSize) + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s%s\\%s", SF_DCIM_DIR, PicName[1][0], DCF_DIR_FREE_CHAR, PicName[1][1]); + } + else if(1 == tempPicSize) + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s", SF_THUMB_BIG_DIR, PicName[1][1]); + } + else + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s", SF_THUMB_SMALL_DIR, PicName[1][1]); + }*/ + sprintf((char *)uploadFname[piccount], "%s", pThumbFileCfg->stfileattr[1].thumbfileName); + sprintf((char *)uploadAbsolutePath[piccount], "%s", pThumbFileCfg->stfileattr[1].thumbfilePath); + + piccount++; + } + + if(pPara->SendMultishotIndex3) + { + /*sprintf((char *)uploadFname[piccount], "%s", PicName[2][1]); + + if(2 == tempPicSize) + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s%s\\%s", SF_DCIM_DIR, PicName[2][0], DCF_DIR_FREE_CHAR, PicName[2][1]); + } + else if(1 == tempPicSize) + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s", SF_THUMB_BIG_DIR, PicName[2][1]); + } + else + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s", SF_THUMB_SMALL_DIR, PicName[2][1]); + }*/ + sprintf((char *)uploadFname[piccount], "%s", pThumbFileCfg->stfileattr[2].thumbfileName); + sprintf((char *)uploadAbsolutePath[piccount], "%s", pThumbFileCfg->stfileattr[2].thumbfilePath); + + piccount++; + } + + if(pPara->SendMultishotIndex4) + { + /*sprintf((char *)uploadFname[piccount], "%s", PicName[3][1]); + + if(2 == tempPicSize) + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s%s\\%s", SF_DCIM_DIR, PicName[3][0], DCF_DIR_FREE_CHAR, PicName[3][1]); + } + else if(1 == tempPicSize) + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s", SF_THUMB_BIG_DIR, PicName[3][1]); + } + else + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s", SF_THUMB_SMALL_DIR, PicName[3][1]); + }*/ + sprintf((char *)uploadFname[piccount], "%s", pThumbFileCfg->stfileattr[3].thumbfileName); + sprintf((char *)uploadAbsolutePath[piccount], "%s", pThumbFileCfg->stfileattr[3].thumbfilePath); + + piccount++; + } + + if(pPara->SendMultishotIndex5) + { + /*sprintf((char *)uploadFname[piccount], "%s", PicName[4][1]); + + if(2 == tempPicSize) + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s%s\\%s", SF_DCIM_DIR, PicName[4][0], DCF_DIR_FREE_CHAR, PicName[4][1]); + } + else if(1 == tempPicSize) + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s", SF_THUMB_BIG_DIR, PicName[4][1]); + } + else + { + sprintf((char *)uploadAbsolutePath[piccount], "%s\\%s", SF_THUMB_SMALL_DIR, PicName[4][1]); + }*/ + sprintf((char *)uploadFname[piccount], "%s", pThumbFileCfg->stfileattr[4].thumbfileName); + sprintf((char *)uploadAbsolutePath[piccount], "%s", pThumbFileCfg->stfileattr[4].thumbfilePath); + + piccount++; + } + } + + printf("[%s:%d]before,piccount=%d\n", __FUNCTION__, __LINE__, piccount); + + if(4 == pPara->NetGeneration) + { + if(piccount >= 2) + { + piccount = ((pPara->SendPicSize == 2) ? 2 : piccount); + } + } + else + { + if(piccount >= 1) + { + piccount = 1; + } + } + + printf("[%s:%d]after,piccount=%d\n", __FUNCTION__, __LINE__, piccount); + + /* dbg log */ + for(pic = 0; pic < piccount; pic++) + { + printf("[%s:%d]pic:%d,uploadFname:%s,uploadAbsolutePath:%s\n", __FUNCTION__, __LINE__, pic, uploadFname[pic], uploadAbsolutePath[pic]); + } + + for(pic = 0; pic < piccount; pic++) + { + ret = sf_quectel_upload_file_to_module(uploadAbsolutePath[pic], uploadFname[pic]); + + if(ret != SF_SUCCESS) + { + break; + } + } + } + else + { + SendPicSize = tempPicSize; + /*sf_get_send_video_fname(videoDirKey, videoFname); + sprintf((char *)uploadAbsolutePath[0], "%s\\%s%s\\%s", SF_DCIM_DIR, videoDirKey, DCF_DIR_FREE_CHAR, videoFname); + sprintf((char *)uploadFname[0], "%s", videoFname);*/ + + fileIndex = sf_check_file_video(); + + sprintf((char *)uploadAbsolutePath[0], "%s", pThumbFileCfg->stfileattr[fileIndex].thumbfilePath); + sprintf((char *)uploadFname[0], "%s", pThumbFileCfg->stfileattr[fileIndex].thumbfileName); + ret = sf_quectel_upload_file_to_module(uploadAbsolutePath[0], uploadFname[0]); + } + + printf("[%s:%d]ret:[0x%08X]\n\n", __FUNCTION__, __LINE__, ret); + return ret; +} + +UINT8 sf_get_upload_to_module_flag(void) +{ + return uploadToModuleFalg; +} + +void sf_set_upload_to_module_flag(UINT8 Falg) +{ + uploadToModuleFalg = Falg; +} + +#ifdef __cplusplus +#if __cplusplus +} +#endif +#endif + + diff --git a/code/application/source/sf_app/code/source/fileMng/sf_fileMng.c b/code/application/source/sf_app/code/source/fileMng/sf_fileMng.c index 0554f4ab0..2d490800d 100755 --- a/code/application/source/sf_app/code/source/fileMng/sf_fileMng.c +++ b/code/application/source/sf_app/code/source/fileMng/sf_fileMng.c @@ -9,10 +9,10 @@ #include #include #include - +#include #include "sf_log.h" #include "sf_fileMng.h" -#include "HMACSHA.h" + #ifdef __cplusplus #if __cplusplus extern "C" { @@ -104,7 +104,7 @@ SINT32 sf_file_txt_fill(SF_FILE_ATTR_S *pstFileAttr) SF_COMM_CHECK_POINTER(pstFileAttr->thumbfilePath,SF_FAILURE); SF_COMM_CHECK_POINTER(pstFileAttr->txtfilePath,SF_FAILURE); - SINT32 len = 0; + UINT32 len = 0; SF_CHAR *pBuf = NULL; SF_CHAR *bufBak = NULL; UINT32 readSize = 0; @@ -176,10 +176,11 @@ SINT32 sf_file_txt_fill(SF_FILE_ATTR_S *pstFileAttr) #if defined(CFG_TRANSDATA_AT) SINT32 sf_file_http_header_add(SF_FILE_ATTR_S *pstFileAttr, SF_PDT_PARAM_STATISTICS_S *pStaticParam) { + SINT32 s32Ret = SF_SUCCESS; +#if 0 SF_COMM_CHECK_POINTER(pstFileAttr,SF_FAILURE); SF_COMM_CHECK_POINTER(pStaticParam,SF_FAILURE); - SINT32 s32Ret = SF_SUCCESS; SINT16 i = 0; SINT16 fd = 0; SF_CHAR typestr[16] = {0}; @@ -280,7 +281,7 @@ SINT32 sf_file_http_header_add(SF_FILE_ATTR_S *pstFileAttr, SF_PDT_PARAM_STATIST close(fd); memcpy(pstFileAttr->txtfileName, txtfilename, strlen(txtfilename)); memcpy(pstFileAttr->txtfilePath, txtfilePathName, strlen(txtfilePathName)); - +#endif return s32Ret; } @@ -378,11 +379,11 @@ SINT32 sf_file_subscribe_check(SF_FILE_ATTR_S *pstfileAttr, SF_SUBSCRIBE_ATTR_S #else SINT32 sf_file_http_header_add(SF_FILE_ATTR_S *pstFileAttr, SF_PDT_PARAM_STATISTICS_S *pStaticParam) { - + SINT32 s32Ret = SF_SUCCESS; +#if 0 SF_COMM_CHECK_POINTER(pstFileAttr,SF_FAILURE); SF_COMM_CHECK_POINTER(pStaticParam,SF_FAILURE); - SINT32 s32Ret = SF_SUCCESS; SINT16 i = 0; SINT16 fd = 0; SF_CHAR typestr[16] = {0}; @@ -510,7 +511,7 @@ SINT32 sf_file_http_header_add(SF_FILE_ATTR_S *pstFileAttr, SF_PDT_PARAM_STATIST memset(pstFileAttr->txtfilePath, '\0', sizeof(pstFileAttr->txtfilePath)); memcpy(pstFileAttr->txtfileName, txtfilename, strlen(txtfilename)); memcpy(pstFileAttr->txtfilePath, txtfilePathName, strlen(txtfilePathName)); - +#endif return s32Ret; } @@ -644,6 +645,13 @@ void sf_file_thumb_cfg_fill(char* filepath,char* fileName,SF_FILE_TYPE_E enFileT void sf_file_thumb_cfg_set(SF_SRCFILE_ATTR_S *pThumbFileCfgl) { pThumbFileCfg = pThumbFileCfgl; + //memcpy(&pThumbFileCfg,pThumbFileCfgl,sizeof(pThumbFileCfg)); +} + +void sf_file_thumb_cfg_set_down(SF_SRCFILE_ATTR_S *pSfCustomerPara) +{ + //currentInfo = *pSfCustomerPara; + memcpy(pSfCustomerPara,&pThumbFileCfg,sizeof(pThumbFileCfg)); } SF_SRCFILE_ATTR_S* sf_file_thumb_cfg_get(void) diff --git a/code/application/source/sf_app/code/source/paramMng/sf_param_common.c b/code/application/source/sf_app/code/source/paramMng/sf_param_common.c index 5ce762e67..56e241be0 100755 --- a/code/application/source/sf_app/code/source/paramMng/sf_param_common.c +++ b/code/application/source/sf_app/code/source/paramMng/sf_param_common.c @@ -252,10 +252,9 @@ int sf_customer_param_load(void) } UINT32 sum = MemCheck_CalcCheckSum16Bit((UINT32)tmpInfo, sizeof(UIMenuStoreInfo)); - printf("**************size = %lx / CamMode = %u / sum = %lx **************\n", + printf("**************size = %lx / sum = %lx **************\n", sizeof(UIMenuStoreInfo), //((UIMenuStoreInfo*)tmpInfo)->UIParameter[FL_MOVIE_SIZE], - ((UIMenuStoreInfo*)tmpInfo)->UIParameter[CamMode], sum); } diff --git a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu.c b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu.c index 9531568c1..c49938894 100755 --- a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu.c +++ b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu.c @@ -24,8 +24,8 @@ #include #include #include -#include -#include +#include +#include #include #include #include @@ -35,6 +35,7 @@ #include "sf_keymng.h" #include "sf_message_queue.h" #include "sf_commu_mcu.h" +#include #define SERIAL_DEVICE_PATH "/dev/ttyS2" @@ -898,7 +899,9 @@ static void * sf_commu_mcu_task(void * argv) unsigned char temp_start2 = 0; unsigned char temp_end1 = 0; unsigned char temp_end2 = 0; - unsigned char copy_size = 0; + unsigned char copy_size = 0; + printf("[%s:%d] s\n", __FUNCTION__, __LINE__); + mcubuf_reset(); while(sf_commu_mcu_exit == 0) { @@ -1001,6 +1004,7 @@ static void * sf_commu_mcu_task(void * argv) usleep(10000);//10ms } + sf_commu_mcu_close(); pthread_exit(0); } diff --git a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c index a8c768748..6b379b186 100755 --- a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c +++ b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c @@ -28,6 +28,7 @@ #include "sf_commu_mcu.h" #include "sf_commu_mcu_reg.h" #include +#include #ifdef __cplusplus @@ -58,6 +59,10 @@ static UINT8 gModuleSleep = 1; static UINT8 isSignalReady = 0; static UINT32 GPRS_ERRNO = 0; static UINT32 SmsCheck = 0; +static UINT8 SIMPIN1 = 1; +static UINT8 SIMPIN11 = 1; +static UINT8 SIMPINPUK = 1; +static UINT8 cq_Signal = 0; UINT8 sf_mcu_read(UINT32 reg, UINT8 *data) { @@ -155,7 +160,7 @@ unsigned char sf_mcu_power_on_para_get (MCUParam_t attrId) } printf(" start mode = %d IRSHTTER = %d\n", startMode, IRSHTTER); sf_mcu_rtc_get(&time); - sf_sys_rtc_time_set(&time); + sf_sys_rtc_time_set((SF_PARA_TIME_S*)&time); sf_poweron_type_set(startMode); //McuPowerOnMode = startMode; @@ -364,8 +369,8 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) if(attrId == SF_MCU_POWEROFF) { //printf("SynMcuSet = %x\n", statisPara->SynMcuSet); - MLOGI("NeedTimeSyncStartUp = %d\n", sf_sys_get_flag(NeedTimeSyncStartUp)); - if(sf_sys_get_flag(NeedTimeSyncStartUp) == 1) + MLOGI("NeedTimeSyncStartUp = %d\n", puiPara->NeedTimeSyncStartUp); + if(puiPara->NeedTimeSyncStartUp == 1) { paraSyncFlag = 1; } @@ -387,7 +392,7 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) mcuReg[i] = SF_RTC_SEC; mcuData[i++] = date.Sec; - if((sf_sys_get_flag(GpsSwitch) == 1) && (sf_sys_get_flag(GpsNumber))) + if((puiPara->GpsSwitch == 1) && (puiPara->GpsNumber)) { gpsAlwaysFlag=1; } @@ -396,17 +401,17 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) gpsAlwaysFlag=0; } - if(sf_sys_get_flag(PirSensitivity)) + if(puiPara->PirSensitivity) temp = 0x01; else temp = 0x00; - if(1 == sf_sys_get_flag(TimelapseSwitch)) + if(1 == puiPara->TimelapseSwitch) { temp |= 0x02; } - if(1 == sf_sys_get_flag(PirDelaySwitch)) + if(1 == puiPara->PirDelaySwitch) { temp |= 0x04; } @@ -431,10 +436,10 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) } - if(sf_sys_get_flag(TimeSend1Switch) == 1) + if(puiPara->TimeSend1Switch == 1) temp |= 0x20; - if(sf_sys_get_flag(TimeSend2Switch) == 1) + if(puiPara->TimeSend2Switch == 1) temp |= 0x40; if(gpsAlwaysFlag && simCardInsert) @@ -447,7 +452,7 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) temp = 0; - if(sf_sys_get_flag(TimelapseSwitch)) + if(puiPara->TimelapseSwitch) { mcuReg[i] = TIMELAPSE_HOUR; mcuData[i++] = puiPara->TimelapseTime.Hour; @@ -455,7 +460,7 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) mcuData[i++] = puiPara->TimelapseTime.Min; mcuReg[i] = TIMELAPSE_SEC; - if((sf_sys_get_flag(TimelapseSwitch)) && (puiPara->TimelapseTime.Hour == 0) && (puiPara->TimelapseTime.Min == 0) && (puiPara->TimelapseTime.Sec == 0)) + if((puiPara->TimelapseSwitch) && (puiPara->TimelapseTime.Hour == 0) && (puiPara->TimelapseTime.Min == 0) && (puiPara->TimelapseTime.Sec == 0)) mcuData[i++] = 5; else mcuData[i++] = puiPara->TimelapseTime.Sec; @@ -470,7 +475,7 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) mcuData[i++] = 0; } - if(sf_sys_get_flag(PirDelaySwitch)) + if(puiPara->PirDelaySwitch) { mcuReg[i] = PIR_DELAY_HOUR; mcuData[i++] = puiPara->PirDelayTime.Hour; @@ -499,7 +504,7 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) mcuData[i++] = 1; } - if(sf_sys_get_flag(DailyReportSwitch)) + if(puiPara->DailyReportSwitch) { mcuReg[i] = DAILY_REPORT_HOUR; mcuData[i++] = puiPara->DailyReportTime2.Hour; @@ -524,24 +529,24 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) mcuData[i++] = puiPara->TimeSend2.Min; mcuReg[i] = ANALOG_PIR_SENSITIVITY; - temp = sf_mcu_analog_pir_sen_convert(sf_sys_get_flag(PirSensitivity)); + temp = sf_mcu_analog_pir_sen_convert(puiPara->PirSensitivity); //hybrid mode 4G module keep sleep - if((sf_sys_get_flag(NetWorkNeedSearch) != 3) && simCardInsert && gModuleSleep) + if(((puiPara->NetWorkNeedSearch) != 3) && simCardInsert && gModuleSleep) { //bit 5-bit 6, daily mode 0, hybrid mode 1, instant mode 2 - if((sf_sys_get_flag(GprsMode) == 1) || (paraSyncFlag)) + if(((puiPara->GprsMode) == 1) || (paraSyncFlag)) { temp |= 0x40; } else { - if ((sf_sys_get_flag(GprsMode) == 2) && isSignalReady && (GPRS_ERRNO == 0)) + if (((puiPara->GprsMode) == 2) && isSignalReady && (GPRS_ERRNO == 0)) temp |= 0x20; //sf_pdp_flg_set(0); } } - if(((sf_sys_get_flag(GprsSwitch)) && (simCardInsert) && (sf_sys_get_flag(SendType) == 0)) || (paraSyncFlag)) + if(((puiPara->GprsSwitch) && (simCardInsert) && ((puiPara->SendType) == 0)) || (paraSyncFlag)) { temp |= 0x80; } @@ -553,9 +558,9 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) mcuData[i++] = temp; mcuReg[i] = DIGITAL_PIR_SENSITIVITY; - mcuData[i++] = sf_sys_get_flag(DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)]; + mcuData[i++] = (puiPara->DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)]; mcuReg[i] = DIGITAL_PIR_CFG; - mcuData[i++] = (sf_sys_get_flag(DigitPirWindowTime) << 4) | sf_sys_get_flag(DigitPirCnt); + mcuData[i++] = ((puiPara->DigitPirWindowTime) << 4) | (puiPara->DigitPirCnt); //mcuData[i++] = (PirDigtSensRegValue[SysGetFlag(PirSensitivity)] <= 10 ? 1 : 0); //DSP busy/idle @@ -568,7 +573,7 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) mcuReg[i] = POWEROFF_TYPE; temp = 0; - if(simCardInsert && (sf_sys_get_flag(NetWorkNeedSearch)) + if(simCardInsert && (puiPara->NetWorkNeedSearch) && ((PowerOnMode == PWR_ON_AUTO) || (PowerOnMode == PWR_ON_SETUP) || (PowerOnMode == PWR_ON_DAILY_REPORT)))/* SET->ON, OFF->ON*/ temp = 1; else if(SmsCheck) @@ -583,7 +588,7 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) mcuReg[i] = VBAT_RECOVER_VAL; mcuData[i++] = SF_BATT_RECOVERY; - if(sf_sys_get_flag(WorkTime1Switch)) + if(puiPara->WorkTime1Switch) { mcuReg[i] = WORKTIME1_SWITCH; mcuData[i++] = 0xFF; @@ -614,7 +619,7 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) mcuData[i++] = 0; } - if(sf_sys_get_flag(WorkTime2Switch)) + if(puiPara->WorkTime2Switch) { mcuReg[i] = WORKTIME2_SWITCH; mcuData[i++] = 0xFF; @@ -645,7 +650,7 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) mcuData[i++] = 0; } - if((sf_sys_get_flag(GpsSwitch) || sf_sys_get_flag(FristSendDailyAndGps)) && (((SF_MCU_STARTUP_ONKEY == sf_poweron_type_get())) || paraSyncFlag)) + if(((puiPara->GpsSwitch) || (puiPara->FristSendDailyAndGps)) && (((SF_MCU_STARTUP_ONKEY == sf_poweron_type_get())) || paraSyncFlag)) { mcuReg[i] = GPS_POWER_TIMER_CLEAR; mcuData[i++] = 1; @@ -660,10 +665,10 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) temp = 0; - if(sf_sys_get_flag(TimeSend3Switch) == 1) + if((puiPara->TimeSend3Switch) == 1) temp |= 0x01; - if(sf_sys_get_flag(TimeSend4Switch) == 1) + if((puiPara->TimeSend4Switch) == 1) temp |= 0x02; mcuReg[i] = FUNCTION_SWTICH1; @@ -683,14 +688,14 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) { mcuReg[i] = ANALOG_PIR_SENSITIVITY; - temp = sf_sys_get_flag(PirSensitivity);//sf_mcu_analog_pir_sen_convert(SysGetFlag(DigPirSensitivity)); + temp = (puiPara->PirSensitivity);//sf_mcu_analog_pir_sen_convert(SysGetFlag(DigPirSensitivity)); - if(sf_sys_get_flag(GprsMode))//hybrid mode 4G module keep sleep + if(puiPara->GprsMode)//hybrid mode 4G module keep sleep { temp |= 0x40; } - if((sf_sys_get_flag(GprsMode)) && (val == 1)) + if((puiPara->GprsMode) && (val == 1)) { temp |= 0x80; } @@ -704,12 +709,12 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) if(ConfigureModeFlag) { mcuReg[i] = DIGITAL_PIR_SENSITIVITY; - mcuData[i++] = sf_sys_get_flag(DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)]; + mcuData[i++] = (puiPara->DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)]; mcuReg[i] = DIGITAL_PIR_CFG; - mcuData[i++] = (sf_sys_get_flag(DigitPirWindowTime) << 4) | sf_sys_get_flag(DigitPirCnt); + mcuData[i++] = ((puiPara->DigitPirWindowTime) << 4) | (puiPara->DigitPirCnt); } - if((sf_sys_get_flag(GpsSwitch) || sf_sys_get_flag(FristSendDailyAndGps)) && (ConfigureModeFlag || paraSyncFlag)) + if(((puiPara->GpsSwitch) || (puiPara->FristSendDailyAndGps)) && (ConfigureModeFlag || paraSyncFlag)) { mcuReg[i] = GPS_POWER_TIMER_CLEAR; mcuData[i++] = 1; @@ -726,14 +731,14 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) { mcuReg[i] = ANALOG_PIR_SENSITIVITY; - temp = sf_sys_get_flag(PirSensitivity);//sf_mcu_analog_pir_sen_convert(puiPara->PirSensitivity); + temp = (puiPara->PirSensitivity);//sf_mcu_analog_pir_sen_convert(puiPara->PirSensitivity); - if((sf_sys_get_flag(GprsMode)) && (gModuleSleep == 1))//hybrid mode 4G module keep sleep + if((puiPara->GprsMode) && (gModuleSleep == 1))//hybrid mode 4G module keep sleep { temp |= 0x40; } - if((sf_sys_get_flag(GprsMode)) && (simCardInsert)) + if((puiPara->GprsMode) && (simCardInsert)) { temp |= 0x80; } @@ -744,16 +749,16 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) mcuData[i++] = temp; - printf("[%s:%d] temp:0x%02x GprsSwitch:%lu simCardInsert:%lu\n", __FUNCTION__, __LINE__, temp, sf_sys_get_flag(GprsSwitch), simCardInsert); + printf("[%s:%d] temp:0x%02x GprsSwitch:%lu simCardInsert:%lu\n", __FUNCTION__, __LINE__, temp, puiPara->GprsSwitch, simCardInsert); mcuReg[i] = DIGITAL_PIR_SENSITIVITY; - mcuData[i++] = sf_sys_get_flag(DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)]; + mcuData[i++] = (puiPara->DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)]; mcuReg[i] = DIGITAL_PIR_CFG; - mcuData[i++] = (sf_sys_get_flag(DigitPirWindowTime) << 4) | sf_sys_get_flag(DigitPirCnt); + mcuData[i++] = ((puiPara->DigitPirWindowTime) << 4) | (puiPara->DigitPirCnt); mcuReg[i] = SYS_STATUS; - mcuData[i++] = sf_sys_get_flag(CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0; + mcuData[i++] = (puiPara->CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0; - if((sf_sys_get_flag(GpsSwitch) || sf_sys_get_flag(FristSendDailyAndGps)) && (ConfigureModeFlag || paraSyncFlag)) + if(((puiPara->GpsSwitch) || (puiPara->FristSendDailyAndGps)) && (ConfigureModeFlag || paraSyncFlag)) { mcuReg[i] = GPS_POWER_TIMER_CLEAR; mcuData[i++] = 1; @@ -769,7 +774,7 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) else if(attrId == SF_MCU_RESET_MODULE) { mcuReg[i] = SYS_STATUS; - mcuData[i++] = sf_sys_get_flag(CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x10; + mcuData[i++] = (puiPara->CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x10; //sf_pdp_flg_set(0); } else if(attrId == SF_MCU_SOFT_UPDATE) @@ -778,22 +783,22 @@ unsigned char sf_mcu_reg_set(MCUParam_t attrId, unsigned char val) if(val == 1) { - mcuData[i++] = sf_sys_get_flag(CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x08; + mcuData[i++] = (puiPara->CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x08; } else { - mcuData[i++] = sf_sys_get_flag(CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0; + mcuData[i++] = (puiPara->CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0; } } else if(attrId == SF_MCU_POWER_RESTART) { mcuReg[i] = SYS_STATUS; - mcuData[i++] = sf_sys_get_flag(CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x20; + mcuData[i++] = (puiPara->CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x20; } else if(attrId == SF_MCU_PIR_RESTART) { mcuReg[i] = SYS_STATUS; - mcuData[i++] = sf_sys_get_flag(CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x80; + mcuData[i++] = (puiPara->CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x80; } mcuReg[i] = DSP_WRITE_FLG; //MCU set end @@ -1095,6 +1100,53 @@ void sf_set_module_sleep_flag(UINT8 flag) gModuleSleep = flag; } +int sf_app_while_flag(void) +{ + if((!sf_usb_IsInsert()) && (POWEROFF != 1) + /*&& (ModuleUpdating != 1) && (sf_get_fw_update() == 0)*/) + { + return 1; + } + else + { + return 0; + } +} +void sf_set_sim_insert(UINT32 sim) +{ + simCardInsert = sim; +} + +void sf_set_cq_signal(UINT8 csq) +{ + UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); + + if(((puiPara->NetGeneration == 4) && (csq > 0) && (csq < 129)) || ((puiPara->NetGeneration < 4) && (csq > 1) && (csq < 32))) + { + cq_Signal = csq; + isSignalReady = 1; + } + else + { + cq_Signal = 0; + isSignalReady = 0; + } + + printf("[%s:%d]cq_Signal=%d,isSignalReady=%d\n", __FUNCTION__, __LINE__, cq_Signal, isSignalReady); +} + +UINT8 sf_get_signal_ready(void) +{ + return isSignalReady; +} + +void sf_set_sim_pin_flag(UINT8 simPin, UINT8 simPins, UINT8 simPinPuk) +{ + SIMPIN1 = simPin; + SIMPIN11 = simPins; + SIMPINPUK = simPinPuk; + printf("[%s:%d]SIMPIN1=%d,SIMPIN11=%d,SIMPINPUK=%d\n", __FUNCTION__, __LINE__, SIMPIN1, SIMPIN11, SIMPINPUK); +} #ifdef __cplusplus #if __cplusplus diff --git a/code/application/source/sf_app/code/source/systemMng/sf_systemMng.c b/code/application/source/sf_app/code/source/systemMng/sf_systemMng.c index 5c7199f44..b0181e854 100755 --- a/code/application/source/sf_app/code/source/systemMng/sf_systemMng.c +++ b/code/application/source/sf_app/code/source/systemMng/sf_systemMng.c @@ -97,10 +97,11 @@ SINT32 sf_poweroff_type_set(SF_POWEROFF_TYPE_E enType) SINT32 sf_sys_rtc_time_get(SF_PARA_TIME_S *pstDateTime) { SF_COMM_CHECK_POINTER(pstDateTime,SF_FAILURE); - time_t t; - struct tm *rtctm; - //SINT32 fdRtc = -1; + SINT32 fdRtc = -1; int ret = SF_SUCCESS; + + /*time_t t; + struct tm *rtctm; time(&t); rtctm = localtime(&t); @@ -110,9 +111,8 @@ SINT32 sf_sys_rtc_time_get(SF_PARA_TIME_S *pstDateTime) pstDateTime->Hour = rtctm->tm_hour; pstDateTime->Min = rtctm->tm_min; pstDateTime->Sec = rtctm->tm_sec; - - SLOGI("%d-%d-%d %d:%d:%d\n",pstDateTime->Year,pstDateTime->Mon,pstDateTime->Day,pstDateTime->Hour,pstDateTime->Min,pstDateTime->Sec); - /* + */ + fdRtc = open(DEFAULT_RTC_DEVICE, O_RDWR); if (fdRtc < 0) { @@ -136,7 +136,8 @@ SINT32 sf_sys_rtc_time_get(SF_PARA_TIME_S *pstDateTime) pstDateTime->Sec = rtctm.tm_sec; } close(fdRtc); - */ + SLOGI("%d-%d-%d %d:%d:%d\n",pstDateTime->Year,pstDateTime->Mon,pstDateTime->Day,pstDateTime->Hour,pstDateTime->Min,pstDateTime->Sec); + return ret; } @@ -145,8 +146,10 @@ SINT32 sf_sys_rtc_time_set(SF_PARA_TIME_S* pstDateTime) { SF_COMM_CHECK_POINTER(pstDateTime,SF_FAILURE); - //SINT32 fdRtc = -1; + SINT32 fdRtc = -1; + SINT32 ret = SF_SUCCESS; + #if 0 time_t t; struct tm *tm_info; @@ -171,13 +174,13 @@ SINT32 sf_sys_rtc_time_set(SF_PARA_TIME_S* pstDateTime) /* 设置系统时间 */ if (settimeofday(&tv, NULL) == -1) { perror("settimeofday error"); - exit(EXIT_FAILURE); + //exit(EXIT_FAILURE); } else { printf("Time set successfully!\n"); } +#endif - - /*fdRtc = open(DEFAULT_RTC_DEVICE, O_RDWR); + fdRtc = open(DEFAULT_RTC_DEVICE, O_RDWR); if (fdRtc < 0) { MLOGE("[ERR]open %s error:%d\n", DEFAULT_RTC_DEVICE, fdRtc); @@ -198,7 +201,7 @@ SINT32 sf_sys_rtc_time_set(SF_PARA_TIME_S* pstDateTime) MLOGE("[ERR]ioctl get rtc time error:%d\n", ret); } close(fdRtc); - */ + return ret; } diff --git a/code/driver/source/crypto/cryptodev-linux/cryptodev.o b/code/driver/source/crypto/cryptodev-linux/cryptodev.o old mode 100755 new mode 100644 diff --git a/code/driver/source/msdcnvt/msdcnvt/msdcnvt.o b/code/driver/source/msdcnvt/msdcnvt/msdcnvt.o old mode 100755 new mode 100644 diff --git a/code/driver/source/msdcnvt/msdcnvt_adj/msdcnvt_adj.o b/code/driver/source/msdcnvt/msdcnvt_adj/msdcnvt_adj.o old mode 100755 new mode 100644 diff --git a/code/driver/source/msdcnvt/msdcnvt_custom_si/msdcnvt_custom_si.o b/code/driver/source/msdcnvt/msdcnvt_custom_si/msdcnvt_custom_si.o old mode 100755 new mode 100644 diff --git a/code/hdal/vendor/isp/configs/dtsi/os05b10_awb_0.dtsi b/code/hdal/vendor/isp/configs/dtsi/os05b10_awb_0.dtsi index dc860c10d..ea082ad4e 100755 --- a/code/hdal/vendor/isp/configs/dtsi/os05b10_awb_0.dtsi +++ b/code/hdal/vendor/isp/configs/dtsi/os05b10_awb_0.dtsi @@ -15,11 +15,11 @@ }; awb_ct_weight { size = [78 00 00 00]; - data = [fc 08 00 00 f0 0a 00 00 74 0e 00 00 5c 12 00 00 64 19 00 00 f8 2a 00 00 48 03 00 00 60 03 00 00 bc 03 00 00 f7 03 00 00 23 04 00 00 c3 04 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 08 00 00 00 08 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00]; + data = [fc 08 00 00 f0 0a 00 00 74 0e 00 00 5c 12 00 00 64 19 00 00 f8 2a 00 00 48 03 00 00 60 03 00 00 bc 03 00 00 f7 03 00 00 23 04 00 00 c3 04 00 00 01 00 00 00 01 00 00 00 02 00 00 00 05 00 00 00 10 00 00 00 08 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 03 00 00 00 08 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00]; }; awb_target { size = [24 00 00 00]; - data = [60 03 00 00 f7 03 00 00 23 04 00 00 00 04 00 00 24 04 00 00 38 04 00 00 00 04 00 00 f2 03 00 00 e8 03 00 00]; + data = [60 03 00 00 f7 03 00 00 23 04 00 00 00 04 00 00 18 04 00 00 18 04 00 00 00 04 00 00 e8 03 00 00 e8 03 00 00]; }; awb_ct_info { size = [60 00 00 00]; @@ -39,7 +39,7 @@ }; awb_luma_weight { size = [44 00 00 00]; - data = [00 00 00 00 04 00 00 00 08 00 00 00 14 00 00 00 20 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00]; + data = [00 00 00 00 04 00 00 00 08 00 00 00 14 00 00 00 20 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 01 00 00 00 01 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00]; }; }; }; diff --git a/code/hdal/vendor/isp/configs/dtsi/os05b10_iq_0.dtsi b/code/hdal/vendor/isp/configs/dtsi/os05b10_iq_0.dtsi index 8311b6a4e..3b6a70520 100755 --- a/code/hdal/vendor/isp/configs/dtsi/os05b10_iq_0.dtsi +++ b/code/hdal/vendor/isp/configs/dtsi/os05b10_iq_0.dtsi @@ -11,7 +11,7 @@ }; iq_nr { size = [f4 12 00 00]; - data = [01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 01 00 00 00 02 00 00 00 03 00 00 00 05 00 00 00 06 00 00 00 09 00 00 00 00 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 00 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 07 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 00 00 00 00 0c 00 00 00 80 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 00 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 07 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 08 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 00 00 00 00 03 00 00 00 06 00 00 00 09 00 00 00 09 00 00 00 0c 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 02 00 00 00 03 00 00 00 05 00 00 00 06 00 00 00 09 00 00 00 00 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 00 00 00 00 03 00 00 00 06 00 00 00 09 00 00 00 09 00 00 00 0c 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 0c 00 00 00 01 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 03 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 09 00 00 00 00 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 08 00 00 00 09 00 00 00 0a 00 00 00 0b 00 00 00 0c 00 00 00 0d 00 00 00 0e 00 00 00 0f 00 00 00 10 00 00 00 11 00 00 00 11 00 00 00 12 00 00 00 13 00 00 00 00 00 00 00 03 00 00 00 06 00 00 00 09 00 00 00 09 00 00 00 0c 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 05 00 00 00 07 00 00 00 09 00 00 00 0a 00 00 00 0e 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 10 00 00 00 12 00 00 00 12 00 00 00 0c 00 00 00 0e 00 00 00 0f 00 00 00 11 00 00 00 12 00 00 00 13 00 00 00 15 00 00 00 16 00 00 00 17 00 00 00 18 00 00 00 19 00 00 00 00 00 00 00 0f 00 00 00 16 00 00 00 1b 00 00 00 1f 00 00 00 2c 00 00 00 00 00 00 00 0a 00 00 00 0c 00 00 00 0e 00 00 00 10 00 00 00 12 00 00 00 14 00 00 00 16 00 00 00 17 00 00 00 19 00 00 00 1a 00 00 00 1b 00 00 00 1d 00 00 00 1e 00 00 00 1f 00 00 00 20 00 00 00 21 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 0a 00 00 00 18 00 00 00 10 00 00 00 18 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 02 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 08 00 00 00 0c 00 00 00 0e 00 00 00 11 00 00 00 18 00 00 00 0c 00 00 00 1a 00 00 00 20 00 00 00 24 00 00 00 28 00 00 00 2c 00 00 00 2f 00 00 00 32 00 00 00 34 00 00 00 37 00 00 00 39 00 00 00 3b 00 00 00 3d 00 00 00 3f 00 00 00 41 00 00 00 43 00 00 00 45 00 00 00 00 00 00 00 1e 00 00 00 2a 00 00 00 34 00 00 00 3c 00 00 00 55 00 00 00 00 00 00 00 12 00 00 00 19 00 00 00 1f 00 00 00 24 00 00 00 28 00 00 00 2c 00 00 00 2f 00 00 00 32 00 00 00 36 00 00 00 38 00 00 00 3b 00 00 00 3e 00 00 00 40 00 00 00 43 00 00 00 45 00 00 00 48 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 0a 00 00 00 30 00 00 00 10 00 00 00 1d 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 08 00 00 00 0c 00 00 00 0e 00 00 00 11 00 00 00 18 00 00 00 00 00 00 00 0e 00 00 00 14 00 00 00 18 00 00 00 1c 00 00 00 20 00 00 00 23 00 00 00 26 00 00 00 28 00 00 00 2b 00 00 00 2d 00 00 00 2f 00 00 00 31 00 00 00 33 00 00 00 35 00 00 00 37 00 00 00 39 00 00 00 00 00 00 00 26 00 00 00 36 00 00 00 42 00 00 00 4d 00 00 00 6c 00 00 00 01 00 00 00 47 00 00 00 35 00 00 00 3e 00 00 00 31 00 00 00 37 00 00 00 3c 00 00 00 41 00 00 00 46 00 00 00 4a 00 00 00 4e 00 00 00 51 00 00 00 55 00 00 00 58 00 00 00 5c 00 00 00 5f 00 00 00 62 00 00 00 0f 00 00 00 00 00 00 00 20 00 00 00 0a 00 00 00 30 00 00 00 10 00 00 00 30 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5c 00 00 00 00 00 00 00 55 00 00 00 79 00 00 00 94 00 00 00 ab 00 00 00 f2 00 00 00 00 00 00 00 21 00 00 00 2f 00 00 00 3a 00 00 00 43 00 00 00 4b 00 00 00 52 00 00 00 58 00 00 00 5f 00 00 00 64 00 00 00 6a 00 00 00 6f 00 00 00 74 00 00 00 79 00 00 00 7d 00 00 00 82 00 00 00 86 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 12 00 00 00 03 00 00 00 02 00 00 00 00 01 ff 00 01 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5c 00 00 00 00 00 00 00 79 00 00 00 ab 00 00 00 d2 00 00 00 f2 00 00 00 57 01 00 00 00 00 00 00 3a 00 00 00 52 00 00 00 65 00 00 00 74 00 00 00 82 00 00 00 8f 00 00 00 9a 00 00 00 a5 00 00 00 af 00 00 00 b8 00 00 00 c1 00 00 00 ca 00 00 00 d2 00 00 00 da 00 00 00 e2 00 00 00 e9 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 16 00 00 00 03 00 00 00 02 00 00 00 00 01 ff 00 01 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5c 00 00 00 00 00 00 00 70 00 00 00 9f 00 00 00 c3 00 00 00 e1 00 00 00 3f 01 00 00 00 00 00 00 54 00 00 00 76 00 00 00 91 00 00 00 a8 00 00 00 bb 00 00 00 cd 00 00 00 de 00 00 00 ed 00 00 00 fb 00 00 00 09 01 00 00 16 01 00 00 22 01 00 00 2e 01 00 00 3a 01 00 00 45 01 00 00 50 01 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 16 00 00 00 03 00 00 00 03 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 09 00 80 00 00 00 00 00 10 00 00 00 16 00 00 00 1c 00 00 00 20 00 00 00 2d 00 00 00 00 00 00 00 12 00 00 00 18 00 00 00 20 00 00 00 25 00 00 00 2a 00 00 00 2e 00 00 00 31 00 00 00 35 00 00 00 38 00 00 00 3b 00 00 00 3e 00 00 00 41 00 00 00 43 00 00 00 46 00 00 00 48 00 00 00 4b 00 00 00 00 00 00 00 1a 01 00 00 8f 01 00 00 e9 01 00 00 34 02 00 00 1e 03 00 00 00 00 00 00 40 00 00 00 5a 00 00 00 6e 00 00 00 80 00 00 00 8f 00 00 00 9c 00 00 00 a9 00 00 00 b5 00 00 00 c0 00 00 00 ca 00 00 00 d4 00 00 00 dd 00 00 00 e6 00 00 00 ef 00 00 00 f7 00 00 00 00 01 00 00 00 00 00 00 20 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 18 00 00 00 02 00 00 00 03 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 14 02 00 00 03 03 00 00 f8 04 00 00 34 07 00 00 e3 0b 00 00 14 02 00 00 03 03 00 00 f8 04 00 00 34 07 00 00 e3 0b 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00]; + data = [01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 00 00 00 00 02 00 00 00 04 00 00 00 06 00 00 00 08 00 00 00 09 00 00 00 0a 00 00 00 0b 00 00 00 0c 00 00 00 0d 00 00 00 0d 00 00 00 0e 00 00 00 0f 00 00 00 0f 00 00 00 10 00 00 00 11 00 00 00 11 00 00 00 00 00 00 00 02 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 08 00 00 00 0a 00 00 00 0c 00 00 00 0d 00 00 00 0e 00 00 00 0f 00 00 00 10 00 00 00 12 00 00 00 12 00 00 00 13 00 00 00 14 00 00 00 15 00 00 00 16 00 00 00 17 00 00 00 18 00 00 00 08 00 00 00 00 00 00 00 69 00 00 00 08 00 00 00 0c 00 00 00 08 00 00 00 0c 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 07 00 80 00 00 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 00 00 00 00 06 00 00 00 08 00 00 00 0a 00 00 00 0c 00 00 00 0d 00 00 00 0e 00 00 00 0f 00 00 00 10 00 00 00 12 00 00 00 12 00 00 00 13 00 00 00 14 00 00 00 15 00 00 00 16 00 00 00 17 00 00 00 18 00 00 00 00 00 00 00 02 00 00 00 04 00 00 00 06 00 00 00 08 00 00 00 0a 00 00 00 00 00 00 00 07 00 00 00 0a 00 00 00 0c 00 00 00 0e 00 00 00 10 00 00 00 11 00 00 00 13 00 00 00 14 00 00 00 15 00 00 00 16 00 00 00 17 00 00 00 18 00 00 00 19 00 00 00 1a 00 00 00 1b 00 00 00 1c 00 00 00 08 00 00 00 00 00 00 00 64 00 00 00 08 00 00 00 0c 00 00 00 08 00 00 00 0c 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 05 00 80 00 00 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 00 00 00 00 0a 00 00 00 0f 00 00 00 12 00 00 00 15 00 00 00 18 00 00 00 1a 00 00 00 1c 00 00 00 1e 00 00 00 20 00 00 00 22 00 00 00 23 00 00 00 25 00 00 00 26 00 00 00 28 00 00 00 29 00 00 00 2b 00 00 00 00 00 00 00 03 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 0a 00 00 00 00 00 00 00 0c 00 00 00 11 00 00 00 15 00 00 00 18 00 00 00 1b 00 00 00 1e 00 00 00 20 00 00 00 23 00 00 00 25 00 00 00 27 00 00 00 29 00 00 00 2a 00 00 00 2c 00 00 00 2e 00 00 00 30 00 00 00 31 00 00 00 0c 00 00 00 00 00 00 00 50 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 01 95 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 04 00 80 00 00 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 00 00 00 00 0a 00 00 00 0e 00 00 00 12 00 00 00 14 00 00 00 17 00 00 00 19 00 00 00 1b 00 00 00 1d 00 00 00 1f 00 00 00 20 00 00 00 22 00 00 00 24 00 00 00 25 00 00 00 26 00 00 00 28 00 00 00 29 00 00 00 00 00 00 00 03 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 0a 00 00 00 00 00 00 00 13 00 00 00 1b 00 00 00 21 00 00 00 26 00 00 00 2a 00 00 00 2f 00 00 00 32 00 00 00 36 00 00 00 39 00 00 00 3c 00 00 00 3f 00 00 00 42 00 00 00 45 00 00 00 47 00 00 00 4a 00 00 00 4c 00 00 00 0e 00 00 00 00 00 00 00 50 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 08 00 00 00 01 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 03 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 09 00 00 00 00 00 00 00 08 00 00 00 0b 00 00 00 0d 00 00 00 10 00 00 00 11 00 00 00 13 00 00 00 15 00 00 00 16 00 00 00 18 00 00 00 19 00 00 00 1a 00 00 00 1b 00 00 00 1c 00 00 00 1d 00 00 00 1e 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 08 00 00 00 0a 00 00 00 0c 00 00 00 11 00 00 00 00 00 00 00 09 00 00 00 0d 00 00 00 0f 00 00 00 12 00 00 00 14 00 00 00 16 00 00 00 18 00 00 00 1a 00 00 00 1b 00 00 00 1d 00 00 00 1e 00 00 00 1f 00 00 00 21 00 00 00 22 00 00 00 23 00 00 00 24 00 00 00 0d 00 00 00 08 00 00 00 50 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 05 00 00 00 07 00 00 00 09 00 00 00 0a 00 00 00 0e 00 00 00 00 00 00 00 08 00 00 00 0c 00 00 00 0f 00 00 00 11 00 00 00 13 00 00 00 15 00 00 00 17 00 00 00 18 00 00 00 1a 00 00 00 1b 00 00 00 1d 00 00 00 1e 00 00 00 1f 00 00 00 20 00 00 00 22 00 00 00 23 00 00 00 00 00 00 00 05 00 00 00 08 00 00 00 0a 00 00 00 0b 00 00 00 10 00 00 00 00 00 00 00 0a 00 00 00 0e 00 00 00 11 00 00 00 14 00 00 00 16 00 00 00 18 00 00 00 1a 00 00 00 1c 00 00 00 1e 00 00 00 1f 00 00 00 21 00 00 00 22 00 00 00 24 00 00 00 25 00 00 00 26 00 00 00 28 00 00 00 0e 00 00 00 00 00 00 00 40 00 00 00 0a 00 00 00 18 00 00 00 10 00 00 00 18 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 02 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 10 00 80 00 00 00 00 00 05 00 00 00 07 00 00 00 09 00 00 00 0a 00 00 00 0e 00 00 00 00 00 00 00 09 00 00 00 0d 00 00 00 0f 00 00 00 12 00 00 00 14 00 00 00 16 00 00 00 18 00 00 00 1a 00 00 00 1b 00 00 00 1d 00 00 00 1e 00 00 00 1f 00 00 00 21 00 00 00 22 00 00 00 23 00 00 00 24 00 00 00 00 00 00 00 06 00 00 00 09 00 00 00 0b 00 00 00 0c 00 00 00 12 00 00 00 00 00 00 00 16 00 00 00 20 00 00 00 27 00 00 00 2d 00 00 00 32 00 00 00 37 00 00 00 3c 00 00 00 40 00 00 00 44 00 00 00 48 00 00 00 4b 00 00 00 4e 00 00 00 52 00 00 00 55 00 00 00 58 00 00 00 5b 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 0a 00 00 00 30 00 00 00 10 00 00 00 1d 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 08 00 00 00 0c 00 00 00 0e 00 00 00 11 00 00 00 18 00 00 00 00 00 00 00 0e 00 00 00 14 00 00 00 18 00 00 00 1c 00 00 00 20 00 00 00 23 00 00 00 26 00 00 00 28 00 00 00 2b 00 00 00 2d 00 00 00 2f 00 00 00 31 00 00 00 33 00 00 00 35 00 00 00 37 00 00 00 39 00 00 00 00 00 00 00 26 00 00 00 36 00 00 00 42 00 00 00 4d 00 00 00 6c 00 00 00 01 00 00 00 47 00 00 00 35 00 00 00 3e 00 00 00 31 00 00 00 37 00 00 00 3c 00 00 00 41 00 00 00 46 00 00 00 4a 00 00 00 4e 00 00 00 51 00 00 00 55 00 00 00 58 00 00 00 5c 00 00 00 5f 00 00 00 62 00 00 00 0f 00 00 00 00 00 00 00 20 00 00 00 0a 00 00 00 30 00 00 00 10 00 00 00 30 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5c 00 00 00 00 00 00 00 55 00 00 00 79 00 00 00 94 00 00 00 ab 00 00 00 f2 00 00 00 00 00 00 00 21 00 00 00 2f 00 00 00 3a 00 00 00 43 00 00 00 4b 00 00 00 52 00 00 00 58 00 00 00 5f 00 00 00 64 00 00 00 6a 00 00 00 6f 00 00 00 74 00 00 00 79 00 00 00 7d 00 00 00 82 00 00 00 86 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 12 00 00 00 03 00 00 00 02 00 00 00 00 01 ff 00 01 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5c 00 00 00 00 00 00 00 79 00 00 00 ab 00 00 00 d2 00 00 00 f2 00 00 00 57 01 00 00 00 00 00 00 3a 00 00 00 52 00 00 00 65 00 00 00 74 00 00 00 82 00 00 00 8f 00 00 00 9a 00 00 00 a5 00 00 00 af 00 00 00 b8 00 00 00 c1 00 00 00 ca 00 00 00 d2 00 00 00 da 00 00 00 e2 00 00 00 e9 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 16 00 00 00 03 00 00 00 02 00 00 00 00 01 ff 00 01 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5c 00 00 00 00 00 00 00 70 00 00 00 9f 00 00 00 c3 00 00 00 e1 00 00 00 3f 01 00 00 00 00 00 00 54 00 00 00 76 00 00 00 91 00 00 00 a8 00 00 00 bb 00 00 00 cd 00 00 00 de 00 00 00 ed 00 00 00 fb 00 00 00 09 01 00 00 16 01 00 00 22 01 00 00 2e 01 00 00 3a 01 00 00 45 01 00 00 50 01 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 16 00 00 00 03 00 00 00 03 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 09 00 80 00 00 00 00 00 10 00 00 00 16 00 00 00 1c 00 00 00 20 00 00 00 2d 00 00 00 00 00 00 00 12 00 00 00 18 00 00 00 20 00 00 00 25 00 00 00 2a 00 00 00 2e 00 00 00 31 00 00 00 35 00 00 00 38 00 00 00 3b 00 00 00 3e 00 00 00 41 00 00 00 43 00 00 00 46 00 00 00 48 00 00 00 4b 00 00 00 00 00 00 00 1a 01 00 00 8f 01 00 00 e9 01 00 00 34 02 00 00 1e 03 00 00 00 00 00 00 40 00 00 00 5a 00 00 00 6e 00 00 00 80 00 00 00 8f 00 00 00 9c 00 00 00 a9 00 00 00 b5 00 00 00 c0 00 00 00 ca 00 00 00 d4 00 00 00 dd 00 00 00 e6 00 00 00 ef 00 00 00 f7 00 00 00 00 01 00 00 00 00 00 00 20 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 18 00 00 00 02 00 00 00 03 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 14 02 00 00 03 03 00 00 f8 04 00 00 34 07 00 00 e3 0b 00 00 14 02 00 00 03 03 00 00 f8 04 00 00 34 07 00 00 e3 0b 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00]; }; iq_cfa { size = [54 05 00 00]; @@ -31,23 +31,23 @@ }; iq_color { size = [ec 06 00 00]; - data = [00 00 00 00 80 80 40 10 00 00 00 00 00 00 00 00 00 00 00 00 00 14 0f 0a 05 00 00 00 00 00 00 00 00 00 05 0a 0f 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 9e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 8d aa 58 33 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 7c ff b7 7e 4f 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 6e 40 20 10 04 00 00 00 00 00 00 00 00 00 00 00 6e 40 20 10 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 00 00 00 64 00 00 00 73 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 82 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 60 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 60 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 6e c8 78 46 20 10 00 00 00 00 00 00 00 00 00 00 00 c8 78 46 20 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 46 00 00 00 5a 00 00 00 6e 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 78 b4 6e 40 20 10 00 00 00 00 00 00 00 00 00 00 00 b4 6e 40 20 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00]; + data = [00 00 00 00 80 80 40 10 00 00 00 00 00 00 00 00 00 00 00 00 00 14 0f 0a 05 00 00 00 00 00 00 00 00 00 05 0a 0f 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 9e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6e 00 00 00 80 00 00 00 8a 00 00 00 94 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 8d aa 58 33 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 7c ff b7 7e 4f 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 6e 40 20 10 04 00 00 00 00 00 00 00 00 00 00 00 6e 40 20 10 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 00 00 00 64 00 00 00 73 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 82 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 60 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 60 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 6e c8 78 46 20 10 00 00 00 00 00 00 00 00 00 00 00 c8 78 46 20 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 46 00 00 00 5a 00 00 00 6e 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 78 b4 6e 40 20 10 00 00 00 00 00 00 00 00 00 00 00 b4 6e 40 20 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00]; }; iq_contrast { size = [b0 00 00 00]; - data = [00 00 00 00 80 00 00 00 00 00 00 00 00 00 8d 28 28 28 28 28 28 28 28 28 87 13 1e 2a 33 35 35 31 25 21 85 1e 2c 3a 46 4d 4d 46 43 3f 7e 1e 2c 3a 46 53 5d 58 4d 41 7e 1e 2c 3a 46 53 5d 58 4d 41 7e 32 32 32 32 32 32 32 32 32 af 32 32 32 32 32 32 32 32 32 be 00 00 00 00 00 00 00 00 00 80 05 05 05 05 05 05 05 05 05 80 0a 0a 0a 0a 0a 0a 0a 0a 0a 80 0a 0a 0a 0a 0a 0a 0a 0a 0a 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00]; + data = [00 00 00 00 80 00 00 00 00 00 00 00 00 00 87 05 05 0a 19 19 19 19 0f 05 87 05 05 0a 14 21 21 1d 11 0a 87 04 04 12 1e 25 25 1e 1b 17 8d 0a 18 26 32 3f 49 44 39 2d 8d 04 05 12 1e 2b 35 30 25 19 97 1e 1e 1e 1e 1e 1e 1e 1e 1e af 1e 1e 1e 1e 1e 1e 1e 1e 1e be 00 00 00 00 00 00 00 00 00 80 05 05 05 05 05 05 05 05 05 80 0a 0a 0a 0a 0a 0a 0a 0a 0a 80 0a 0a 0a 0a 0a 0a 0a 0a 0a 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00]; }; iq_edge { size = [e0 05 00 00]; - data = [01 00 00 00 00 00 00 00 80 00 00 00 31 00 00 00 64 78 8c a0 b4 c8 e0 ff ff e0 c0 aa 9a 90 88 80 1e 30 3c 46 52 55 55 55 58 58 55 4f 49 3f 3f 3c 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 40 00 00 00 80 00 00 00 80 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 08 00 00 00 28 00 00 00 f0 00 00 00 00 01 00 00 40 50 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 8c 00 00 00 78 00 00 00 10 00 00 00 09 00 00 00 04 00 00 00 0e 00 00 00 2a 00 00 00 38 00 00 00 46 00 00 00 70 00 00 00 40 6c 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 a0 00 00 00 a0 00 00 00 10 00 00 00 09 00 00 00 04 00 00 00 0a 00 00 00 2a 00 00 00 70 00 00 00 7e 00 00 00 92 00 00 00 14 b6 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 a8 00 00 00 a0 00 00 00 02 00 00 00 0f 00 00 00 0c 00 00 00 02 00 00 00 2a 00 00 00 54 00 00 00 70 00 00 00 9a 00 00 00 14 bb 00 00 00 02 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 8c 00 00 00 62 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 54 00 00 00 62 00 00 00 66 00 00 00 dc 00 00 00 28 60 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 88 00 00 00 54 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 54 00 00 00 62 00 00 00 70 00 00 00 f0 00 00 00 18 60 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 01 00 00 00 7e 00 00 00 46 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 5a 00 00 00 5e 01 00 00 88 01 00 00 96 01 00 00 18 60 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 7e 00 00 00 d2 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 c4 00 00 00 ee 00 00 00 0a 01 00 00 96 01 00 00 14 6a 00 00 00 01 00 00 b4 00 00 00 1c 00 00 00 80 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 01 00 00 00 02 00 00 00 d2 00 00 00 fc 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 46 00 00 00 18 01 00 00 42 01 00 00 5e 01 00 00 14 80 00 00 80 00 00 00 b4 00 00 00 2a 00 00 00 80 00 00 00 00 00 00 00 02 00 00 00 0e 00 00 00 00 02 00 00 01 00 00 00 02 00 00 00 5a 00 00 00 5a 00 00 00 09 00 00 00 06 00 00 00 04 00 00 00 04 00 00 00 18 01 00 00 5e 01 00 00 7a 01 00 00 8f 01 00 00 20 50 00 00 00 01 00 00 00 01 00 00 0f 00 00 00 80 00 00 00 01 00 00 00 02 00 00 00 0a 00 00 00 00 02 00 00 01 00 00 00 03 00 00 00 5a 00 00 00 5a 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 18 01 00 00 5e 01 00 00 85 01 00 00 8f 01 00 00 20 50 00 00 00 01 00 00 00 01 00 00 19 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 0a 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 5a 00 00 00 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 18 01 00 00 bc 01 00 00 53 02 00 00 5b 02 00 00 20 46 00 00 00 01 00 00 00 01 00 00 19 00 00 00 80 00 00 00 05 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 6e 00 00 00 6e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 21 01 00 00 be 01 00 00 58 02 00 00 6c 02 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 05 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00]; + data = [01 00 00 00 00 00 00 00 80 00 00 00 31 00 00 00 00 30 60 82 a0 c8 e0 ff ff e0 c0 aa 9a 90 88 80 1e 30 3c 46 52 55 55 55 55 55 55 4f 4f 4e 4e 4e 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 00 00 00 80 00 00 00 80 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 08 00 00 00 28 00 00 00 f0 00 00 00 00 01 00 00 40 50 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 8c 00 00 00 78 00 00 00 04 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 48 00 00 00 60 00 00 00 6e 00 00 00 82 00 00 00 2a 60 00 00 b4 00 00 00 80 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 82 00 00 00 82 00 00 00 04 00 00 00 04 00 00 00 02 00 00 00 02 00 00 00 54 00 00 00 6e 00 00 00 87 00 00 00 a0 00 00 00 14 60 00 00 e1 00 00 00 b4 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 8b 00 00 00 78 00 00 00 02 00 00 00 04 00 00 00 04 00 00 00 02 00 00 00 64 00 00 00 87 00 00 00 91 00 00 00 9a 00 00 00 18 50 00 00 00 02 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 80 00 00 00 6e 00 00 00 02 00 00 00 04 00 00 00 04 00 00 00 02 00 00 00 80 00 00 00 96 00 00 00 a0 00 00 00 dc 00 00 00 18 50 00 00 2b 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 88 00 00 00 54 00 00 00 02 00 00 00 04 00 00 00 04 00 00 00 02 00 00 00 a0 00 00 00 bc 00 00 00 cd 00 00 00 f0 00 00 00 18 60 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 6e 00 00 00 46 00 00 00 02 00 00 00 04 00 00 00 04 00 00 00 00 00 00 00 0e 01 00 00 40 01 00 00 54 01 00 00 96 01 00 00 18 60 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 50 00 00 00 50 00 00 00 00 00 00 00 04 00 00 00 04 00 00 00 00 00 00 00 c4 00 00 00 7c 01 00 00 90 01 00 00 c2 01 00 00 20 54 00 00 00 01 00 00 b4 00 00 00 1c 00 00 00 80 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 02 00 00 01 00 00 00 02 00 00 00 d2 00 00 00 fc 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 46 00 00 00 18 01 00 00 42 01 00 00 5e 01 00 00 14 80 00 00 80 00 00 00 b4 00 00 00 2a 00 00 00 80 00 00 00 00 00 00 00 02 00 00 00 0e 00 00 00 00 02 00 00 01 00 00 00 02 00 00 00 5a 00 00 00 5a 00 00 00 09 00 00 00 06 00 00 00 04 00 00 00 04 00 00 00 18 01 00 00 5e 01 00 00 7a 01 00 00 8f 01 00 00 20 50 00 00 00 01 00 00 00 01 00 00 0f 00 00 00 80 00 00 00 01 00 00 00 02 00 00 00 0a 00 00 00 00 02 00 00 01 00 00 00 03 00 00 00 5a 00 00 00 5a 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 18 01 00 00 5e 01 00 00 85 01 00 00 8f 01 00 00 20 50 00 00 00 01 00 00 00 01 00 00 19 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 0a 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 5a 00 00 00 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 18 01 00 00 bc 01 00 00 53 02 00 00 5b 02 00 00 20 46 00 00 00 01 00 00 00 01 00 00 19 00 00 00 80 00 00 00 05 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 6e 00 00 00 6e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 21 01 00 00 be 01 00 00 58 02 00 00 6c 02 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 05 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00]; }; iq_3dnr { size = [64 1f 00 00]; - data = [01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0f 00 00 00 40 00 00 00 40 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 c8 00 00 00 c8 00 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 80 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 b4 00 00 00 e6 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 80 00 00 00 40 00 00 00 00 01 00 00 00 01 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 40 00 00 00 40 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 0c 00 00 00 18 00 00 00 28 00 00 00 4c 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 40 00 00 00 00 00 00 00 06 00 00 00 0c 00 00 00 18 00 00 00 28 00 00 00 4c 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 40 00 00 00 04 01 00 00 00 00 00 00 08 00 00 00 50 00 00 00 50 00 00 00 00 00 00 00 b4 00 00 00 b4 00 00 00 b4 00 00 00 f4 01 00 00 f4 01 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 b4 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 8c 00 00 00 8c 00 00 00 8c 00 00 00 8c 00 00 00 0f 00 00 00 0e 00 00 00 0e 00 00 00 0f 00 00 00 0d 00 00 00 0d 00 00 00 0d 00 00 00 0d 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 35 00 00 00 35 00 00 00 30 00 00 00 30 00 00 00 2b 00 00 00 2b 00 00 00 2b 00 00 00 2b 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 00 00 00 0c 06 04 02 00 00 00 00 00 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 08 00 00 00 2c 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 50 00 00 00 64 00 00 00 10 00 00 00 04 00 00 00 01 00 00 00 00 00 00 00 0d 00 00 00 1b 00 00 00 29 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 00 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 00 00 00 00 2c 01 00 00 2c 01 00 00 2c 01 00 00 f4 01 00 00 f4 01 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 9d 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 8c 00 00 00 8c 00 00 00 8c 00 00 00 8c 00 00 00 1c 00 00 00 1b 00 00 00 1b 00 00 00 1c 00 00 00 1a 00 00 00 1a 00 00 00 1a 00 00 00 1a 00 00 00 82 00 00 00 82 00 00 00 82 00 00 00 82 00 00 00 78 00 00 00 78 00 00 00 78 00 00 00 78 00 00 00 2d 00 00 00 2d 00 00 00 28 00 00 00 28 00 00 00 23 00 00 00 23 00 00 00 23 00 00 00 23 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 0a 0a 14 1e 0c 05 14 08 02 00 00 00 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 10 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 0f 00 00 00 1e 00 00 00 20 00 00 00 06 00 00 00 02 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 00 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 84 03 00 00 84 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 b4 00 00 00 08 00 00 00 04 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 15 00 00 00 15 00 00 00 15 00 00 00 15 00 00 00 d2 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3a 00 00 00 3a 00 00 00 3a 00 00 00 3a 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 03 03 00 01 00 00 00 14 1e 32 28 0f 08 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 3c 00 00 00 20 00 00 00 08 00 00 00 04 00 00 00 00 00 00 00 0c 00 00 00 16 00 00 00 25 00 00 00 37 00 00 00 4b 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 02 00 00 01 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 84 03 00 00 84 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 cb 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 1a 00 00 00 19 00 00 00 19 00 00 00 1a 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 5f 00 00 00 5f 00 00 00 5a 00 00 00 5a 00 00 00 55 00 00 00 55 00 00 00 55 00 00 00 55 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 14 64 96 2d 1e 1e 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 50 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 08 00 00 00 a0 00 00 00 64 00 00 00 20 00 00 00 08 00 00 00 04 00 00 00 00 00 00 00 09 00 00 00 19 00 00 00 28 00 00 00 3c 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 02 00 00 00 08 00 00 00 a0 00 00 00 a0 00 00 00 00 00 00 00 90 01 00 00 90 01 00 00 90 01 00 00 84 03 00 00 84 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 98 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 1e 00 00 00 1d 00 00 00 1d 00 00 00 1e 00 00 00 1c 00 00 00 1c 00 00 00 1c 00 00 00 1c 00 00 00 18 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 3c 00 00 00 3c 00 00 00 37 00 00 00 37 00 00 00 32 00 00 00 32 00 00 00 32 00 00 00 32 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 64 a0 c8 64 32 1e 20 08 02 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 50 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 50 00 00 00 64 00 00 00 20 00 00 00 08 00 00 00 04 00 00 00 00 00 00 00 0a 00 00 00 15 00 00 00 25 00 00 00 34 00 00 00 4a 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 3e 00 00 00 48 00 00 00 57 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 02 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 20 03 00 00 20 03 00 00 03 00 00 00 03 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 d8 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 1c 00 00 00 1b 00 00 00 1b 00 00 00 1c 00 00 00 1a 00 00 00 1a 00 00 00 1a 00 00 00 1a 00 00 00 4a 01 00 00 40 01 00 00 40 01 00 00 40 01 00 00 36 01 00 00 36 01 00 00 36 01 00 00 36 01 00 00 66 00 00 00 66 00 00 00 61 00 00 00 61 00 00 00 5c 00 00 00 5c 00 00 00 5c 00 00 00 5c 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 64 b4 c8 80 3c 32 20 08 02 00 00 00 20 00 00 00 20 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 40 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 03 00 00 00 64 00 00 00 82 00 00 00 20 00 00 00 08 00 00 00 04 00 00 00 00 00 00 00 07 00 00 00 10 00 00 00 19 00 00 00 21 00 00 00 29 00 00 00 2f 00 00 00 38 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 15 00 00 00 1e 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 2c 01 00 00 2c 01 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 e8 03 00 00 e8 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 c3 00 00 00 08 00 00 00 5e 01 00 00 5e 01 00 00 5e 01 00 00 5e 01 00 00 22 01 00 00 22 01 00 00 22 01 00 00 22 01 00 00 28 00 00 00 27 00 00 00 27 00 00 00 28 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 90 01 00 00 86 01 00 00 86 01 00 00 86 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 8a 00 00 00 8a 00 00 00 85 00 00 00 85 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 3c 64 82 40 0c 04 40 0c 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 20 03 00 00 2c 01 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 0c 00 00 00 50 00 00 00 78 00 00 00 40 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 0f 00 00 00 19 00 00 00 28 00 00 00 3b 00 00 00 45 00 00 00 4b 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 2c 01 00 00 2c 01 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 e8 03 00 00 e8 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 c3 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 28 00 00 00 27 00 00 00 27 00 00 00 28 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 90 01 00 00 86 01 00 00 86 01 00 00 86 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 62 00 00 00 62 00 00 00 5d 00 00 00 5d 00 00 00 58 00 00 00 58 00 00 00 58 00 00 00 58 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 3c 64 82 40 0c 04 40 0c 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 0c 00 00 00 50 00 00 00 78 00 00 00 80 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 0d 00 00 00 1b 00 00 00 2c 00 00 00 38 00 00 00 3f 00 00 00 45 00 00 00 4b 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 20 03 00 00 20 03 00 00 03 00 00 00 03 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 21 00 00 00 20 00 00 00 20 00 00 00 21 00 00 00 1f 00 00 00 1f 00 00 00 1f 00 00 00 1f 00 00 00 ea 01 00 00 e0 01 00 00 e0 01 00 00 e0 01 00 00 d6 01 00 00 d6 01 00 00 d6 01 00 00 d6 01 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 46 69 8c 1e 08 04 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 09 00 00 00 11 00 00 00 17 00 00 00 1f 00 00 00 27 00 00 00 2d 00 00 00 36 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 84 03 00 00 84 03 00 00 02 00 00 00 02 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 2c 00 00 00 2b 00 00 00 2b 00 00 00 2c 00 00 00 2a 00 00 00 2a 00 00 00 2a 00 00 00 2a 00 00 00 80 02 00 00 76 02 00 00 76 02 00 00 76 02 00 00 6c 02 00 00 6c 02 00 00 6c 02 00 00 6c 02 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 64 6e 8c 32 08 04 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 07 00 00 00 0c 00 00 00 15 00 00 00 1e 00 00 00 26 00 00 00 2c 00 00 00 34 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 08 00 00 00 11 00 00 00 1a 00 00 00 21 00 00 00 27 00 00 00 2f 00 00 00 3a 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 84 03 00 00 84 03 00 00 02 00 00 00 02 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 2f 00 00 00 2e 00 00 00 2e 00 00 00 2f 00 00 00 2d 00 00 00 2d 00 00 00 2d 00 00 00 2d 00 00 00 81 02 00 00 77 02 00 00 77 02 00 00 77 02 00 00 6d 02 00 00 6d 02 00 00 6d 02 00 00 6d 02 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 b4 78 a0 50 08 04 14 08 02 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 07 00 00 00 0c 00 00 00 15 00 00 00 1e 00 00 00 26 00 00 00 2c 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 90 01 00 00 90 01 00 00 90 01 00 00 58 02 00 00 58 02 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 af 00 00 00 03 00 00 00 00 04 00 00 4c 04 00 00 b0 04 00 00 14 05 00 00 14 05 00 00 14 05 00 00 14 05 00 00 14 05 00 00 19 00 00 00 32 00 00 00 32 00 00 00 32 00 00 00 23 00 00 00 23 00 00 00 14 00 00 00 14 00 00 00 50 00 00 00 6e 00 00 00 6e 00 00 00 6e 00 00 00 8c 00 00 00 96 00 00 00 a0 00 00 00 a0 00 00 00 3c 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 44 00 00 00 50 00 00 00 50 00 00 00 5a 00 00 00 10 00 00 00 14 00 00 00 03 00 00 00 b4 00 00 00 c8 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8c 00 00 00 96 00 00 00 a0 00 00 00 aa 00 00 00 80 00 00 00 40 00 00 00 b8 0b 00 00 70 17 00 00 10 00 00 00 10 00 00 00 20 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 40 00 00 00 80 00 00 00 ff 00 00 00 10 00 00 00 06 00 00 00 00 00 00 00 06 00 00 00 0d 00 00 00 15 00 00 00 1c 00 00 00 26 00 00 00 2f 00 00 00 3a 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00]; + data = [01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0f 00 00 00 40 00 00 00 40 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 c8 00 00 00 c8 00 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 80 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 b4 00 00 00 e6 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 80 00 00 00 40 00 00 00 00 01 00 00 00 01 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 40 00 00 00 40 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 0c 00 00 00 18 00 00 00 28 00 00 00 4c 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 40 00 00 00 00 00 00 00 06 00 00 00 0c 00 00 00 18 00 00 00 28 00 00 00 4c 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 40 00 00 00 04 01 00 00 00 00 00 00 08 00 00 00 46 00 00 00 46 00 00 00 00 00 00 00 8c 00 00 00 8c 00 00 00 8c 00 00 00 fa 00 00 00 fa 00 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 c3 00 00 00 08 00 00 00 32 00 00 00 3c 00 00 00 46 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 11 00 00 00 10 00 00 00 10 00 00 00 11 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 b4 00 00 00 b4 00 00 00 b4 00 00 00 b4 00 00 00 21 00 00 00 21 00 00 00 1c 00 00 00 1c 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 08 00 00 00 10 00 00 00 03 00 00 00 10 00 00 00 14 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 00 04 0c 04 01 00 02 00 00 00 00 00 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 08 00 00 00 e0 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 36 00 00 00 20 00 00 00 04 00 00 00 02 00 00 00 00 00 00 00 0d 00 00 00 1b 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 00 00 00 00 08 00 00 00 5a 00 00 00 5a 00 00 00 00 00 00 00 b4 00 00 00 b4 00 00 00 b4 00 00 00 22 01 00 00 22 01 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 9d 00 00 00 08 00 00 00 32 00 00 00 3c 00 00 00 46 00 00 00 50 00 00 00 5a 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 17 00 00 00 16 00 00 00 16 00 00 00 17 00 00 00 15 00 00 00 15 00 00 00 15 00 00 00 15 00 00 00 82 00 00 00 82 00 00 00 82 00 00 00 82 00 00 00 78 00 00 00 78 00 00 00 78 00 00 00 78 00 00 00 23 00 00 00 23 00 00 00 1e 00 00 00 1e 00 00 00 19 00 00 00 19 00 00 00 19 00 00 00 19 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 03 05 14 0a 01 01 0a 04 01 00 00 00 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 08 00 00 00 f4 01 00 00 18 01 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 0f 00 00 00 40 00 00 00 20 00 00 00 06 00 00 00 02 00 00 00 00 00 00 00 0c 00 00 00 1c 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 01 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 00 00 00 00 c8 00 00 00 c8 00 00 00 2c 01 00 00 2c 01 00 00 2c 01 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 b4 00 00 00 08 00 00 00 04 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 15 00 00 00 15 00 00 00 15 00 00 00 15 00 00 00 d2 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3a 00 00 00 3a 00 00 00 3a 00 00 00 3a 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 00 28 50 20 10 08 10 00 00 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 40 00 00 00 80 00 00 00 30 00 00 00 0c 00 00 00 06 00 00 00 00 00 00 00 0c 00 00 00 16 00 00 00 25 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 02 00 00 01 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 90 01 00 00 90 01 00 00 90 01 00 00 58 02 00 00 58 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 cb 00 00 00 08 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 1a 00 00 00 19 00 00 00 19 00 00 00 1a 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 37 00 00 00 37 00 00 00 32 00 00 00 32 00 00 00 2d 00 00 00 2d 00 00 00 2d 00 00 00 2d 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 00 5a b4 20 10 08 14 00 00 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 bc 02 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 50 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 80 00 00 00 ff 00 00 00 40 00 00 00 0c 00 00 00 06 00 00 00 00 00 00 00 0c 00 00 00 19 00 00 00 28 00 00 00 3c 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 02 00 00 00 08 00 00 00 a0 00 00 00 a0 00 00 00 00 00 00 00 90 01 00 00 90 01 00 00 90 01 00 00 20 03 00 00 20 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 98 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 1e 00 00 00 1d 00 00 00 1d 00 00 00 1e 00 00 00 1c 00 00 00 1c 00 00 00 1c 00 00 00 1c 00 00 00 18 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 3c 00 00 00 3c 00 00 00 37 00 00 00 37 00 00 00 32 00 00 00 32 00 00 00 32 00 00 00 32 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 20 a0 c8 64 40 10 20 08 02 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 50 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 05 00 00 00 ff 00 00 00 ff 00 00 00 40 00 00 00 0c 00 00 00 06 00 00 00 00 00 00 00 0c 00 00 00 19 00 00 00 25 00 00 00 34 00 00 00 4a 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 3e 00 00 00 48 00 00 00 57 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 02 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 20 03 00 00 20 03 00 00 03 00 00 00 03 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 d8 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 1d 00 00 00 1c 00 00 00 1c 00 00 00 1d 00 00 00 1b 00 00 00 1b 00 00 00 1b 00 00 00 1b 00 00 00 5e 01 00 00 54 01 00 00 54 01 00 00 54 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 48 00 00 00 48 00 00 00 43 00 00 00 43 00 00 00 3e 00 00 00 3e 00 00 00 3e 00 00 00 3e 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 20 b4 c8 80 40 10 20 08 02 00 00 00 20 00 00 00 20 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 40 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 05 00 00 00 ff 00 00 00 ff 00 00 00 40 00 00 00 0c 00 00 00 06 00 00 00 00 00 00 00 07 00 00 00 10 00 00 00 2c 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 15 00 00 00 1e 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 2c 01 00 00 2c 01 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 20 03 00 00 20 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 c3 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 96 00 00 00 96 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 1e 00 00 00 1d 00 00 00 1d 00 00 00 1e 00 00 00 1c 00 00 00 1c 00 00 00 1c 00 00 00 1c 00 00 00 2c 01 00 00 22 01 00 00 22 01 00 00 22 01 00 00 18 01 00 00 18 01 00 00 18 01 00 00 18 01 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3a 00 00 00 3a 00 00 00 3a 00 00 00 3a 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 48 b4 c8 80 40 10 40 0c 02 00 00 00 20 00 00 00 20 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 20 03 00 00 2c 01 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 05 00 00 00 80 00 00 00 ff 00 00 00 40 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 0f 00 00 00 29 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 2c 01 00 00 2c 01 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 e8 03 00 00 e8 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 c3 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 28 00 00 00 27 00 00 00 27 00 00 00 28 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 90 01 00 00 86 01 00 00 86 01 00 00 86 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 62 00 00 00 62 00 00 00 5d 00 00 00 5d 00 00 00 58 00 00 00 58 00 00 00 58 00 00 00 58 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 3c 64 82 40 0c 04 40 0c 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 0c 00 00 00 50 00 00 00 78 00 00 00 80 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 0d 00 00 00 1b 00 00 00 2c 00 00 00 38 00 00 00 3f 00 00 00 45 00 00 00 4b 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 20 03 00 00 20 03 00 00 03 00 00 00 03 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 21 00 00 00 20 00 00 00 20 00 00 00 21 00 00 00 1f 00 00 00 1f 00 00 00 1f 00 00 00 1f 00 00 00 ea 01 00 00 e0 01 00 00 e0 01 00 00 e0 01 00 00 d6 01 00 00 d6 01 00 00 d6 01 00 00 d6 01 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 46 69 8c 1e 08 04 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 09 00 00 00 11 00 00 00 17 00 00 00 1f 00 00 00 27 00 00 00 2d 00 00 00 36 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 84 03 00 00 84 03 00 00 02 00 00 00 02 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 2c 00 00 00 2b 00 00 00 2b 00 00 00 2c 00 00 00 2a 00 00 00 2a 00 00 00 2a 00 00 00 2a 00 00 00 80 02 00 00 76 02 00 00 76 02 00 00 76 02 00 00 6c 02 00 00 6c 02 00 00 6c 02 00 00 6c 02 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 64 6e 8c 32 08 04 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 07 00 00 00 0c 00 00 00 15 00 00 00 1e 00 00 00 26 00 00 00 2c 00 00 00 34 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 08 00 00 00 11 00 00 00 1a 00 00 00 21 00 00 00 27 00 00 00 2f 00 00 00 3a 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 84 03 00 00 84 03 00 00 02 00 00 00 02 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 2f 00 00 00 2e 00 00 00 2e 00 00 00 2f 00 00 00 2d 00 00 00 2d 00 00 00 2d 00 00 00 2d 00 00 00 81 02 00 00 77 02 00 00 77 02 00 00 77 02 00 00 6d 02 00 00 6d 02 00 00 6d 02 00 00 6d 02 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 b4 78 a0 50 08 04 14 08 02 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 07 00 00 00 0c 00 00 00 15 00 00 00 1e 00 00 00 26 00 00 00 2c 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 90 01 00 00 90 01 00 00 90 01 00 00 58 02 00 00 58 02 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 af 00 00 00 03 00 00 00 00 04 00 00 4c 04 00 00 b0 04 00 00 14 05 00 00 14 05 00 00 14 05 00 00 14 05 00 00 14 05 00 00 19 00 00 00 32 00 00 00 32 00 00 00 32 00 00 00 23 00 00 00 23 00 00 00 14 00 00 00 14 00 00 00 50 00 00 00 6e 00 00 00 6e 00 00 00 6e 00 00 00 8c 00 00 00 96 00 00 00 a0 00 00 00 a0 00 00 00 3c 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 44 00 00 00 50 00 00 00 50 00 00 00 5a 00 00 00 10 00 00 00 14 00 00 00 03 00 00 00 b4 00 00 00 c8 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8c 00 00 00 96 00 00 00 a0 00 00 00 aa 00 00 00 80 00 00 00 40 00 00 00 b8 0b 00 00 70 17 00 00 10 00 00 00 10 00 00 00 20 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 40 00 00 00 80 00 00 00 ff 00 00 00 10 00 00 00 06 00 00 00 00 00 00 00 06 00 00 00 0d 00 00 00 15 00 00 00 1c 00 00 00 26 00 00 00 2f 00 00 00 3a 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00]; }; iq_wdr { size = [e4 02 00 00]; - data = [01 00 00 00 00 00 00 00 20 00 00 00 12 00 00 00 80 00 00 00 05 00 00 00 03 00 00 00 00 00 00 00 01 00 00 00 03 00 00 00 07 00 00 00 0f 00 00 00 17 00 00 00 1f 00 00 00 23 00 00 00 27 00 00 00 29 00 00 00 2a 00 00 00 2b 00 00 00 2c 00 00 00 2d 00 00 00 2e 00 00 00 2f 00 00 00 30 00 00 00 31 00 00 00 32 00 00 00 33 00 00 00 34 00 00 00 35 00 00 00 36 00 00 00 37 00 00 00 38 00 00 00 39 00 00 00 3a 00 00 00 3b 00 00 00 3c 00 00 00 3d 00 00 00 3e 00 00 00 3f 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 e6 0f 00 00 a6 0f 00 00 29 0f 00 00 cf 0e 00 00 64 0e 00 00 e8 0d 00 00 5e 0d 00 00 14 0d 00 00 c7 0c 00 00 78 0c 00 00 27 0c 00 00 d5 0b 00 00 81 0b 00 00 2e 0b 00 00 da 0a 00 00 86 0a 00 00 33 0a 00 00 e1 09 00 00 90 09 00 00 41 09 00 00 f3 08 00 00 a7 08 00 00 5e 08 00 00 16 08 00 00 d1 07 00 00 8e 07 00 00 4d 07 00 00 0f 07 00 00 d3 06 00 00 99 06 00 00 62 06 00 00 fb 05 00 00 9c 05 00 00 46 05 00 00 f8 04 00 00 b0 04 00 00 70 04 00 00 35 04 00 00 00 04 00 00 a4 03 00 00 57 03 00 00 e4 02 00 00 94 02 00 00 5b 02 00 00 31 02 00 00 12 02 00 00 fb 01 00 00 e9 01 00 00 dc 01 00 00 d1 01 00 00 c8 01 00 00 c1 01 00 00 bb 01 00 00 b7 01 00 00 b3 01 00 00 b0 01 00 00 ad 01 00 00 ab 01 00 00 a9 01 00 00 a7 01 00 00 a6 01 00 00 a4 01 00 00 a3 01 00 00 a2 01 00 00 20 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00]; + data = [01 00 00 00 01 00 00 00 20 00 00 00 12 00 00 00 80 00 00 00 05 00 00 00 03 00 00 00 00 00 00 00 01 00 00 00 03 00 00 00 07 00 00 00 0f 00 00 00 17 00 00 00 1f 00 00 00 23 00 00 00 27 00 00 00 29 00 00 00 2a 00 00 00 2b 00 00 00 2c 00 00 00 2d 00 00 00 2e 00 00 00 2f 00 00 00 30 00 00 00 31 00 00 00 32 00 00 00 33 00 00 00 34 00 00 00 35 00 00 00 36 00 00 00 37 00 00 00 38 00 00 00 39 00 00 00 3a 00 00 00 3b 00 00 00 3c 00 00 00 3d 00 00 00 3e 00 00 00 3f 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 e6 0f 00 00 a6 0f 00 00 29 0f 00 00 cf 0e 00 00 64 0e 00 00 e8 0d 00 00 5e 0d 00 00 14 0d 00 00 c7 0c 00 00 78 0c 00 00 27 0c 00 00 d5 0b 00 00 81 0b 00 00 2e 0b 00 00 da 0a 00 00 86 0a 00 00 33 0a 00 00 e1 09 00 00 90 09 00 00 41 09 00 00 f3 08 00 00 a7 08 00 00 5e 08 00 00 16 08 00 00 d1 07 00 00 8e 07 00 00 4d 07 00 00 0f 07 00 00 d3 06 00 00 99 06 00 00 62 06 00 00 fb 05 00 00 9c 05 00 00 46 05 00 00 f8 04 00 00 b0 04 00 00 70 04 00 00 35 04 00 00 00 04 00 00 a4 03 00 00 57 03 00 00 e4 02 00 00 94 02 00 00 5b 02 00 00 31 02 00 00 12 02 00 00 fb 01 00 00 e9 01 00 00 dc 01 00 00 d1 01 00 00 c8 01 00 00 c1 01 00 00 bb 01 00 00 b7 01 00 00 b3 01 00 00 b0 01 00 00 ad 01 00 00 ab 01 00 00 a9 01 00 00 a7 01 00 00 a6 01 00 00 a4 01 00 00 a3 01 00 00 a2 01 00 00 18 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00]; }; iq_shdr { size = [ec 01 00 00]; @@ -73,5 +73,13 @@ size = [08 02 00 00]; data = [00 00 00 00 00 00 00 00 02 00 00 00 04 00 00 00 06 00 00 00 08 00 00 00 0a 00 00 00 0c 00 00 00 0e 00 00 00 10 00 00 00 12 00 00 00 14 00 00 00 16 00 00 00 18 00 00 00 1a 00 00 00 1c 00 00 00 1e 00 00 00 20 00 00 00 22 00 00 00 24 00 00 00 26 00 00 00 28 00 00 00 2a 00 00 00 2c 00 00 00 2e 00 00 00 30 00 00 00 32 00 00 00 34 00 00 00 36 00 00 00 38 00 00 00 3a 00 00 00 3c 00 00 00 3e 00 00 00 40 00 00 00 42 00 00 00 44 00 00 00 46 00 00 00 48 00 00 00 4a 00 00 00 4c 00 00 00 4e 00 00 00 50 00 00 00 52 00 00 00 54 00 00 00 56 00 00 00 58 00 00 00 5a 00 00 00 5c 00 00 00 5d 00 00 00 5f 00 00 00 61 00 00 00 64 00 00 00 66 00 00 00 68 00 00 00 6a 00 00 00 6c 00 00 00 6e 00 00 00 70 00 00 00 72 00 00 00 74 00 00 00 76 00 00 00 78 00 00 00 7a 00 00 00 7c 00 00 00 7e 00 00 00 80 00 00 00 82 00 00 00 84 00 00 00 86 00 00 00 88 00 00 00 8a 00 00 00 8c 00 00 00 8e 00 00 00 90 00 00 00 92 00 00 00 94 00 00 00 96 00 00 00 98 00 00 00 9a 00 00 00 9c 00 00 00 9e 00 00 00 a0 00 00 00 a2 00 00 00 a4 00 00 00 a6 00 00 00 a8 00 00 00 aa 00 00 00 ac 00 00 00 ae 00 00 00 b0 00 00 00 b2 00 00 00 b4 00 00 00 b6 00 00 00 b8 00 00 00 ba 00 00 00 bc 00 00 00 be 00 00 00 c0 00 00 00 c2 00 00 00 c4 00 00 00 c6 00 00 00 c8 00 00 00 ca 00 00 00 cc 00 00 00 ce 00 00 00 d0 00 00 00 d2 00 00 00 d4 00 00 00 d6 00 00 00 d8 00 00 00 da 00 00 00 dc 00 00 00 de 00 00 00 e0 00 00 00 e2 00 00 00 e4 00 00 00 e6 00 00 00 e8 00 00 00 ea 00 00 00 ec 00 00 00 ee 00 00 00 f0 00 00 00 f2 00 00 00 f4 00 00 00 f6 00 00 00 f8 00 00 00 fa 00 00 00 fc 00 00 00 fe 00 00 00 ff 00 00 00]; }; + iq_shdr_ext { + size = [11 00 00 00]; + data = [ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff]; + }; + iq_cst { + size = [2c 00 00 00]; + data = [00 00 00 00 4d 00 96 00 1d 00 d5 ff ab ff 80 00 80 00 95 ff eb ff 00 00 80 80 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 00]; + }; }; }; diff --git a/code/hdal/vendor/output/libvendor_ai2_pub.a b/code/hdal/vendor/output/libvendor_ai2_pub.a index bd2342f1c..bdab48592 100755 Binary files a/code/hdal/vendor/output/libvendor_ai2_pub.a and b/code/hdal/vendor/output/libvendor_ai2_pub.a differ diff --git a/code/hdal/vendor/output/libvendor_ai2_pub2.a b/code/hdal/vendor/output/libvendor_ai2_pub2.a index 5e3b1a1b1..253d8491c 100755 Binary files a/code/hdal/vendor/output/libvendor_ai2_pub2.a and b/code/hdal/vendor/output/libvendor_ai2_pub2.a differ diff --git a/code/lib/source/sifar/Makefile b/code/lib/source/sifar/Makefile index 5cbf0d320..cbc7c5ce4 100755 --- a/code/lib/source/sifar/Makefile +++ b/code/lib/source/sifar/Makefile @@ -78,7 +78,8 @@ SRC = \ $(APP_DIR)/source/sf_app/code/source/qrcodeMng/sf_base64.c \ $(APP_DIR)/source/sf_app/code/source/paramMng/sf_param_common.c \ $(APP_DIR)/source/sf_app/code/source/commMng/sf_message_queue.c \ - $(APP_DIR)/source/sf_app/code/source/commMng/sf_share_mem.c + $(APP_DIR)/source/sf_app/code/source/commMng/sf_share_mem.c \ + $(APP_DIR)/source/sf_app/code/source/fileMng/sf_fileMng.c # code/source/common/sf_message_queue.c \ # code/source/common/sf_share_mem.c \ diff --git a/code/lib/source/sifar/code/include/sf_common.h b/code/lib/source/sifar/code/include/sf_common.h index 35cd45518..8581f2941 100755 --- a/code/lib/source/sifar/code/include/sf_common.h +++ b/code/lib/source/sifar/code/include/sf_common.h @@ -69,5 +69,6 @@ void sf_cardv_message_thread_init(void); #define SF_SD_DISK "A:" #define SF_SD_ROOT "/mnt/sd/" +#define SF_SD_THUMB_PATH "/mnt/sd/Thumb/" #endif diff --git a/code/lib/source/sifar/code/include/sf_inc.h b/code/lib/source/sifar/code/include/sf_inc.h index acfbb0f26..5c7323110 100755 --- a/code/lib/source/sifar/code/include/sf_inc.h +++ b/code/lib/source/sifar/code/include/sf_inc.h @@ -20,6 +20,7 @@ #include #include #include +#include #endif diff --git a/code/lib/source/sifar/code/source/common/sf_battery.c b/code/lib/source/sifar/code/source/common/sf_battery.c index e2ef5aafe..99b285a0c 100755 --- a/code/lib/source/sifar/code/source/common/sf_battery.c +++ b/code/lib/source/sifar/code/source/common/sf_battery.c @@ -407,6 +407,7 @@ BOOL sf_check_low_battery(void) { UINT8 lowCompareVal = 0; BOOL ret = FALSE; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); if(sf_is_usb_flag()) { @@ -417,22 +418,22 @@ BOOL sf_check_low_battery(void) if(sf_get_night_led_flag()) { - if(SysGetFlag(BatteryType) == SF_BATT_ALKALINE) + if(puiPara->BatteryType == SF_BATT_ALKALINE) { lowCompareVal = 69; } - else if(SysGetFlag(BatteryType) == SF_BATT_NI_MH) + else if(puiPara->BatteryType == SF_BATT_NI_MH) { lowCompareVal = 71; } } else { - if(SysGetFlag(BatteryType) == SF_BATT_ALKALINE) + if(puiPara->BatteryType == SF_BATT_ALKALINE) { lowCompareVal = 80; } - else if(SysGetFlag(BatteryType) == SF_BATT_NI_MH) + else if(puiPara->BatteryType == SF_BATT_NI_MH) { lowCompareVal = 80; } @@ -471,6 +472,7 @@ signed int sf_battery_adc_value_get(void) UINT32 batTemp = 0; UINT32 dcValueList[12] = { 0 }; UINT32 batValueList[12] = { 0 }; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); SINT32 ret = FAIL; @@ -485,7 +487,7 @@ signed int sf_battery_adc_value_get(void) { dcValueList[readBatCnt] = _DcVoltageVal; - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { printf("%s:%d [%d]DC ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(10, 100, dcValueList[readBatCnt]), dcValueList[readBatCnt], dcValueList[readBatCnt] / 10, dcValueList[readBatCnt] % 10); @@ -495,7 +497,7 @@ signed int sf_battery_adc_value_get(void) { batValueList[readBatCnt] = _LiPolymerVoltageVal; - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { printf("%s:%d [%d]Li Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(15, 100, batValueList[readBatCnt]), batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10); @@ -505,7 +507,7 @@ signed int sf_battery_adc_value_get(void) { batValueList[readBatCnt] = _BatVoltageVal; - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { printf("%s:%d [%d]Other Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(15, 100, batValueList[readBatCnt]), batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10); @@ -539,7 +541,7 @@ signed int sf_battery_adc_value_get(void) IsPowerDcIn = 0; } - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { printf("\n[max]DC,After Convert:(%d.%dV),Is Dc In=%s\n", DcVoltageVal / 10, DcVoltageVal % 10, IsPowerDcIn == 1? "Yes" : "No"); @@ -615,6 +617,7 @@ void sf_battery_level_polling(void) UINT32 batTemp = 0; UINT32 dcValueList[12] = { 0 }; UINT32 batValueList[12] = { 0 }; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); signed int ret = FALSE; @@ -626,7 +629,7 @@ void sf_battery_level_polling(void) { dcValueList[readBatCnt] = _DcVoltageVal; - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { printf("%s:%d [%d]DC ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(10, 130, dcValueList[readBatCnt]), dcValueList[readBatCnt], dcValueList[readBatCnt] / 10, dcValueList[readBatCnt] % 10); @@ -636,7 +639,7 @@ void sf_battery_level_polling(void) { batValueList[readBatCnt] = _LiPolymerVoltageVal; - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { printf("%s:%d [%d]Li Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(15, 130, batValueList[readBatCnt]), batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10); @@ -646,7 +649,7 @@ void sf_battery_level_polling(void) { batValueList[readBatCnt] = _BatVoltageVal; - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { printf("%s:%d [%d]Other Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(15, 130, batValueList[readBatCnt]), batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10); @@ -684,7 +687,7 @@ void sf_battery_level_polling(void) IsPowerDcIn = 0; } - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { printf("\n[average]DC,After Convert:(%d.%dV),Is Dc In=%s\n", DcVoltageVal / 10, DcVoltageVal % 10, IsPowerDcIn == 1? "Yes" : "No"); @@ -705,7 +708,7 @@ void sf_battery_level_polling(void) ret = sf_check_low_battery(); - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { printf("[%s:%d]batTempLevel=%d,sf_LatestBattLevel=%d\n", __FUNCTION__, __LINE__, batTempLevel, sf_LatestBattLevel); } @@ -722,7 +725,7 @@ void sf_battery_level_polling(void) { if(sf_get_night_led_flag()) { - sf_ir_led_set(0, 0, 0, 0); + //sf_ir_led_set(0, 0, 0, 0); } //the Module not need sleep. @@ -857,6 +860,7 @@ UINT8 sf_battery_value_get(UINT8 nightMode) UINT8 value = 0; UINT8 batteryVal = 0; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); if(IsPowerDcIn == 0) { //printf("BatMedian:%d\n", BatMedian); @@ -920,7 +924,7 @@ UINT8 sf_battery_value_get(UINT8 nightMode) { batteryVal = BatVoltageVal; - if(SysGetFlag(BatteryType) == SF_BATT_ALKALINE) //ALK + if(puiPara->BatteryType == SF_BATT_ALKALINE) //ALK { if(batteryVal < 62) { @@ -974,7 +978,7 @@ UINT8 sf_battery_value_get(UINT8 nightMode) value = 100; } } - else if(SysGetFlag(BatteryType) == SF_BATT_NI_MH) //NIH + else if(puiPara->BatteryType == SF_BATT_NI_MH) //NIH { if(batteryVal < 60) { diff --git a/code/lib/source/sifar/code/source/common/sf_common.c b/code/lib/source/sifar/code/source/common/sf_common.c index 30817cbae..23801a848 100755 --- a/code/lib/source/sifar/code/source/common/sf_common.c +++ b/code/lib/source/sifar/code/source/common/sf_common.c @@ -111,7 +111,7 @@ void sf_mode_detect(void) static UINT8 pwroffcnt = 0; static UINT8 countDownOffFlg = 0; static UINT8 pirDelay = 0; - + UIMenuStoreInfo *puiPara = sf_app_ui_para_get(); if(sf_get_power_off_flag() || sf_is_usb_flag()) { sf_set_pir_statu_flag(FALSE); @@ -202,7 +202,7 @@ void sf_mode_detect(void) pwroffcnt = 0; } - if(SysGetFlag(AutoOffSwitch) == 0 || (NetWorkFlag != 0) /*|| (appActiveStateGet() == APP_STATE_CUSTOMER_TRANSFER)*/) + if(puiPara->AutoOffSwitch == 0 || (NetWorkFlag != 0) /*|| (appActiveStateGet() == APP_STATE_CUSTOMER_TRANSFER)*/) { AutoOfftime=0; } @@ -259,7 +259,7 @@ BOOL sf_cmd_cam_name_switch(unsigned char argc, char **argv) sscanf_s(argv[0],"%d", &value); if(value < SF_CAMID_MAX) { - SysSetFlag(CamNameSwitch, value); + puiPara->CamNameSwitch = value; } strncpy(puiPara->CamNameStr, argv[1], ((12 <= strlen(argv[1])) ? 12 : (strlen(argv[1])))); Save_MenuInfo(); @@ -272,19 +272,21 @@ BOOL sf_cmd_cam_name_switch(unsigned char argc, char **argv) BOOL sf_cmd_flash_led(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_FLASH_LED_MAX){ - SysSetFlag(FlashLed, value); + puiPara->FlashLed = value; Save_MenuInfo(); } - printf("[%s:%d] FlashLed:%d\n", __FUNCTION__, __LINE__,SysGetFlag(FlashLed)); + printf("[%s:%d] FlashLed:%d\n", __FUNCTION__, __LINE__,puiPara->FlashLed); return TRUE; } BOOL sf_cmd_img_size(unsigned char argc, char **argv) { UINT32 value; + //UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < PHOTO_SIZE_ID_MAX){ @@ -298,23 +300,25 @@ BOOL sf_cmd_img_size(unsigned char argc, char **argv) BOOL sf_cmd_night_mode(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_NIGHT_MODE_MAX){ - SysSetFlag(NightMode, value); + puiPara->NightMode = value; Save_MenuInfo(); } - printf("[%s:%d] NightMode:%d\n", __FUNCTION__, __LINE__,SysGetFlag(NightMode)); + printf("[%s:%d] NightMode:%d\n", __FUNCTION__, __LINE__,puiPara->NightMode); return TRUE; } BOOL sf_cmd_multishot(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < CONTINUE_SHOT_SETTING_MAX){ - SysSetFlag(Multishot, value); + puiPara->Multishot = value; SysSetFlag(FL_CONTINUE_SHOT, value); Save_MenuInfo(); } @@ -325,11 +329,13 @@ BOOL sf_cmd_multishot(unsigned char argc, char **argv) BOOL sf_cmd_video_size(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < MOVIE_SIZE_ID_MAX){ - SysSetFlag(VideoSize, value); + puiPara->VideoSize = value; SysSetFlag(FL_MOVIE_SIZE, value); + SysSetFlag(FL_MOVIE_SIZE_MENU, value); Save_MenuInfo(); } printf("[%s:%d] FL_MOVIE_SIZE:%d\n", __FUNCTION__, __LINE__,SysGetFlag(FL_MOVIE_SIZE)); @@ -341,6 +347,7 @@ BOOL sf_cmd_video_lenth(unsigned char argc, char **argv) UINT32 uiSelect = 0; UINT32 i, mask; UINT32 movie_rec_mask, clone_rec_mask; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &uiSelect); printf("[%s:%d] uiSelect:%d\n", __FUNCTION__, __LINE__,uiSelect); @@ -359,7 +366,7 @@ BOOL sf_cmd_video_lenth(unsigned char argc, char **argv) uiSelect = 10; break; } - UI_SetData(VideoLenth, uiSelect); + puiPara->VideoLenth = uiSelect; Save_MenuInfo(); gMovie_Rec_Option.seamless_sec = 15; @@ -381,7 +388,7 @@ BOOL sf_cmd_video_lenth(unsigned char argc, char **argv) mask <<= 1; } - printf("[%s:%d] VideoLenth:%d\n", __FUNCTION__, __LINE__,SysGetFlag(VideoLenth)); + printf("[%s:%d] VideoLenth:%d\n", __FUNCTION__, __LINE__,puiPara->VideoLenth); return TRUE; } @@ -389,26 +396,28 @@ BOOL sf_cmd_video_lenth(unsigned char argc, char **argv) BOOL sf_cmd_pir_switch(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(PirSwitch, value); + puiPara->PirSwitch = value; Save_MenuInfo(); } - printf("[%s:%d] PirSwitch:%d\n", __FUNCTION__, __LINE__,SysGetFlag(PirSwitch)); + printf("[%s:%d] PirSwitch:%d\n", __FUNCTION__, __LINE__,puiPara->PirSwitch); return TRUE; } BOOL sf_cmd_pir_sensitivity(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_PIR_SENSITIVITY_MAX){ - SysSetFlag(PirSensitivity, value); + puiPara->PirSensitivity = value; Save_MenuInfo(); } - printf("[%s:%d] PirSensitivity:%d\n", __FUNCTION__, __LINE__,SysGetFlag(PirSensitivity)); + printf("[%s:%d] PirSensitivity:%d\n", __FUNCTION__, __LINE__,puiPara->PirSensitivity); return TRUE; } @@ -421,7 +430,7 @@ BOOL sf_cmd_pir_delay_switch(unsigned char argc, char **argv) sscanf_s(argv[0],"%d", &value); if(value < SF_ON_OFF_MAX) { - SysSetFlag(PirDelaySwitch, value); + puiPara->PirDelaySwitch = value; sscanf_s(argv[1],"%d", &value); puiPara->PirDelayTime.Hour = value; sscanf_s(argv[2],"%d", &value); @@ -431,7 +440,7 @@ BOOL sf_cmd_pir_delay_switch(unsigned char argc, char **argv) Save_MenuInfo(); } } - printf("[%s:%d] argc:%d PirDelaySwitch:%d %d:%d:%d\n", __FUNCTION__, __LINE__, argc, SysGetFlag(PirDelaySwitch),puiPara->PirDelayTime.Hour,puiPara->PirDelayTime.Min,puiPara->PirDelayTime.Sec); + printf("[%s:%d] argc:%d PirDelaySwitch:%d %d:%d:%d\n", __FUNCTION__, __LINE__, argc, puiPara->PirDelaySwitch,puiPara->PirDelayTime.Hour,puiPara->PirDelayTime.Min,puiPara->PirDelayTime.Sec); return TRUE; } @@ -443,7 +452,7 @@ BOOL sf_cmd_timelapse_switch(unsigned char argc, char **argv) { sscanf_s(argv[0],"%d", &value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(TimelapseSwitch, value); + puiPara->TimelapseSwitch = value; sscanf_s(argv[1],"%d", &value); puiPara->TimelapseTime.Hour = value; sscanf_s(argv[2],"%d", &value); @@ -453,7 +462,7 @@ BOOL sf_cmd_timelapse_switch(unsigned char argc, char **argv) Save_MenuInfo(); } } - printf("[%s:%d] argc:%d TimelapseSwitch:%d %d:%d:%d\n", __FUNCTION__, __LINE__, argc, SysGetFlag(TimelapseSwitch),puiPara->TimelapseTime.Hour,puiPara->TimelapseTime.Min,puiPara->TimelapseTime.Sec); + printf("[%s:%d] argc:%d TimelapseSwitch:%d %d:%d:%d\n", __FUNCTION__, __LINE__, argc, puiPara->TimelapseSwitch,puiPara->TimelapseTime.Hour,puiPara->TimelapseTime.Min,puiPara->TimelapseTime.Sec); return TRUE; } @@ -470,7 +479,7 @@ BOOL sf_cmd_work_time_switch(unsigned char argc, char **argv) sscanf_s(argv[1],"%d", &value); if(value < SF_ON_OFF_MAX) { - SysSetFlag(WorkTime1Switch, value); + puiPara->WorkTime1Switch = value; sscanf_s(argv[2],"%d", &value); puiPara->WorkTime[0].StartTime.Hour = value; sscanf_s(argv[3],"%d", &value); @@ -482,14 +491,14 @@ BOOL sf_cmd_work_time_switch(unsigned char argc, char **argv) Save_MenuInfo(); } - printf("[%s:%d] argc:%d WorkTime1Switch:%d %d:%d-%d:%d\n", __FUNCTION__, __LINE__, argc, SysGetFlag(WorkTime1Switch),puiPara->WorkTime[0].StartTime.Hour,puiPara->WorkTime[0].StartTime.Min,puiPara->WorkTime[0].StopTime.Hour,puiPara->WorkTime[0].StopTime.Min); + printf("[%s:%d] argc:%d WorkTime1Switch:%d %d:%d-%d:%d\n", __FUNCTION__, __LINE__, argc, puiPara->WorkTime1Switch,puiPara->WorkTime[0].StartTime.Hour,puiPara->WorkTime[0].StartTime.Min,puiPara->WorkTime[0].StopTime.Hour,puiPara->WorkTime[0].StopTime.Min); } else if(value == 2) { sscanf_s(argv[1],"%d", &value); if(value < SF_ON_OFF_MAX) { - SysSetFlag(WorkTime2Switch, value); + puiPara->WorkTime2Switch = value; sscanf_s(argv[2],"%d", &value); puiPara->WorkTime[1].StartTime.Hour = value; sscanf_s(argv[3],"%d", &value); @@ -500,7 +509,7 @@ BOOL sf_cmd_work_time_switch(unsigned char argc, char **argv) puiPara->WorkTime[1].StopTime.Min = value; Save_MenuInfo(); } - printf("[%s:%d] argc:%d WorkTime1Switch:%d %d:%d-%d:%d\n", __FUNCTION__, __LINE__, argc, SysGetFlag(WorkTime2Switch),puiPara->WorkTime[1].StartTime.Hour,puiPara->WorkTime[1].StartTime.Min,puiPara->WorkTime[1].StopTime.Hour,puiPara->WorkTime[1].StopTime.Min); + printf("[%s:%d] argc:%d WorkTime1Switch:%d %d:%d-%d:%d\n", __FUNCTION__, __LINE__, argc, puiPara->WorkTime2Switch,puiPara->WorkTime[1].StartTime.Hour,puiPara->WorkTime[1].StartTime.Min,puiPara->WorkTime[1].StopTime.Hour,puiPara->WorkTime[1].StopTime.Min); } } @@ -510,39 +519,42 @@ BOOL sf_cmd_work_time_switch(unsigned char argc, char **argv) BOOL sf_cmd_sim_auto_switch(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_SIM_SWITCH_MAX){ - SysSetFlag(SimAutoSwitch, value); + puiPara->SimAutoSwitch = value; Save_MenuInfo(); } - printf("[%s:%d] SimAutoSwitch:%d\n", __FUNCTION__, __LINE__,SysGetFlag(SimAutoSwitch)); + printf("[%s:%d] SimAutoSwitch:%d\n", __FUNCTION__, __LINE__,puiPara->SimAutoSwitch); return TRUE; } BOOL sf_cmd_sen_max_num(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_SEND_MAX_NUM_MAX){ - SysSetFlag(SendMaxNum, value); + puiPara->SendMaxNum = value; Save_MenuInfo(); } - printf("[%s:%d] SendMaxNum:%d\n", __FUNCTION__, __LINE__,SysGetFlag(SendMaxNum)); + printf("[%s:%d] SendMaxNum:%d\n", __FUNCTION__, __LINE__,puiPara->SendMaxNum); return TRUE; } BOOL sf_cmd_gprs_mode(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_GPRS_MODE_MAX){ - SysSetFlag(GprsMode, value); + puiPara->GprsMode = value; Save_MenuInfo(); } - printf("[%s:%d] GprsMode:%d\n", __FUNCTION__, __LINE__,SysGetFlag(GprsMode)); + printf("[%s:%d] GprsMode:%d\n", __FUNCTION__, __LINE__,puiPara->GprsMode); return TRUE; } @@ -558,26 +570,26 @@ BOOL sf_cmd_daily_report_switch(unsigned char argc, char **argv) sscanf_s(argv[1],"%d", &value); if(value < SF_ON_OFF_MAX) { - SysSetFlag(DailyReportSwitch, value); + puiPara->DailyReportSwitch = value; sscanf_s(argv[2],"%d", &value); puiPara->DailyReportTime.Hour = value; sscanf_s(argv[3],"%d", &value); puiPara->DailyReportTime.Min = value; } - printf("[%s:%d] DailyReportSwitch:%d H:%d M:%d\n", __FUNCTION__, __LINE__,SysGetFlag(DailyReportSwitch),puiPara->DailyReportTime.Hour,puiPara->DailyReportTime.Min); + printf("[%s:%d] DailyReportSwitch:%d H:%d M:%d\n", __FUNCTION__, __LINE__,puiPara->DailyReportSwitch,puiPara->DailyReportTime.Hour,puiPara->DailyReportTime.Min); } else if(value == 2) { sscanf_s(argv[1],"%d", &value); if(value < SF_ON_OFF_MAX) { - SysSetFlag(ReDailyReport, value); + puiPara->ReDailyReport = value; sscanf_s(argv[2],"%d", &value); puiPara->DailyReportTime2.Hour = value; sscanf_s(argv[3],"%d", &value); puiPara->DailyReportTime2.Min = value; } - printf("[%s:%d] DailyReportSwitch:%d H:%d M:%d\n", __FUNCTION__, __LINE__,SysGetFlag(ReDailyReport),puiPara->DailyReportTime2.Hour,puiPara->DailyReportTime2.Min); + printf("[%s:%d] DailyReportSwitch:%d H:%d M:%d\n", __FUNCTION__, __LINE__,puiPara->ReDailyReport,puiPara->DailyReportTime2.Hour,puiPara->DailyReportTime2.Min); } Save_MenuInfo(); } @@ -588,52 +600,56 @@ BOOL sf_cmd_daily_report_switch(unsigned char argc, char **argv) BOOL sf_cmd_re_daily_report(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(ReDailyReport, value); + puiPara->ReDailyReport = value; Save_MenuInfo(); } - printf("[%s:%d] ReDailyReport:%d\n", __FUNCTION__, __LINE__,SysGetFlag(ReDailyReport)); + printf("[%s:%d] ReDailyReport:%d\n", __FUNCTION__, __LINE__,puiPara->ReDailyReport); return TRUE; } BOOL sf_cmd_daily_report_test_switch(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(DailyReportTestSwitch, value); + puiPara->DailyReportTestSwitch = value; Save_MenuInfo(); } - printf("[%s:%d] DailyReportTestSwitch:%d\n", __FUNCTION__, __LINE__,SysGetFlag(DailyReportTestSwitch)); + printf("[%s:%d] DailyReportTestSwitch:%d\n", __FUNCTION__, __LINE__,puiPara->DailyReportTestSwitch); return TRUE; } BOOL sf_cmd_sim_pin_flag(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(SimPinFlag, value); + puiPara->SimPinFlag = value; Save_MenuInfo(); } - printf("[%s:%d] SimPinFlag:%d\n", __FUNCTION__, __LINE__,SysGetFlag(SimPinFlag)); + printf("[%s:%d] SimPinFlag:%d\n", __FUNCTION__, __LINE__,puiPara->SimPinFlag); return TRUE; } BOOL sf_cmd_gps_switch(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(GpsSwitch, value); + puiPara->GpsSwitch = value; Save_MenuInfo(); } - printf("[%s:%d] GpsSwitch:%d\n", __FUNCTION__, __LINE__,SysGetFlag(GpsSwitch)); + printf("[%s:%d] GpsSwitch:%d\n", __FUNCTION__, __LINE__,puiPara->GpsSwitch); return TRUE; } @@ -671,11 +687,12 @@ BOOL sf_cmd_longitude(unsigned char argc, char **argv) BOOL sf_cmd_language(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < LANG_ID_MAX){ SysSetFlag(FL_LANGUAGE, value); - SysSetFlag(Language, value); + puiPara->Language = value; Save_MenuInfo(); } printf("[%s:%d] FL_LANGUAGE:%d\n", __FUNCTION__, __LINE__,SysGetFlag(FL_LANGUAGE)); @@ -685,54 +702,58 @@ BOOL sf_cmd_language(unsigned char argc, char **argv) BOOL sf_cmd_date_style(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_DATE_TIME_MAX){ - SysSetFlag(DateStyle, value); + puiPara->DateStyle = value; SysSetFlag(FL_DateFormatIndex, value); Save_MenuInfo(); } - printf("[%s:%d] DateStyle:%d\n", __FUNCTION__, __LINE__,SysGetFlag(DateStyle)); + printf("[%s:%d] DateStyle:%d\n", __FUNCTION__, __LINE__,puiPara->DateStyle); return TRUE; } BOOL sf_cmd_stamp_switch(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(StampSwitch, value); + puiPara->StampSwitch = value; SysSetFlag(FL_DATE_STAMP, ((1 == value) ? DATEIMPRINT_DATE_TIME : DATEIMPRINT_OFF)); Save_MenuInfo(); } - printf("[%s:%d] StampSwitch:%d\n", __FUNCTION__, __LINE__,SysGetFlag(StampSwitch)); + printf("[%s:%d] StampSwitch:%d\n", __FUNCTION__, __LINE__,puiPara->StampSwitch); return TRUE; } BOOL sf_cmd_battery_type(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_BATT_MAX){ - SysSetFlag(BatteryType, value); + puiPara->BatteryType = value; Save_MenuInfo(); } - printf("[%s:%d] BatteryType:%d\n", __FUNCTION__, __LINE__,SysGetFlag(BatteryType)); + printf("[%s:%d] BatteryType:%d\n", __FUNCTION__, __LINE__,puiPara->BatteryType); return TRUE; } BOOL sf_cmd_sd_loop_switch(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(SdLoopSwitch, value); + puiPara->SdLoopSwitch = value; Save_MenuInfo(); } - printf("[%s:%d] SdLoopSwitch:%d\n", __FUNCTION__, __LINE__,SysGetFlag(SdLoopSwitch)); + printf("[%s:%d] SdLoopSwitch:%d\n", __FUNCTION__, __LINE__,puiPara->SdLoopSwitch); return TRUE; } @@ -745,175 +766,187 @@ BOOL sf_cmd_pwd_switch(unsigned char argc, char **argv) sscanf_s(argv[0],"%d", &value); if(value < SF_ON_OFF_MAX) { - SysSetFlag(PwdSwitch, value); + puiPara->PwdSwitch = value; strncpy(puiPara->PwdStr, argv[1], ((6 <= strlen(argv[1])) ? 6 : (strlen(argv[1])))); Save_MenuInfo(); } } - printf("[%s:%d] PwdSwitch:%d PwdStr:%s\n", __FUNCTION__, __LINE__,SysGetFlag(PwdSwitch), puiPara->PwdStr); + printf("[%s:%d] PwdSwitch:%d PwdStr:%s\n", __FUNCTION__, __LINE__,puiPara->PwdSwitch, puiPara->PwdStr); return TRUE; } BOOL sf_cmd_send_photo_switch(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(SendPhotoSwitch, value); + puiPara->SendPhotoSwitch = value; Save_MenuInfo(); } - printf("[%s:%d] SendPhotoSwitch:%d\n", __FUNCTION__, __LINE__,SysGetFlag(SendPhotoSwitch)); + printf("[%s:%d] SendPhotoSwitch:%d\n", __FUNCTION__, __LINE__,puiPara->SendPhotoSwitch); return TRUE; } BOOL sf_cmd_send_video_switch(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(SendVideoSwitch, value); + puiPara->SendVideoSwitch = value; Save_MenuInfo(); } - printf("[%s:%d] SendVideoSwitch:%d\n", __FUNCTION__, __LINE__,SysGetFlag(SendVideoSwitch)); + printf("[%s:%d] SendVideoSwitch:%d\n", __FUNCTION__, __LINE__,puiPara->SendVideoSwitch); return TRUE; } BOOL sf_cmd_send_pic_size(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_SEND_MAX){ - SysSetFlag(SendPicSize, value); + puiPara->SendPicSize = value; Save_MenuInfo(); } - printf("[%s:%d] SendPicSize:%d\n", __FUNCTION__, __LINE__,SysGetFlag(SendPicSize)); + printf("[%s:%d] SendPicSize:%d\n", __FUNCTION__, __LINE__,puiPara->SendPicSize); return TRUE; } BOOL sf_cmd_send_multishot_index(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); if(argc == 5) { sscanf_s(argv[0],"%d", &value); - SysSetFlag(SendMultishotIndex1, value); + puiPara->SendMultishotIndex1 = value; sscanf_s(argv[1],"%d", &value); - SysSetFlag(SendMultishotIndex2, value); + puiPara->SendMultishotIndex2 = value; sscanf_s(argv[2],"%d", &value); - SysSetFlag(SendMultishotIndex3, value); + puiPara->SendMultishotIndex3 = value; sscanf_s(argv[3],"%d", &value); - SysSetFlag(SendMultishotIndex4, value); + puiPara->SendMultishotIndex4 = value; sscanf_s(argv[4],"%d", &value); - SysSetFlag(SendMultishotIndex5, value); + puiPara->SendMultishotIndex5 = value; Save_MenuInfo(); } - printf("[%s:%d] SendMultishotIndex:%d %d %d %d %d\n", __FUNCTION__, __LINE__,SysGetFlag(SendMultishotIndex1),SysGetFlag(SendMultishotIndex2),SysGetFlag(SendMultishotIndex3),SysGetFlag(SendMultishotIndex4),SysGetFlag(SendMultishotIndex5)); + printf("[%s:%d] SendMultishotIndex:%d %d %d %d %d\n", __FUNCTION__, __LINE__,puiPara->SendMultishotIndex1,puiPara->SendMultishotIndex2,puiPara->SendMultishotIndex3,puiPara->SendMultishotIndex4,puiPara->SendMultishotIndex5); return TRUE; } BOOL sf_cmd_date_auto(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_DATE_MAX){ - SysSetFlag(DateAuto, value); + puiPara->DateAuto = value; Save_MenuInfo(); } - printf("[%s:%d] DateAuto:%d\n", __FUNCTION__, __LINE__,SysGetFlag(DateAuto)); + printf("[%s:%d] DateAuto:%d\n", __FUNCTION__, __LINE__,puiPara->DateAuto); return TRUE; } BOOL sf_cmd_debug_mode(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(DebugMode, value); + puiPara->DebugMode = value; Save_MenuInfo(); } - printf("[%s:%d] DebugMode:%d\n", __FUNCTION__, __LINE__,SysGetFlag(DebugMode)); + printf("[%s:%d] DebugMode:%d\n", __FUNCTION__, __LINE__,puiPara->DebugMode); return TRUE; } BOOL sf_cmd_auto_off_switch(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(AutoOffSwitch, value); + puiPara->AutoOffSwitch = value; Save_MenuInfo(); } - printf("[%s:%d] AutoOffSwitch:%d\n", __FUNCTION__, __LINE__,SysGetFlag(AutoOffSwitch)); + printf("[%s:%d] AutoOffSwitch:%d\n", __FUNCTION__, __LINE__,puiPara->AutoOffSwitch); return TRUE; } BOOL sf_cmd_auto_log_switch(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(AutoLogSwitch, value); + puiPara->AutoLogSwitch = value; Save_MenuInfo(); } - printf("[%s:%d] AutoLogSwitch:%d\n", __FUNCTION__, __LINE__,SysGetFlag(AutoLogSwitch)); + printf("[%s:%d] AutoLogSwitch:%d\n", __FUNCTION__, __LINE__,puiPara->AutoLogSwitch); return TRUE; } BOOL sf_cmd_raw_switch(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(RawSwitch, value); + puiPara->RawSwitch = value; Save_MenuInfo(); } - printf("[%s:%d] RawSwitch:%d\n", __FUNCTION__, __LINE__,SysGetFlag(RawSwitch)); + printf("[%s:%d] RawSwitch:%d\n", __FUNCTION__, __LINE__,puiPara->RawSwitch); return TRUE; } BOOL sf_cmd_gprs_switch(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(GprsSwitch, value); + puiPara->GprsSwitch = value; Save_MenuInfo(); } - printf("[%s:%d] GprsSwitch:%d\n", __FUNCTION__, __LINE__,SysGetFlag(GprsSwitch)); + printf("[%s:%d] GprsSwitch:%d\n", __FUNCTION__, __LINE__,puiPara->GprsSwitch); return TRUE; } BOOL sf_cmd_qlog_switch(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(QLogSwitch, value); + puiPara->QLogSwitch = value; Save_MenuInfo(); } - printf("[%s:%d] QLogSwitch:%d\n", __FUNCTION__, __LINE__,SysGetFlag(QLogSwitch)); + printf("[%s:%d] QLogSwitch:%d\n", __FUNCTION__, __LINE__,puiPara->QLogSwitch); return TRUE; } BOOL cmd_cam_mode(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); if(value < SF_CAM_MODE_MAX){ - SysSetFlag(CamMode, value); + puiPara->CamMode = value; Save_MenuInfo(); } - printf("[%s:%d] CamMode:%d\n", __FUNCTION__, __LINE__,SysGetFlag(CamMode)); + printf("[%s:%d] CamMode:%d\n", __FUNCTION__, __LINE__,puiPara->CamMode); return TRUE; } @@ -1016,13 +1049,14 @@ BOOL sf_cmd_auto_off_time(unsigned char argc, char **argv) BOOL sf_cmd_battery_log_switch(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value); if(value < SF_ON_OFF_MAX){ - SysSetFlag(BatteryLogSwitch, value); + puiPara->BatteryLogSwitch = value; Save_MenuInfo(); } - printf("[%s:%d] BatteryLogSwitch:%d\n", __FUNCTION__, __LINE__,SysGetFlag(BatteryLogSwitch)); + printf("[%s:%d] BatteryLogSwitch:%d\n", __FUNCTION__, __LINE__,puiPara->BatteryLogSwitch); return TRUE; } @@ -1056,21 +1090,22 @@ UINT32 sf_set_pir_sensitivity(UINT8 pirs) UINT8 digPirCount[10] = {0, 0, 0, 0, 0, 0, 1, 1, 1, 1}; UIMenuStoreInfo *puiPara = sf_ui_para_get(); + //UIMenuStoreInfo *puiPara = sf_ui_para_get(); if(pirs >= 10) return FAIL; - SysSetFlag(PirSensitivity, pirs); - SysSetFlag(DigitPirSensitivity, digPirLevel[pirs]); - SysSetFlag(DigitPirCnt, digPirCount[pirs]); - SysSetFlag(DigitPirWindowTime, 0); + puiPara->PirSensitivity = pirs; + puiPara->DigitPirSensitivity = digPirLevel[pirs]; + puiPara->DigitPirCnt = digPirCount[pirs]; + puiPara->DigitPirWindowTime = 0; - if(SysGetFlag(PirSensitivity)) + /*if(puiPara->PirSensitivity)) { - SysSetFlag(TimelapseSwitch, SF_OFF); + puiPara->TimelapseSwitch, SF_OFF); puiPara->TimelapseTime.Hour = 0; puiPara->TimelapseTime.Min = 0; puiPara->TimelapseTime.Sec = 0; //Save_MenuInfo(); - } + }*/ return SUCCESS; } @@ -1080,14 +1115,14 @@ UINT32 sf_set_pir_sensitivity(UINT8 pirs) void sf_usb_mux_s(UINT32 cnt) { static UINT8 cntflag = 1; - printf("[%s:%d] s\n", __FUNCTION__, __LINE__); + printf("[%s:%d] c s\n", __FUNCTION__, __LINE__); if(1 == cntflag) { cntflag = 0; gpio_direction_output(GPIO_USB_MUX_S, 1); } gpio_set_value(GPIO_USB_MUX_S, cnt); - printf("[%s:%d] e cnt:%d\n", __FUNCTION__, __LINE__,cnt); + printf("[%s:%d] e c cnt:%d\n", __FUNCTION__, __LINE__,cnt); } BOOL sf_cmd_usb_mux_s(unsigned char argc, char **argv) { @@ -1153,6 +1188,10 @@ static SINT32 sf_cardv_proccess_cmd_key(SF_MESSAGE_BUF_S *pMessageBuf) { sf_mcu_dataready_ck(pMessageBuf->arg3); } + else if(SF_KEY_PIN_AOTU_MODE_POWOFF == pMessageBuf->arg2) + { + Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, 0); //shutdown start + } break; default: @@ -1177,7 +1216,7 @@ static SINT32 app_proccess_cmd_para_update(SF_MESSAGE_BUF_S *pMessageBuf) return SF_SUCCESS; } - +#if 0 void sf_cardv_proccess_cmd_gprs(SF_MESSAGE_BUF_S *pMessageBuf) { UINT8 netSearchStep = pMessageBuf->arg1; @@ -1185,11 +1224,12 @@ void sf_cardv_proccess_cmd_gprs(SF_MESSAGE_BUF_S *pMessageBuf) UINT32 simCardInsert = ((pMessageBuf->arg3) >> 0) & 1; UINT8 gGPRSNoRespone = ((pMessageBuf->arg3) >> 1) & 1; UINT32 FtpOpenOk = ((pMessageBuf->arg3) >> 2) & 1; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); if (sf_get_fw_update()) return; - if(SysGetFlag(GprsSwitch) == SF_ON) + if(puiPara->GprsSwitch == SF_ON) { printf("simCardInsert=%d gprs_search_process=%d cq_Signal=%d gGPRSNoRespone=%d ", simCardInsert, netSearchStep, cq_Signal, gGPRSNoRespone); @@ -1244,13 +1284,14 @@ void sf_cardv_proccess_cmd_gprs(SF_MESSAGE_BUF_S *pMessageBuf) } else //if(cq_Signal < 32) { - sf_signal_led_show(sf_signal_level_get(SysGetFlag(NetGeneration), cq_Signal)); + sf_signal_led_show(sf_signal_level_get(puiPara->NetGeneration, cq_Signal)); } } } } } +#endif void* sf_cardv_message_thread(void *argv) { @@ -1276,8 +1317,12 @@ void* sf_cardv_message_thread(void *argv) app_proccess_cmd_para_update(&stMessagebuf); break; case CMD_GPRS: - sf_cardv_proccess_cmd_gprs(&stMessagebuf); + //sf_cardv_proccess_cmd_gprs(&stMessagebuf); break; + case CMD_FILE: + sf_share_mem_file_init(); + break; + default: break; } diff --git a/code/lib/source/sifar/code/source/common/sf_sd_common.c b/code/lib/source/sifar/code/source/common/sf_sd_common.c index ba56b5fb3..612c014e1 100755 --- a/code/lib/source/sifar/code/source/common/sf_sd_common.c +++ b/code/lib/source/sifar/code/source/common/sf_sd_common.c @@ -60,6 +60,7 @@ UINT32 sf_check_card_full(void) UINT64 diskFree = 0; UINT32 ret = 0; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); if(!sf_in_card_exist()) { return 1; @@ -71,7 +72,7 @@ UINT32 sf_check_card_full(void) if(diskFree < 30) /* 30MB */ { ret = TRUE; - if(0 == SysGetFlag(SdLoopSwitch)) + if(0 == puiPara->SdLoopSwitch) { IsCardFull = TRUE; SF_MESSAGE_BUF_S stMessageBuf = {0}; diff --git a/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c b/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c index 32c1d203c..2757fa184 100755 --- a/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c +++ b/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c @@ -60,7 +60,7 @@ static UINT8 AeNightMode = 0; /* 0:day 1:night */ //#define printf(fmt, args...) printk(fmt , ## args) static UINT32 simCardInsert=0; static UINT8 gModuleSleep = 1; -static UINT32 SmsCheck = 0; +UINT32 SmsCheck = 0; static SF_CAMERA_CMD_S CameraCmd = {0}; static UINT8 McuProductInfo = 0; @@ -68,8 +68,8 @@ static UINT8 McuProductInfo = 0; static UINT8 drNoResetTimeSync = FALSE; //0:reset; 1:no reset; #elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) -static UINT8 isSignalReady = 0; -static UINT32 GPRS_ERRNO = 0; +//static UINT8 isSignalReady = 0; +//static UINT32 GPRS_ERRNO = 0; #endif int sf_i2c_fd = -1; @@ -1377,6 +1377,7 @@ UINT8 sf_mcu_analog_pir_sen_convert(UINT8 pirs) UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) { +#if 0 UINT8 mcuReg[REG_SIZE] = {0}; UINT8 mcuData[REG_SIZE] = {0}; UINT8 i = 0; @@ -1848,6 +1849,7 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) } #endif sf_mcu_write_multi(mcuReg, mcuData, i); +#endif return SUCCESS; } @@ -1883,7 +1885,7 @@ void sf_calculate_daily_report(UINT8*dailyHour, UINT8*dailyMin) UINT16 timelapse_sum_min = 0; struct tm mcuTime = {0}; //Daily report is always ON - if(SysGetFlag(ReDailyReport)) + if(puiPara->ReDailyReport) { mcuTime = hwclock_get_time(TIME_ID_CURRENT); if(puiPara->DailyReportTime2.Hour >= mcuTime.tm_hour) @@ -1905,7 +1907,7 @@ void sf_calculate_daily_report(UINT8*dailyHour, UINT8*dailyMin) } - else if(SysGetFlag(GprsMode) == SF_REMOTE_CONTROL_REAL_TIME) + else if(puiPara->GprsMode == SF_REMOTE_CONTROL_REAL_TIME) { if((!sf_get_mode_flag()) && (sf_get_camera_restart() == 1)) @@ -1922,7 +1924,7 @@ void sf_calculate_daily_report(UINT8*dailyHour, UINT8*dailyMin) } } - else if(SysGetFlag(GpsAntiTheftSwitch) == 1) + else if(puiPara->GpsAntiTheftSwitch == 1) { if((!sf_get_mode_flag()) && (sf_get_camera_restart() == 1)) { @@ -1963,9 +1965,9 @@ void sf_calculate_daily_report(UINT8*dailyHour, UINT8*dailyMin) { if((timelapse_sum_min - daily_sum_min) <= 5) { - if((SysGetFlag(ReDailyReport) == 1) && (timelapse_sum_min < 5)) + if((puiPara->ReDailyReport == 1) && (timelapse_sum_min < 5)) { - SysSetFlag(ReDailyReport, 2); + puiPara->ReDailyReport = 2; puiPara->DailyReportTime2.Hour = 0; puiPara->DailyReportTime2.Min = 0; } diff --git a/code/lib/source/sifar/code/source/module/sf_sim.c b/code/lib/source/sifar/code/source/module/sf_sim.c index d149b5586..449b44992 100755 --- a/code/lib/source/sifar/code/source/module/sf_sim.c +++ b/code/lib/source/sifar/code/source/module/sf_sim.c @@ -138,7 +138,7 @@ SINT32 sf_module_init(VOID) UIMenuStoreInfo *pPara = sf_ui_para_get(); needRecordLogFlag = 1; - SysSetFlag(NetGeneration, SF_NET_NO); + pPara->NetGeneration = SF_NET_NO; sf_4g_data_buff_clear(); sf_gsm_para_buff_clear(); diff --git a/code/na51089_linux_sdk_app_filelist.txt b/code/na51089_linux_sdk_app_filelist.txt index c61c5e05b..3221d81e2 100755 --- a/code/na51089_linux_sdk_app_filelist.txt +++ b/code/na51089_linux_sdk_app_filelist.txt @@ -1,6 +1,6 @@ ; Source Insight Project File List -; Project Name: na51089_linux_sdk -; Generated by Source Insight 4.00.0107 at 2023/4/10 14:55:33 +; Project Name: s530_app +; Generated by Source Insight 4.00.0107 at 2023/4/25 17:47:48 ; Version=4.00.0107 ; ; Each line should contain either a file name, a wildcard, or a sub-directory name. @@ -535,6 +535,189 @@ application\source\cardv\SrcCode\UI\UIView.c application\source\cardv\SrcCode\UI\UIView.h application\source\mem\Makefile application\source\mem\mem.c +application\source\sf_app\code\include\aos_util.h +application\source\sf_app\code\include\apr.h +application\source\sf_app\code\include\apr_errno.h +application\source\sf_app\code\include\apr_general.h +application\source\sf_app\code\include\apr_lib.h +application\source\sf_app\code\include\apr_pools.h +application\source\sf_app\code\include\apr_sha1.h +application\source\sf_app\code\include\apr_strings.h +application\source\sf_app\code\include\apr_want.h +application\source\sf_app\code\include\apr_xlate.h +application\source\sf_app\code\include\apu.h +application\source\sf_app\code\include\apu_config.h +application\source\sf_app\code\include\bitstream.h +application\source\sf_app\code\include\cJSON.h +application\source\sf_app\code\include\HMACSHA.h +application\source\sf_app\code\include\mask.h +application\source\sf_app\code\include\mbedtls.h +application\source\sf_app\code\include\mmask.h +application\source\sf_app\code\include\mqrspec.h +application\source\sf_app\code\include\qrenc.h +application\source\sf_app\code\include\qrencode.h +application\source\sf_app\code\include\qrencode_inner.h +application\source\sf_app\code\include\qrinput.h +application\source\sf_app\code\include\qrspec.h +application\source\sf_app\code\include\rscode.h +application\source\sf_app\code\include\sf_aes.h +application\source\sf_app\code\include\sf_base64.h +application\source\sf_app\code\include\sf_bmp.h +application\source\sf_app\code\include\sf_commMng.h +application\source\sf_app\code\include\sf_common.h +application\source\sf_app\code\include\sf_commu_mcu.h +application\source\sf_app\code\include\sf_commu_mcu_reg.h +application\source\sf_app\code\include\sf_datahttp.h +application\source\sf_app\code\include\sf_dataMng.h +application\source\sf_app\code\include\sf_dbg.h +application\source\sf_app\code\include\sf_debug.h +application\source\sf_app\code\include\sf_device.h +application\source\sf_app\code\include\sf_dev_other.h +application\source\sf_app\code\include\sf_dev_usb.h +application\source\sf_app\code\include\sf_eg91_gps.h +application\source\sf_app\code\include\sf_eg91_server.h +application\source\sf_app\code\include\sf_eg91_sim.h +application\source\sf_app\code\include\sf_fileMng.h +application\source\sf_app\code\include\sf_hal_gpio.h +application\source\sf_app\code\include\sf_hal_ttyusb.h +application\source\sf_app\code\include\sf_http_server.h +application\source\sf_app\code\include\sf_keymng.h +application\source\sf_app\code\include\sf_ledmng.h +application\source\sf_app\code\include\sf_log.h +application\source\sf_app\code\include\sf_md5.h +application\source\sf_app\code\include\sf_message_queue.h +application\source\sf_app\code\include\sf_module.h +application\source\sf_app\code\include\sf_opera_adapt.h +application\source\sf_app\code\include\sf_otamng.h +application\source\sf_app\code\include\sf_param_common.h +application\source\sf_app\code\include\sf_param_enum.h +application\source\sf_app\code\include\sf_param_struct.h +application\source\sf_app\code\include\sf_qrcode.h +application\source\sf_app\code\include\sf_qrutils.h +application\source\sf_app\code\include\sf_service.h +application\source\sf_app\code\include\sf_storeMng.h +application\source\sf_app\code\include\sf_system.h +application\source\sf_app\code\include\sf_systemMng.h +application\source\sf_app\code\include\sf_transdata1.h +application\source\sf_app\code\include\sf_type.h +application\source\sf_app\code\include\sha256.h +application\source\sf_app\code\include\split.h +application\source\sf_app\code\source\4gMng\sf_eg91_gps.c +application\source\sf_app\code\source\4gMng\sf_eg91_server.c +application\source\sf_app\code\source\4gMng\sf_eg91_sim.c +application\source\sf_app\code\source\4gMng\sf_http_server.c +application\source\sf_app\code\source\4gMng\sf_module.c +application\source\sf_app\code\source\4gMng\sf_opera_adapt.c +application\source\sf_app\code\source\app\sf_app.c +application\source\sf_app\code\source\app\sf_common.c +application\source\sf_app\code\source\app\sf_dbg.c +application\source\sf_app\code\source\app\sf_device.c +application\source\sf_app\code\source\app\sf_service.c +application\source\sf_app\code\source\app\sf_system.c +application\source\sf_app\code\source\app\test.cpp +application\source\sf_app\code\source\commMng\sf_message_queue.c +application\source\sf_app\code\source\commMng\sf_share_mem.c +application\source\sf_app\code\source\dataMng\sf_datahttp.c +application\source\sf_app\code\source\dataMng\sf_dataMng.c +application\source\sf_app\code\source\dataMng\sf_transdata1.c +application\source\sf_app\code\source\debugMng\sf_debug.c +application\source\sf_app\code\source\devMng\sf_dev_other.c +application\source\sf_app\code\source\devMng\sf_dev_usb.c +application\source\sf_app\code\source\devMng\sf_keymng.c +application\source\sf_app\code\source\devMng\sf_ledmng.c +application\source\sf_app\code\source\fileMng\cJSON.c +application\source\sf_app\code\source\fileMng\sf_fileMng.c +application\source\sf_app\code\source\gpio\sf_hal_gpio.c +application\source\sf_app\code\source\logMng\sf_log.c +application\source\sf_app\code\source\paramMng\sf_param_common.c +application\source\sf_app\code\source\qrcodeMng\bitstream.c +application\source\sf_app\code\source\qrcodeMng\mask.c +application\source\sf_app\code\source\qrcodeMng\mmask.c +application\source\sf_app\code\source\qrcodeMng\mqrspec.c +application\source\sf_app\code\source\qrcodeMng\qrenc.c +application\source\sf_app\code\source\qrcodeMng\qrencode.c +application\source\sf_app\code\source\qrcodeMng\qrinput.c +application\source\sf_app\code\source\qrcodeMng\qrspec.c +application\source\sf_app\code\source\qrcodeMng\rscode.c +application\source\sf_app\code\source\qrcodeMng\sf_base64.c +application\source\sf_app\code\source\qrcodeMng\sf_bmp.c +application\source\sf_app\code\source\qrcodeMng\sf_qrcode.c +application\source\sf_app\code\source\qrcodeMng\split.c +application\source\sf_app\code\source\signatureMng\aos_util.c +application\source\sf_app\code\source\signatureMng\apr_sha1.c +application\source\sf_app\code\source\signatureMng\HMACSHA.c +application\source\sf_app\code\source\signatureMng\sha256.c +application\source\sf_app\code\source\storeMng\sf_storeMng.c +application\source\sf_app\code\source\systemMng\sf_commu_mcu.c +application\source\sf_app\code\source\systemMng\sf_commu_mcu_reg.c +application\source\sf_app\code\source\systemMng\sf_systemMng.c +application\source\sf_app\code\source\ttyusb\sf_hal_ttyusb.c +application\source\sf_app\code\source\updataMng\sf_md5.c +application\source\sf_app\code\source\updataMng\sf_otamng.c +application\source\sf_app\code\source\utils\mbedtls.c +application\source\sf_app\code\source\utils\sf_aes.c +application\source\sf_app\code\source\utils\sf_qrutils.c +application\source\sf_app\component\liveMng\inc\exports\aiot_authorize_api.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_awss.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_coap.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_compat.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_diagnosis.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_errno.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_event.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_guider.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_http.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_http2.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_http2_stream.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_linkkit.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_mqtt.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_ota.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_reset.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_shadow.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_state.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_ticknotify.h +application\source\sf_app\component\liveMng\inc\exports\iot_export_timer.h +application\source\sf_app\component\liveMng\inc\exports\linkkit_export.h +application\source\sf_app\component\liveMng\inc\exports\linkkit_gateway_export.h +application\source\sf_app\component\liveMng\inc\imports\iot_import_awss.h +application\source\sf_app\component\liveMng\inc\imports\iot_import_config.h +application\source\sf_app\component\liveMng\inc\imports\iot_import_crypt.h +application\source\sf_app\component\liveMng\inc\imports\iot_import_dtls.h +application\source\sf_app\component\liveMng\inc\imports\iot_import_kv.h +application\source\sf_app\component\liveMng\inc\imports\iot_import_ota.h +application\source\sf_app\component\liveMng\inc\imports\iot_import_product.h +application\source\sf_app\component\liveMng\inc\imports\iot_import_tcp.h +application\source\sf_app\component\liveMng\inc\imports\iot_import_tls.h +application\source\sf_app\component\liveMng\inc\imports\iot_import_udp.h +application\source\sf_app\component\liveMng\inc\iot_export.h +application\source\sf_app\component\liveMng\inc\iot_import.h +application\source\sf_app\component\liveMng\inc\linkkit_client.h +application\source\sf_app\component\liveMng\inc\linkvisual_client.h +application\source\sf_app\component\liveMng\inc\link_visual_api.h +application\source\sf_app\component\liveMng\inc\link_visual_enum.h +application\source\sf_app\component\liveMng\inc\link_visual_struct.h +application\source\sf_app\component\liveMng\inc\sdk_assistant.h +application\source\sf_app\component\liveMng\inc\sf_liveMng.h +application\source\sf_app\component\liveMng\Makefile +application\source\sf_app\component\liveMng\src\linkkit_client.c +application\source\sf_app\component\liveMng\src\linkvisual_client.c +application\source\sf_app\component\liveMng\src\Makefile +application\source\sf_app\component\liveMng\src\sdk_assistant.c +application\source\sf_app\component\liveMng\src\sf_liveMng.c +application\source\sf_app\component\liveMng\src\sf_venc_stream.c +application\source\sf_app\component\Makefile +application\source\sf_app\component\nfcMng\inc\dev_info_ctrl.h +application\source\sf_app\component\nfcMng\inc\mbedtls.h +application\source\sf_app\component\nfcMng\inc\sf_aes.h +application\source\sf_app\component\nfcMng\inc\sf_dev_info.h +application\source\sf_app\component\nfcMng\inc\sf_nfc_dev.h +application\source\sf_app\component\nfcMng\inc\sf_nfc_setting.h +application\source\sf_app\component\nfcMng\inc\sf_qrutils.h +application\source\sf_app\component\nfcMng\Makefile +application\source\sf_app\component\nfcMng\src\sf_dev_info.c +application\source\sf_app\component\nfcMng\src\sf_nfc_dev.c +application\source\sf_app\component\nfcMng\src\sf_nfc_setting.c +application\source\sf_app\Makefile +application\source\sf_app\sample\test\main.c driver\include\crypto\cryptodev.h driver\include\msdcnvt\msdcnvt_api.h driver\include\msdcnvt\msdcnvt_callback.h @@ -5003,41 +5186,30 @@ lib\source\pcm_anr\Makefile lib\source\playback\Makefile lib\source\PStore\Makefile lib\source\QRCode\Makefile -lib\source\sifar\code\include\sf_base64.h lib\source\sifar\code\include\sf_battery.h lib\source\sifar\code\include\sf_common.h lib\source\sifar\code\include\sf_commu_mcu.h lib\source\sifar\code\include\sf_dbg.h lib\source\sifar\code\include\sf_gps.h -lib\source\sifar\code\include\sf_hal_ttyusb.h lib\source\sifar\code\include\sf_http.h lib\source\sifar\code\include\sf_inc.h lib\source\sifar\code\include\sf_led.h -lib\source\sifar\code\include\sf_log.h lib\source\sifar\code\include\sf_mcu.h -lib\source\sifar\code\include\sf_message_queue.h lib\source\sifar\code\include\sf_pc_tool.h lib\source\sifar\code\include\sf_sd_common.h -lib\source\sifar\code\include\sf_share_mem.h lib\source\sifar\code\include\sf_sim.h lib\source\sifar\code\include\sf_tcp.h -lib\source\sifar\code\include\sf_type.h -lib\source\sifar\code\source\common\sf_base64.c lib\source\sifar\code\source\common\sf_battery.c lib\source\sifar\code\source\common\sf_common.c lib\source\sifar\code\source\common\sf_led.c -lib\source\sifar\code\source\common\sf_message_queue.c lib\source\sifar\code\source\common\sf_pc_tool.c lib\source\sifar\code\source\common\sf_sd_common.c -lib\source\sifar\code\source\common\sf_share_mem.c lib\source\sifar\code\source\debug\sf_dbg.c -lib\source\sifar\code\source\debug\sf_log.c lib\source\sifar\code\source\mcu\sf_commu_mcu.c lib\source\sifar\code\source\mcu\sf_mcu_client.c lib\source\sifar\code\source\module\sf_4G_auto_operation.c lib\source\sifar\code\source\module\sf_4G_usb_uart.c lib\source\sifar\code\source\module\sf_gps.c -lib\source\sifar\code\source\module\sf_hal_ttyusb.c lib\source\sifar\code\source\module\sf_http.c lib\source\sifar\code\source\module\sf_sim.c lib\source\sifar\code\source\module\sf_tcp.c diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-evb.dtb b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-evb.dtb new file mode 100644 index 000000000..58540b0c9 Binary files /dev/null and b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-evb.dtb differ diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-evb.tmp.dts b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-evb.tmp.dts new file mode 100644 index 000000000..fa2e3c18e --- /dev/null +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-evb.tmp.dts @@ -0,0 +1,1181 @@ +# 1 "nvt-evb.dts" +# 1 "" +# 1 "" +# 1 "nvt-evb.dts" + + + + + + + +/dts-v1/; +# 1 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/gpio/nvt-gpio.h" 1 +# 13 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/gpio/nvt-gpio.h" +# 1 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/gpio/gpio.h" 1 +# 14 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/gpio/nvt-gpio.h" 2 +# 10 "nvt-evb.dts" 2 +# 1 "nvt-peri.dtsi" 1 +# 10 "nvt-peri.dtsi" +# 1 "nvt-basic.dtsi" 1 +# 9 "nvt-basic.dtsi" +# 1 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/interrupt-controller/arm-gic.h" 1 +# 9 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/interrupt-controller/arm-gic.h" +# 1 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/interrupt-controller/irq.h" 1 +# 10 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/interrupt-controller/arm-gic.h" 2 +# 10 "nvt-basic.dtsi" 2 + +/ { + model = "Novatek NA51089"; + compatible = "novatek,na51089", "nvt,ca9"; + interrupt-parent = <&gic>; + #address-cells = <1>; + #size-cells = <1>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <0x0>; + next-level-cache = <&L2>; + clock-frequency = <960000000>; + }; + }; + + cg@f0020000 { + compatible = "nvt,core_clk"; + reg = <0xf0020000 0x1000>; + }; + + + periph_clk: periph_clk { + compatible = "nvt,periph_clk"; + #clock-cells = <0>; + clock-output-names = "periph_clk"; + }; + + global_timer@ffd00200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0xffd00200 0x20>; + interrupts = <1 11 0xf01>; + clocks = <&periph_clk>; + }; + + private_timer@ffd00600 { + compatible = "arm,cortex-a9-twd-timer"; + reg = <0xffd00600 0x20>; + interrupts = <1 13 0xf01>; + clocks = <&periph_clk>; + }; + + pmu { + compatible = "arm,cortex-a9-pmu"; + interrupts = <0 112 4>; + interrupt-affinity = <&cpu0>; + }; + + L2: cache-controller@ffe00000 { + compatible = "arm,pl310-cache"; + reg = <0xffe00000 0x1000>; + interrupts = <0 96 4>; + cache-unified; + arm,shared-override; + cache-level = <2>; + arm,data-latency = <2 2 2>; + arm,tag-latency = <2 2 2>; + }; + + gic: interrupt-controller@0xffd00000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <3>; + interrupt-controller; + reg = <0xffd01000 0x1000>, + <0xffd00100 0x1000>; + }; + + scu: snoop-control-unit@0xffd00000 { + compatible = "arm,cortex-a9-scu"; + reg = <0xffd00000 0x100>; + }; +}; +# 11 "nvt-peri.dtsi" 2 + +/ { + chosen { + bootargs = " "; + }; + + aliases { + mmc0 = &mmc0; + mmc1 = &mmc1; + }; + + uart@f0290000 { + compatible = "ns16550a"; + reg = <0xf0290000 0x1000>; + interrupts = <0 43 4>; + baud = <115200>; + reg-shift = <2>; + reg-io-width = <4>; + no-loopback-test = <1>; + clock-frequency = <24000000>; + fifo-size = <64>; + uart_id = <0>; + }; + + uart@f0300000 { + compatible = "ns16550a"; + reg = <0xf0300000 0x1000>; + interrupts = <0 44 4>; + baud = <115200>; + reg-shift = <2>; + reg-io-width = <4>; + no-loopback-test = <1>; + clock-frequency = <48000000>; + fifo-size = <64>; + hw_flowctrl = <0>; + rx_trig_level = <3>; + uart_id = <1>; + }; + + uart@f0310000 { + compatible = "ns16550a"; + reg = <0xf0310000 0x1000>; + interrupts = <0 45 4>; + baud = <115200>; + reg-shift = <2>; + reg-io-width = <4>; + no-loopback-test = <1>; + clock-frequency = <48000000>; + fifo-size = <64>; + hw_flowctrl = <0>; + rx_trig_level = <3>; + uart_id = <2>; + }; + + kdrv_rpc: cc@f0090000 { + compatible = "kdrv_rpc"; + reg = <0xf0090000 0x300>; + interrupts = <0 59 4>; + }; + + mmc0: mmc@f0420000 { + compatible = "nvt,nvt_mmc"; + reg = <0xf0420000 0x1000>; + interrupts = <0 30 4>; + max-frequency = <48000000>; + voltage-switch = <0>; + max-voltage = <3300>; + bus-width = <4>; + neg-sample-edge = <0>; + driving = <15 15 15 20 15 15 25 25 25 25 25 25>; + cd_gpio = <(9) 0x0 0x0>; + card_power_gpio = <(7 + 0x20) 0x0>; + + + }; + + mmc1: mmc@f0500000 { + compatible = "nvt,nvt_mmc2"; + reg = <0xf0500000 0x1000>; + interrupts = <0 31 4>; + max-frequency = <48000000>; + voltage-switch = <0>; + max-voltage = <3300>; + bus-width = <4>; + neg-sample-edge = <0>; + driving = <15 8 8 20 8 8 20 8 8 20 8 8>; + cd_gpio = <0 0x0 0x1>; + + + + }; + + nand: nand@f0400000 { + #address-cells = <2>; + #size-cells = <2>; + compatible = "nvt,nvt_spinand"; + reg = <0xf0400000 0x1000>; + interrupts = <0 29 4>; + clock-frequency = <96000000>; + nvt-devname = "spi_nand.0"; + }; + + nor: nor@f0400000 { + #address-cells = <2>; + #size-cells = <2>; + compatible = "nvt,nvt_spinor"; + reg = <0xf0400000 0x1000>; + interrupts = <0 29 4>; + clock-frequency = <120000000>; + nvt-devname = "spi_nor.0"; + trace-stdtable = <0>; + }; + + gpio: gpio@f0070000 { + compatible = "nvt,nvt_gpio"; + reg = <0xf0070000 0x10000>; + interrupts = <0 24 4>; + #gpio-cells = <2>; + }; + + eth@f02b0000 { + compatible = "nvt,synopsys_eth"; + reg = <0xf02b0000 0x3800>; + interrupts = <0 34 4>; + sp-clk = <0>; + ref-clk-out = <0>; + }; + + phy@f02b3800 { + compatible = "nvt,eth_phy"; + reg = <0xf02b3800 0x400>; + }; + + wdt@f0050000 { + compatible = "nvt,nvt_wdt"; + reg = <0xf0050000 0x10000>; + interrupts = <0 57 4>; + }; + + pwm: pwm@f0210000 { + compatible = "nvt,nvt_kdrv_pwm"; + reg = <0xf0210000 0x2000>; + interrupts = <0 26 4>; + }; + + adc@f0260000 { + compatible = "nvt,nvt_adc"; + reg = <0xf0260000 0x1000>; + interrupts = <0 47 4>; + #io-channel-cells = <1>; + }; + + rtc@f0060000 { + compatible = "nvt,nvt_rtc"; + reg = <0xf0060000 0x100>; + interrupts = <0 56 4>; + }; + + drtc@f00b0000 { + compatible = "nvt,nvt_drtc"; + reg = <0xf00b0000 0x100>; + }; + + crypto: crypto@f0620000 { + compatible = "nvt,nvt_crypto"; + reg = <0xf0620000 0x100>; + interrupts = <0 38 4>; + mclk = <1>; + }; + + hash: hash@f0670000 { + compatible = "nvt,nvt_hash"; + reg = <0xf0670000 0x100>; + interrupts = <0 28 4>; + mclk = <1>; + }; + + rsa: rsa@f06a0000 { + compatible = "nvt,nvt_rsa"; + reg = <0xf06a0000 0x100>; + interrupts = <0 20 4>; + mclk = <1>; + }; + + top: top@f0010000 { + compatible = "nvt,nvt_top"; + reg = <0xf0010000 0x2000 + 0xf0030000 0x2000 + 0xf0070000 0x10000>; + }; + + sie@f0c00000 { + compatible = "nvt,drv_sie"; + reg = <0xf0c00000 0x900 + 0xf0d20000 0x900 + 0xF0D30000 0x900>; + interrupts = <0 1 4 + 0 2 4 + 0 3 4>; + + }; + + tge@f0cc0000 { + compatible = "nvt,kdrv_tge"; + reg = <0xf0cc0000 0x150>; + interrupts = <0 22 4>; + }; + + rhe@f0ce0000 { + compatible = "nvt,kdrv_rhe"; + reg = <0xf0ce0000 0x900>; + interrupts = <0 13 4>; + }; + + ime@f0c40000 { + compatible = "nvt,kdrv_ime"; + reg = <0xf0c40000 0x1000>; + interrupts = <0 6 4>; + }; + + ife2@f0d00000 { + compatible = "nvt,kdrv_ife2"; + reg = <0xf0d00000 0x100>; + interrupts = <0 9 4>; + }; + + ise@f0c90000 { + compatible = "nvt,kdrv_ise"; + reg = <0xf0c90000 0x100>; + interrupts = <0 21 4 + 0 85 4>; + }; + + ipe@f0c30000 { + compatible = "nvt,kdrv_ipe"; + reg = <0xf0c30000 0x900>; + interrupts = <0 5 4>; + }; + + ife@f0c70000 { + compatible = "nvt,kdrv_ife"; + reg = <0xf0c70000 0x800>; + interrupts = <0 8 4>; + }; + + vpe@f0cd0000 { + compatible = "nvt,kdrv_vpe"; + reg = <0xf0cd0000 0x1040>; + interrupts = <0 62 4>; + }; + + ai@f0c60000 { + compatible = "nvt,kdrv_ai"; + reg = <0xf0c60000 0x23c + 0xf0d50000 0x114 + 0xf0cb0000 0x22c>; + interrupts = <0 14 4 + 0 13 4 + 0 11 4>; + clock-frequency = <600000000 480000000 600000000>; + }; + + md@f0c10000 { + compatible = "nvt,kdrv_md"; + reg = <0xf0c10000 0x150>; + interrupts = <0 46 4>; + clock-frequency = <240000000>; + }; + dis@f0c50000 { + compatible = "nvt,kdrv_dis"; + reg = <0xf0c50000 0x114>; + interrupts = <0 10 4>; + }; + + coe@f0a11000 { + compatible = "nvt,nvt_coe"; + reg = <0xf0a11000 0x2c0>; + }; + + dce@f0c20000 { + compatible = "nvt,kdrv_dce"; + reg = <0xf0c20000 0x650>; + interrupts = <0 7 4>; + }; + + ive@f0d70000 { + compatible = "nvt,kdrv_ive"; + reg = <0xf0d70000 0x6c>; + interrupts = <0 53 4>; + }; + + sde@f0d90000 { + compatible = "nvt,kdrv_sde"; + reg = <0xf0d90000 0x90>; + interrupts = <0 74 4>; + }; + + ide@f0800000 { + compatible = "nvt,nvt_ide"; + reg = <0xf0800000 0x1000>; + interrupts = <0 48 4>; + }; + + dsi@f0840000 { + compatible = "nvt,nvt_dsi"; + reg = <0xf0840000 0x1000>; + interrupts = <0 50 4>; + }; + + csi@f0280000 { + compatible = "nvt,nvt_csi"; + reg = <0xf0280000 0x100 + 0xf0330000 0x100>; + interrupts = <0 54 4 + 0 55 4>; + }; + + lvds@f0270000 { + compatible = "nvt,nvt_lvds"; + reg = <0xF0270000 0x200 + 0xF0370000 0x200>; + interrupts = <0 54 4 + 0 55 4>; + }; + + senphy@f06b0000 { + compatible = "nvt,nvt_senphy"; + reg = <0xF06B0000 0x100>; + }; + + ssenif@f0xx0000 { + compatible = "nvt,nvt_ssenif"; + reg = <0xF02C0000 0x2000>; + interrupts = <0 61 4>; + }; + + sif@f0240000 { + compatible = "nvt,nvt_sif"; + reg = <0xf0240000 0x200>; + interrupts = <0 40 4>; + clock-frequency = <1000000>; + }; + + graphic@f0c80000 { + compatible = "nvt,nvt_graphic"; + reg = <0xF0C80000 0x300 + 0xF0D10000 0x100>; + interrupts = <0 18 4 + 0 19 4>; + }; + + affine@f0ca0000 { + compatible = "nvt,nvt_affine"; + reg = <0xF0CA0000 0x100>; + interrupts = <0 52 4>; + }; + + h26x@f0a10000 { + compatible = "nvt,nvt_h26x"; + reg = <0xf0a10000 0xa00>; + interrupts = <0 16 4>; + power_saving = <0>; + }; + + timer@f0040000 { + compatible = "nvt,nvt_timer"; + reg = <0xf0040000 0x300>; + interrupts = <0 0 4>; + }; + + eac@f0640000 { + compatible = "nvt,nvt_eac"; + reg = <0xF0640000 0x200>; + }; + + jpg@f0a00000 { + compatible = "nvt,nvt_jpg"; + reg = <0xf0a00000 0x100>; + interrupts = <0 17 4>; + }; + + nvt_usb2host@f0600000 { + compatible = "nvt,ehci-nvtivot"; + reg = <0xf0600000 0x10000>; + interrupts = <0 27 4>; + }; + + nvt_usb2dev@f0600000 { + compatible = "nvt,fotg200_udc"; + reg = <0xf0600000 0x10000>; + interrupts = <0 27 4>; + }; + + nvt_usb_chrg@f0600000 { + compatible = "nvt,nvt_usb_chrgdet"; + reg = <0xf0600000 0x10000>; + }; + + dai@f0630000 { + compatible = "nvt,nvt_dai"; + reg = <0xF0630000 0xbc>; + interrupts = <0 15 4>; + }; + + rotate@f0cf0000 { + compatible = "nvt,nvt_rotation"; + reg = <0xF0CF0000 0x100>; + interrupts = <0 81 4>; + }; + + drvdump@0 { + compatible = "nvt,nvt_drvdump"; + }; + + dsp@f1430000 { + compatible = "nvt,nvt_dsp"; + reg = <0xF1430000 0x200 + 0xF2000000 0x1000000 + 0xF1440000 0x200 + 0xF3000000 0x1000000>; + interrupts = <0 76 4 + 0 77 4>; + }; + + spi0: spi@f0230000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0230000 0x10000>; + interrupts = <0 35 4>; + dma-support = <0>; + nvt-devname = <0>; + }; + + spi1: spi@f0320000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0320000 0x10000>; + interrupts = <0 36 4>; + dma-support = <0>; + nvt-devname = <1>; + }; + + spi2: spi@f0340000 { + compatible = "nvt,nvt_spi"; + reg = <0xf0340000 0x10000>; + interrupts = <0 37 4>; + dma-support = <0>; + nvt-devname = <2>; + }; + + sdp@f0390000 { + compatible = "nvt,nvt_sdp"; + reg = <0xf0390000 0x28>; + interrupts = <0 12 4>; + }; + + tse@f0650000 { + compatible = "nvt,nvt_tse"; + reg = <0xF0650000 0x90>; + interrupts = <0 23 4>; + }; + + remote@f0250000 { + compatible = "nvt,nvt_remote"; + reg = <0xf0250000 0x28>; + interrupts = <0 25 4>; + }; + + rng: rng@f0680000 { + compatible = "nvt,nvt_rng"; + reg = <0xf0680000 0x100>; + }; + + nvt_arb@f0000000 { + compatible = "nvt,nvt_arb"; + reg = <0xF0000000 0xA000 + 0xF0FE0000 0x300>; + interrupts = <0 33 4>; + }; + + nvt_otp@f0660000 { + compatible = "nvt,nvt_otp"; + reg = <0xF0660000 0x70>; + }; + + kdrv_ipp { + clock-frequency = <240000000>; + }; + + uvcp: uvcp@f0690000 { + compatible = "nvt,nvt_uvcp"; + reg = <0xf0690000 0x200>; + interrupts = <0 59 4>; + }; + pll_preset@0 { + pll3{pll_config = <3 0 0>;}; + pll4{pll_config = <4 0 0>;}; + pll5{pll_config = <5 297000000 1>;}; + pll6{pll_config = <6 0 0>;}; + pll7{pll_config = <7 0 0>;}; + pll8{pll_config = <8 0 0>;}; + pll9{pll_config = <9 0 0>;}; + pll11{pll_config = <11 0 0>;}; + pll12{pll_config = <12 0 1>;}; + }; +}; +# 11 "nvt-evb.dts" 2 +# 1 "nvt-top.dtsi" 1 +&top { + sdio{pinmux = <0x5>;}; + sdio2{pinmux = <0x5>;}; + sdio3{pinmux = <0x0>;}; + nand{pinmux = <0x5>;}; + sensor{pinmux = <0x0>;}; + sensor2{pinmux = <0x0>;}; + mipi_lvds{pinmux = <0x0>;}; + i2c{pinmux = <0x40>;}; + sif{pinmux = <0x0>;}; + uart{pinmux = <0x1021>;}; + spi{pinmux = <0x0>;}; + sdp{pinmux = <0x0>;}; + remote{pinmux = <0x0>;}; + pwm{pinmux = <0x8000>;}; + pwm2{pinmux = <0x000000>;}; + ccnt{pinmux = <0x0>;}; + audio{pinmux = <0x0>;}; + lcd{pinmux = <0x0>;}; + tv{pinmux = <0x0>;}; + eth{pinmux = <0x0>;}; + misc{pinmux = <0x0>;}; +}; +# 12 "nvt-evb.dts" 2 +# 1 "nvt-i2c.dtsi" 1 + + + + + + + +/ { + i2c0: i2c@f0220000 { compatible = "nvt,nvt_i2c"; reg = <0xf0220000 0x100>; interrupts = <0 41 4>; clock-frequency = <400000>; id = <0>; }; + i2c1: i2c2@f0350000 { compatible = "nvt,nvt_i2c"; reg = <0xf0350000 0x100>; interrupts = <0 42 4>; clock-frequency = <400000>; id = <1>; }; + i2c2: i2c3@f03a0000 { compatible = "nvt,nvt_i2c"; reg = <0xf03a0000 0x100>; interrupts = <0 60 4>; clock-frequency = <50000>; id = <2>; }; +}; +# 13 "nvt-evb.dts" 2 +# 1 "nvt-gpio.dtsi" 1 +&top { +# 201 "nvt-gpio.dtsi" + pgpio11{gpio_config = <(11 + 0x20) 1>;}; + + pgpio2{gpio_config = <(2 + 0x20) 1>;}; +}; +# 14 "nvt-evb.dts" 2 +# 1 "nvt-peri-dev.dtsi" 1 +# 11 "nvt-peri-dev.dtsi" +&i2c0 { + #address-cells = <1>; + #size-cells = <0>; + + + + + + +}; + +&i2c1 { + #address-cells = <1>; + #size-cells = <0>; +}; + +&i2c2 { + #address-cells = <1>; + #size-cells = <0>; +}; + +&spi0 { + status = "okay"; + #address-cells = <1>; + #size-cells = <0>; +# 44 "nvt-peri-dev.dtsi" +}; + +&spi1 { + status = "okay"; +}; + +&spi2 { + status = "okay"; +}; +# 15 "nvt-evb.dts" 2 +# 1 "nvt-audio.dtsi" 1 + + + + + + + +/ { + audio@1 { type = "none"; i2s_ctrl = <0>; sif_channel = <0>; gpio_cold_reset = <0>; gpio_data = <0>; gpio_clk = <0>; gpio_cs = <0>; adc_zero = <0>; }; + audio@2 { type = "embedded"; i2s_ctrl = <4>; sif_channel = <0>; gpio_cold_reset = <0>; gpio_data = <0>; gpio_clk = <0>; gpio_cs = <0>; adc_zero = <0>; }; +}; +# 16 "nvt-evb.dts" 2 +# 1 "nvt-display.dtsi" 1 + + + + + + + +# 1 "/home/payton/S530/BSP/linux-kernel/include/dt-bindings/pinctrl/nvt_lcd.h" 1 +# 9 "nvt-display.dtsi" 2 +# 25 "nvt-display.dtsi" +/ { + display { type = "lcd"; lcd_ctrl = <1>; sif_channel = <4>; gpio_cs = <(7 + 0x20)>; gpio_clk = <(8 + 0x20)>; gpio_data = <(9 + 0x20)>; }; + logo { enable = <1>; lcd_type = <5>; lcd_rotate = <270>; lcd_reset = <(1 + 0x60)>; lcd_bl_gpio = <(11 + 0x20) 1>; lcd_power = <(8 + 0x20) 1>;}; +}; +# 17 "nvt-evb.dts" 2 +# 1 "nvt-media.dtsi" 1 +# 10 "nvt-media.dtsi" +# 1 "nvt-basic.dtsi" 1 +# 11 "nvt-basic.dtsi" +/ { + model = "Novatek NA51089"; + compatible = "novatek,na51089", "nvt,ca9"; + interrupt-parent = <&gic>; + #address-cells = <1>; + #size-cells = <1>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu0: cpu@0 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + reg = <0x0>; + next-level-cache = <&L2>; + clock-frequency = <960000000>; + }; + }; + + cg@f0020000 { + compatible = "nvt,core_clk"; + reg = <0xf0020000 0x1000>; + }; + + + periph_clk: periph_clk { + compatible = "nvt,periph_clk"; + #clock-cells = <0>; + clock-output-names = "periph_clk"; + }; + + global_timer@ffd00200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0xffd00200 0x20>; + interrupts = <1 11 0xf01>; + clocks = <&periph_clk>; + }; + + private_timer@ffd00600 { + compatible = "arm,cortex-a9-twd-timer"; + reg = <0xffd00600 0x20>; + interrupts = <1 13 0xf01>; + clocks = <&periph_clk>; + }; + + pmu { + compatible = "arm,cortex-a9-pmu"; + interrupts = <0 112 4>; + interrupt-affinity = <&cpu0>; + }; + + L2: cache-controller@ffe00000 { + compatible = "arm,pl310-cache"; + reg = <0xffe00000 0x1000>; + interrupts = <0 96 4>; + cache-unified; + arm,shared-override; + cache-level = <2>; + arm,data-latency = <2 2 2>; + arm,tag-latency = <2 2 2>; + }; + + gic: interrupt-controller@0xffd00000 { + compatible = "arm,cortex-a9-gic"; + #interrupt-cells = <3>; + interrupt-controller; + reg = <0xffd01000 0x1000>, + <0xffd00100 0x1000>; + }; + + scu: snoop-control-unit@0xffd00000 { + compatible = "arm,cortex-a9-scu"; + reg = <0xffd00000 0x100>; + }; +}; +# 11 "nvt-media.dtsi" 2 + +/ { + nvtmpp { + compatible = "nvt,nvtmpp"; + }; + + isf_stream { + compatible = "nvt,isf_stream"; + }; + + isf_flow { + compatible = "nvt,isf_flow"; + }; + + isf_vdocap { + compatible = "nvt,isf_vdocap"; + }; + + isf_vdoprc { + compatible = "nvt,isf_vdoprc"; + }; + + isf_dummy { + compatible = "nvt,isf_dummy"; + }; + + isf_vdoenc { + compatible = "nvt,isf_vdoenc"; + }; + + isf_vdodec { + compatible = "nvt,isf_vdodec"; + }; + + isf_vdoout { + compatible = "nvt,isf_vdoout"; + }; + + dispobj { + compatible = "nvt,nvt_dispobj"; + }; + + dispdev { + compatible = "nvt,nvt_dispdev"; + }; + + audio { + compatible = "nvt,nvt_audio"; + }; + + msdcnvt { + compatible = "nvt,msdcnvt"; + }; + + msdcnvt_adj { + compatible = "nvt,msdcnvt_adj"; + }; + + msdcnvt_custom_si { + compatible = "nvt,msdcnvt_custom_si"; + }; + + wavstudio { + compatible = "nvt,wavstudio"; + }; + + isf_audenc { + compatible = "nvt,isf_audenc"; + }; + + isf_auddec { + compatible = "nvt,isf_auddec"; + }; + + isf_audcap { + compatible = "nvt,isf_audcap"; + }; + + isf_audout { + compatible = "nvt,isf_audout"; + }; + + nvt_ipc { + compatible = "nvt,nvt_ipc"; + }; +}; +# 18 "nvt-evb.dts" 2 +# 1 "nvt-mem-tbl.dtsi" 1 + + + + + + +/ { + + nvt_memory_cfg { + #address-cells = <1>; + #size-cells = <1>; + dram { reg = <0x00000000 0x08000000>; }; + shmem{ reg = <0x00007E00 0x00000200>; }; + loader { reg = <0x01000000 0x00080000>; }; + fdt { reg = <0x01800000 0x00040000>; }; + rtos { reg = <0x01840000 0x00FC0000>; }; + linuxtmp{ reg = <0x02800000 0x04000000>; }; + uboot{ reg = <0x06800000 0x01640000>; }; + logo-fb{ reg = <0x07E40000 0x001C0000>; }; + }; + + + memory { device_type = "memory"; reg = <0x00000000 0x01800000 0x02000000 0x01600000>; }; + + + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + }; + + + + + + + libc-heap { size = <0x00200000>; }; + + hdal-memory { + #address-cells = <1>; + #size-cells = <1>; + media { reg = <0x03600000 0x04A00000>; }; + }; + + hdal-maxpath-cfg { + + vdocap_active_list = <1 0 0 0 0 0 0 0>; + vdoprc_maxdevice = <2>; + vdoenc_maxpath = <4>; + vdodec_maxpath = <3>; + vdoout_maxdevice = <1>; + adocap_maxdevice = <1>; + adoout_maxdevice = <2>; + adoenc_maxpath = <1>; + adodec_maxpath = <1>; + + gfx_maxjob = <2>; + + stamp_maximg = <9>; + + vdoprc_maxstamp = <4 4>; + + vdoprc_maxmask = <4 4>; + vdoenc_maxstamp = <9 9>; + vdoenc_maxmask = <0 64>; + vdoout_maxstamp = <0 16>; + vdoout_maxmask = <0 64>; + }; +}; +# 19 "nvt-evb.dts" 2 +# 1 "nvt-storage-partition.dtsi" 1 + + + + + + + +&nor { + partition_loader { label = "loader"; reg = <0x0 0x0000000 0x0 0x10000>; }; + partition_fdt { label = "fdt"; reg = <0x0 0x10000 0x0 0x10000>; }; + partition_fdt.restore { label = "fdt.restore"; reg = <0x0 0x20000 0x0 0x10000>; }; + partition_fdt.app { label = "fdt.app"; reg = <0x0 0x30000 0x0 0x20000>; }; + partition_uboot { label = "uboot"; reg = <0x0 0x50000 0x0 0xA0000>; }; + partition_uenv { label = "uenv"; reg = <0x0 0xF0000 0x0 0x10000>; }; + partition_kernel { label = "kernel"; reg = <0x0 0x100000 0x0 0x290000>; }; + partition_rootfs { label = "rootfs"; reg = <0x0 0x390000 0x0 0x3E0000>; }; + partition_rootfs1 { label = "rootfs1"; reg = <0x0 0x770000 0x0 0xB00000>; }; + partition_rtos { label = "rtos"; reg = <0x0 0x1270000 0x0 0x900000>; }; + partition_app { label = "app"; reg = <0x0 0x1B70000 0x0 0x50000>; }; + partition_sys { label = "sys"; reg = <0x0 0x1CC0000 0x0 0x10000>; }; + partition_all { label = "all"; reg = <0x0 0x0000000 0x0 0x2000000>; }; +}; +# 20 "nvt-evb.dts" 2 +# 1 "nvt-info.dtsi" 1 + + + + + + + +/ { + nvt_info { + BIN_NAME = "FW98565A"; + BIN_NAME_T = "FW98565T"; + RTOS_APP_MAIN = "cardv"; + + EMBMEM_BLK_SIZE = "0x10000"; +# 24 "nvt-info.dtsi" + EMBMEM = "EMBMEM_SPI_NOR"; +# 34 "nvt-info.dtsi" + FW_TYPE = "FW_TYPE_PARTIAL"; + + + + + + UI_STYLE = "UI_STYLE_LVGL"; + + + + + + NVT_CFG_APP_EXTERNAL = "hostapd wireless_tool iperf-3 wpa_supplicant dhd_priv"; + + NVT_CFG_APP = "mem cardv memcpy isp_demon sf_app"; + + NVT_ROOTFS_ETC = ""; + + NVT_BINARY_FILE_STRIP = "yes"; + + NVT_CFG_KERNEL_CFG = "na51089_evb_cardv_defconfig_release"; + + NVT_MAKE_POST = "make_post.sh"; + + NVT_SAMPLES_INSTALL = "DISABLE"; + + NVT_CFG_UBOOT_CFG = ""; + + + + + + + + NVT_LINUX_SMP = "NVT_LINUX_SMP_OFF"; + + + + + + + + NVT_CHIP_ID = "CHIP_NA51089"; + + + + + + + + NVT_LINUX_COMPRESS = "NVT_LINUX_COMPRESS_GZ"; + + + + + + + + NVT_DEFAULT_NETWORK_BOOT_PROTOCOL = "NVT_DEFAULT_NETWORK_BOOT_PROTOCOL_STATIC_IP"; +# 103 "nvt-info.dtsi" + NVT_ROOTFS_TYPE = "NVT_ROOTFS_TYPE_RAMDISK"; +# 113 "nvt-info.dtsi" + LCD1 = "disp_if8b_lcd1_psd200_st7789v"; +# 126 "nvt-info.dtsi" + SENSOR1 = "sen_os05b10"; + SENSOR1_CFG = "sen_os05b10_565"; + SENSOR2 = "sen_off"; + SENSOR2_CFG = "sen_off"; + + + + + + NVT_ROOTFS_RW_PART_EN = "NVT_ROOTFS_RW_PART_EN_ON"; + + + + + + + NVT_ETHERNET = "NVT_ETHERNET_NONE"; +# 151 "nvt-info.dtsi" + NVT_SDIO_WIFI = "NVT_SDIO_WIFI_RTK"; + + + + + + NVT_USB_WIFI = "NVT_USB_WIFI_NONE"; + + + + + + NVT_USB_4G = "NVT_USB_4G_NONE"; + + + + + + + WIFI_RTK_MDL = "WIFI_RTK_MDL_8189"; + + + + + + + + WIFI_BRCM_MDL = "WIFI_BRCM_MDL_43456c5_ampk6256c5"; + + + + + + + WIFI_NVT_MDL = "WIFI_NVT_MDL_18211"; + + + + + + + NVT_CURL_SSL = "NVT_CURL_SSL_OPENSSL"; +# 201 "nvt-info.dtsi" + NVT_UBOOT_ENV_IN_STORG_SUPPORT = "NVT_UBOOT_ENV_IN_STORG_SUPPORT_OFF"; + + + + + + + TOUCH = "TOUCH_OFF"; + + + + + + + UBOOT_ONLY_LOAD_LINUX = "UBOOT_ONLY_LOAD_LINUX_ON"; + + }; +}; +# 21 "nvt-evb.dts" 2 +# 1 "nvt-nvtpack.dtsi" 1 + + + + + + + +&nor { + + + + + nvtpack { + ver = "NVTPACK_FW_INI_16072017"; + method = <1>; + index { + id0 { partition_name = "loader"; source_file = ""; }; + id1 { partition_name = "fdt"; source_file = "nvt-evb.bin"; }; + id2 { partition_name = "fdt.restore"; source_file = ""; }; + id3 { partition_name = "fdt.app"; source_file = "../application.bin"; }; + id4 { partition_name = "uboot"; source_file = "u-boot.bin"; }; + id5 { partition_name = "uenv"; source_file = ""; }; + id6 { partition_name = "kernel"; source_file = "uImage.bin"; }; + id7 { partition_name = "rootfs"; source_file = "rootfs.ramdisk.bin"; }; + id8 { partition_name = "rootfs1"; source_file = "rootfs_1.squash.bin"; }; + id9 { partition_name = "rtos"; source_file = "../rtos-main.bin"; }; + id10 { partition_name = "app"; source_file = "appfs.cardv.jffs2.nor.bin"; }; + id11 { partition_name = "sys"; source_file = ""; }; + }; + }; +}; +# 21 "nvt-evb.dts" 2 diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-storage-partition.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-storage-partition.dtsi index 80a650d0c..00445acc7 100755 --- a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-storage-partition.dtsi +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S530/nvt-storage-partition.dtsi @@ -14,9 +14,9 @@ partition_uenv { label = "uenv"; reg = <0x0 0xF0000 0x0 0x10000>; }; partition_kernel { label = "kernel"; reg = <0x0 0x100000 0x0 0x290000>; }; partition_rootfs { label = "rootfs"; reg = <0x0 0x390000 0x0 0x3E0000>; }; - partition_rootfs1 { label = "rootfs1"; reg = <0x0 0x770000 0x0 0xA00000>; }; - partition_rtos { label = "rtos"; reg = <0x0 0x1170000 0x0 0x900000>; }; - partition_app { label = "app"; reg = <0x0 0x1A70000 0x0 0x50000>; }; /* app size depneds on hdal/samples/vendor_cfg/Makeile: ROOTFS_UBI_MAX_LEB_COUNT */ - partition_sys { label = "sys"; reg = <0x0 0x1AC0000 0x0 0x10000>; }; + partition_rootfs1 { label = "rootfs1"; reg = <0x0 0x770000 0x0 0xB00000>; }; + partition_rtos { label = "rtos"; reg = <0x0 0x1270000 0x0 0x900000>; }; + partition_app { label = "app"; reg = <0x0 0x1B70000 0x0 0x50000>; }; /* app size depneds on hdal/samples/vendor_cfg/Makeile: ROOTFS_UBI_MAX_LEB_COUNT */ + partition_sys { label = "sys"; reg = <0x0 0x1CC0000 0x0 0x10000>; }; partition_all { label = "all"; reg = <0x0 0x0000000 0x0 0x2000000>; }; }; diff --git a/rtos/build/nvt-tools/__pycache__/pyfdt.cpython-36.pyc b/rtos/build/nvt-tools/__pycache__/pyfdt.cpython-36.pyc index e8ee6ac4f..7613ec1d9 100644 Binary files a/rtos/build/nvt-tools/__pycache__/pyfdt.cpython-36.pyc and b/rtos/build/nvt-tools/__pycache__/pyfdt.cpython-36.pyc differ diff --git a/rtos/code/.vscode/c_cpp_properties.json b/rtos/code/.vscode/c_cpp_properties.json new file mode 100644 index 000000000..71244df5f --- /dev/null +++ b/rtos/code/.vscode/c_cpp_properties.json @@ -0,0 +1,16 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/**" + ], + "defines": ["_MODEL_565_HUNTING_EVB_LINUX_4G_S530_","_EMBMEM_SPI_NOR_"], + "compilerPath": "/usr/bin/gcc", + "cStandard": "c11", + "cppStandard": "gnu++14", + "intelliSenseMode": "linux-gcc-x64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxHunting.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxHunting.c index 519246e35..46668e4f1 100755 --- a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxHunting.c +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxHunting.c @@ -136,6 +136,7 @@ UINT32 DrvGPIO_GetPhotoMovieModeFromMonitor(void) static BOOL first_entry = TRUE; int ret = 1; UINT8 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); if(first_entry == TRUE){ @@ -176,12 +177,12 @@ UINT32 DrvGPIO_GetPhotoMovieModeFromMonitor(void) default: - printf("%s:%d CamMode:%lu\n", __FUNCTION__, __LINE__,SysGetFlag(CamMode)); - if(SF_CAM_MODE_PHOTO == SysGetFlag(CamMode)) + printf("%s:%d CamMode:%lu\n", __FUNCTION__, __LINE__,puiPara->CamMode); + if(SF_CAM_MODE_PHOTO == puiPara->CamMode) { g_uiBootMode = DX_HUNTING_MODE_PHOTO; } - else if(SF_CAM_MODE_VIDEO == SysGetFlag(CamMode)) + else if(SF_CAM_MODE_VIDEO == puiPara->CamMode) { g_uiBootMode = DX_HUNTING_MODE_MOVIE; } @@ -394,7 +395,6 @@ void sf_ir_cut_ctrl_PowerOff(void) void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo) { printf("[%s:%d]s mode:%d,flashLed:%d,isSnapVideo:%d\n",__FUNCTION__,__LINE__,mode,flashLed, isSnapVideo); - PWM_CFG pwm_cfg = { .ui_prd = 100, .ui_rise = 0, @@ -418,7 +418,7 @@ void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo { if(flashLed == 0) { - ui_rise = 25;//75% + ui_rise = 30;//70% } else { @@ -429,7 +429,7 @@ void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo { if(flashLed == 0) { - ui_rise = 10;//90% + ui_rise = 15;//85% } else { @@ -465,6 +465,7 @@ void sf_ir_led_set(UINT8 mode, UINT8 flashLed, UINT8 stillExp, UINT8 isSnapVideo pwm_cfg.ui_rise = ui_rise; + pwm_pwm_config_clock_div(PWM0_3_CLKDIV, 14);//pwm clk = 120M/clk div+1/period pwm_pwm_config(IRLED_PWMID, &pwm_cfg); pwm_pwm_enable(IRLED_PWMID); diff --git a/rtos/code/application/source/cardv/SrcCode/FastFlow/flow_preview.c b/rtos/code/application/source/cardv/SrcCode/FastFlow/flow_preview.c old mode 100755 new mode 100644 index a2e12635f..82300decb --- a/rtos/code/application/source/cardv/SrcCode/FastFlow/flow_preview.c +++ b/rtos/code/application/source/cardv/SrcCode/FastFlow/flow_preview.c @@ -26,6 +26,7 @@ #if HUNTING_CAMERA_MCU == ENABLE #include #endif +//#include "flow_boot_logo.h" /////////////////////////////////////////////////////////////////////////////// //header @@ -185,6 +186,13 @@ static HD_RESULT flowpreview_mem_relayout(void) mem_cfg.pool_info[5].blk_cnt = 1; mem_cfg.pool_info[5].ddr_id = DDR_ID0; +#if 0//(_PACKAGE_BOOTLOGO_) + mem_cfg.pool_info[6].type = HD_COMMON_MEM_COMMON_POOL; + mem_cfg.pool_info[6].blk_size = DBGINFO_BUFSIZE() + ((BOOT_LOGO_LCD_WIDTH * BOOT_LOGO_LCD_HEIGHT * 3) / 2); + mem_cfg.pool_info[6].blk_cnt = 2; + mem_cfg.pool_info[6].ddr_id = DDR_ID0; +#endif + ret = vendor_common_mem_relayout(&mem_cfg); return ret; } @@ -841,7 +849,7 @@ int flow_preview(void) } #if HUNTING_CAMERA_MCU == ENABLE - if(sf_is_night_mode(0) !=TRUE) + if(sf_is_night_mode(1) !=TRUE) { DrvGOIO_Turn_Onoff_IRCUT(1); } @@ -1020,10 +1028,15 @@ void flow_preview_close_module(void) DBG_ERR("vprc close failed, hd_ret = %d\r\n", hd_ret); } +#if HUNTING_PHOTO_FAST_AE_60_FPS == ENABLE + +#else hd_ret = hd_videocap_unbind(HD_VIDEOCAP_0_OUT_0); if (hd_ret != HD_OK) { DBG_ERR("vcap unbind failed, hd_ret = %d\r\n", hd_ret); } +#endif + } void flow_preview_uninit_module(void) @@ -1066,11 +1079,11 @@ static UINT32 ae_adc_tbl[57][3] = { {813, 8333, 1280}, {809, 8333, 2380}, {799, 16666, 4300}, - {787, 16666, 4300},//6390}, - {735, 16666, 4300},// 7990}, - {686, 16666, 6390},//8460}, - {652, 16666, 6390},//9530}, - {613, 16666, 7990},//10690}, + {787, 16666, 6390}, + {735, 16666, 7990}, + {686, 16666, 8460}, + {652, 16666, 9530}, + {613, 16666, 10690}, {576, 16666, 2310},//night {541, 16666, 2310}, {509, 16666, 2310}, @@ -1080,26 +1093,27 @@ static UINT32 ae_adc_tbl[57][3] = { {399, 16666, 2310}, {363, 16666, 2310}, {322, 16666, 2310},// 12190}, - {288, 33333, 4300},// 26600}, - {246, 33333, 4300}, //45770}, - {216, 33333, 4300}, - {188, 33333, 4300}, - {162, 33333, 4300}, - {151, 33333, 5300}, - {138, 33333, 5300}, - {118, 33333, 5300}, - {96, 33333, 5300}, - {80, 33333, 5300}, - {62, 33333, 5300}, - {48, 33333, 5300}, - {35, 33333, 2000}, + {288, 16666, 2310},// 26600}, + {246, 16666, 2310}, //45770}, + {216, 16666, 2310}, + {188, 16666, 1000}, + {162, 16666, 1000}, + {151, 16666, 1000}, + {138, 16666, 1000}, + {118, 16666, 1000}, + {96, 16666, 1280}, + {80, 16666, 2000}, + {62, 16666, 2000}, + {48, 20000, 2000}, + {35, 20000, 2000}, {26, 33333, 1100}, {19, 33333, 1100}, {13, 33333, 1100}, {10, 33333, 1100}, {8, 33333, 2100}, {4, 33333, 3100}, - {2, 33333, 3000}, + {2, 33333, 3400}, + //{1, 33333, 3500}, {0, 33333, 4000}, #else // 1K RSS @@ -1163,14 +1177,14 @@ static UINT32 ae_adc_tbl[57][3] = { #endif }; + void ae_adc_get_exp_photo(UINT16 adc_value, UINT32 *exptime, UINT32 *isogain) { UINT32 idx0=0, idx1=0; - UINT32 exptime0, isogain0; - //UINT32 exptime1, isogain1; - //UINT32 adc_ev, ev0, ev1; + UINT32 exptime0, exptime1, isogain0, isogain1; + UINT32 adc_ev, ev0, ev1; - for(idx1=1; idx1<57; idx1++) { + for(idx1=1; idx1<56; idx1++) { //if(adc_value > ae_adc_tbl[idx1][0]) if(adc_value>=ae_adc_tbl[idx1][0]) { @@ -1186,16 +1200,23 @@ void ae_adc_get_exp_photo(UINT16 adc_value, UINT32 *exptime, UINT32 *isogain) exptime0 = ae_adc_tbl[idx0][1]; isogain0 = (ae_adc_tbl[idx0][2]); - //exptime1 = ae_adc_tbl[idx1][1]; - //isogain1 = (ae_adc_tbl[idx1][2]); - ///ev0 = (exptime0 * isogain0); - //ev1 = (exptime1 * isogain1); + exptime1 = ae_adc_tbl[idx1][1]; + isogain1 = (ae_adc_tbl[idx1][2]); + ev0 = (exptime0 * isogain0); + ev1 = (exptime1 * isogain1); - //adc_ev = ((ev1 - ev0) * (adc_value - ae_adc_tbl[idx1][0]))/(ae_adc_tbl[idx0][0] - ae_adc_tbl[idx1][0]) + ev0; + //adc_ev = ((ev1 - ev0) * (ae_adc_tbl[idx1][0]-adc_value))/(ae_adc_tbl[idx1][0]-ae_adc_tbl[idx0][0]) + ev0; + adc_ev = ((ev1 - ev0) * (adc_value - ae_adc_tbl[idx1][0]))/(ae_adc_tbl[idx0][0] - ae_adc_tbl[idx1][0]) + ev0; - *exptime = exptime0; - *isogain = isogain0;//(adc_ev / exptime0); + if(adc_value>200) + { + *exptime = exptime0; + *isogain = (adc_ev / exptime0); + }else{ + *exptime = 16666; + *isogain = 7000; } + } DBG_WRN("idx = %d, %d, adc = %d, fast open preset exp = %d, %d\r\n", idx0, idx1, adc_value, *exptime, *isogain); } diff --git a/rtos/code/application/source/cardv/SrcCode/Gx/GxPower/sf_battery.c b/rtos/code/application/source/cardv/SrcCode/Gx/GxPower/sf_battery.c old mode 100755 new mode 100644 index 815f65bbe..d84744e9e --- a/rtos/code/application/source/cardv/SrcCode/Gx/GxPower/sf_battery.c +++ b/rtos/code/application/source/cardv/SrcCode/Gx/GxPower/sf_battery.c @@ -35,6 +35,7 @@ #include #include "PrjInc.h" #include "IOCfg.h" +#include "DxHunting.h" /* #include "NvtUser/NvtUser.h" #include "AppControl/AppControl.h" @@ -80,7 +81,7 @@ UINT32 sf_battery_voltage_convert(UINT32 resistanceGnd, UINT32 resistanceVin, UI SARADC reference voltage:1.8V */ - volt = 25 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 511; + volt = 25 * adcVal * (resistanceGnd + resistanceVin) / resistanceGnd / 512; return volt; } @@ -89,7 +90,7 @@ UINT32 sf_battery_convert_to_adc(UINT32 resistanceGnd, UINT32 resistanceVin, UIN { UINT32 adcVal = 0; - adcVal = volt * resistanceGnd * 511 / 25 / (resistanceGnd + resistanceVin); + adcVal = volt * resistanceGnd * 512 / 25 / (resistanceGnd + resistanceVin); return adcVal; } @@ -193,11 +194,11 @@ UINT32 sf_battery_adc_value_get_once(void) if(sf_adc_value_get(SF_ADC_DC, &batAdc) == SUCCESS) { - _DcVoltageVal = sf_battery_voltage_convert(33, 100, batAdc); + _DcVoltageVal = sf_battery_voltage_convert(10, 100, batAdc); - if(sf_adc_value_get(SF_ADC_LI, &batAdc) == SUCCESS) + if(sf_adc_value_get(SF_ADC_LI, &batAdc) == SUCCESS) { - _LiPolymerVoltageVal = sf_battery_voltage_convert(33, 100, batAdc); + _LiPolymerVoltageVal = sf_battery_voltage_convert(15, 100, batAdc); if(_LiPolymerVoltageVal > SF_LI_IN_VOLATAGE) { @@ -206,29 +207,30 @@ UINT32 sf_battery_adc_value_get_once(void) } else { - _LiPolymerVoltageVal = 0; - - if(sf_adc_value_get(SF_ADC_BATT, &batAdc) == SUCCESS) - { - _BatVoltageVal = sf_battery_voltage_convert(33, 100, batAdc); - _BatVoltageVal += 1; - - getBatAdcFlg = 0; - return SUCCESS; - } - else - { - getBatAdcFlg = 0; - printf("%s:%d [ERR] failed !!!\n", __FUNCTION__, __LINE__); - return FAIL; - } + if(sf_adc_value_get(SF_ADC_BATT, &batAdc) == SUCCESS) + { + _BatVoltageVal = sf_battery_voltage_convert(15, 100, batAdc); + //_BatVoltageVal += 1; + + getBatAdcFlg = 0; + return SUCCESS; + } + else + { + getBatAdcFlg = 0; + printf("%s:%d [ERR] failed !!!\n", __FUNCTION__, __LINE__); + return FAIL; + } } } - else - { - getBatAdcFlg = 0; - return FAIL; - } + else + { + getBatAdcFlg = 0; + printf("%s:%d [ERR] failed !!!\n", __FUNCTION__, __LINE__); + return FAIL; + } + + } else { @@ -238,6 +240,48 @@ UINT32 sf_battery_adc_value_get_once(void) } } +#if HW_S530 + +/************************************************* + Function: sf_battery_level_update + Description: Get battery Voltage with Level. + Input: N/A + Output: N/A + Return: N/A + Others: N/A +*************************************************/ +void sf_battery_level_update(void) +{ + UINT8 batteryVal = 0; + UINT8 batteryLevel = SF_BATT_LEVEL_0; + + batteryVal = sf_battery_value_get(sf_get_night_led_flag()); + + if(batteryVal >= 70) + { + batteryLevel = SF_BATT_LEVEL_4; + } + else if(batteryVal >= 40) + { + batteryLevel = SF_BATT_LEVEL_3; + } + else if(batteryVal >= 20) + { + batteryLevel = SF_BATT_LEVEL_2; + } + else if(batteryVal >= 1) + { + batteryLevel = SF_BATT_LEVEL_1; + } + else + { + batteryLevel = SF_BATT_LEVEL_0; + } + sf_LatestBattLevel = batteryLevel; +} + + +#else /************************************************* Function: sf_battery_level_update Description: Get battery Voltage with Level. @@ -251,7 +295,7 @@ void sf_battery_level_update(void) UINT8 batteryVal = 0; UINT8 batteryLevel = SF_BATT_LEVEL_0; - if(IsNightLedOn) + if(sf_get_night_led_flag()) { return; } @@ -354,7 +398,7 @@ void sf_battery_level_update(void) printf("battery levle=%d\n", sf_LatestBattLevel); } } - +#endif /************************************************* Function: sf_check_low_battery Description: check is low battery in auto mode. @@ -366,6 +410,7 @@ BOOL sf_check_low_battery(void) { UINT8 lowCompareVal = 0; BOOL ret = FALSE; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); if(sf_is_usb_flag()) { @@ -374,24 +419,24 @@ BOOL sf_check_low_battery(void) sf_battery_level_update(); - if(IsNightLedOn) + if(sf_get_night_led_flag()) { - if(SysGetFlag(BatteryType) == SF_BATT_ALKALINE) + if(puiPara->BatteryType == SF_BATT_ALKALINE) { lowCompareVal = 69; } - else if(SysGetFlag(BatteryType) == SF_BATT_NI_MH) + else if(puiPara->BatteryType == SF_BATT_NI_MH) { lowCompareVal = 71; } } else { - if(SysGetFlag(BatteryType) == SF_BATT_ALKALINE) + if(puiPara->BatteryType == SF_BATT_ALKALINE) { lowCompareVal = 80; } - else if(SysGetFlag(BatteryType) == SF_BATT_NI_MH) + else if(puiPara->BatteryType == SF_BATT_NI_MH) { lowCompareVal = 80; } @@ -422,7 +467,7 @@ BOOL sf_check_low_battery(void) Return: SUCCESS/FAIL Others: N/A *******************************************************/ -SINT32 sf_battery_adc_value_get(void) +signed int sf_battery_adc_value_get(void) { UINT8 readBatCnt = 0; @@ -430,6 +475,7 @@ SINT32 sf_battery_adc_value_get(void) UINT32 batTemp = 0; UINT32 dcValueList[12] = { 0 }; UINT32 batValueList[12] = { 0 }; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); SINT32 ret = FAIL; @@ -444,7 +490,7 @@ SINT32 sf_battery_adc_value_get(void) { dcValueList[readBatCnt] = _DcVoltageVal; - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { printf("%s:%d [%d]DC ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(10, 100, dcValueList[readBatCnt]), dcValueList[readBatCnt], dcValueList[readBatCnt] / 10, dcValueList[readBatCnt] % 10); @@ -454,7 +500,7 @@ SINT32 sf_battery_adc_value_get(void) { batValueList[readBatCnt] = _LiPolymerVoltageVal; - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { printf("%s:%d [%d]Li Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(15, 100, batValueList[readBatCnt]), batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10); @@ -464,9 +510,9 @@ SINT32 sf_battery_adc_value_get(void) { batValueList[readBatCnt] = _BatVoltageVal; - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { - printf("%s:%d [%d]Other Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(12, 100, batValueList[readBatCnt]), + printf("%s:%d [%d]Other Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(15, 100, batValueList[readBatCnt]), batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10); } } @@ -498,7 +544,7 @@ SINT32 sf_battery_adc_value_get(void) IsPowerDcIn = 0; } - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { printf("\n[max]DC,After Convert:(%d.%dV),Is Dc In=%s\n", DcVoltageVal / 10, DcVoltageVal % 10, IsPowerDcIn == 1? "Yes" : "No"); @@ -574,6 +620,7 @@ void sf_battery_level_polling(void) UINT32 batTemp = 0; UINT32 dcValueList[12] = { 0 }; UINT32 batValueList[12] = { 0 }; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); signed int ret = FALSE; @@ -585,9 +632,9 @@ void sf_battery_level_polling(void) { dcValueList[readBatCnt] = _DcVoltageVal; - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { - printf("%s:%d [%d]DC ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(33, 100, dcValueList[readBatCnt]), + printf("%s:%d [%d]DC ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(10, 130, dcValueList[readBatCnt]), dcValueList[readBatCnt], dcValueList[readBatCnt] / 10, dcValueList[readBatCnt] % 10); } @@ -595,9 +642,9 @@ void sf_battery_level_polling(void) { batValueList[readBatCnt] = _LiPolymerVoltageVal; - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { - printf("%s:%d [%d]Li Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(33, 100, batValueList[readBatCnt]), + printf("%s:%d [%d]Li Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(15, 130, batValueList[readBatCnt]), batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10); } } @@ -605,9 +652,9 @@ void sf_battery_level_polling(void) { batValueList[readBatCnt] = _BatVoltageVal; - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { - printf("%s:%d [%d]Other Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(12, 100, batValueList[readBatCnt]), + printf("%s:%d [%d]Other Battery ADC Value=%d,After Convert:%d(%d.%dV)\n", __FUNCTION__, __LINE__, readBatCnt + 1, sf_battery_convert_to_adc(15, 130, batValueList[readBatCnt]), batValueList[readBatCnt], batValueList[readBatCnt] / 10, batValueList[readBatCnt] % 10); } } @@ -643,7 +690,7 @@ void sf_battery_level_polling(void) IsPowerDcIn = 0; } - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { printf("\n[average]DC,After Convert:(%d.%dV),Is Dc In=%s\n", DcVoltageVal / 10, DcVoltageVal % 10, IsPowerDcIn == 1? "Yes" : "No"); @@ -659,26 +706,31 @@ void sf_battery_level_polling(void) } } } + + sf_battery_level_update(); ret = sf_check_low_battery(); - if(SysGetFlag(BatteryLogSwitch)) + if(puiPara->BatteryLogSwitch) { printf("[%s:%d]batTempLevel=%d,sf_LatestBattLevel=%d\n", __FUNCTION__, __LINE__, batTempLevel, sf_LatestBattLevel); } if(batTempLevel != sf_LatestBattLevel) { - //sp5kHostMsgSend(APP_UI_MSG_TRANSFER_REFLUSH, 0, 0, 0); batTempLevel = sf_LatestBattLevel; } if(ret == TRUE) { - if(IsNightLedOn) + if(sf_get_night_led_flag()) { - //sf_ir_led_set(0, 0, 0); + sf_ir_led_set(0, 0, 0, 0); } + + //the Module not need sleep. + //gModuleSleep = 0; + sf_set_module_sleep_flag(0); if(battEmpty == 0) { @@ -687,6 +739,12 @@ void sf_battery_level_polling(void) //Ux_PostEvent(NVTEVT_SYSTEM_SHUTDOWN, 1, APP_POWER_OFF_BATT_EMPTY); //shutdown start } } + else if(sf_LatestBattLevel == SF_BATT_LEVEL_1) + { + } + else + { + } } THREAD_RETTYPE sf_battery_check_thread(void *arg) { @@ -741,4 +799,255 @@ UINT32 sf_battery_level_get(void) return (UINT32)sf_LatestBattLevel; } + +/************************************************* + Function: sf_battery_value_get + Description: get battery value x% + Input: nightMode or no + Output: N/A + Return: battery value x% + Others: N/A +*************************************************/ +UINT8 sf_battery_value_get(UINT8 nightMode) +{ + UINT8 value = 0; + UINT8 batteryVal = 0; + + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + if(IsPowerDcIn == 0) + { + //printf("BatMedian:%d\n", BatMedian); + if(LiPolymerVoltageVal) + { + batteryVal = LiPolymerVoltageVal; + + if(batteryVal < 65) + { + if(nightMode && (batteryVal >= 43)) + value = 1; + else + value = 0; + } + else if(batteryVal < 71) + { + value = 1; + } + else if(batteryVal < 72) + { + value = 10; + } + else if(batteryVal < 73) + { + value = 20; + } + else if(batteryVal < 74) + { + value = 30; + } + else if(batteryVal < 75) + { + value = 40; + } + else if(batteryVal < 76) + { + value = 50; + } + else if(batteryVal < 77) + { + value = 60; + } + else if(batteryVal < 78) + { + value = 70; + } + else if(batteryVal < 79) + { + value = 80; + } + else if(batteryVal < 81) + { + value = 90; + } + else + { + value = 100; + } + } + else + { + batteryVal = BatVoltageVal; + + if(puiPara->BatteryType == SF_BATT_ALKALINE) //ALK + { + if(batteryVal < 62) + { + if(nightMode && (batteryVal >= 43)) + value = 1; + else + value = 0; + } + else if(batteryVal < 65) + { + value = 1; + } + else if(batteryVal < 69) + { + value = 10; + } + else if(batteryVal < 71) + { + value = 20; + } + else if(batteryVal < 72) + { + value = 30; + } + else if(batteryVal < 73) + { + value = 40; + } + else if(batteryVal < 75) + { + value = 50; + } + else if(batteryVal < 76) + { + value = 60; + } + else if(batteryVal < 78) + { + value = 70; + } + else if(batteryVal < 80) + { + value = 80; + } + else if(batteryVal < 83) + { + value = 90; + } + else + { + value = 100; + } + } + else if(puiPara->BatteryType == SF_BATT_NI_MH) //NIH + { + if(batteryVal < 60) + { + if(nightMode && (batteryVal >= 43)) + value = 1; + else + value = 0; + } + else if(batteryVal < 61) + { + value = 1; + } + else if(batteryVal < 62) + { + value = 10; + } + else if(batteryVal < 64) + { + value = 20; + } + else if(batteryVal < 65) + { + value = 30; + } + else if(batteryVal < 67) + { + value = 40; + } + else if(batteryVal < 68) + { + value = 50; + } + else if(batteryVal < 70) + { + value = 60; + } + else if(batteryVal < 71) + { + value = 70; + } + else if(batteryVal < 73) + { + value = 80; + } + else if(batteryVal < 75) + { + value = 90; + } + else + { + value = 100; + } + } + else + { + if(batteryVal < 62) + { + if(nightMode && (batteryVal >= 43)) + value = 1; + else + value = 0; + } + else if(batteryVal < 75) + { + value = 1; + } + else if(batteryVal < 80) + { + value = 10; + } + else if(batteryVal < 82) + { + value = 20; + } + else if(batteryVal < 83) + { + value = 30; + } + else if(batteryVal < 84) + { + value = 40; + } + else if(batteryVal < 86) + { + value = 50; + } + else if(batteryVal < 91) + { + value = 60; + } + else if(batteryVal < 92) + { + value = 70; + } + else if(batteryVal < 93) + { + value = 80; + } + else if(batteryVal < 94) + { + value = 90; + } + else + { + value = 100; + } + } + } + } + else + { + value = 100; + } + + return value; + +} + #endif diff --git a/rtos/code/application/source/cardv/SrcCode/Gx/include/sf_battery.h b/rtos/code/application/source/cardv/SrcCode/Gx/include/sf_battery.h index af47b5224..143db4073 100755 --- a/rtos/code/application/source/cardv/SrcCode/Gx/include/sf_battery.h +++ b/rtos/code/application/source/cardv/SrcCode/Gx/include/sf_battery.h @@ -19,5 +19,6 @@ void sf_battery_thread_init(void); UINT8 sf_get_night_led_flag(void); void sf_set_night_led_flag(UINT8 flag); UINT32 sf_battery_level_get(void); +UINT8 sf_battery_value_get(UINT8 nightMode); #endif diff --git a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h index 1c7ec7612..a666d0064 100755 --- a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h +++ b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S530.h @@ -936,8 +936,8 @@ #define HUNTING_CAMERA_SYS_PARTITION_NAME sys #define HUNTING_CAMERA_BOOT_LINUX ENABLE #define HUNTING_CAMERA_MCU ENABLE -#define HUNTING_CAMERA_4G ENABLE//DISABLE -#define PHOTO_STAMP_ISP_STATUS ENABLE +#define HUNTING_CAMERA_4G DISABLE +#define PHOTO_STAMP_ISP_STATUS DISABLE//ENABLE #define PHOTO_PREVIEW_SLICE_ENC_FUNC ENABLE #define PHOTO_PREVIEW_SLICE_ENC_VER2_FUNC ENABLE #define PHOTO_DIRECT_FUNC DISABLE @@ -949,8 +949,9 @@ #define HUNTING_MCU_UART ENABLE #define HUNTING_IR_LED_940 DISABLE #define SF_EXIF_MN_BUF_SIZE 256 -#define SF_BASE_VERSION "7MD4RCwD3T2" +#define SF_BASE_VERSION "7MD4RCwD3T3" #define HUNTING_PHOTO_FAST_AE_60_FPS ENABLE +#define HW_S530 1 /******************************************************************************************* * LVGL UI Style config diff --git a/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c b/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c index 096e0afbd..579644b85 100755 --- a/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c +++ b/rtos/code/application/source/cardv/SrcCode/System/rtos-main.c @@ -390,16 +390,16 @@ static void insmod_sensor(void) static void sie_vd_cb(const UINT32 vd_cnt) { - /*if(vd_cnt == 0){ - vos_perf_list_mark("sie_vd", __LINE__, vd_cnt); + if(vd_cnt == 0){ + vos_perf_list_mark("sie_vd", __LINE__, 0); } - else if(vd_cnt == 1){ - vos_perf_list_mark("sie_vd", __LINE__, vd_cnt); - } - else if(vd_cnt == (PHOTOFAST_CAP_FRAME_CNT-1)){ + /*else if(vd_cnt == 1){ vos_perf_list_mark("sie_vd", __LINE__, vd_cnt); }*/ - vos_perf_list_mark("sie_vd", __LINE__, vd_cnt); + else if(vd_cnt == (PHOTOFAST_CAP_FRAME_CNT-1)){ + vos_perf_list_mark("sie_vd", __LINE__, 1); + } + //vos_perf_list_mark("sie_vd", __LINE__, vd_cnt); //if(vd_cnt == 3) // sf_trigger_time_led_cb(vd_cnt); } @@ -834,7 +834,7 @@ static void fastboot(void) *FL_BOOT_WORK_MODE_MENU add in linux SDK, then delete this. *use Cmd_movie_set_boot_mode for test **/ - SysGetFlag(CamMode); + //SysGetFlag(CamMode); //Save_MenuInfo(); //#NT#2023/01/11#Eric - end diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_cmd.c b/rtos/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_cmd.c index ef1c543a9..3f2a3e0c2 100755 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_cmd.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_cmd.c @@ -371,9 +371,11 @@ BOOL Cmd_movie_frontmoov_test(unsigned char argc, char **argv) static BOOL Cmd_movie_set_boot_mode(unsigned char argc, char **argv) { UINT32 value; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); sscanf_s(argv[0],"%d", &value); if(value < SF_CAM_MODE_MAX){ - SysSetFlag(CamMode, SF_CAM_MODE_PHOTO_VIDEO); + puiPara->CamMode = value; + //SysSetFlag(CamMode, SF_CAM_MODE_PHOTO_VIDEO); Save_MenuInfo(); } return TRUE; diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c index beb1843f8..633b52d93 100755 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/MovieFast/MovieFast.c @@ -155,7 +155,12 @@ static void MovieFast_ShutDown(void) #endif #if HUNTING_CAMERA_MCU - sf_mcu_reg_set(SF_MCU_POWEROFF,0); + #if HUNTING_CAMERA_4G == ENABLE + fastboot_set_done(BOOT_FLOW_BOOT); + flow_wait_linux(); + #else + sf_mcu_reg_set(SF_MCU_POWEROFF,0); + #endif #else fastboot_set_done(BOOT_FLOW_BOOT); flow_wait_linux(); @@ -447,17 +452,43 @@ static void MovieFast_OnRecStart(void) UINT32 movie_rec_mask, clone_rec_mask; USIZE thmub_size; UINT32 uifile_buffer_reserved_sec = 5; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); if (g_bIsRecStatus) { return; } else { g_bIsRecStatus = TRUE; } + { + HD_FILEOUT_CONFIG fout_cfg = {0}; + HD_PATH_ID fileout_ctrl = 0; + HD_RESULT hd_ret = 0; + + if ((hd_ret = hd_fileout_open(0, HD_FILEOUT_CTRL(0), &fileout_ctrl)) != HD_OK) { + DBG_ERR("hd_fileout_open(HD_FILEOUT_CTRL) fail(%d)\n", hd_ret); + } + + if ((hd_ret = hd_fileout_get(fileout_ctrl, HD_FILEOUT_PARAM_CONFIG, &fout_cfg)) != HD_OK) { + DBG_ERR("hd_fileout_get(HD_FILEOUT_PARAM_CONFIG) fail(%d)\n", hd_ret); + } + + { //wait_ready + fout_cfg.wait_ready = (UINT32) FALSE; // TRUE or FALSE + } + + if ((hd_ret = hd_fileout_set(fileout_ctrl, HD_FILEOUT_PARAM_CONFIG, &fout_cfg)) != HD_OK) { + DBG_ERR("hd_fileout_set(HD_FILEOUT_PARAM_CONFIG) fail(%d)\n", hd_ret); + } + + if ((hd_ret = hd_fileout_close(fileout_ctrl)) != HD_OK) { + DBG_ERR("hd_fileout_close(HD_FILEOUT_CTRL) fail(%d)\n", hd_ret); + } + } #if defined(_UI_STYLE_LVGL_) flow_lv_init(); #endif - vos_util_delay_ms(99); + //vos_util_delay_ms(99); movie_rec_mask = Movie_GetMovieRecMask(); clone_rec_mask = Movie_GetCloneRecMask(); @@ -495,17 +526,19 @@ static void MovieFast_OnRecStart(void) { // start clone path first due to some functions (such as 2v1a need this procedure) if (clone_rec_mask & mask) { + vos_perf_list_mark("sie_vd", __LINE__, 5); ImageApp_MovieMulti_SetParam(gMovie_Clone_Info[i].rec_id, MOVIEMULTI_PARAM_FILE_WRITE_BLKSIZE, 0x200000); ImageApp_MovieMulti_SetParam(gMovie_Clone_Info[i].rec_id, MOVIEMULTI_PARAM_FILE_BUFRESSEC, uifile_buffer_reserved_sec); //ImageApp_MovieMulti_RecStart(gMovie_Clone_Info[i].rec_id); - ImageApp_MovieMulti_TrigOnce(gMovie_Clone_Info[i].rec_id, SysGetFlag(VideoLenth)); + ImageApp_MovieMulti_TrigOnce(gMovie_Clone_Info[i].rec_id, puiPara->VideoLenth); } if (movie_rec_mask & mask) { + vos_perf_list_mark("sie_vd", __LINE__, 6); ImageApp_MovieMulti_SetParam(gMovie_Rec_Info[i].rec_id, MOVIEMULTI_PARAM_FILE_WRITE_BLKSIZE, 0x200000); ImageApp_MovieMulti_SetParam(gMovie_Rec_Info[i].rec_id, MOVIEMULTI_PARAM_FILE_BUFRESSEC, uifile_buffer_reserved_sec); //ImageApp_MovieMulti_RecStart(gMovie_Rec_Info[i].rec_id); - ImageApp_MovieMulti_TrigOnce(gMovie_Rec_Info[i].rec_id, SysGetFlag(VideoLenth)); + ImageApp_MovieMulti_TrigOnce(gMovie_Rec_Info[i].rec_id, puiPara->VideoLenth); } mask <<= 1; @@ -559,6 +592,8 @@ static void MovieFast_FileNamingCB(MOVIE_CFG_REC_ID id, char *pFileName) } else { DCF_GetNextID(&nextFolderID,&nextFileID); DCF_MakeObjPath(nextFolderID, nextFileID, DCF_FILE_TYPE_MP4, pFileName); + DCF_AddDBfile(pFileName); + DBG_DUMP("%s added to DCF\r\n", pFileName); if(id == _CFG_REC_ID_1){ snprintf(thumb_current_path_main, sizeof(thumb_current_path_main), "%s", pFileName); @@ -587,9 +622,9 @@ static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT3 #endif case MOVIE_USER_CB_EVENT_CLOSE_FILE_COMPLETED: { - MOVIEMULTI_CLOSE_FILE_INFO *info = (MOVIEMULTI_CLOSE_FILE_INFO *)value; - DCF_AddDBfile(info->path); - DBG_DUMP("%s added to DCF\r\n", info->path); + //MOVIEMULTI_CLOSE_FILE_INFO *info = (MOVIEMULTI_CLOSE_FILE_INFO *)value; + //DCF_AddDBfile(info->path); + //DBG_DUMP("%s added to DCF\r\n", info->path); vos_flag_set(MOVIEFAST_FLG_ID, FLGMOVIEFAST_SHUTDOWN); } break; @@ -652,6 +687,7 @@ static void MovieFast_UserEventCb(UINT32 id, MOVIE_USER_CB_EVENT event_id, UINT3 CHAR *pFileName = (CHAR *) value; // Make custome file name + fastboot_wait_done(BOOT_INIT_FILESYSOK); MovieFast_FileNamingCB(id, pFileName); } diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto.h b/rtos/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto.h index 1c29cbf32..9d6f1711c 100755 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto.h +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto.h @@ -29,8 +29,8 @@ #if (_SCREENNAIL_SIZE_ == _SCREENNAIL_SIZE_VGA_) #define CFG_SCREENNAIL_SIZE PHOTO_SIZE_VGA -#define CFG_SCREENNAIL_W 640 -#define CFG_SCREENNAIL_H 480 +#define CFG_SCREENNAIL_W 640//1024//640 +#define CFG_SCREENNAIL_H 480//768//480 #else #define CFG_SCREENNAIL_SIZE PHOTO_SIZE_3M #define CFG_SCREENNAIL_W 2048 @@ -109,7 +109,7 @@ #define JPG_BRC_INIT_Q 85 #define JPG_BRC_RETRY_CNT 4 #define THUMBNAIL_TARGETBYTERATE (160*120*2/JPG_COMERESSED_RATIO_5) -#define SCREENNAIL_TARGETBYTERATE (CFG_SCREENNAIL_W*CFG_SCREENNAIL_H*3/(2*JPG_COMERESSED_RATIO_8)) +#define SCREENNAIL_TARGETBYTERATE (CFG_SCREENNAIL_W*CFG_SCREENNAIL_H/(2*JPG_COMERESSED_RATIO_8)) #define PRIMARY_TARGETBYTERATE_UBOUND(TBR) (TBR + (TBR * 15 / 100)) #define PRIMARY_TARGETBYTERATE_LBOUND(TBR) (TBR - (TBR * 15 / 100)) #define JPG_FILE_BUFFER_SIZE(primary, screenail, thumbnail, exif) (primary + screenail + thumbnail + exif*6) diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c old mode 100755 new mode 100644 index 3057184b2..7bc57f023 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFast.c @@ -1301,6 +1301,8 @@ extern void setet_preset_param(void); static UINT32 capturcnt = 0; static BOOL captureflag = FALSE; UINT32 Cap_cnt=0; +extern INT32 PhotoFast_SliceEncode_Dump_Frame(const HD_VIDEO_FRAME video_frame, UINT8 format); + THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg) { HD_RESULT hd_ret; @@ -1309,9 +1311,10 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg) HD_PATH_ID vprc_path = 0, vout_path = 0, vcap_path = 0; UINT32 max_cnt = 0; BOOL start_cap = FALSE; - IQT_SHARPNESS_LV sharpness_lv = {0}; +// IQT_SHARPNESS_LV sharpness_lv = {0}; IQT_NR_LV nr_lv = {0}; AET_STATUS_INFO ae_status = {0}; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); flow_preview_get_path(&vcap_path, FLOW_PREIVEW_VCAP_PATH, 0); flow_preview_get_path(&vprc_path, FLOW_PREIVEW_VPRC_PATH, 0); @@ -1358,20 +1361,23 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg) // nvt_cmdsys_runcmd("vcap info"); // nvt_cmdsys_runcmd("vprc info"); // nvt_cmdsys_runcmd("ctl_ipp dump_hdl_all"); - nvt_cmdsys_runcmd("ae dbg 0 256 1 "); - // isp_dbg_set_dbg_mode(0, 0x0003000 ); +//ISPT_TOTAL_GAIN total; +// nvt_cmdsys_runcmd("ae dbg 0 256 1 "); +// isp_dbg_set_dbg_mode(0, 0x0202002 ); nvt_cmdsys_runcmd("ae set_speed 0 128 600 600 100 "); //nvt_cmdsys_runcmd("iq dbg 0 0 "); //nvt_cmdsys_runcmd("iq dbg 0 8 "); - nr_lv.id = 0; - nr_lv.lv = 175; - vendor_isp_set_iq(IQT_ITEM_NR_LV, &nr_lv); //50~200 - sharpness_lv.id = 0; - sharpness_lv.lv = 70; - vendor_isp_set_iq(IQT_ITEM_SHARPNESS_LV, &sharpness_lv); - - + // nr_lv.id = 0; + // nr_lv.lv = 200; + // vendor_isp_set_iq(IQT_ITEM_NR_LV, &nr_lv); //50~200 + // sharpness_lv.id = 0; + //// sharpness_lv.lv = 70; + // vendor_isp_set_iq(IQT_ITEM_SHARPNESS_LV, &sharpness_lv); + // total.id = 0; + // total.gain = 1600; + // vendor_isp_set_common(ISPT_ITEM_TOTAL_GAIN, &total); +// nvt_cmdsys_runcmd("iq set_dbg 16 0x200000 "); } #endif while(g_bPreViewPullFlag) { @@ -1380,19 +1386,19 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg) setet_preset_param(); }*/ if ((g_bFrmCnt > 2)&&(captureflag == FALSE)){ - vendor_isp_get_ae(AET_ITEM_STATUS, &ae_status); - if ((ae_status.status_info.state_adj ==0)|| (++g_bFrmCnt==10)){ - Cap_cnt=g_bFrmCnt; - captureflag = TRUE; - capturcnt = 0; - Set_AEMODE(1); - setet_preset_param(); + vendor_isp_get_ae(AET_ITEM_STATUS, &ae_status); + if ((ae_status.status_info.state_adj ==0)|| (++g_bFrmCnt==6)){ + Cap_cnt=g_bFrmCnt; + captureflag = TRUE; + capturcnt = 0; + Set_AEMODE(1); + setet_preset_param(); } } else - { + { ++g_bFrmCnt; - } + } //DBG_ERR(">>>>>>> adj %d lum %d explum %d exp %d iso %d\r\n",ae_status.status_info.state_adj,ae_status.status_info.lum,ae_status.status_info.expect_lum,ae_status.status_info.iso_gain[0],ae_status.status_info.expotime[0]); #if POWERON_FAST_SLICE_ENC_VER2 == ENABLE @@ -1402,7 +1408,7 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg) #if HUNTING_CAMERA_MCU == ENABLE if(sf_is_night_mode(0) ==TRUE){ //DrvGPIO_IRLed_Turn_Onoff(1); - sf_ir_led_set(((2 == SysGetFlag(NightMode)) ? 2 : 1),SysGetFlag(FlashLed), SysGetFlag(NightMode),0); + sf_ir_led_set(((2 == puiPara->NightMode) ? 2 : 1),puiPara->FlashLed, puiPara->NightMode,0); } #endif vos_util_delay_ms(200); @@ -1412,12 +1418,13 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg) #if HUNTING_PHOTO_FAST_AE_60_FPS == ENABLE - if((hd_ret = hd_videocap_pull_out_buf(vcap_path, &video_cap_frame, -1)) != HD_OK){ + + if((hd_ret = hd_videocap_pull_out_buf(vcap_path, &video_cap_frame, 3000)) != HD_OK){ DBG_ERR("failed to hd_videocap_pull_out_buf, er=%d\n", (int)hd_ret); goto exit; } - if((hd_ret = hd_videoproc_push_in_buf(vprc_path, &video_cap_frame, NULL, -1)) != HD_OK){ + if((hd_ret = hd_videoproc_push_in_buf(vprc_path, &video_cap_frame, NULL, 3000)) != HD_OK){ DBG_ERR("failed to hd_videoproc_push_in_buf, er=%d\n", (int)hd_ret); goto exit; } @@ -1426,12 +1433,13 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg) DBG_ERR("failed to hd_videocap_release_out_buf, er=%d\n", (int)hd_ret); goto exit; } + #else (void) vcap_path; (void) video_cap_frame; #endif - if ((hd_ret = hd_videoproc_pull_out_buf(vprc_path, &video_frame, -1)) != HD_OK) { + if ((hd_ret = hd_videoproc_pull_out_buf(vprc_path, &video_frame, 3000)) != HD_OK) { DBG_ERR("failed to hd_videoproc_pull_out_buf, er=%d\n", (int)hd_ret); goto exit; } @@ -1439,30 +1447,26 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg) //if(g_bFrmCnt < PHOTOFAST_CAP_FRAME_CNT){ // vos_perf_list_mark("yuv", __LINE__, 0); //} - if(capturcnt==1){//++g_bFrmCnt >= 5){//PHOTOFAST_CAP_FRAME_CNT){ - nr_lv.id = 0; - nr_lv.lv = 125; - vendor_isp_set_iq(IQT_ITEM_NR_LV, &nr_lv); //50~200 - sharpness_lv.id = 0; - sharpness_lv.lv = 90; - vendor_isp_set_iq(IQT_ITEM_SHARPNESS_LV, &sharpness_lv); - - } - - - if(capturcnt==2){//++g_bFrmCnt >= 5){//PHOTOFAST_CAP_FRAME_CNT){ +// if (capturcnt == 4) { +// nvt_cmdsys_runcmd("iq info "); +// isp_dbg_set_dbg_mode(0, 0x0202002 ); +// } + if (captureflag) + capturcnt++; + if(0){//(capturcnt==1){//++g_bFrmCnt >= 5){//PHOTOFAST_CAP_FRAME_CNT){ nr_lv.id = 0; nr_lv.lv = 100; vendor_isp_set_iq(IQT_ITEM_NR_LV, &nr_lv); //50~200 - sharpness_lv.id = 0; - sharpness_lv.lv = 100; - vendor_isp_set_iq(IQT_ITEM_SHARPNESS_LV, &sharpness_lv); + //sharpness_lv.id = 0; + //sharpness_lv.lv = 100; + //vendor_isp_set_iq(IQT_ITEM_SHARPNESS_LV, &sharpness_lv); +// nvt_cmdsys_runcmd("iq info "); + //nvt_cmdsys_runcmd("iq get_param 0 2 "); } - if (captureflag) capturcnt++; - if (capturcnt>4) { + if (capturcnt>3) { // DBG_ERR(">>>>>>>>>>>>capture adj:%d capcnt:%d frmcnt:%d\r\n",ae_status.status_info.state_adj,capturcnt,g_bFrmCnt); //if(++g_bFrmCnt >= 10){//PHOTOFAST_CAP_FRAME_CNT){ #if HUNTING_PHOTO_FAST_AE_60_FPS == ENABLE @@ -1556,6 +1560,9 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg) case DX_HUNTING_MODE_PHOTO_MOVIE: case DX_HUNTING_MODE_CAMERA_PHOTO_MOVIE: + + vos_perf_list_mark("sie_vd", __LINE__, 3); + vos_flag_set(PHOTOFAST_FLG_ID, FLGPHOTOFAST_CHGMODE); break; @@ -1672,6 +1679,7 @@ static void PhotoFast_ShutDown(void) void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo) { #if HUNTING_CAMERA_MCU == ENABLE + UIMenuStoreInfo *puiPara = sf_ui_para_get(); IQT_NIGHT_MODE night_mode = {0}; AWBT_MANUAL awb_manual = {0}; @@ -1688,7 +1696,7 @@ void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo) //DrvGPIO_IRLed_Turn_Onoff(1); // printf("[%s:%d]s NightMode:%d FlashLed:%d\n",__FUNCTION__,__LINE__,((2 == SysGetFlag(NightMode)) ? 2 : 1), SysGetFlag(FlashLed)); - sf_ir_led_set(((2 == SysGetFlag(NightMode)) ? 2 : 1),SysGetFlag(FlashLed), SysGetFlag(NightMode),isSnapVideo); + sf_ir_led_set(((2 == puiPara->NightMode) ? 2 : 1),puiPara->FlashLed, puiPara->NightMode, isSnapVideo); awb_manual.id = 0; awb_manual.manual.en = 1; awb_manual.manual.r_gain= 256; @@ -1760,13 +1768,20 @@ void Set_AEMODE(UINT32 id) vendor_isp_get_ae(AET_ITEM_MANUAL, &ae_manual); //DBG_ERR(">> aet manual exp %d iso %d\r\n",ae_manual.manual.expotime,ae_manual.manual.iso_gain); if (id == 1){ - ae_manual.manual.mode = 2; + ae_manual.manual.mode = 1; + ae_manual.manual.expotime = ae_status_info.status_info.expotime[0]; + ae_manual.manual.iso_gain = ae_status_info.status_info.iso_gain[0]; + ISPT_TOTAL_GAIN total; + + total.id = 0; + total.gain = 1600; + vendor_isp_set_common(ISPT_ITEM_TOTAL_GAIN, &total); nvt_cmdsys_runcmd("ae dbg 0 0 0 "); } else { ae_manual.manual.mode = 0; } - DBG_ERR(">> >>>>>>>>>aet manual mode %d\r\n",ae_manual.manual.mode); + //DBG_ERR(">> >>>>>>>>>aet manual mode %d\r\n",ae_manual.manual.mode); vendor_isp_set_ae(AET_ITEM_MANUAL, &ae_manual); diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c old mode 100755 new mode 100644 index 391ca7514..040fd8bee --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.c @@ -16,6 +16,7 @@ #include #define VDO_YUV_BUFSIZE(w, h, pxlfmt) ALIGN_CEIL_4(((w) * (h) * HD_VIDEO_PXLFMT_BPP(pxlfmt)) / 8) +#define VDO_RAW_BUFSIZE(w, h, pxlfmt) (ALIGN_CEIL_4((w) * HD_VIDEO_PXLFMT_BPP(pxlfmt) / 8) * (h)) /********************************************************************************** * independent thumbnail @@ -580,7 +581,7 @@ static INT32 PhotoFast_SliceEncode_Init_VF_GFX_Slice( vf_gfx_scale_param->dst_region.w = dst_slice_info.width; vf_gfx_scale_param->dst_region.h = dst_slice_height; vf_gfx_scale_param->dst_img.blk = dst_buffer_info.blk; - vf_gfx_scale_param->quality = HD_GFX_SCALE_QUALITY_BILINEAR; + vf_gfx_scale_param->quality = HD_GFX_SCALE_QUALITY_NULL; offset = video_frame->loff[HD_VIDEO_PINDEX_Y] * slice_idx * src_slice_info.slice_height; @@ -619,23 +620,34 @@ static INT32 PhotoFast_SliceEncode_Init_VF_GFX_Slice( return E_OK; } -#if PHOTOFAST_SLICE_ENC_DBG_PRIMARY_YUV -static INT32 PhotoFast_SliceEncode_Dump_Frame(const HD_VIDEO_FRAME video_frame) +#if 1//PHOTOFAST_SLICE_ENC_DBG_PRIMARY_YUV +INT32 PhotoFast_SliceEncode_Dump_Frame(const HD_VIDEO_FRAME video_frame, UINT32 format) +//static INT32 PhotoFast_SliceEncode_Dump_Frame(const HD_VIDEO_FRAME video_frame) { char fileName[128] = {0}; FST_FILE fp = NULL; UINT32 size; UINT32 va; - - size = VDO_YUV_BUFSIZE(video_frame.dim.w, video_frame.dim.h, video_frame.pxlfmt); - + static UINT32 cnt = 0; + + if(format == HD_VIDEO_PXLFMT_YUV420){ + size = VDO_YUV_BUFSIZE(video_frame.dim.w, video_frame.dim.h, video_frame.pxlfmt); + }else{ +// video_frame.pxlfmt = HD_VIDEO_PXLFMT_RAW12; + size = VDO_RAW_BUFSIZE(video_frame.dim.w, video_frame.dim.h, video_frame.pxlfmt); + } + va = (UINT32)hd_common_mem_mmap(HD_COMMON_MEM_MEM_TYPE_CACHE, video_frame.phy_addr[0], size); if (va == 0) { DBG_ERR("hd_common_mem_mmap error!r\n"); return E_SYS; } - - sprintf(fileName, "A:\\frame_%lux%lu_fmt%lx.dat", video_frame.dim.w, video_frame.dim.h, video_frame.pxlfmt); + if(format == HD_VIDEO_PXLFMT_YUV420){ + sprintf(fileName, "A:\\frame_%lux%lu_fmt%lx.dat", video_frame.dim.w, video_frame.dim.h, video_frame.pxlfmt); + }else{ + sprintf(fileName, "A:\\frame_%lux%lu_fmt%lx_%02d.raw", video_frame.dim.w, video_frame.dim.h, video_frame.pxlfmt, cnt); + cnt++; + } fp = FileSys_OpenFile(fileName, FST_CREATE_ALWAYS | FST_OPEN_WRITE); FileSys_WriteFile(fp, (UINT8*)va, &size, 0, NULL); @@ -770,7 +782,7 @@ ER PhotoFast_SliceEncode_Scale_YUV( pscale->dst_region.w = pdestwin->w; pscale->dst_region.h = pdestwin->h; pscale->dst_img.blk = mem_info.blk; - pscale->quality = HD_GFX_SCALE_QUALITY_BILINEAR; + pscale->quality = HD_GFX_SCALE_QUALITY_NULL; vf_gfx_scale(pscale, 1); pscale->dst_img.count = 0; @@ -1275,7 +1287,7 @@ INT32 PhotoFast_SliceEncode(const HD_PATH_ID vproc_path_id, const HD_VIDEO_FRAME #if PHOTOFAST_SLICE_ENC_DBG_PRIMARY_YUV - PhotoFast_SliceEncode_Dump_Frame(video_frame); + PhotoFast_SliceEncode_Dump_Frame(video_frame, HD_VIDEO_PXLFMT_YUV420); #endif @@ -1752,7 +1764,6 @@ INT32 PhotoFast_SliceEncode_CB2(void* user_data) MEM_RANGE pri_jpg = {.addr = slice_encode_primary_info->bs_buf_mem_info.va + CFG_JPG_HEADER_SIZE, .size = slice_encode_primary_info->bs_buf_mem_info.used_size}; MEM_RANGE scr_jpg = {.addr = slice_encode_screennail_info->bs_buf_mem_info.va, .size = slice_encode_screennail_info->bs_buf_mem_info.used_size}; MEM_RANGE dst_jpg_file = { 0 }; - DBG_WRN(" EXIF\r\n"); /* exif */ ExifVendor_Write0thIFD(EXIF_HDL_ID_1); @@ -1764,7 +1775,7 @@ INT32 PhotoFast_SliceEncode_CB2(void* user_data) DBG_ERR("Create Exif fail\r\n"); exif_data.size = 0; } - + /* combine jpg */ GxImgFile_CombineJPG(&exif_data, &pri_jpg, &scr_jpg, &dst_jpg_file); @@ -1859,6 +1870,8 @@ INT32 PhotoFast_SliceEncode_CB3(void* user_data) ******************************************************************/ extern INT32 PhotoFast_WriteFile(UINT32 Addr, UINT32 Size, UINT32 Fmt, UINT32 uiPathId); + vos_perf_list_mark("sie_vd", __LINE__, 4); + fastboot_wait_done(BOOT_INIT_FILESYSOK); fastboot_wait_done(BOOT_INIT_FILENAMINGOK); PhotoFast_WriteFile( diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.h b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.h old mode 100755 new mode 100644 index af4c87620..e8e657b13 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.h +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/PhotoFast/PhotoFastSliceEncode.h @@ -8,7 +8,7 @@ #define CFG_PHOTOFAST_SLICE_ENC_PRIMARY_BUF_HEIGHT 1080 #define CFG_PHOTOFAST_SLICE_ENC_PRIMARY_BUF_SIZE VDO_YUV_BUFSIZE(CFG_PHOTOFAST_SLICE_ENC_PRIMARY_BUF_WIDTH, CFG_PHOTOFAST_SLICE_ENC_PRIMARY_BUF_HEIGHT, HD_VIDEO_PXLFMT_YUV420) #define CFG_PHOTOFAST_SLICE_ENC_BS_BUF_RATIO 8 /* (yuv size / ratio) + header = bs buf size */ -#define CFG_PHOTOFAST_SLICE_ENC_INIT_QUALITY_PRIMARY 75 +#define CFG_PHOTOFAST_SLICE_ENC_INIT_QUALITY_PRIMARY 85 #define CFG_PHOTOFAST_SLICE_ENC_INIT_QUALITY_THUMBNAIL 70 #define CFG_PHOTOFAST_SLICE_ENC_INIT_QUALITY_SCREENNAIL 70 #define CFG_PHOTOFAST_SLICE_ENC_QUALITY_DOWN_STEP 3 diff --git a/rtos/code/application/source/cardv/SrcCode/UIApp/Setup/UISetup_Exe.c b/rtos/code/application/source/cardv/SrcCode/UIApp/Setup/UISetup_Exe.c index 8d99f1047..b29f20c84 100755 --- a/rtos/code/application/source/cardv/SrcCode/UIApp/Setup/UISetup_Exe.c +++ b/rtos/code/application/source/cardv/SrcCode/UIApp/Setup/UISetup_Exe.c @@ -1213,6 +1213,7 @@ INT32 SetupExe_OnPbRetractLens(VControl *pCtrl, UINT32 paramNum, UINT32 *paramAr INT32 SetupExe_OnSysBootWorkMode(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray)///Eric { UINT32 uhSelect = 0; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); DBG_FUNC_BEGIN("\r\n"); if (paramNum > 0) { uhSelect = paramArray[0]; @@ -1220,7 +1221,7 @@ INT32 SetupExe_OnSysBootWorkMode(VControl *pCtrl, UINT32 paramNum, UINT32 *param DBG_IND("uhSelect %d \r\n", uhSelect); - UI_SetData(CamMode, uhSelect); + puiPara->CamMode = uhSelect; DBG_FUNC_END("\r\n"); return NVTEVT_CONSUME; } diff --git a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h old mode 100755 new mode 100644 index 4a4a85832..c2771a82f --- a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h +++ b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UICfgDefault.h @@ -60,19 +60,19 @@ #if (defined(_NVT_ETHREARCAM_TX_)) #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_CLONE_1920x1080P30_1280x720P30 #elif (defined(_NVT_ETHREARCAM_RX_)) -#define DEFAULT_MOVIE_SIZE MOVIE_SIZE_FRONT_1920x1080P30 +#define DEFAULT_MOVIE_SIZE MOVIE_SIZE_DUAL_1920x1080P30_848x480P30//MOVIE_SIZE_FRONT_1920x1080P30 #else #if (MOVIE_AI_DEMO == DISABLE) - #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_FRONT_2560x1440P30//MOVIE_SIZE_FRONT_1920x1080P30 + #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_CLONE_1920x1080P60_640x360P30//MOVIE_SIZE_FRONT_1920x1080P30 #else - #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_FRONT_1920x1080P30 + #define DEFAULT_MOVIE_SIZE MOVIE_SIZE_DUAL_1920x1080P30_848x480P30//MOVIE_SIZE_FRONT_1920x1080P30 #endif #endif #endif -#define DEFAULT_MOVIE_SIZE_DUAL MOVIE_SIZE_FRONT_2560x1440P30 -#define DEFAULT_MOVIE_SIZE_SINGLE MOVIE_SIZE_FRONT_2560x1440P30 +#define DEFAULT_MOVIE_SIZE_DUAL MOVIE_SIZE_CLONE_1920x1080P60_640x360P30//MOVIE_SIZE_FRONT_1920x1080P30//MOVIE_SIZE_FRONT_2560x1440P30 +#define DEFAULT_MOVIE_SIZE_SINGLE MOVIE_SIZE_CLONE_1920x1080P60_640x360P30//MOVIE_SIZE_FRONT_1920x1080P30//MOVIE_SIZE_FRONT_2560x1440P30 #define DEFAULT_MOVIE_QUALITY MOVIE_QUALITY_FINE #define DEFAULT_MOVIE_COLOR MOVIE_COLOR_NORMAL @@ -219,5 +219,6 @@ #define DEFAULT_TIMESEND2_SWITCH SF_OFF #define DEFAULT_TIMESEND3_SWITCH SF_OFF #define DEFAULT_TIMESEND4_SWITCH SF_OFF +#define DEFAULT_FTP_SWITCH SF_FTP_ON #endif diff --git a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c index 32bbf62ef..1120058a1 100755 --- a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c +++ b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.c @@ -14,6 +14,7 @@ #include #include +#include /////////////////////////////////////////////////////////////////////////////// #define __MODULE__ UIInfo @@ -329,10 +330,10 @@ void Load_MenuInfo(void) pStrg->Unlock(); UINT32 sum = MemCheck_CalcCheckSum16Bit((UINT32)pCurrentInfoTmp, sizeof(currentInfo)); - DBG_DUMP("**************size = %lx / mov size = %u / sum = %lx **************\n", + DBG_DUMP("**************size = %lx / sum = %lx **************\n", sizeof(currentInfo), // ((UIMenuStoreInfo*)pCurrentInfoTmp)->UIParameter[FL_MOVIE_SIZE], - ((UIMenuStoreInfo*)pCurrentInfoTmp)->UIParameter[CamMode], + //((UIMenuStoreInfo*)pCurrentInfoTmp)->UIParameter[CamMode], sum); @@ -793,6 +794,7 @@ void SysCheckFlag(void) //#2023/02/10#Payton - begin + #if 0 //=====================Sifar============= SysLimitFlag(CamNameSwitch, 0, SF_CAMID_MAX, DEFAULT_SF_CAMID); SysLimitFlag(CamMode, 0, SF_CAM_MODE_MAX, DEFAULT_BOOT_WORK_MODE); @@ -859,7 +861,7 @@ void SysCheckFlag(void) SysLimitFlag(TimeSend3Switch, 0, SF_ON_OFF_MAX, DEFAULT_GPS_NUMBER); SysLimitFlag(TimeSend4Switch, 0, SF_ON_OFF_MAX, DEFAULT_GPS_NUMBER); #endif - + #endif printf("%s:%d sifar para e\n", __FUNCTION__, __LINE__); @@ -967,17 +969,12 @@ void SysResetFlag(void) SysSetFlag(FL_DEFOG, DEFAULT_DEFOG); -#if (HUNTING_CAMERA_MODEL == DISABLE) // Movie if (System_GetEnableSensor() == (SENSOR_1 | SENSOR_2)) { SysSetFlag(FL_MOVIE_SIZE_MENU, DEFAULT_MOVIE_SIZE_DUAL); } else { SysSetFlag(FL_MOVIE_SIZE_MENU, DEFAULT_MOVIE_SIZE); } -#else - SysSetFlag(FL_MOVIE_SIZE, DEFAULT_MOVIE_SIZE); - SysSetFlag(FL_MOVIE_SIZE_MENU, DEFAULT_MOVIE_SIZE); -#endif SysSetFlag(FL_MOVIE_QUALITY, DEFAULT_MOVIE_QUALITY); SysSetFlag(FL_MOVIE_COLOR, DEFAULT_MOVIE_COLOR); SysSetFlag(FL_MOVIE_CYCLIC_REC, DEFAULT_MOVIE_CYCLICREC); @@ -1059,36 +1056,36 @@ void SysResetFlag(void) SysSetFlag(FL_NetWorkMode, DEFAULT_WIFI_MODE); // Reset To Wi-Fi mode to AP mode. #endif - SysSetFlag(FL_ETHCAM_TX_IP_ADDR, DEFAULT_ETHCAM_TX_IP_ADDR); - //#NT#2023/01/11#Eric - begin //#NT#Support //=====================Sifar=============///Eric //Ux_SendEvent(&UISetupObjCtrl, NVTEVT_EXE_BOOTWORKMODE, 1, SysGetFlag(CamMode)); //#NT#2023/01/11#Eric - end //#2023/02/10#Payton - begin //=====================Sifar============= - SysSetFlag(CamNameSwitch, DEFAULT_SF_CAMID); - SysSetFlag(CamMode, DEFAULT_BOOT_WORK_MODE); - SysSetFlag(FlashLed, DEFAULT_FLASH_LED); + + puiPara->CamNameSwitch = DEFAULT_SF_CAMID; + puiPara->CamMode = DEFAULT_BOOT_WORK_MODE; + puiPara->FlashLed = DEFAULT_FLASH_LED; //ImgSize - SysSetFlag(NightMode, DEFAULT_NIGHT_MODE); + puiPara->NightMode = DEFAULT_NIGHT_MODE; //Multishot //VideoSize //VideoTimeMenu - SysSetFlag(VideoLenth, DEFAULT_VIDEO_LENTH); - SysSetFlag(PirSwitch, DEFAULT_PIR_SWITCH); - SysSetFlag(PirSensitivity, DEFAULT_PIR_SENSITIVITY); - SysSetFlag(PirDelaySwitch, DEFAULT_PIR_DELAY_SWITCH); - SysSetFlag(TimelapseSwitch, DEFAULT_TIMELAPSE_SWITCH); - if(SysGetFlag(TimelapseSwitch)) + puiPara->VideoLenth = DEFAULT_VIDEO_LENTH; + puiPara->PirSwitch = DEFAULT_PIR_SWITCH; + puiPara->PirSensitivity = DEFAULT_PIR_SENSITIVITY; + puiPara->PirDelaySwitch = DEFAULT_PIR_DELAY_SWITCH; + + puiPara->TimelapseSwitch = DEFAULT_TIMELAPSE_SWITCH; + if(puiPara->TimelapseSwitch) { puiPara->TimelapseTime.Hour = 0; puiPara->TimelapseTime.Min = 0; puiPara->TimelapseTime.Sec = 5; } - SysSetFlag(WorkTime1Switch, DEFAULT_WORKTIME_SWITCH); - if(SysGetFlag(WorkTime1Switch)) + puiPara->WorkTime1Switch = DEFAULT_WORKTIME_SWITCH; + if(puiPara->WorkTime1Switch) { puiPara->WorkTime[0].StartTime.Hour = 16; puiPara->WorkTime[0].StartTime.Min = 0; @@ -1096,8 +1093,8 @@ void SysResetFlag(void) puiPara->WorkTime[0].StopTime.Min = 0; } - SysSetFlag(WorkTime2Switch, DEFAULT_WORKTIME_SWITCH); - if(SysGetFlag(WorkTime2Switch)) + puiPara->WorkTime2Switch = DEFAULT_WORKTIME_SWITCH; + if(puiPara->WorkTime2Switch) { puiPara->WorkTime[1].StartTime.Hour = 5; puiPara->WorkTime[1].StartTime.Min = 0; @@ -1105,55 +1102,73 @@ void SysResetFlag(void) puiPara->WorkTime[1].StopTime.Min = 0; } - SysSetFlag(SimAutoSwitch, DEFAULT_SIM_AUTO_SWITCH); - SysSetFlag(SendMaxNum, DEFAULT_SEND_MAX_NUM); - SysSetFlag(GprsMode, DEFAULT_GPRS_MODE); - SysSetFlag(DailyReportSwitch, DEFAULT_DAILY_REPORT_SWITCH); - SysSetFlag(ReDailyReport, DEFAULT_REDAILY_REPORT_SWITCH); - SysSetFlag(SimPinFlag, DEFAULT_SIN_PIN_FLAG); - SysSetFlag(GpsSwitch, DEFAULT_GPS_SWITCH); - SysSetFlag(Language, DEFAULT_LANGUAGE); + puiPara->SimAutoSwitch = DEFAULT_SIM_AUTO_SWITCH; + puiPara->SendMaxNum = DEFAULT_SEND_MAX_NUM; + puiPara->GprsMode = DEFAULT_GPRS_MODE; + puiPara->DailyReportSwitch = DEFAULT_DAILY_REPORT_SWITCH; + puiPara->ReDailyReport = DEFAULT_REDAILY_REPORT_SWITCH; + puiPara->SimPinFlag = DEFAULT_SIN_PIN_FLAG; + puiPara->GpsSwitch = DEFAULT_GPS_SWITCH; + puiPara->Language = DEFAULT_LANGUAGE; /////////////// - SysSetFlag(DateStyle, DEFAULT_DATE_TIME); + puiPara->DateStyle = DEFAULT_DATE_TIME; SysSetFlag(FL_DateFormatIndex, DEFAULT_DATE_TIME); ///////////// - SysSetFlag(StampSwitch, DEFAULT_STAMP_SWITCH); - SysSetFlag(BatteryType, DEFAULT_BATTERY_TYPE); - SysSetFlag(SdLoopSwitch, DEFAULT_SD_LOOP_SWITCH); - SysSetFlag(PwdSwitch, DEFAULT_PWD_SWITCH); - SysSetFlag(SendPhotoSwitch, DEFAULT_SEND_PHOTO_SWITCH); - SysSetFlag(SendVideoSwitch, DEFAULT_SEND_VIDEO_SWITCH); - SysSetFlag(SendPicSize, DEFAULT_SEND_PIC_SIZE); - SysSetFlag(SendMultishotIndex1, DEFAULT_SEND_MULTISHOT_INDEX1); - SysSetFlag(SendMultishotIndex2, DEFAULT_SEND_MULTISHOT_INDEX2); - SysSetFlag(SendMultishotIndex3, DEFAULT_SEND_MULTISHOT_INDEX3); - SysSetFlag(SendMultishotIndex4, DEFAULT_SEND_MULTISHOT_INDEX4); - SysSetFlag(DateAuto, DEFAULT_DATE_AUTO); + puiPara->StampSwitch = DEFAULT_STAMP_SWITCH; + puiPara->BatteryType = DEFAULT_BATTERY_TYPE; + puiPara->SdLoopSwitch = DEFAULT_SD_LOOP_SWITCH; + puiPara->PwdSwitch = DEFAULT_PWD_SWITCH; + puiPara->SendPhotoSwitch = DEFAULT_SEND_PHOTO_SWITCH; + puiPara->SendVideoSwitch = DEFAULT_SEND_VIDEO_SWITCH; + puiPara->SendPicSize = DEFAULT_SEND_PIC_SIZE; + puiPara->SendMultishotIndex1 = DEFAULT_SEND_MULTISHOT_INDEX1; + puiPara->SendMultishotIndex2 = DEFAULT_SEND_MULTISHOT_INDEX2; + puiPara->SendMultishotIndex3 = DEFAULT_SEND_MULTISHOT_INDEX3; + puiPara->SendMultishotIndex4 = DEFAULT_SEND_MULTISHOT_INDEX4; + puiPara->DateAuto = DEFAULT_DATE_AUTO; //NTPZoneS, //NTPZoneH, //NTPZoneM, - SysSetFlag(CamArmDiable, DEFAULT_CAM_ARM_DIABLE); - SysSetFlag(DebugMode, DEFAULT_DEBUG_MODE); - SysSetFlag(AutoOffSwitch, DEFAULT_AUTO_OFF_SWITCH); - SysSetFlag(AutoLogSwitch, DEFAULT_AUTO_LOG_SWITCH); - SysSetFlag(RawSwitch, DEFAULT_RAW_SWITCH); - SysSetFlag(GprsSwitch, DEFAULT_GPRS_SWITCH); - SysSetFlag(GpsSendFlag, DEFAULT_GPS_SEND_FLAG); - SysSetFlag(FristSendDailyAndGps, DEFAULT_FRIST_SEND_DAILY_AND_GPS); - SysSetFlag(NetGeneration, DEFAULT_NET_GENERATION); - SysSetFlag(NeedTimeSyncStartUp, DEFAULT_NEED_TIME_SYNC); - SysSetFlag(NetWorkNeedSearch, DEFAULT_NET_WORK_NEED_SEARCH); - SysSetFlag(QLogSwitch, DEFAULT_QLOG_SWITCH); - SysSetFlag(GpsAntiTheftSwitch, DEFAULT_GPS_ANTI_THEFT_SWITCH); - SysSetFlag(BatteryLogSwitch, DEFAULT_BATTRERY_LOG_SWITCH); + puiPara->CamArmDiable = DEFAULT_CAM_ARM_DIABLE; + puiPara->DebugMode = DEFAULT_DEBUG_MODE; + puiPara->AutoOffSwitch = DEFAULT_AUTO_OFF_SWITCH; + puiPara->AutoLogSwitch = DEFAULT_AUTO_LOG_SWITCH; + puiPara->RawSwitch = DEFAULT_RAW_SWITCH; + puiPara->GprsSwitch = DEFAULT_GPRS_SWITCH; + puiPara->GpsSendFlag = DEFAULT_GPS_SEND_FLAG; + puiPara->FristSendDailyAndGps = DEFAULT_FRIST_SEND_DAILY_AND_GPS; + puiPara->NetGeneration = DEFAULT_NET_GENERATION; + puiPara->NeedTimeSyncStartUp = DEFAULT_NEED_TIME_SYNC; + puiPara->NetWorkNeedSearch = DEFAULT_NET_WORK_NEED_SEARCH; + puiPara->QLogSwitch = DEFAULT_QLOG_SWITCH; + puiPara->GpsAntiTheftSwitch = DEFAULT_GPS_ANTI_THEFT_SWITCH; + puiPara->BatteryLogSwitch = DEFAULT_BATTRERY_LOG_SWITCH; + puiPara->FtpSwitch = DEFAULT_FTP_SWITCH; + + memset(puiPara ->FtpIp,'\0', sizeof(puiPara ->FtpIp)); + memset(puiPara ->FtpPort, '\0', sizeof(puiPara ->FtpPort)); + memset(puiPara ->FtpUsr, '\0', sizeof(puiPara ->FtpUsr)); + memset(puiPara ->FtpPwd,'\0', sizeof(puiPara ->FtpPwd)); + memset(puiPara ->FtpsIp,'\0', sizeof(puiPara ->FtpsIp)); + memset(puiPara ->FtpsPort, '\0', sizeof(puiPara ->FtpsPort)); + memset(puiPara ->FtpsUsr, '\0', sizeof(puiPara ->FtpsUsr)); + memset(puiPara ->FtpsPwd,'\0', sizeof(puiPara ->FtpsPwd)); + + strcpy((char *)puiPara ->FtpIp, "119.23.174.139"); + strcpy((char *)puiPara ->FtpPort, "21"); + strcpy((char *)puiPara ->FtpUsr, "cameraftp"); + strcpy((char *)puiPara ->FtpPwd, "camera123456"); #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) - SysSetFlag(GpsNumber, DEFAULT_GPS_NUMBER); - SysSetFlag(TimeSend1Switch, DEFAULT_TIMESEND1_SWITCH); - SysSetFlag(TimeSend2Switch, DEFAULT_TIMESEND2_SWITCH); - SysSetFlag(TimeSend3Switch, DEFAULT_TIMESEND3_SWITCH); - SysSetFlag(TimeSend4Switch, DEFAULT_TIMESEND4_SWITCH); + puiPara->GpsNumber = DEFAULT_GPS_NUMBER; + puiPara->TimeSend1Switch = DEFAULT_TIMESEND1_SWITCH; + puiPara->TimeSend2Switch = DEFAULT_TIMESEND2_SWITCH; + puiPara->TimeSend3Switch = DEFAULT_TIMESEND3_SWITCH; + puiPara->TimeSend4Switch = DEFAULT_TIMESEND4_SWITCH; + sf_set_pir_sensitivity(7); #endif + + printf("%s:%d sifar para e\n", __FUNCTION__, __LINE__); @@ -1164,6 +1179,7 @@ void SysResetFlag(void) void SysExeMenuSettingFuncs(void) { + UIMenuStoreInfo *puiPara = sf_ui_para_get(); #if (PHOTO_MODE==ENABLE) /*--- Photo ---*/ Ux_SendEvent(&CustomPhotoObjCtrl, NVTEVT_EXE_QUALITY, 1, SysGetFlag(FL_QUALITY)); @@ -1234,7 +1250,7 @@ void SysExeMenuSettingFuncs(void) #endif //#NT#2023/01/11#Eric - begin //#NT#Support //=====================Sifar=============///Eric - Ux_SendEvent(&UISetupObjCtrl, NVTEVT_EXE_BOOTWORKMODE, 1, SysGetFlag(CamMode)); + Ux_SendEvent(&UISetupObjCtrl, NVTEVT_EXE_BOOTWORKMODE, 1, puiPara->CamMode); //#NT#2023/01/11#Eric - end } diff --git a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h old mode 100755 new mode 100644 index 7ba9c49e7..4c5eadd25 --- a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h +++ b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIInfo.h @@ -268,7 +268,7 @@ typedef enum { FL_ETHCAM_TX_IP_ADDR, FL_MOVIE_CODEC_MENU, FL_MOVIE_SENSOR_ROTATE_MENU, - +#if 0 //#2023/02/10#Payton - begin CamNameSwitch,/*ON/OFF ,cam name off*/ CamMode,/* 0 Photo / 1 Video / 2 PIC+Video*/ @@ -341,7 +341,7 @@ typedef enum { SendType, /////////////////////// #endif - +#endif //#2023/02/10#Payton - end FL_IndexInfoMAX @@ -410,6 +410,79 @@ typedef struct _UIMenuUIMenuStoreInfo { SF_PARA_TIME_S TimeSend3; SF_PARA_TIME_S TimeSend4; #endif + //#2023/02/10#Payton - begin + CHAR CamNameSwitch;/*ON/OFF ,cam name off*/ + CHAR CamMode;/* 0 Photo / 1 Video / 2 PIC+Video*/ + CHAR FlashLed;/* 0 High / 1 Low */ + CHAR ImgSize;/* 24M/12M/8M/5M */ + CHAR NightMode;/* Max.Range/Balanced/Min.Blur */ + CHAR Multishot;/*1P/2P/3P/4P/5P*/ + CHAR VideoSize;/*FHD-1080P/HD-720P/WVGA*/ + CHAR VideoTimeMenu;/*5/10/15/20/30/40/50/59*/ + CHAR VideoLenth; + CHAR PirSwitch;/*OFF/ON*/ + CHAR PirSensitivity;/*High/Middle/Low*/ + CHAR PirDelaySwitch;/*OFF/ON*/ + CHAR TimelapseSwitch;/*OFF/ON*/ + CHAR WorkTime1Switch;/*OFF/ON*/ + CHAR WorkTime2Switch;/*OFF/ON*/ + CHAR SimAutoSwitch;/*Auto/Manual*/ + CHAR SendMaxNum;/*Unlimited/1~99*/ + CHAR GprsMode;/*Daily/Instant*/ + CHAR DailyReportSwitch;/*OFF/ON*/ + CHAR ReDailyReport; + CHAR DailyReportTestSwitch; + CHAR SimPinFlag;/*ON*/ + CHAR GpsSwitch;/*0:OFF;1:ON*/ + CHAR Language; + CHAR DateStyle;/*YY/MM/DD-(CN) / MM/DD/YY-(US) / DD/MM/YY-(EU)*/ + CHAR StampSwitch;/*0:OFF;1:ON*///FL_DATE_STAMP + CHAR BatteryType;/*Alkaline/NI-MH/LI*/ + CHAR SdLoopSwitch;/*0:OFF;1:ON*/ + CHAR PwdSwitch;/*0:OFF;1:ON*/ + CHAR SendPhotoSwitch;/*0:OFF;1:ON*/ + CHAR SendVideoSwitch;/*0:OFF;1:ON*/ + CHAR SendPicSize;/*Small/Bigger/Original*/ + CHAR SendMultishotIndex1;/*OFF/ON*/ + CHAR SendMultishotIndex2;/*OFF/ON*/ + CHAR SendMultishotIndex3;/*OFF/ON*/ + CHAR SendMultishotIndex4;/*OFF/ON*/ + CHAR SendMultishotIndex5;/*OFF/ON*/ + CHAR DateAuto;/*Auto/Manual*/ + CHAR NTPZoneS; + CHAR NTPZoneH; + CHAR NTPZoneM; + CHAR DigitPirSensitivity;/*9\7\5*/ + CHAR DigitPirCnt; + CHAR DigitPirWindowTime; + CHAR CamArmDiable; + CHAR DebugMode;/*0:OFF;1:ON*/ + CHAR AutoOffSwitch;/*0:OFF;1:ON*/ + CHAR AutoLogSwitch;/*0:OFF;1:ON*/ + CHAR RawSwitch;/*0:OFF;1:ON*/ + //ProfLogSwitch;/*0:OFF;1:ON*/ + CHAR GprsSwitch;/*0:OFF;1:ON*/ + CHAR GpsSendFlag;/*dp need send flag;*/ + CHAR FristSendDailyAndGps; + CHAR NetGeneration;/*0:NO 1:xx 2:2G 3:3G 4:4G*/ + CHAR NeedTimeSyncStartUp; + CHAR NetWorkNeedSearch; + //SmsNumber; + CHAR QLogSwitch;/*0:OFF;1:ON*/ + CHAR GpsAntiTheftSwitch; + CHAR BatteryLogSwitch; + + #if defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_) + ////////////S530//////// + CHAR GpsNumber; + CHAR TimeSend1Switch;/*OFF/ON*/ + CHAR TimeSend2Switch;/*OFF/ON*/ + CHAR TimeSend3Switch;/*OFF/ON*/ + CHAR TimeSend4Switch;/*OFF/ON*/ + CHAR SendType; + /////////////////////// + #endif + CHAR CamNameStr[13]; CHAR PwdStr[7]; CHAR Latitude[16]; @@ -431,6 +504,20 @@ typedef struct _UIMenuUIMenuStoreInfo { CHAR AcmPort[5]; CHAR WebIp[70]; CHAR OperatorCode[8]; + CHAR SimIccid[21]; + CHAR ServiceProvider[64]; + UINT8 SimSignal; + UINT8 SimType; + UINT8 FtpSwitch;/*FTP/OFF/FTPS*/ + UINT8 FtpIp[40]; + UINT8 FtpPort[5]; + UINT8 FtpUsr[40]; + UINT8 FtpPwd[20]; + + UINT8 FtpsIp[40]; + UINT8 FtpsPort[5]; + UINT8 FtpsUsr[40]; + UINT8 FtpsPwd[20]; //============Sifar==============///Payton } UIMenuStoreInfo; @@ -1860,6 +1947,14 @@ typedef enum { SF_BATT_LEVEL_TOTAL } SF_BatteryLevel_e; +typedef enum +{ + SF_FTP_ON = 0x00, + SF_FTP_OFF, + SF_FTPS_ON, + SF_FTP_MAX, +} SF_FTP; + extern void Load_SysInfo(void); extern void Save_SysInfo(void); extern void Init_SysInfo(void); diff --git a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIMovieMapping.c b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIMovieMapping.c index e9ce8586f..57c00aa61 100755 --- a/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIMovieMapping.c +++ b/rtos/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIInfo/UIMovieMapping.c @@ -120,11 +120,11 @@ static MOVIE_SIZE_ITEM g_MovieSizeTable[] = { #if (defined(_NVT_ETHREARCAM_TX_)) {2560, 1440, 30, 1750 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1, 3, 36, 8, -8, 0}, - {1, 4, 30, 800 * 1024, 30, 26, 10, 50, 26, 10, 50, -40, 1, 8, 4}, + {1, 4, 30, 1750 * 1024, 30, 26, 10, 50, 26, 10, 50, -40, 1, 8, 4}, #else {2560, 1440, 30, 1750 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1, 3, 36, 8, -8, 0}, - {1, 4, 30, 800 * 1024, 15, 26, 10, 40, 26, 10, 40, 0, 1, 8, 4}, + {1, 4, 30, 1750 * 1024, 15, 26, 10, 40, 26, 10, 40, 0, 1, 8, 4}, #endif }, @@ -160,13 +160,13 @@ static MOVIE_SIZE_ITEM g_MovieSizeTable[] = { [MOVIE_SIZE_1920x1080P30] = { #if (defined(_NVT_ETHREARCAM_TX_)) - {1920, 1080, 30, 1200 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, + {1920, 1080, 30, 200 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1, 3, 36, 8, -8, 0}, - {1, 4, 30, 1200 * 1024, 30, 26, 10, 40, 26, 10, 40, -40, 1, 8, 4}, + {1, 4, 30, 200 * 1024, 30, 26, 10, 40, 26, 10, 40, -40, 1, 8, 4}, #else - {1920, 1080, 30, 1200 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, + {1920, 1080, 30, 262144/* 2M = 2*1024*1024/8 */, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1, 3, 36, 8, -8, 0}, - {1, 4, 30, 1200 * 1024, 15, 26, 10, 40, 26, 10, 40, 0, 1, 8, 4}, + {1, 4, 30, 262144/* 2M = 2*1024*1024/8 */, 15, 26, 15, 50, 26, 15, 50, 0, 1, 8, 4}, #endif }, @@ -190,13 +190,13 @@ static MOVIE_SIZE_ITEM g_MovieSizeTable[] = { [MOVIE_SIZE_1280x720P30] = { #if (defined(_NVT_ETHREARCAM_TX_)) - {1280, 720, 30, 600 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, + {1280, 720, 30, 100 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1, 2, 36, 6, -6, 0}, - {1, 4, 30, 600 * 1024, 1800, 26, 10, 50, 26, 10, 50, -40, 1, 8, 4}, + {1, 4, 30, 100 * 1024, 1800, 26, 10, 50, 26, 10, 50, -40, 1, 8, 4}, #else - {1280, 720, 30, 450 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, + {1280, 720, 30, 131072 /* 1M = 1*1024*1024/8 */, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1, 3, 36, 8, -8, 0}, - {1, 4, 30, 450 * 1024, 15, 26, 10, 40, 26, 10, 40, 0, 1, 8, 4}, + {1, 4, 30, 131072 /* 1M = 1*1024*1024/8 */, 15, 26, 15, 50, 26, 15, 50, 0, 1, 8, 4}, #endif }, @@ -214,13 +214,13 @@ static MOVIE_SIZE_ITEM g_MovieSizeTable[] = { [MOVIE_SIZE_848x480P30] = { #if (defined(_NVT_ETHREARCAM_TX_)) - {848, 480, 30, 300 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, + {848, 480, 30, 84 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1, 3, 36, 8, -8, 0}, - {1, 4, 30, 300 * 1024, 1800, 26, 10, 50, 26, 10, 50, -40, 1, 8, 4}, + {1, 4, 30, 84 * 1024, 1800, 26, 10, 50, 26, 10, 50, -40, 1, 8, 4}, #else - {848, 480, 30, 200 * 1024, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, + {848, 480, 30, 110100, MEDIAREC_DAR_DEFAULT, IMAGERATIO_16_9}, {1, 3, 36, 8, -8, 0}, - {1, 4, 30, 200 * 1024, 15, 26, 10, 40, 26, 10, 40, 0, 1, 8, 4}, + {1, 4, 30, 110100, 15, 26, 15, 50, 26, 15, 50, 0, 1, 8, 4}, #endif }, diff --git a/rtos/code/driver/na51089/include/sf_mcu.h b/rtos/code/driver/na51089/include/sf_mcu.h index 7c1b0e85c..fa6dcdda3 100755 --- a/rtos/code/driver/na51089/include/sf_mcu.h +++ b/rtos/code/driver/na51089/include/sf_mcu.h @@ -437,7 +437,7 @@ extern UINT8 sf_mcu_wdg_set(UINT8 value); extern UINT8 sf_get_power_on_mode(void); UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val); BOOL sf_is_night_mode(BOOL isRefresh); -extern UINT16 sf_mcu_irshutter_get_adc(void); +UINT16 sf_mcu_get_irshtter(void); BOOL sf_is_card_full(void); UINT32 sf_check_card_full(void); @@ -455,6 +455,8 @@ int sf_init_mcu(void); UINT8 sf_get_mcu_rtc_set_sys(void); UINT8 sf_get_power_off_flag(void); void sf_set_power_off_flag(UINT8 flag); +UINT32 sf_set_pir_sensitivity(UINT8 pirs); +void sf_set_module_sleep_flag(UINT8 flag); #endif diff --git a/rtos/code/driver/na51089/source/mcu/sf_i2c_driver.c b/rtos/code/driver/na51089/source/mcu/sf_i2c_driver.c index 7520c6320..ad7d7d4b5 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_i2c_driver.c +++ b/rtos/code/driver/na51089/source/mcu/sf_i2c_driver.c @@ -1,3 +1,8 @@ + +#include "PrjCfg.h" + +#if HUNTING_MCU_I2C == ENABLE + #ifdef __KERNEL__ #include #include @@ -125,3 +130,5 @@ INT32 sf_i2c_transfer(struct i2c_msg *msgs, INT32 num) return 0; } + +#endif diff --git a/rtos/code/driver/na51089/source/mcu/sf_mcu_dev.c b/rtos/code/driver/na51089/source/mcu/sf_mcu_dev.c index cda8334e5..6d630086e 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_mcu_dev.c +++ b/rtos/code/driver/na51089/source/mcu/sf_mcu_dev.c @@ -371,7 +371,7 @@ UINT8 sf_mcu_read_multi(UINT8 reg[], UINT8 data[], UINT32 num) *************************************************/ UINT8 sf_mcu_power_on_para_get(MCUParam_t attrId) { - UINT8 dataTemp1 = 0, dataTemp2 = 0; + UINT8 dataTemp1 = 0;//, dataTemp2 = 0 UINT8 startMode = 0; //UINT8 mcuVer = 0; UINT8 mcuReg[REG_SIZE] = { 0 }; @@ -390,8 +390,8 @@ UINT8 sf_mcu_power_on_para_get(MCUParam_t attrId) mcuReg[i++] = MCU_VER_H; mcuReg[i++] = MCU_PRODUCT_INFO; mcuReg[i++] = START_MODE; - mcuReg[i++] = LUMINANCE_L; - mcuReg[i++] = LUMINANCE_H; + //mcuReg[i++] = LUMINANCE_L; + //mcuReg[i++] = LUMINANCE_H; sf_mcu_read_multi(mcuReg, mcuData, i); i = 0; @@ -403,9 +403,9 @@ UINT8 sf_mcu_power_on_para_get(MCUParam_t attrId) dataTemp1 = mcuData[i++]; startMode = dataTemp1 & 0x1F; DailyReportStartMode = (dataTemp1 & 0xc0) >> 6; - dataTemp1= mcuData[i++]; - dataTemp2 = mcuData[i++]; - IRSHTTER = (dataTemp2 << 8) | dataTemp1; + //dataTemp1= mcuData[i++]; + //dataTemp2 = mcuData[i++]; + //IRSHTTER = (dataTemp2 << 8) | dataTemp1; #if 0 sf_mcu_read(MCU_SUB_VER, &McuSubVersion); @@ -447,8 +447,8 @@ UINT8 sf_mcu_power_on_para_get(MCUParam_t attrId) startMode = PWR_ON_SETUP; } } - - printf(" start mode = %d IRSHTTER = %d\n", startMode, IRSHTTER); + printf(" start mode = %d \n", startMode); + //printf(" start mode = %d IRSHTTER = %d\n", startMode, IRSHTTER); sf_get_mcu_rtc_set_sys(); return startMode; @@ -665,7 +665,7 @@ UINT8 sf_get_power_on_mode(void) ModeFlag = 0; PowerOnMode = sf_mcu_power_on_para_get(SF_MCU_POWERON); PowerOnMode &= 0x0f; - sf_is_night_mode(1); + //sf_is_night_mode(1); if(1 == PowerOnMode) { ConfigureModeFlag = 1; @@ -693,6 +693,7 @@ BOOL sf_is_night_mode(BOOL isRefresh) } else if(isRefresh) { + sf_mcu_get_irshtter(); if(IRSHTTER < SF_MCU_NIGHT_MODE_LUMINANCE) { nightMode = TRUE; @@ -1320,26 +1321,37 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) UINT8 paraSyncFlag = 0; UINT8 gpsAlwaysFlag = 0; UINT8 PowerOnMode = 0; + signed int isUsb = 0; + signed int isCard = 0; + signed int isCardFull = 0; printf("Firmware compile time:%s %s VER:%s\n", __DATE__, __TIME__,SF_BASE_VERSION); - + printf("%s:%d start mode = %d IRSHTTER = %d\n", __FUNCTION__, __LINE__ , sf_get_power_on_mode(), IRSHTTER); UIMenuStoreInfo *puiPara = sf_ui_para_get(); - PowerOnMode = sf_get_power_on_mode(); + if(attrId != SF_MCU_CTRL_MODULE_PIR)//AND LDS SECTION_01 loading order. + { + isUsb = sf_is_usb_flag(); + isCard = sf_in_card_exist(); + isCardFull = sf_is_card_full(); + PowerOnMode = sf_get_power_on_mode(); + } + if (attrId > SF_MCU_PARAM_MAX) { - printf("attrId ERROR!\n"); + printf("attrId ERROR!\n"); return FAIL; } printf("sf_mcu_reg_set attrId=%d val=%d\n", attrId, val); - if((simCardInsert) && (1 == SysGetFlag(NeedTimeSyncStartUp))) - { - paraSyncFlag = 1; - } if(attrId == SF_MCU_POWEROFF) - { + { + if((simCardInsert) && (1 == puiPara->NeedTimeSyncStartUp)) + { + paraSyncFlag = 1; + } + struct tm ctv = {0}; ctv = hwclock_get_time(TIME_ID_CURRENT); printf("%s:%d %d : %d : %d : %d : %d : %d\n", __FUNCTION__, __LINE__,ctv.tm_year, ctv.tm_mon,ctv.tm_mday,ctv.tm_hour,ctv.tm_min,ctv.tm_sec); @@ -1359,7 +1371,7 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) gpsAlwaysFlag = 0; - if((SysGetFlag(GpsSwitch) == 1) && (SysGetFlag(GpsNumber))) + if((puiPara->GpsSwitch == 1) && (puiPara->GpsNumber)) { gpsAlwaysFlag=1; } @@ -1368,17 +1380,17 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) gpsAlwaysFlag=0; } - if(SysGetFlag(PirSensitivity)) + if(puiPara->PirSensitivity) temp = 0x01; else temp = 0x00; - if(1 == SysGetFlag(TimelapseSwitch)) + if(1 == puiPara->TimelapseSwitch) { temp |= 0x02; } - if(1 == SysGetFlag(PirDelaySwitch)) + if(1 == puiPara->PirDelaySwitch) { temp |= 0x04; } @@ -1403,10 +1415,10 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) } - if(SysGetFlag(TimeSend1Switch) == 1) + if(puiPara->TimeSend1Switch == 1) temp |= 0x20; - if(SysGetFlag(TimeSend2Switch) == 1) + if(puiPara->TimeSend2Switch == 1) temp |= 0x40; if(gpsAlwaysFlag && simCardInsert) @@ -1415,7 +1427,7 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) mcuReg[i] = FUNCTION_SWTICH0; mcuData[i++] = temp; - if(SysGetFlag(TimelapseSwitch)) + if(puiPara->TimelapseSwitch) { mcuReg[i] = TIMELAPSE_HOUR; mcuData[i++] = puiPara->TimelapseTime.Hour; @@ -1423,7 +1435,7 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) mcuData[i++] = puiPara->TimelapseTime.Min; mcuReg[i] = TIMELAPSE_SEC; - if((SysGetFlag(TimelapseSwitch)) && (puiPara->TimelapseTime.Hour == 0) && (puiPara->TimelapseTime.Min == 0) && (puiPara->TimelapseTime.Sec == 0)) + if((puiPara->TimelapseSwitch) && (puiPara->TimelapseTime.Hour == 0) && (puiPara->TimelapseTime.Min == 0) && (puiPara->TimelapseTime.Sec == 0)) mcuData[i++] = 5; else mcuData[i++] = puiPara->TimelapseTime.Sec; @@ -1438,7 +1450,7 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) mcuData[i++] = 0; } - if(SysGetFlag(PirDelaySwitch)) + if(puiPara->PirDelaySwitch) { mcuReg[i] = PIR_DELAY_HOUR; mcuData[i++] = puiPara->PirDelayTime.Hour; @@ -1467,7 +1479,7 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) mcuData[i++] = 1; } - if(SysGetFlag(DailyReportSwitch)) + if(puiPara->DailyReportSwitch) { mcuReg[i] = DAILY_REPORT_HOUR; mcuData[i++] = puiPara->DailyReportTime2.Hour; @@ -1493,19 +1505,19 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) mcuData[i++] = puiPara->TimeSend2.Min; mcuReg[i] = ANALOG_PIR_SENSITIVITY; - temp = sf_mcu_analog_pir_sen_convert(SysGetFlag(PirSensitivity)); + temp = sf_mcu_analog_pir_sen_convert(puiPara->PirSensitivity); //hybrid mode 4G module keep sleep - if((SysGetFlag(NetWorkNeedSearch) != 3) && simCardInsert && gModuleSleep) + if(((puiPara->NetWorkNeedSearch) != 3) && simCardInsert && gModuleSleep) { //bit 5-bit 6, daily mode 0, hybrid mode 1, instant mode 2 - if((SysGetFlag(GprsMode) == 1) || (paraSyncFlag)) + if(((puiPara->GprsMode) == 1) || (paraSyncFlag)) { temp |= 0x40; } else { - if ((SysGetFlag(GprsMode) == 2) && isSignalReady && (GPRS_ERRNO == 0)) + if (((puiPara->GprsMode) == 2) && isSignalReady && (GPRS_ERRNO == 0)) temp |= 0x20; //sf_pdp_flg_set(0); @@ -1513,7 +1525,7 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) } - if(((SysGetFlag(GprsSwitch)) && (simCardInsert) && (SysGetFlag(SendType) == 0)) || (paraSyncFlag)) + if(((puiPara->GprsSwitch) && (simCardInsert) && ((puiPara->SendType) == 0)) || (paraSyncFlag)) { temp |= 0x80; } @@ -1525,9 +1537,9 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) mcuData[i++] = temp; mcuReg[i] = DIGITAL_PIR_SENSITIVITY; - mcuData[i++] = SysGetFlag(DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)]; + mcuData[i++] = (puiPara->DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)]; mcuReg[i] = DIGITAL_PIR_CFG; - mcuData[i++] = (SysGetFlag(DigitPirWindowTime) << 4) | SysGetFlag(DigitPirCnt); + mcuData[i++] = ((puiPara->DigitPirWindowTime) << 4) | (puiPara->DigitPirCnt); //mcuData[i++] = (PirDigtSensRegValue[SysGetFlag(PirSensitivity)] <= 10 ? 1 : 0); //DSP busy/idle @@ -1535,12 +1547,12 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) mcuData[i++] = 0; mcuReg[i] = SF_SYS_STATUS; - mcuData[i++] = sf_is_usb_flag() << 2 | sf_is_card_full() << 1 | sf_in_card_exist() << 0; + mcuData[i++] = isUsb << 2 | isCardFull << 1 | isCard << 0; mcuReg[i] = POWEROFF_TYPE; temp = 0; - if(simCardInsert && (SysGetFlag(NetWorkNeedSearch)) + if(simCardInsert && (puiPara->NetWorkNeedSearch) && ((PowerOnMode == PWR_ON_AUTO) || (PowerOnMode == PWR_ON_SETUP) || (PowerOnMode == PWR_ON_DAILY_REPORT)))/* SET->ON, OFF->ON*/ temp = 1; else if(SmsCheck) @@ -1552,7 +1564,7 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) mcuReg[i] = VBAT_RECOVER_VAL; mcuData[i++] = SF_BATT_RECOVERY; - if(SysGetFlag(WorkTime1Switch)) + if(puiPara->WorkTime1Switch) { mcuReg[i] = WORKTIME1_SWITCH; mcuData[i++] = 0xFF; @@ -1583,7 +1595,7 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) mcuData[i++] = 0; } - if(SysGetFlag(WorkTime2Switch)) + if(puiPara->WorkTime2Switch) { mcuReg[i] = WORKTIME2_SWITCH; mcuData[i++] = 0xFF; @@ -1614,7 +1626,7 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) mcuData[i++] = 0; } - if((SysGetFlag(GpsSwitch) || SysGetFlag(FristSendDailyAndGps)) && (sf_get_mode_flag() || paraSyncFlag)) + if(((puiPara->GpsSwitch) || (puiPara->FristSendDailyAndGps)) && (sf_get_mode_flag() || paraSyncFlag)) { mcuReg[i] = GPS_POWER_TIMER_CLEAR; mcuData[i++] = 1; @@ -1629,10 +1641,10 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) temp = 0; - if(SysGetFlag(TimeSend3Switch) == 1) + if((puiPara->TimeSend3Switch) == 1) temp |= 0x01; - if(SysGetFlag(TimeSend4Switch) == 1) + if((puiPara->TimeSend4Switch) == 1) temp |= 0x02; mcuReg[i] = FUNCTION_SWTICH1; @@ -1652,14 +1664,14 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) { mcuReg[i] = ANALOG_PIR_SENSITIVITY; - temp = SysGetFlag(PirSensitivity);//sf_mcu_analog_pir_sen_convert(SysGetFlag(DigPirSensitivity)); + temp = (puiPara->PirSensitivity);//sf_mcu_analog_pir_sen_convert(SysGetFlag(DigPirSensitivity)); - if(SysGetFlag(GprsMode))//hybrid mode 4G module keep sleep + if(puiPara->GprsMode)//hybrid mode 4G module keep sleep { temp |= 0x40; } - if((SysGetFlag(GprsMode)) && (val == 1)) + if((puiPara->GprsMode) && (val == 1)) { temp |= 0x80; } @@ -1673,12 +1685,12 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) if(ConfigureModeFlag) { mcuReg[i] = DIGITAL_PIR_SENSITIVITY; - mcuData[i++] = SysGetFlag(DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)]; + mcuData[i++] = (puiPara->DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)]; mcuReg[i] = DIGITAL_PIR_CFG; - mcuData[i++] = (SysGetFlag(DigitPirWindowTime) << 4) | SysGetFlag(DigitPirCnt); + mcuData[i++] = ((puiPara->DigitPirWindowTime) << 4) | (puiPara->DigitPirCnt); } - if((SysGetFlag(GpsSwitch) || SysGetFlag(FristSendDailyAndGps)) && (ConfigureModeFlag || paraSyncFlag)) + if(((puiPara->GpsSwitch) || (puiPara->FristSendDailyAndGps)) && (ConfigureModeFlag || paraSyncFlag)) { mcuReg[i] = GPS_POWER_TIMER_CLEAR; mcuData[i++] = 1; @@ -1695,14 +1707,14 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) { mcuReg[i] = ANALOG_PIR_SENSITIVITY; - temp = SysGetFlag(PirSensitivity);//sf_mcu_analog_pir_sen_convert(puiPara->PirSensitivity); + temp = (puiPara->PirSensitivity);//sf_mcu_analog_pir_sen_convert(puiPara->PirSensitivity); - if((SysGetFlag(GprsMode)) && (gModuleSleep == 1))//hybrid mode 4G module keep sleep + if((puiPara->GprsMode) && (gModuleSleep == 1))//hybrid mode 4G module keep sleep { temp |= 0x40; } - if((SysGetFlag(GprsMode)) && (simCardInsert)) + if((puiPara->GprsMode) && (simCardInsert)) { temp |= 0x80; } @@ -1713,16 +1725,16 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) mcuData[i++] = temp; - printf("[%s:%d] temp:0x%02x GprsSwitch:%lu simCardInsert:%lu\n", __FUNCTION__, __LINE__, temp, SysGetFlag(GprsSwitch), simCardInsert); + printf("[%s:%d] temp:0x%02x GprsSwitch:%d simCardInsert:%lu\n", __FUNCTION__, __LINE__, temp, puiPara->GprsSwitch, simCardInsert); mcuReg[i] = DIGITAL_PIR_SENSITIVITY; - mcuData[i++] = SysGetFlag(DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)]; + mcuData[i++] = (puiPara->DigitPirSensitivity);//PirDigtSensRegValue[SysGetFlag(PirSensitivity)]; mcuReg[i] = DIGITAL_PIR_CFG; - mcuData[i++] = (SysGetFlag(DigitPirWindowTime) << 4) | SysGetFlag(DigitPirCnt); + mcuData[i++] = ((puiPara->DigitPirWindowTime) << 4) | (puiPara->DigitPirCnt); mcuReg[i] = SF_SYS_STATUS; - mcuData[i++] = SysGetFlag(CamArmDiable) << 6 | sf_is_usb_flag() << 2 | sf_is_card_full() << 1 | sf_in_card_exist() << 0; + mcuData[i++] = (puiPara->CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0; - if((SysGetFlag(GpsSwitch) || SysGetFlag(FristSendDailyAndGps)) && (ConfigureModeFlag || paraSyncFlag)) + if(((puiPara->GpsSwitch) || (puiPara->FristSendDailyAndGps)) && (ConfigureModeFlag || paraSyncFlag)) { mcuReg[i] = GPS_POWER_TIMER_CLEAR; mcuData[i++] = 1; @@ -1738,7 +1750,7 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) else if(attrId == SF_MCU_RESET_MODULE) { mcuReg[i] = SF_SYS_STATUS; - mcuData[i++] = SysGetFlag(CamArmDiable) << 6 | sf_is_usb_flag() << 2 | sf_is_card_full() << 1 | sf_in_card_exist() << 0 | 0x10; + mcuData[i++] = (puiPara->CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x10; //sf_pdp_flg_set(0); } else if(attrId == SF_MCU_SOFT_UPDATE) @@ -1747,22 +1759,22 @@ UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val) if(val == 1) { - mcuData[i++] = SysGetFlag(CamArmDiable) << 6 | sf_is_usb_flag() << 2 | sf_is_card_full() << 1 | sf_in_card_exist() << 0 | 0x08; + mcuData[i++] = (puiPara->CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x08; } else { - mcuData[i++] = SysGetFlag(CamArmDiable) << 6 | sf_is_usb_flag() << 2 | sf_is_card_full() << 1 | sf_in_card_exist() << 0; + mcuData[i++] = (puiPara->CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0; } } else if(attrId == SF_MCU_POWER_RESTART) { mcuReg[i] = SF_SYS_STATUS; - mcuData[i++] = SysGetFlag(CamArmDiable) << 6 | sf_is_usb_flag() << 2 | sf_is_card_full() << 1 | sf_in_card_exist() << 0 | 0x20; + mcuData[i++] = (puiPara->CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x20; } else if(attrId == SF_MCU_PIR_RESTART) { mcuReg[i] = SF_SYS_STATUS; - mcuData[i++] = SysGetFlag(CamArmDiable) << 6 | sf_is_usb_flag() << 2 | sf_is_card_full() << 1 | sf_in_card_exist() << 0 | 0x80; + mcuData[i++] = (puiPara->CamArmDiable) << 6 | isUsb << 2 | isCardFull << 1 | isCard << 0 | 0x80; } mcuReg[i] = DSP_WRITE_FLG; //MCU set end @@ -1817,7 +1829,7 @@ void sf_calculate_daily_report(UINT8*dailyHour, UINT8*dailyMin) UINT16 timelapse_sum_min = 0; struct tm mcuTime = {0}; //Daily report is always ON - if(SysGetFlag(ReDailyReport)) + if(puiPara->ReDailyReport) { mcuTime = hwclock_get_time(TIME_ID_CURRENT); if(puiPara->DailyReportTime2.Hour >= mcuTime.tm_hour) @@ -1839,7 +1851,7 @@ void sf_calculate_daily_report(UINT8*dailyHour, UINT8*dailyMin) } - else if(SysGetFlag(GprsMode) == SF_REMOTE_CONTROL_REAL_TIME) + else if(puiPara->GprsMode == SF_REMOTE_CONTROL_REAL_TIME) { if((!sf_get_mode_flag()) && (sf_get_camera_restart() == 1)) @@ -1856,7 +1868,7 @@ void sf_calculate_daily_report(UINT8*dailyHour, UINT8*dailyMin) } } - else if(SysGetFlag(GpsAntiTheftSwitch) == 1) + else if(puiPara->GpsAntiTheftSwitch == 1) { if((!sf_get_mode_flag()) && (sf_get_camera_restart() == 1)) { @@ -1897,9 +1909,9 @@ void sf_calculate_daily_report(UINT8*dailyHour, UINT8*dailyMin) { if((timelapse_sum_min - daily_sum_min) <= 5) { - if((SysGetFlag(ReDailyReport) == 1) && (timelapse_sum_min < 5)) + if((puiPara->ReDailyReport == 1) && (timelapse_sum_min < 5)) { - SysSetFlag(ReDailyReport, 2); + puiPara->ReDailyReport = 2; puiPara->DailyReportTime2.Hour = 0; puiPara->DailyReportTime2.Min = 0; } @@ -1931,6 +1943,68 @@ int sf_while_flag(void) } } +/************************************************* + Function: sf_mcu_get_irshtter + Description: get IRSHTTER. + Input: N/A + Output: N/A + Return: IRSHTTER + Others: N/A +*************************************************/ +UINT16 sf_mcu_get_irshtter(void) +{ + UINT8 dataTemp1 = 0, dataTemp2 = 0; + + UINT8 mcuReg[REG_SIZE] = { 0 }; + UINT8 mcuData[REG_SIZE] = { 0 }; + UINT8 i = 0; + + mcuReg[i++] = LUMINANCE_L; + mcuReg[i++] = LUMINANCE_H; + sf_mcu_read_multi(mcuReg, mcuData, i); + i = 0; + + dataTemp1= mcuData[i++]; + dataTemp2 = mcuData[i++]; + + IRSHTTER = (dataTemp2 << 8) | dataTemp1; + + printf("%s:%d IRSHTTER = %d\n", __FUNCTION__, __LINE__, IRSHTTER); + + return IRSHTTER; +} + + +UINT32 sf_set_pir_sensitivity(UINT8 pirs) +{ + UINT8 digPirLevel[10] = {200, 38, 30, 24, 18, 16, 10, 9, 8, 7}; + UINT8 digPirCount[10] = {0, 0, 0, 0, 0, 0, 1, 1, 1, 1}; + + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + //UIMenuStoreInfo *puiPara = sf_ui_para_get(); + if(pirs >= 10) + return FAIL; + puiPara->PirSensitivity = pirs; + puiPara->DigitPirSensitivity = digPirLevel[pirs]; + puiPara->DigitPirCnt = digPirCount[pirs]; + puiPara->DigitPirWindowTime = 0; + + /*if(puiPara->PirSensitivity)) + { + puiPara->TimelapseSwitch, SF_OFF); + puiPara->TimelapseTime.Hour = 0; + puiPara->TimelapseTime.Min = 0; + puiPara->TimelapseTime.Sec = 0; + //Save_MenuInfo(); + }*/ + + return SUCCESS; +} + +void sf_set_module_sleep_flag(UINT8 flag) +{ + gModuleSleep = flag; +} #if defined __FREERTOS diff --git a/rtos/code/driver/na51089/source/mcu/sf_sd_common.c b/rtos/code/driver/na51089/source/mcu/sf_sd_common.c index 4190e77cb..a98f7d642 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_sd_common.c +++ b/rtos/code/driver/na51089/source/mcu/sf_sd_common.c @@ -61,6 +61,7 @@ UINT32 sf_check_card_full(void) UINT64 diskFree = 0; UINT32 ret = 0; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); if(!sf_in_card_exist()) { return 1; @@ -72,7 +73,7 @@ UINT32 sf_check_card_full(void) if(diskFree < 30) /* 30MB */ { ret = TRUE; - if(0 == SysGetFlag(SdLoopSwitch)) + if(0 == puiPara->SdLoopSwitch) { IsCardFull = TRUE; } diff --git a/rtos/code/hdal/vendor/isp/configs/dtsi/isp_os05b10_0504.cfg:Zone.Identifier b/rtos/code/hdal/vendor/isp/configs/dtsi/isp_os05b10_0504.cfg:Zone.Identifier new file mode 100644 index 000000000..7810ce524 --- /dev/null +++ b/rtos/code/hdal/vendor/isp/configs/dtsi/isp_os05b10_0504.cfg:Zone.Identifier @@ -0,0 +1,4 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=https://jira.novatek.com.tw/browse/IVOT_N12144_CO-44?jql=project%20%3D%20IVOT_N12144_CO%20AND%20resolution%20%3D%20Unresolved%20ORDER%20BY%20priority%20DESC%2C%20updated%20DESC +HostUrl=https://jira.novatek.com.tw/secure/attachment/418132/isp_os05b10_0504.cfg diff --git a/rtos/code/hdal/vendor/isp/configs/dtsi/os05b10_ae_0.dtsi b/rtos/code/hdal/vendor/isp/configs/dtsi/os05b10_ae_0.dtsi index f7e5bb64c..0741c4d08 100755 --- a/rtos/code/hdal/vendor/isp/configs/dtsi/os05b10_ae_0.dtsi +++ b/rtos/code/hdal/vendor/isp/configs/dtsi/os05b10_ae_0.dtsi @@ -7,7 +7,7 @@ version-info = [00 01 00 01]; ae_expect_lum { size = [b0 00 00 00]; - data = [3c 00 00 00 3c 00 00 00 3d 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3d 00 00 00 41 00 00 00 46 00 00 00 4d 00 00 00 54 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 46 00 00 00 50 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00]; + data = [36 00 00 00 3c 00 00 00 32 00 00 00 31 00 00 00 31 00 00 00 31 00 00 00 31 00 00 00 31 00 00 00 31 00 00 00 31 00 00 00 31 00 00 00 31 00 00 00 31 00 00 00 4f 00 00 00 4f 00 00 00 4f 00 00 00 4f 00 00 00 4f 00 00 00 4f 00 00 00 4f 00 00 00 4f 00 00 00 4f 00 00 00 4f 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 46 00 00 00 50 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00]; }; ae_la_clamp { size = [50 01 00 00]; @@ -15,7 +15,7 @@ }; ae_over_exposure { size = [b0 01 00 00]; - data = [01 00 00 00 8c 00 00 00 03 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 08 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 07 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 04 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00]; + data = [01 00 00 00 8c 00 00 00 03 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 08 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 07 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 04 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00]; }; ae_convergence { size = [2c 00 00 00]; diff --git a/rtos/code/hdal/vendor/isp/configs/dtsi/os05b10_awb_0.dtsi b/rtos/code/hdal/vendor/isp/configs/dtsi/os05b10_awb_0.dtsi index dc860c10d..dbeef5544 100755 --- a/rtos/code/hdal/vendor/isp/configs/dtsi/os05b10_awb_0.dtsi +++ b/rtos/code/hdal/vendor/isp/configs/dtsi/os05b10_awb_0.dtsi @@ -15,11 +15,11 @@ }; awb_ct_weight { size = [78 00 00 00]; - data = [fc 08 00 00 f0 0a 00 00 74 0e 00 00 5c 12 00 00 64 19 00 00 f8 2a 00 00 48 03 00 00 60 03 00 00 bc 03 00 00 f7 03 00 00 23 04 00 00 c3 04 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 08 00 00 00 08 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00]; + data = [fc 08 00 00 f0 0a 00 00 74 0e 00 00 5c 12 00 00 64 19 00 00 f8 2a 00 00 48 03 00 00 60 03 00 00 bc 03 00 00 f7 03 00 00 23 04 00 00 c3 04 00 00 01 00 00 00 01 00 00 00 02 00 00 00 05 00 00 00 10 00 00 00 08 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 03 00 00 00 08 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00]; }; awb_target { size = [24 00 00 00]; - data = [60 03 00 00 f7 03 00 00 23 04 00 00 00 04 00 00 24 04 00 00 38 04 00 00 00 04 00 00 f2 03 00 00 e8 03 00 00]; + data = [60 03 00 00 f7 03 00 00 23 04 00 00 00 04 00 00 18 04 00 00 1c 04 00 00 00 04 00 00 e8 03 00 00 e8 03 00 00]; }; awb_ct_info { size = [60 00 00 00]; @@ -39,7 +39,7 @@ }; awb_luma_weight { size = [44 00 00 00]; - data = [00 00 00 00 04 00 00 00 08 00 00 00 14 00 00 00 20 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00]; + data = [00 00 00 00 04 00 00 00 08 00 00 00 14 00 00 00 20 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 01 00 00 00 01 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00]; }; }; }; diff --git a/rtos/code/hdal/vendor/isp/configs/dtsi/os05b10_iq_0.dtsi b/rtos/code/hdal/vendor/isp/configs/dtsi/os05b10_iq_0.dtsi index 41804c8e1..8579f98a5 100755 --- a/rtos/code/hdal/vendor/isp/configs/dtsi/os05b10_iq_0.dtsi +++ b/rtos/code/hdal/vendor/isp/configs/dtsi/os05b10_iq_0.dtsi @@ -11,7 +11,7 @@ }; iq_nr { size = [f4 12 00 00]; - data = [01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 02 00 00 00 03 00 00 00 05 00 00 00 06 00 00 00 09 00 00 00 00 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 00 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 07 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 00 00 00 00 0c 00 00 00 80 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 00 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 07 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 08 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 00 00 00 00 03 00 00 00 06 00 00 00 09 00 00 00 09 00 00 00 0c 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 03 00 00 00 04 00 00 00 06 00 00 00 07 00 00 00 0a 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 0b 00 00 00 0c 00 00 00 00 00 00 00 03 00 00 00 06 00 00 00 09 00 00 00 09 00 00 00 0c 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 0c 00 00 00 01 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 04 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 0a 00 00 00 00 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 09 00 00 00 0a 00 00 00 0b 00 00 00 0c 00 00 00 0d 00 00 00 0e 00 00 00 0f 00 00 00 10 00 00 00 11 00 00 00 12 00 00 00 12 00 00 00 13 00 00 00 14 00 00 00 00 00 00 00 03 00 00 00 06 00 00 00 09 00 00 00 09 00 00 00 0c 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 05 00 00 00 07 00 00 00 09 00 00 00 0a 00 00 00 0e 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 10 00 00 00 12 00 00 00 12 00 00 00 0c 00 00 00 0e 00 00 00 0f 00 00 00 11 00 00 00 12 00 00 00 13 00 00 00 15 00 00 00 16 00 00 00 17 00 00 00 18 00 00 00 19 00 00 00 00 00 00 00 0f 00 00 00 16 00 00 00 1b 00 00 00 1f 00 00 00 2c 00 00 00 00 00 00 00 0a 00 00 00 0c 00 00 00 0e 00 00 00 10 00 00 00 12 00 00 00 14 00 00 00 16 00 00 00 17 00 00 00 19 00 00 00 1a 00 00 00 1b 00 00 00 1d 00 00 00 1e 00 00 00 1f 00 00 00 20 00 00 00 21 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 0a 00 00 00 18 00 00 00 10 00 00 00 18 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 02 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 08 00 00 00 0c 00 00 00 0e 00 00 00 11 00 00 00 18 00 00 00 00 00 00 00 1a 00 00 00 20 00 00 00 24 00 00 00 28 00 00 00 2c 00 00 00 2f 00 00 00 32 00 00 00 34 00 00 00 37 00 00 00 39 00 00 00 3b 00 00 00 3d 00 00 00 3f 00 00 00 41 00 00 00 43 00 00 00 45 00 00 00 00 00 00 00 1e 00 00 00 2a 00 00 00 34 00 00 00 3c 00 00 00 55 00 00 00 00 00 00 00 12 00 00 00 19 00 00 00 1f 00 00 00 24 00 00 00 28 00 00 00 2c 00 00 00 2f 00 00 00 32 00 00 00 36 00 00 00 38 00 00 00 3b 00 00 00 3e 00 00 00 40 00 00 00 43 00 00 00 45 00 00 00 48 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 0a 00 00 00 30 00 00 00 10 00 00 00 1d 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 08 00 00 00 0c 00 00 00 0e 00 00 00 11 00 00 00 18 00 00 00 00 00 00 00 0e 00 00 00 14 00 00 00 18 00 00 00 1c 00 00 00 20 00 00 00 23 00 00 00 26 00 00 00 28 00 00 00 2b 00 00 00 2d 00 00 00 2f 00 00 00 31 00 00 00 33 00 00 00 35 00 00 00 37 00 00 00 39 00 00 00 00 00 00 00 26 00 00 00 36 00 00 00 42 00 00 00 4d 00 00 00 6c 00 00 00 01 00 00 00 47 00 00 00 35 00 00 00 3e 00 00 00 31 00 00 00 37 00 00 00 3c 00 00 00 41 00 00 00 46 00 00 00 4a 00 00 00 4e 00 00 00 51 00 00 00 55 00 00 00 58 00 00 00 5c 00 00 00 5f 00 00 00 62 00 00 00 0f 00 00 00 00 00 00 00 20 00 00 00 0a 00 00 00 30 00 00 00 10 00 00 00 30 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5c 00 00 00 00 00 00 00 55 00 00 00 79 00 00 00 94 00 00 00 ab 00 00 00 f2 00 00 00 00 00 00 00 21 00 00 00 2f 00 00 00 3a 00 00 00 43 00 00 00 4b 00 00 00 52 00 00 00 58 00 00 00 5f 00 00 00 64 00 00 00 6a 00 00 00 6f 00 00 00 74 00 00 00 79 00 00 00 7d 00 00 00 82 00 00 00 86 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 12 00 00 00 03 00 00 00 02 00 00 00 00 01 ff 00 01 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5c 00 00 00 00 00 00 00 79 00 00 00 ab 00 00 00 d2 00 00 00 f2 00 00 00 57 01 00 00 00 00 00 00 3a 00 00 00 52 00 00 00 65 00 00 00 74 00 00 00 82 00 00 00 8f 00 00 00 9a 00 00 00 a5 00 00 00 af 00 00 00 b8 00 00 00 c1 00 00 00 ca 00 00 00 d2 00 00 00 da 00 00 00 e2 00 00 00 e9 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 16 00 00 00 03 00 00 00 02 00 00 00 00 01 ff 00 01 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5c 00 00 00 00 00 00 00 70 00 00 00 9f 00 00 00 c3 00 00 00 e1 00 00 00 3f 01 00 00 00 00 00 00 54 00 00 00 76 00 00 00 91 00 00 00 a8 00 00 00 bb 00 00 00 cd 00 00 00 de 00 00 00 ed 00 00 00 fb 00 00 00 09 01 00 00 16 01 00 00 22 01 00 00 2e 01 00 00 3a 01 00 00 45 01 00 00 50 01 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 16 00 00 00 03 00 00 00 03 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 09 00 80 00 00 00 00 00 10 00 00 00 16 00 00 00 1c 00 00 00 20 00 00 00 2d 00 00 00 00 00 00 00 12 00 00 00 18 00 00 00 20 00 00 00 25 00 00 00 2a 00 00 00 2e 00 00 00 31 00 00 00 35 00 00 00 38 00 00 00 3b 00 00 00 3e 00 00 00 41 00 00 00 43 00 00 00 46 00 00 00 48 00 00 00 4b 00 00 00 00 00 00 00 1a 01 00 00 8f 01 00 00 e9 01 00 00 34 02 00 00 1e 03 00 00 00 00 00 00 40 00 00 00 5a 00 00 00 6e 00 00 00 80 00 00 00 8f 00 00 00 9c 00 00 00 a9 00 00 00 b5 00 00 00 c0 00 00 00 ca 00 00 00 d4 00 00 00 dd 00 00 00 e6 00 00 00 ef 00 00 00 f7 00 00 00 00 01 00 00 00 00 00 00 20 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 18 00 00 00 02 00 00 00 03 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 14 02 00 00 03 03 00 00 f8 04 00 00 34 07 00 00 e3 0b 00 00 14 02 00 00 03 03 00 00 f8 04 00 00 34 07 00 00 e3 0b 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00]; + data = [01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 00 00 00 00 02 00 00 00 04 00 00 00 06 00 00 00 08 00 00 00 09 00 00 00 0a 00 00 00 0b 00 00 00 0c 00 00 00 0d 00 00 00 0d 00 00 00 0e 00 00 00 0f 00 00 00 0f 00 00 00 10 00 00 00 11 00 00 00 11 00 00 00 00 00 00 00 02 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 08 00 00 00 0a 00 00 00 0c 00 00 00 0d 00 00 00 0e 00 00 00 0f 00 00 00 10 00 00 00 12 00 00 00 12 00 00 00 13 00 00 00 14 00 00 00 15 00 00 00 16 00 00 00 17 00 00 00 18 00 00 00 08 00 00 00 00 00 00 00 69 00 00 00 08 00 00 00 0c 00 00 00 08 00 00 00 0c 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 56 05 00 00 ce 08 00 00 c4 0c 00 00 ff 0f 00 00 20 00 00 00 cd 05 00 00 92 09 00 00 e1 0d 00 00 ff 0f 00 00 00 00 80 00 00 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 04 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 0b 00 00 00 0c 00 00 00 0c 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 00 00 00 00 04 00 00 00 06 00 00 00 07 00 00 00 08 00 00 00 09 00 00 00 0a 00 00 00 0b 00 00 00 0c 00 00 00 0d 00 00 00 0d 00 00 00 0e 00 00 00 0f 00 00 00 0f 00 00 00 10 00 00 00 11 00 00 00 11 00 00 00 0d 00 00 00 0c 00 00 00 64 00 00 00 08 00 00 00 0c 00 00 00 08 00 00 00 0c 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 56 05 00 00 ce 08 00 00 c4 0c 00 00 ff 0f 00 00 20 00 00 00 44 06 00 00 57 0a 00 00 fe 0e 00 00 ff 0f 00 00 00 00 80 00 00 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 00 00 00 00 09 00 00 00 0d 00 00 00 10 00 00 00 13 00 00 00 15 00 00 00 17 00 00 00 19 00 00 00 1b 00 00 00 1c 00 00 00 1e 00 00 00 1f 00 00 00 21 00 00 00 22 00 00 00 23 00 00 00 25 00 00 00 26 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 00 00 00 00 0a 00 00 00 0f 00 00 00 12 00 00 00 15 00 00 00 18 00 00 00 1a 00 00 00 1c 00 00 00 1e 00 00 00 20 00 00 00 22 00 00 00 23 00 00 00 25 00 00 00 26 00 00 00 28 00 00 00 29 00 00 00 2b 00 00 00 0c 00 00 00 0c 00 00 00 58 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 01 95 00 00 00 00 00 00 00 00 00 20 00 00 00 56 05 00 00 ce 08 00 00 c4 0c 00 00 ff 0f 00 00 20 00 00 00 44 06 00 00 57 0a 00 00 fe 0e 00 00 ff 0f 00 00 00 00 80 00 00 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 00 00 00 00 0a 00 00 00 0e 00 00 00 12 00 00 00 14 00 00 00 17 00 00 00 19 00 00 00 1b 00 00 00 1d 00 00 00 1f 00 00 00 20 00 00 00 22 00 00 00 24 00 00 00 25 00 00 00 26 00 00 00 28 00 00 00 29 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 00 00 00 00 0e 00 00 00 14 00 00 00 19 00 00 00 1d 00 00 00 21 00 00 00 24 00 00 00 27 00 00 00 29 00 00 00 2c 00 00 00 2e 00 00 00 31 00 00 00 33 00 00 00 35 00 00 00 37 00 00 00 39 00 00 00 3b 00 00 00 0e 00 00 00 10 00 00 00 58 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 08 00 00 00 01 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 03 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 09 00 00 00 00 00 00 00 08 00 00 00 0b 00 00 00 0d 00 00 00 10 00 00 00 11 00 00 00 13 00 00 00 15 00 00 00 16 00 00 00 18 00 00 00 19 00 00 00 1a 00 00 00 1b 00 00 00 1c 00 00 00 1d 00 00 00 1e 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 08 00 00 00 0a 00 00 00 0c 00 00 00 11 00 00 00 00 00 00 00 09 00 00 00 0d 00 00 00 0f 00 00 00 12 00 00 00 14 00 00 00 16 00 00 00 18 00 00 00 1a 00 00 00 1b 00 00 00 1d 00 00 00 1e 00 00 00 1f 00 00 00 21 00 00 00 22 00 00 00 23 00 00 00 24 00 00 00 0f 00 00 00 08 00 00 00 50 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 05 00 00 00 07 00 00 00 09 00 00 00 0a 00 00 00 0e 00 00 00 00 00 00 00 08 00 00 00 0c 00 00 00 0f 00 00 00 11 00 00 00 13 00 00 00 15 00 00 00 17 00 00 00 18 00 00 00 1a 00 00 00 1b 00 00 00 1d 00 00 00 1e 00 00 00 1f 00 00 00 20 00 00 00 22 00 00 00 23 00 00 00 00 00 00 00 05 00 00 00 08 00 00 00 0a 00 00 00 0b 00 00 00 10 00 00 00 00 00 00 00 0a 00 00 00 0e 00 00 00 11 00 00 00 14 00 00 00 16 00 00 00 18 00 00 00 1a 00 00 00 1c 00 00 00 1e 00 00 00 1f 00 00 00 21 00 00 00 22 00 00 00 24 00 00 00 25 00 00 00 26 00 00 00 28 00 00 00 0f 00 00 00 04 00 00 00 50 00 00 00 0a 00 00 00 18 00 00 00 10 00 00 00 18 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 02 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 10 00 80 00 00 00 00 00 05 00 00 00 07 00 00 00 09 00 00 00 0a 00 00 00 0e 00 00 00 00 00 00 00 09 00 00 00 0d 00 00 00 0f 00 00 00 12 00 00 00 14 00 00 00 16 00 00 00 18 00 00 00 1a 00 00 00 1b 00 00 00 1d 00 00 00 1e 00 00 00 1f 00 00 00 21 00 00 00 22 00 00 00 23 00 00 00 24 00 00 00 00 00 00 00 06 00 00 00 09 00 00 00 0b 00 00 00 0c 00 00 00 12 00 00 00 00 00 00 00 16 00 00 00 20 00 00 00 27 00 00 00 2d 00 00 00 32 00 00 00 37 00 00 00 3c 00 00 00 40 00 00 00 44 00 00 00 48 00 00 00 4b 00 00 00 4e 00 00 00 52 00 00 00 55 00 00 00 58 00 00 00 5b 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 0a 00 00 00 30 00 00 00 10 00 00 00 1d 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 08 00 00 00 0c 00 00 00 0e 00 00 00 11 00 00 00 18 00 00 00 00 00 00 00 0e 00 00 00 14 00 00 00 18 00 00 00 1c 00 00 00 20 00 00 00 23 00 00 00 26 00 00 00 28 00 00 00 2b 00 00 00 2d 00 00 00 2f 00 00 00 31 00 00 00 33 00 00 00 35 00 00 00 37 00 00 00 39 00 00 00 00 00 00 00 26 00 00 00 36 00 00 00 42 00 00 00 4d 00 00 00 6c 00 00 00 01 00 00 00 47 00 00 00 35 00 00 00 3e 00 00 00 31 00 00 00 37 00 00 00 3c 00 00 00 41 00 00 00 46 00 00 00 4a 00 00 00 4e 00 00 00 51 00 00 00 55 00 00 00 58 00 00 00 5c 00 00 00 5f 00 00 00 62 00 00 00 0f 00 00 00 00 00 00 00 20 00 00 00 0a 00 00 00 30 00 00 00 10 00 00 00 30 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5c 00 00 00 00 00 00 00 55 00 00 00 79 00 00 00 94 00 00 00 ab 00 00 00 f2 00 00 00 00 00 00 00 21 00 00 00 2f 00 00 00 3a 00 00 00 43 00 00 00 4b 00 00 00 52 00 00 00 58 00 00 00 5f 00 00 00 64 00 00 00 6a 00 00 00 6f 00 00 00 74 00 00 00 79 00 00 00 7d 00 00 00 82 00 00 00 86 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 12 00 00 00 03 00 00 00 02 00 00 00 00 01 ff 00 01 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5c 00 00 00 00 00 00 00 79 00 00 00 ab 00 00 00 d2 00 00 00 f2 00 00 00 57 01 00 00 00 00 00 00 3a 00 00 00 52 00 00 00 65 00 00 00 74 00 00 00 82 00 00 00 8f 00 00 00 9a 00 00 00 a5 00 00 00 af 00 00 00 b8 00 00 00 c1 00 00 00 ca 00 00 00 d2 00 00 00 da 00 00 00 e2 00 00 00 e9 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 16 00 00 00 03 00 00 00 02 00 00 00 00 01 ff 00 01 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5c 00 00 00 00 00 00 00 70 00 00 00 9f 00 00 00 c3 00 00 00 e1 00 00 00 3f 01 00 00 00 00 00 00 54 00 00 00 76 00 00 00 91 00 00 00 a8 00 00 00 bb 00 00 00 cd 00 00 00 de 00 00 00 ed 00 00 00 fb 00 00 00 09 01 00 00 16 01 00 00 22 01 00 00 2e 01 00 00 3a 01 00 00 45 01 00 00 50 01 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 16 00 00 00 03 00 00 00 03 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 09 00 80 00 00 00 00 00 10 00 00 00 16 00 00 00 1c 00 00 00 20 00 00 00 2d 00 00 00 00 00 00 00 12 00 00 00 18 00 00 00 20 00 00 00 25 00 00 00 2a 00 00 00 2e 00 00 00 31 00 00 00 35 00 00 00 38 00 00 00 3b 00 00 00 3e 00 00 00 41 00 00 00 43 00 00 00 46 00 00 00 48 00 00 00 4b 00 00 00 00 00 00 00 1a 01 00 00 8f 01 00 00 e9 01 00 00 34 02 00 00 1e 03 00 00 00 00 00 00 40 00 00 00 5a 00 00 00 6e 00 00 00 80 00 00 00 8f 00 00 00 9c 00 00 00 a9 00 00 00 b5 00 00 00 c0 00 00 00 ca 00 00 00 d4 00 00 00 dd 00 00 00 e6 00 00 00 ef 00 00 00 f7 00 00 00 00 01 00 00 00 00 00 00 20 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 18 00 00 00 02 00 00 00 03 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 14 02 00 00 03 03 00 00 f8 04 00 00 34 07 00 00 e3 0b 00 00 14 02 00 00 03 03 00 00 f8 04 00 00 34 07 00 00 e3 0b 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00]; }; iq_cfa { size = [54 05 00 00]; @@ -23,31 +23,31 @@ }; iq_gamma { size = [94 0e 00 00]; - data = [00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 10 00 00 00 18 00 00 00 1c 00 00 00 20 00 00 00 24 00 00 00 26 00 00 00 28 00 00 00 29 00 00 00 2a 00 00 00 2b 00 00 00 2c 00 00 00 2d 00 00 00 2e 00 00 00 2f 00 00 00 30 00 00 00 31 00 00 00 32 00 00 00 33 00 00 00 34 00 00 00 35 00 00 00 36 00 00 00 37 00 00 00 38 00 00 00 39 00 00 00 3a 00 00 00 3b 00 00 00 3c 00 00 00 3d 00 00 00 3e 00 00 00 3f 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 00 00 00 00 08 00 00 00 10 00 00 00 18 00 00 00 1c 00 00 00 20 00 00 00 24 00 00 00 26 00 00 00 28 00 00 00 29 00 00 00 2a 00 00 00 2b 00 00 00 2c 00 00 00 2d 00 00 00 2e 00 00 00 2f 00 00 00 30 00 00 00 31 00 00 00 32 00 00 00 33 00 00 00 34 00 00 00 35 00 00 00 36 00 00 00 37 00 00 00 38 00 00 00 39 00 00 00 3a 00 00 00 3b 00 00 00 3c 00 00 00 3d 00 00 00 3e 00 00 00 3f 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 19 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 32 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 4b 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 64 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 00 00 00 00 25 00 00 00 49 00 00 00 6b 00 00 00 8b 00 00 00 a9 00 00 00 c6 00 00 00 e1 00 00 00 f1 00 00 00 01 01 00 00 11 01 00 00 21 01 00 00 30 01 00 00 3e 01 00 00 4d 01 00 00 5b 01 00 00 68 01 00 00 75 01 00 00 82 01 00 00 8f 01 00 00 9b 01 00 00 a6 01 00 00 b1 01 00 00 bc 01 00 00 c7 01 00 00 d1 01 00 00 db 01 00 00 e4 01 00 00 ed 01 00 00 f6 01 00 00 fe 01 00 00 06 02 00 00 0d 02 00 00 14 02 00 00 1b 02 00 00 22 02 00 00 29 02 00 00 30 02 00 00 36 02 00 00 3d 02 00 00 44 02 00 00 4b 02 00 00 52 02 00 00 59 02 00 00 5f 02 00 00 66 02 00 00 6d 02 00 00 73 02 00 00 7a 02 00 00 80 02 00 00 87 02 00 00 8d 02 00 00 93 02 00 00 9a 02 00 00 a0 02 00 00 a6 02 00 00 ac 02 00 00 b3 02 00 00 b9 02 00 00 bf 02 00 00 c5 02 00 00 cb 02 00 00 d1 02 00 00 d7 02 00 00 dd 02 00 00 e3 02 00 00 e8 02 00 00 ee 02 00 00 f4 02 00 00 fa 02 00 00 ff 02 00 00 04 03 00 00 09 03 00 00 0e 03 00 00 13 03 00 00 18 03 00 00 1d 03 00 00 21 03 00 00 26 03 00 00 2b 03 00 00 30 03 00 00 35 03 00 00 3a 03 00 00 3e 03 00 00 43 03 00 00 48 03 00 00 4d 03 00 00 51 03 00 00 56 03 00 00 5b 03 00 00 5f 03 00 00 64 03 00 00 68 03 00 00 6d 03 00 00 72 03 00 00 76 03 00 00 7b 03 00 00 7f 03 00 00 84 03 00 00 88 03 00 00 8c 03 00 00 91 03 00 00 95 03 00 00 99 03 00 00 9e 03 00 00 a2 03 00 00 a6 03 00 00 ab 03 00 00 af 03 00 00 b3 03 00 00 b7 03 00 00 bb 03 00 00 bf 03 00 00 c4 03 00 00 c8 03 00 00 cc 03 00 00 d0 03 00 00 d4 03 00 00 d8 03 00 00 dc 03 00 00 e0 03 00 00 e4 03 00 00 e8 03 00 00 eb 03 00 00 ef 03 00 00 f3 03 00 00 f7 03 00 00 fb 03 00 00 ff 03 00 00 07 00 00 00 00 00 00 00 23 00 00 00 44 00 00 00 61 00 00 00 7d 00 00 00 98 00 00 00 b1 00 00 00 c4 00 00 00 d7 00 00 00 e9 00 00 00 fb 00 00 00 0c 01 00 00 1d 01 00 00 2c 01 00 00 3b 01 00 00 49 01 00 00 57 01 00 00 64 01 00 00 72 01 00 00 7f 01 00 00 8c 01 00 00 98 01 00 00 a5 01 00 00 b1 01 00 00 bd 01 00 00 c9 01 00 00 d5 01 00 00 e0 01 00 00 eb 01 00 00 f6 01 00 00 01 02 00 00 0c 02 00 00 16 02 00 00 20 02 00 00 2a 02 00 00 34 02 00 00 3e 02 00 00 48 02 00 00 51 02 00 00 5a 02 00 00 63 02 00 00 6c 02 00 00 75 02 00 00 7e 02 00 00 86 02 00 00 8e 02 00 00 96 02 00 00 9e 02 00 00 a6 02 00 00 ae 02 00 00 b5 02 00 00 bd 02 00 00 c4 02 00 00 cb 02 00 00 d2 02 00 00 d9 02 00 00 e0 02 00 00 e7 02 00 00 ed 02 00 00 f4 02 00 00 fa 02 00 00 00 03 00 00 06 03 00 00 0c 03 00 00 12 03 00 00 18 03 00 00 1d 03 00 00 23 03 00 00 28 03 00 00 2e 03 00 00 33 03 00 00 38 03 00 00 3d 03 00 00 42 03 00 00 47 03 00 00 4c 03 00 00 51 03 00 00 56 03 00 00 5a 03 00 00 5f 03 00 00 63 03 00 00 67 03 00 00 6c 03 00 00 70 03 00 00 74 03 00 00 78 03 00 00 7c 03 00 00 80 03 00 00 84 03 00 00 88 03 00 00 8c 03 00 00 8f 03 00 00 93 03 00 00 97 03 00 00 9a 03 00 00 9e 03 00 00 a1 03 00 00 a5 03 00 00 a8 03 00 00 ab 03 00 00 af 03 00 00 b2 03 00 00 b5 03 00 00 b8 03 00 00 bb 03 00 00 bf 03 00 00 c2 03 00 00 c5 03 00 00 c8 03 00 00 cb 03 00 00 ce 03 00 00 d1 03 00 00 d3 03 00 00 d6 03 00 00 d9 03 00 00 dc 03 00 00 df 03 00 00 e2 03 00 00 e4 03 00 00 e7 03 00 00 ea 03 00 00 ed 03 00 00 ef 03 00 00 f2 03 00 00 f5 03 00 00 f7 03 00 00 fa 03 00 00 fc 03 00 00 ff 03 00 00 05 00 00 00 00 00 00 00 2b 00 00 00 50 00 00 00 6a 00 00 00 86 00 00 00 a2 00 00 00 bd 00 00 00 d5 00 00 00 ec 00 00 00 00 01 00 00 11 01 00 00 21 01 00 00 2e 01 00 00 3e 01 00 00 4d 01 00 00 5b 01 00 00 6a 01 00 00 78 01 00 00 86 01 00 00 93 01 00 00 a0 01 00 00 ad 01 00 00 ba 01 00 00 c6 01 00 00 d3 01 00 00 df 01 00 00 ea 01 00 00 f6 01 00 00 01 02 00 00 0c 02 00 00 17 02 00 00 22 02 00 00 2c 02 00 00 36 02 00 00 40 02 00 00 4a 02 00 00 54 02 00 00 5d 02 00 00 66 02 00 00 70 02 00 00 78 02 00 00 81 02 00 00 8a 02 00 00 92 02 00 00 9a 02 00 00 a2 02 00 00 aa 02 00 00 b2 02 00 00 ba 02 00 00 c1 02 00 00 c9 02 00 00 d0 02 00 00 d7 02 00 00 de 02 00 00 e5 02 00 00 eb 02 00 00 f2 02 00 00 f8 02 00 00 fe 02 00 00 04 03 00 00 0b 03 00 00 10 03 00 00 16 03 00 00 1c 03 00 00 22 03 00 00 27 03 00 00 2c 03 00 00 32 03 00 00 37 03 00 00 3c 03 00 00 41 03 00 00 46 03 00 00 4b 03 00 00 4f 03 00 00 54 03 00 00 59 03 00 00 5d 03 00 00 61 03 00 00 66 03 00 00 6a 03 00 00 6e 03 00 00 72 03 00 00 76 03 00 00 7a 03 00 00 7e 03 00 00 82 03 00 00 86 03 00 00 89 03 00 00 8d 03 00 00 91 03 00 00 94 03 00 00 98 03 00 00 9b 03 00 00 9e 03 00 00 a2 03 00 00 a5 03 00 00 a8 03 00 00 ab 03 00 00 af 03 00 00 b2 03 00 00 b5 03 00 00 b8 03 00 00 bb 03 00 00 be 03 00 00 c1 03 00 00 c3 03 00 00 c6 03 00 00 c9 03 00 00 cc 03 00 00 cf 03 00 00 d1 03 00 00 d4 03 00 00 d7 03 00 00 d9 03 00 00 dc 03 00 00 df 03 00 00 e1 03 00 00 e4 03 00 00 e6 03 00 00 e9 03 00 00 eb 03 00 00 ee 03 00 00 f0 03 00 00 f3 03 00 00 f5 03 00 00 f8 03 00 00 fa 03 00 00 fd 03 00 00 ff 03 00 00]; + data = [00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 10 00 00 00 18 00 00 00 1c 00 00 00 20 00 00 00 24 00 00 00 26 00 00 00 28 00 00 00 29 00 00 00 2a 00 00 00 2b 00 00 00 2c 00 00 00 2d 00 00 00 2e 00 00 00 2f 00 00 00 30 00 00 00 31 00 00 00 32 00 00 00 33 00 00 00 34 00 00 00 35 00 00 00 36 00 00 00 37 00 00 00 38 00 00 00 39 00 00 00 3a 00 00 00 3b 00 00 00 3c 00 00 00 3d 00 00 00 3e 00 00 00 3f 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1d 00 00 00 39 00 00 00 56 00 00 00 72 00 00 00 8e 00 00 00 aa 00 00 00 c4 00 00 00 dd 00 00 00 ee 00 00 00 ff 00 00 00 0f 01 00 00 20 01 00 00 2f 01 00 00 3e 01 00 00 4e 01 00 00 5e 01 00 00 6d 01 00 00 7d 01 00 00 8c 01 00 00 9c 01 00 00 ab 01 00 00 bb 01 00 00 cb 01 00 00 db 01 00 00 fa 01 00 00 19 02 00 00 38 02 00 00 58 02 00 00 77 02 00 00 96 02 00 00 b6 02 00 00 d5 02 00 00 f4 02 00 00 13 03 00 00 32 03 00 00 52 03 00 00 90 03 00 00 cf 03 00 00 0d 04 00 00 4b 04 00 00 c8 04 00 00 45 05 00 00 c2 05 00 00 3f 06 00 00 bc 06 00 00 38 07 00 00 b5 07 00 00 32 08 00 00 af 08 00 00 2c 09 00 00 a9 09 00 00 25 0a 00 00 a2 0a 00 00 1f 0b 00 00 9c 0b 00 00 19 0c 00 00 96 0c 00 00 12 0d 00 00 8f 0d 00 00 0c 0e 00 00 89 0e 00 00 06 0f 00 00 83 0f 00 00 ff 0f 00 00 00 00 00 00 08 00 00 00 10 00 00 00 18 00 00 00 1c 00 00 00 20 00 00 00 24 00 00 00 26 00 00 00 28 00 00 00 29 00 00 00 2a 00 00 00 2b 00 00 00 2c 00 00 00 2d 00 00 00 2e 00 00 00 2f 00 00 00 30 00 00 00 31 00 00 00 32 00 00 00 33 00 00 00 34 00 00 00 35 00 00 00 36 00 00 00 37 00 00 00 38 00 00 00 39 00 00 00 3a 00 00 00 3b 00 00 00 3c 00 00 00 3d 00 00 00 3e 00 00 00 3f 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 19 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 32 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 4b 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 64 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 00 00 00 00 25 00 00 00 49 00 00 00 6b 00 00 00 8b 00 00 00 a9 00 00 00 c6 00 00 00 e1 00 00 00 f1 00 00 00 01 01 00 00 11 01 00 00 21 01 00 00 30 01 00 00 3e 01 00 00 4d 01 00 00 5b 01 00 00 68 01 00 00 75 01 00 00 82 01 00 00 8f 01 00 00 9b 01 00 00 a6 01 00 00 b1 01 00 00 bc 01 00 00 c7 01 00 00 d1 01 00 00 db 01 00 00 e4 01 00 00 ed 01 00 00 f6 01 00 00 fe 01 00 00 06 02 00 00 0d 02 00 00 14 02 00 00 1b 02 00 00 22 02 00 00 29 02 00 00 30 02 00 00 36 02 00 00 3d 02 00 00 44 02 00 00 4b 02 00 00 52 02 00 00 59 02 00 00 5f 02 00 00 66 02 00 00 6d 02 00 00 73 02 00 00 7a 02 00 00 80 02 00 00 87 02 00 00 8d 02 00 00 93 02 00 00 9a 02 00 00 a0 02 00 00 a6 02 00 00 ac 02 00 00 b3 02 00 00 b9 02 00 00 bf 02 00 00 c5 02 00 00 cb 02 00 00 d1 02 00 00 d7 02 00 00 dd 02 00 00 e3 02 00 00 e8 02 00 00 ee 02 00 00 f4 02 00 00 fa 02 00 00 ff 02 00 00 04 03 00 00 09 03 00 00 0e 03 00 00 13 03 00 00 18 03 00 00 1d 03 00 00 21 03 00 00 26 03 00 00 2b 03 00 00 30 03 00 00 35 03 00 00 3a 03 00 00 3e 03 00 00 43 03 00 00 48 03 00 00 4d 03 00 00 51 03 00 00 56 03 00 00 5b 03 00 00 5f 03 00 00 64 03 00 00 68 03 00 00 6d 03 00 00 72 03 00 00 76 03 00 00 7b 03 00 00 7f 03 00 00 84 03 00 00 88 03 00 00 8c 03 00 00 91 03 00 00 95 03 00 00 99 03 00 00 9e 03 00 00 a2 03 00 00 a6 03 00 00 ab 03 00 00 af 03 00 00 b3 03 00 00 b7 03 00 00 bb 03 00 00 bf 03 00 00 c4 03 00 00 c8 03 00 00 cc 03 00 00 d0 03 00 00 d4 03 00 00 d8 03 00 00 dc 03 00 00 e0 03 00 00 e4 03 00 00 e8 03 00 00 eb 03 00 00 ef 03 00 00 f3 03 00 00 f7 03 00 00 fb 03 00 00 ff 03 00 00 07 00 00 00 00 00 00 00 23 00 00 00 44 00 00 00 61 00 00 00 7d 00 00 00 98 00 00 00 b1 00 00 00 c4 00 00 00 d7 00 00 00 e9 00 00 00 fb 00 00 00 0c 01 00 00 1d 01 00 00 2c 01 00 00 3b 01 00 00 49 01 00 00 57 01 00 00 64 01 00 00 72 01 00 00 7f 01 00 00 8c 01 00 00 98 01 00 00 a5 01 00 00 b1 01 00 00 bd 01 00 00 c9 01 00 00 d5 01 00 00 e0 01 00 00 eb 01 00 00 f6 01 00 00 01 02 00 00 0c 02 00 00 16 02 00 00 20 02 00 00 2a 02 00 00 34 02 00 00 3e 02 00 00 48 02 00 00 51 02 00 00 5a 02 00 00 63 02 00 00 6c 02 00 00 75 02 00 00 7e 02 00 00 86 02 00 00 8e 02 00 00 96 02 00 00 9e 02 00 00 a6 02 00 00 ae 02 00 00 b5 02 00 00 bd 02 00 00 c4 02 00 00 cb 02 00 00 d2 02 00 00 d9 02 00 00 e0 02 00 00 e7 02 00 00 ed 02 00 00 f4 02 00 00 fa 02 00 00 00 03 00 00 06 03 00 00 0c 03 00 00 12 03 00 00 18 03 00 00 1d 03 00 00 23 03 00 00 28 03 00 00 2e 03 00 00 33 03 00 00 38 03 00 00 3d 03 00 00 42 03 00 00 47 03 00 00 4c 03 00 00 51 03 00 00 56 03 00 00 5a 03 00 00 5f 03 00 00 63 03 00 00 67 03 00 00 6c 03 00 00 70 03 00 00 74 03 00 00 78 03 00 00 7c 03 00 00 80 03 00 00 84 03 00 00 88 03 00 00 8c 03 00 00 8f 03 00 00 93 03 00 00 97 03 00 00 9a 03 00 00 9e 03 00 00 a1 03 00 00 a5 03 00 00 a8 03 00 00 ab 03 00 00 af 03 00 00 b2 03 00 00 b5 03 00 00 b8 03 00 00 bb 03 00 00 bf 03 00 00 c2 03 00 00 c5 03 00 00 c8 03 00 00 cb 03 00 00 ce 03 00 00 d1 03 00 00 d3 03 00 00 d6 03 00 00 d9 03 00 00 dc 03 00 00 df 03 00 00 e2 03 00 00 e4 03 00 00 e7 03 00 00 ea 03 00 00 ed 03 00 00 ef 03 00 00 f2 03 00 00 f5 03 00 00 f7 03 00 00 fa 03 00 00 fc 03 00 00 ff 03 00 00 05 00 00 00 00 00 00 00 2b 00 00 00 50 00 00 00 6a 00 00 00 86 00 00 00 a2 00 00 00 bd 00 00 00 d5 00 00 00 ec 00 00 00 00 01 00 00 11 01 00 00 21 01 00 00 2e 01 00 00 3e 01 00 00 4d 01 00 00 5b 01 00 00 6a 01 00 00 78 01 00 00 86 01 00 00 93 01 00 00 a0 01 00 00 ad 01 00 00 ba 01 00 00 c6 01 00 00 d3 01 00 00 df 01 00 00 ea 01 00 00 f6 01 00 00 01 02 00 00 0c 02 00 00 17 02 00 00 22 02 00 00 2c 02 00 00 36 02 00 00 40 02 00 00 4a 02 00 00 54 02 00 00 5d 02 00 00 66 02 00 00 70 02 00 00 78 02 00 00 81 02 00 00 8a 02 00 00 92 02 00 00 9a 02 00 00 a2 02 00 00 aa 02 00 00 b2 02 00 00 ba 02 00 00 c1 02 00 00 c9 02 00 00 d0 02 00 00 d7 02 00 00 de 02 00 00 e5 02 00 00 eb 02 00 00 f2 02 00 00 f8 02 00 00 fe 02 00 00 04 03 00 00 0b 03 00 00 10 03 00 00 16 03 00 00 1c 03 00 00 22 03 00 00 27 03 00 00 2c 03 00 00 32 03 00 00 37 03 00 00 3c 03 00 00 41 03 00 00 46 03 00 00 4b 03 00 00 4f 03 00 00 54 03 00 00 59 03 00 00 5d 03 00 00 61 03 00 00 66 03 00 00 6a 03 00 00 6e 03 00 00 72 03 00 00 76 03 00 00 7a 03 00 00 7e 03 00 00 82 03 00 00 86 03 00 00 89 03 00 00 8d 03 00 00 91 03 00 00 94 03 00 00 98 03 00 00 9b 03 00 00 9e 03 00 00 a2 03 00 00 a5 03 00 00 a8 03 00 00 ab 03 00 00 af 03 00 00 b2 03 00 00 b5 03 00 00 b8 03 00 00 bb 03 00 00 be 03 00 00 c1 03 00 00 c3 03 00 00 c6 03 00 00 c9 03 00 00 cc 03 00 00 cf 03 00 00 d1 03 00 00 d4 03 00 00 d7 03 00 00 d9 03 00 00 dc 03 00 00 df 03 00 00 e1 03 00 00 e4 03 00 00 e6 03 00 00 e9 03 00 00 eb 03 00 00 ee 03 00 00 f0 03 00 00 f3 03 00 00 f5 03 00 00 f8 03 00 00 fa 03 00 00 fd 03 00 00 ff 03 00 00]; }; iq_ccm { size = [40 02 00 00]; - data = [00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ee 19 00 00 47 01 a9 ff 10 00 a7 ff 9a 01 c0 ff 0b 00 82 ff 73 01 82 84 80 80 80 86 8b 82 7e 7e 7e 80 80 80 80 80 80 80 80 80 80 80 80 84 00 00 ed ff ff ff f2 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 0f 00 00 00 17 00 00 00 24 00 00 00 30 00 00 00 1a 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f5 ff ff ff d8 0e 00 00 38 01 be ff 09 00 8f ff 80 01 f1 ff 08 00 6b ff 8c 01 84 82 80 80 80 86 86 84 80 7e 80 80 80 80 80 80 80 80 80 80 80 80 80 86 00 00 eb ff ff ff f5 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 0e 00 00 00 13 00 00 00 1f 00 00 00 2c 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f3 ff ff ff a0 0b 00 00 38 01 cd ff fb ff 66 ff b0 01 eb ff 25 00 ca fe 11 02 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]; + data = [00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ee 19 00 00 47 01 a9 ff 10 00 a7 ff 9a 01 c0 ff 0b 00 82 ff 73 01 82 84 80 80 80 88 8d 84 80 7e 7e 80 80 80 80 80 80 80 80 80 80 80 80 84 00 00 ed ff ff ff f2 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 1d 00 00 00 2a 00 00 00 36 00 00 00 1a 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f5 ff ff ff d8 0e 00 00 38 01 be ff 09 00 8f ff 80 01 f1 ff 08 00 6b ff 8c 01 84 82 80 80 80 86 86 84 80 7e 80 80 80 80 80 80 80 80 80 80 80 80 80 86 00 00 eb ff ff ff f5 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 0e 00 00 00 13 00 00 00 1f 00 00 00 2c 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f3 ff ff ff a0 0b 00 00 38 01 cd ff fb ff 66 ff b0 01 eb ff 25 00 ca fe 11 02 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]; }; iq_color { size = [ec 06 00 00]; - data = [00 00 00 00 80 80 40 10 00 00 00 00 00 00 00 00 00 00 00 00 00 14 0f 0a 05 00 00 00 00 00 00 00 00 00 05 0a 0f 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 9e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 d0 00 00 00 8d aa 58 33 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 7c ff b7 7e 4f 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 6e 40 20 10 04 00 00 00 00 00 00 00 00 00 00 00 6e 40 20 10 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 00 00 00 64 00 00 00 73 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 82 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 60 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 60 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 6e c8 78 46 20 10 00 00 00 00 00 00 00 00 00 00 00 c8 78 46 20 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 46 00 00 00 5a 00 00 00 6e 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 78 b4 6e 40 20 10 00 00 00 00 00 00 00 00 00 00 00 b4 6e 40 20 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00]; + data = [00 00 00 00 80 80 40 10 00 00 00 00 00 00 00 00 00 00 00 00 00 14 0f 0a 05 00 00 00 00 00 00 00 00 00 05 0a 0f 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 9e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6e 00 00 00 80 00 00 00 8a 00 00 00 94 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 9e 00 00 00 8d aa 58 33 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 8a 00 00 00 7c ff b7 7e 4f 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 6e 40 20 10 04 00 00 00 00 00 00 00 00 00 00 00 6e 40 20 10 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 00 00 00 64 00 00 00 73 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 82 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 60 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 60 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 6e c8 78 46 20 10 00 00 00 00 00 00 00 00 00 00 00 c8 78 46 20 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 46 00 00 00 5a 00 00 00 6e 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 78 b4 6e 40 20 10 00 00 00 00 00 00 00 00 00 00 00 b4 6e 40 20 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00]; }; iq_contrast { size = [b0 00 00 00]; - data = [00 00 00 00 80 00 00 00 00 00 00 00 00 00 8d 28 28 28 28 28 28 28 28 28 87 13 1e 2a 33 35 35 31 25 21 87 13 21 2f 3b 42 42 3b 38 34 8d 25 2b 35 3c 49 53 4e 43 37 8d 25 2b 35 3c 49 53 4e 43 37 97 32 32 32 32 32 32 32 32 32 af 32 32 32 32 32 32 32 32 32 be 00 00 00 00 00 00 00 00 00 80 05 05 05 05 05 05 05 05 05 80 0a 0a 0a 0a 0a 0a 0a 0a 0a 80 0a 0a 0a 0a 0a 0a 0a 0a 0a 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00]; + data = [00 00 00 00 80 00 00 00 00 00 00 00 00 00 87 11 11 16 25 25 25 25 1b 11 87 14 14 19 23 30 30 2c 20 19 80 14 1e 2b 2d 32 32 2b 28 24 87 17 21 26 2d 2f 2f 2f 2f 25 97 04 05 12 1e 1e 1e 1e 1e 19 96 00 0a 19 1e 1e 1e 1e 14 0a 96 00 05 0a 14 14 14 14 0a 00 be 00 00 00 00 00 00 00 00 00 80 05 05 05 05 05 05 05 05 05 80 0a 0a 0a 0a 0a 0a 0a 0a 0a 80 0a 0a 0a 0a 0a 0a 0a 0a 0a 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00]; }; iq_edge { size = [e0 05 00 00]; - data = [01 00 00 00 00 00 00 00 80 00 00 00 31 00 00 00 64 78 8c a0 b4 c8 e0 ff ff e0 c0 aa 9a 90 88 80 1e 30 3c 46 52 55 55 55 58 58 55 4f 49 3f 3f 3c 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 00 00 00 80 00 00 00 80 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 08 00 00 00 28 00 00 00 f0 00 00 00 00 01 00 00 40 50 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 8c 00 00 00 78 00 00 00 10 00 00 00 09 00 00 00 04 00 00 00 0e 00 00 00 2a 00 00 00 38 00 00 00 46 00 00 00 70 00 00 00 40 6c 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 8c 00 00 00 82 00 00 00 10 00 00 00 09 00 00 00 04 00 00 00 0a 00 00 00 2a 00 00 00 70 00 00 00 7e 00 00 00 92 00 00 00 14 b6 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 8c 00 00 00 78 00 00 00 02 00 00 00 0f 00 00 00 0c 00 00 00 02 00 00 00 2a 00 00 00 54 00 00 00 70 00 00 00 9a 00 00 00 14 bb 00 00 00 02 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 8c 00 00 00 62 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 54 00 00 00 62 00 00 00 66 00 00 00 dc 00 00 00 28 60 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 88 00 00 00 54 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 54 00 00 00 62 00 00 00 70 00 00 00 f0 00 00 00 18 60 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 7e 00 00 00 46 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 5a 00 00 00 5e 01 00 00 88 01 00 00 96 01 00 00 18 60 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 7e 00 00 00 d2 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 c4 00 00 00 ee 00 00 00 0a 01 00 00 96 01 00 00 14 6a 00 00 00 01 00 00 b4 00 00 00 1c 00 00 00 80 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 01 00 00 00 02 00 00 00 d2 00 00 00 fc 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 46 00 00 00 18 01 00 00 42 01 00 00 5e 01 00 00 14 80 00 00 80 00 00 00 b4 00 00 00 2a 00 00 00 80 00 00 00 00 00 00 00 02 00 00 00 0e 00 00 00 00 02 00 00 01 00 00 00 02 00 00 00 5a 00 00 00 5a 00 00 00 09 00 00 00 06 00 00 00 04 00 00 00 04 00 00 00 18 01 00 00 5e 01 00 00 7a 01 00 00 8f 01 00 00 20 50 00 00 00 01 00 00 00 01 00 00 0f 00 00 00 80 00 00 00 01 00 00 00 02 00 00 00 0a 00 00 00 00 02 00 00 01 00 00 00 03 00 00 00 5a 00 00 00 5a 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 18 01 00 00 5e 01 00 00 85 01 00 00 8f 01 00 00 20 50 00 00 00 01 00 00 00 01 00 00 19 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 0a 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 5a 00 00 00 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 18 01 00 00 bc 01 00 00 53 02 00 00 5b 02 00 00 20 46 00 00 00 01 00 00 00 01 00 00 19 00 00 00 80 00 00 00 05 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 6e 00 00 00 6e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 21 01 00 00 be 01 00 00 58 02 00 00 6c 02 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 05 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00]; + data = [01 00 00 00 00 00 00 00 80 00 00 00 31 00 00 00 21 49 6a 85 a9 d1 ef ff ff e0 c0 aa 9a 90 88 80 28 30 36 3a 40 48 4b 4b 4b 4b 46 46 46 46 46 46 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 00 00 00 80 00 00 00 80 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 08 00 00 00 28 00 00 00 f0 00 00 00 00 01 00 00 40 50 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 78 00 00 00 78 00 00 00 0a 00 00 00 08 00 00 00 04 00 00 00 02 00 00 00 48 00 00 00 60 00 00 00 6e 00 00 00 82 00 00 00 20 50 00 00 c8 00 00 00 b4 00 00 00 00 00 00 00 5f 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 a0 00 00 00 a0 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 54 00 00 00 6e 00 00 00 87 00 00 00 a0 00 00 00 14 60 00 00 b4 00 00 00 64 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 8c 00 00 00 8c 00 00 00 00 00 00 00 02 00 00 00 03 00 00 00 00 00 00 00 3c 00 00 00 46 00 00 00 50 00 00 00 6e 00 00 00 34 50 00 00 af 00 00 00 46 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 8c 00 00 00 8c 00 00 00 00 00 00 00 03 00 00 00 04 00 00 00 01 00 00 00 46 00 00 00 5f 00 00 00 64 00 00 00 82 00 00 00 24 50 00 00 b0 00 00 00 50 00 00 00 00 00 00 00 79 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 78 00 00 00 78 00 00 00 02 00 00 00 04 00 00 00 04 00 00 00 02 00 00 00 a0 00 00 00 bc 00 00 00 d2 00 00 00 f0 00 00 00 12 48 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 69 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 78 00 00 00 78 00 00 00 02 00 00 00 04 00 00 00 04 00 00 00 00 00 00 00 0e 01 00 00 40 01 00 00 54 01 00 00 96 01 00 00 12 48 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 64 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 48 00 00 00 48 00 00 00 00 00 00 00 04 00 00 00 04 00 00 00 00 00 00 00 c4 00 00 00 7c 01 00 00 a4 01 00 00 c2 01 00 00 14 46 00 00 00 01 00 00 b4 00 00 00 1c 00 00 00 64 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 02 00 00 01 00 00 00 02 00 00 00 d2 00 00 00 fc 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 46 00 00 00 18 01 00 00 42 01 00 00 5e 01 00 00 14 80 00 00 80 00 00 00 b4 00 00 00 2a 00 00 00 80 00 00 00 00 00 00 00 02 00 00 00 0e 00 00 00 00 02 00 00 01 00 00 00 02 00 00 00 5a 00 00 00 5a 00 00 00 09 00 00 00 06 00 00 00 04 00 00 00 04 00 00 00 18 01 00 00 5e 01 00 00 7a 01 00 00 8f 01 00 00 20 50 00 00 00 01 00 00 00 01 00 00 0f 00 00 00 80 00 00 00 01 00 00 00 02 00 00 00 0a 00 00 00 00 02 00 00 01 00 00 00 03 00 00 00 5a 00 00 00 5a 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 18 01 00 00 5e 01 00 00 85 01 00 00 8f 01 00 00 20 50 00 00 00 01 00 00 00 01 00 00 19 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 0a 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 5a 00 00 00 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 18 01 00 00 bc 01 00 00 53 02 00 00 5b 02 00 00 20 46 00 00 00 01 00 00 00 01 00 00 19 00 00 00 80 00 00 00 05 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 6e 00 00 00 6e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 21 01 00 00 be 01 00 00 58 02 00 00 6c 02 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 05 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00]; }; iq_3dnr { size = [64 1f 00 00]; - data = [01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0f 00 00 00 40 00 00 00 40 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 c8 00 00 00 c8 00 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 80 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 b4 00 00 00 e6 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 80 00 00 00 40 00 00 00 00 01 00 00 00 01 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 40 00 00 00 40 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 0c 00 00 00 18 00 00 00 28 00 00 00 4c 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 40 00 00 00 00 00 00 00 06 00 00 00 0c 00 00 00 18 00 00 00 28 00 00 00 4c 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 40 00 00 00 04 01 00 00 00 00 00 00 08 00 00 00 50 00 00 00 50 00 00 00 00 00 00 00 b4 00 00 00 b4 00 00 00 b4 00 00 00 f4 01 00 00 f4 01 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 b4 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 8c 00 00 00 8c 00 00 00 8c 00 00 00 8c 00 00 00 10 00 00 00 0f 00 00 00 0f 00 00 00 10 00 00 00 0e 00 00 00 0e 00 00 00 0e 00 00 00 0e 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 35 00 00 00 35 00 00 00 30 00 00 00 30 00 00 00 2b 00 00 00 2b 00 00 00 2b 00 00 00 2b 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 00 00 00 14 0a 0a 02 00 00 00 00 00 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 08 00 00 00 2c 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 0f 00 00 00 14 00 00 00 20 00 00 00 04 00 00 00 01 00 00 00 00 00 00 00 0d 00 00 00 1b 00 00 00 29 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 00 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 00 00 00 00 2c 01 00 00 2c 01 00 00 2c 01 00 00 f4 01 00 00 f4 01 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 9d 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 8c 00 00 00 8c 00 00 00 8c 00 00 00 8c 00 00 00 1c 00 00 00 1b 00 00 00 1b 00 00 00 1c 00 00 00 1a 00 00 00 1a 00 00 00 1a 00 00 00 1a 00 00 00 82 00 00 00 82 00 00 00 82 00 00 00 82 00 00 00 78 00 00 00 78 00 00 00 78 00 00 00 78 00 00 00 2d 00 00 00 2d 00 00 00 28 00 00 00 28 00 00 00 23 00 00 00 23 00 00 00 23 00 00 00 23 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 0a 0a 14 1e 0c 05 14 08 02 00 00 00 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 10 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 0f 00 00 00 1e 00 00 00 20 00 00 00 06 00 00 00 02 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 01 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 84 03 00 00 84 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 b4 00 00 00 08 00 00 00 04 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 15 00 00 00 15 00 00 00 15 00 00 00 15 00 00 00 d2 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3a 00 00 00 3a 00 00 00 3a 00 00 00 3a 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 03 03 00 01 00 00 00 14 50 78 32 50 50 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 ff 00 00 00 ff 00 00 00 30 00 00 00 0c 00 00 00 06 00 00 00 00 00 00 00 0c 00 00 00 16 00 00 00 25 00 00 00 37 00 00 00 4b 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 02 00 00 01 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 84 03 00 00 84 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 cb 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 1a 00 00 00 19 00 00 00 19 00 00 00 1a 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 5f 00 00 00 5f 00 00 00 5a 00 00 00 5a 00 00 00 55 00 00 00 55 00 00 00 55 00 00 00 55 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 32 64 96 46 64 64 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 50 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 05 00 00 00 ff 00 00 00 ff 00 00 00 40 00 00 00 0c 00 00 00 06 00 00 00 00 00 00 00 0c 00 00 00 19 00 00 00 28 00 00 00 3c 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 02 00 00 00 08 00 00 00 a0 00 00 00 a0 00 00 00 00 00 00 00 90 01 00 00 90 01 00 00 90 01 00 00 84 03 00 00 84 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 98 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 1e 00 00 00 1d 00 00 00 1d 00 00 00 1e 00 00 00 1c 00 00 00 1c 00 00 00 1c 00 00 00 1c 00 00 00 18 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 3c 00 00 00 3c 00 00 00 37 00 00 00 37 00 00 00 32 00 00 00 32 00 00 00 32 00 00 00 32 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 64 a0 c8 64 78 78 20 08 02 00 00 00 08 00 00 00 10 00 00 00 18 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 50 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 05 00 00 00 ff 00 00 00 ff 00 00 00 40 00 00 00 0c 00 00 00 06 00 00 00 00 00 00 00 0c 00 00 00 19 00 00 00 25 00 00 00 34 00 00 00 4a 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 3e 00 00 00 48 00 00 00 57 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 02 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 20 03 00 00 20 03 00 00 03 00 00 00 03 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 d8 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 1c 00 00 00 1b 00 00 00 1b 00 00 00 1c 00 00 00 1a 00 00 00 1a 00 00 00 1a 00 00 00 1a 00 00 00 4a 01 00 00 40 01 00 00 40 01 00 00 40 01 00 00 36 01 00 00 36 01 00 00 36 01 00 00 36 01 00 00 66 00 00 00 66 00 00 00 61 00 00 00 61 00 00 00 5c 00 00 00 5c 00 00 00 5c 00 00 00 5c 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 64 b4 c8 80 80 80 20 08 02 00 00 00 08 00 00 00 10 00 00 00 18 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 40 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 05 00 00 00 ff 00 00 00 ff 00 00 00 40 00 00 00 0c 00 00 00 06 00 00 00 00 00 00 00 07 00 00 00 10 00 00 00 19 00 00 00 21 00 00 00 29 00 00 00 2f 00 00 00 38 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 15 00 00 00 1e 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 2c 01 00 00 2c 01 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 e8 03 00 00 e8 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 c3 00 00 00 08 00 00 00 5e 01 00 00 5e 01 00 00 5e 01 00 00 5e 01 00 00 22 01 00 00 22 01 00 00 22 01 00 00 22 01 00 00 28 00 00 00 27 00 00 00 27 00 00 00 28 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 90 01 00 00 86 01 00 00 86 01 00 00 86 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 8a 00 00 00 8a 00 00 00 85 00 00 00 85 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 64 b4 c8 80 80 80 40 0c 02 00 00 00 08 00 00 00 10 00 00 00 18 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 20 03 00 00 2c 01 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 05 00 00 00 ff 00 00 00 ff 00 00 00 40 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 0f 00 00 00 19 00 00 00 28 00 00 00 3b 00 00 00 45 00 00 00 4b 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 2c 01 00 00 2c 01 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 e8 03 00 00 e8 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 c3 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 28 00 00 00 27 00 00 00 27 00 00 00 28 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 90 01 00 00 86 01 00 00 86 01 00 00 86 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 62 00 00 00 62 00 00 00 5d 00 00 00 5d 00 00 00 58 00 00 00 58 00 00 00 58 00 00 00 58 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 3c 64 82 40 0c 04 40 0c 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 0c 00 00 00 50 00 00 00 78 00 00 00 80 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 0d 00 00 00 1b 00 00 00 2c 00 00 00 38 00 00 00 3f 00 00 00 45 00 00 00 4b 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 20 03 00 00 20 03 00 00 03 00 00 00 03 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 21 00 00 00 20 00 00 00 20 00 00 00 21 00 00 00 1f 00 00 00 1f 00 00 00 1f 00 00 00 1f 00 00 00 ea 01 00 00 e0 01 00 00 e0 01 00 00 e0 01 00 00 d6 01 00 00 d6 01 00 00 d6 01 00 00 d6 01 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 46 69 8c 1e 08 04 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 09 00 00 00 11 00 00 00 17 00 00 00 1f 00 00 00 27 00 00 00 2d 00 00 00 36 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 84 03 00 00 84 03 00 00 02 00 00 00 02 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 2c 00 00 00 2b 00 00 00 2b 00 00 00 2c 00 00 00 2a 00 00 00 2a 00 00 00 2a 00 00 00 2a 00 00 00 80 02 00 00 76 02 00 00 76 02 00 00 76 02 00 00 6c 02 00 00 6c 02 00 00 6c 02 00 00 6c 02 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 64 6e 8c 32 08 04 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 07 00 00 00 0c 00 00 00 15 00 00 00 1e 00 00 00 26 00 00 00 2c 00 00 00 34 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 08 00 00 00 11 00 00 00 1a 00 00 00 21 00 00 00 27 00 00 00 2f 00 00 00 3a 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 84 03 00 00 84 03 00 00 02 00 00 00 02 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 2f 00 00 00 2e 00 00 00 2e 00 00 00 2f 00 00 00 2d 00 00 00 2d 00 00 00 2d 00 00 00 2d 00 00 00 81 02 00 00 77 02 00 00 77 02 00 00 77 02 00 00 6d 02 00 00 6d 02 00 00 6d 02 00 00 6d 02 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 b4 78 a0 50 08 04 14 08 02 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 07 00 00 00 0c 00 00 00 15 00 00 00 1e 00 00 00 26 00 00 00 2c 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 90 01 00 00 90 01 00 00 90 01 00 00 58 02 00 00 58 02 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 af 00 00 00 03 00 00 00 00 04 00 00 4c 04 00 00 b0 04 00 00 14 05 00 00 14 05 00 00 14 05 00 00 14 05 00 00 14 05 00 00 19 00 00 00 32 00 00 00 32 00 00 00 32 00 00 00 23 00 00 00 23 00 00 00 14 00 00 00 14 00 00 00 50 00 00 00 6e 00 00 00 6e 00 00 00 6e 00 00 00 8c 00 00 00 96 00 00 00 a0 00 00 00 a0 00 00 00 3c 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 44 00 00 00 50 00 00 00 50 00 00 00 5a 00 00 00 10 00 00 00 14 00 00 00 03 00 00 00 b4 00 00 00 c8 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8c 00 00 00 96 00 00 00 a0 00 00 00 aa 00 00 00 80 00 00 00 40 00 00 00 b8 0b 00 00 70 17 00 00 10 00 00 00 10 00 00 00 20 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 40 00 00 00 80 00 00 00 ff 00 00 00 10 00 00 00 06 00 00 00 00 00 00 00 06 00 00 00 0d 00 00 00 15 00 00 00 1c 00 00 00 26 00 00 00 2f 00 00 00 3a 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00]; + data = [01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0f 00 00 00 40 00 00 00 40 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 c8 00 00 00 c8 00 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 80 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 b4 00 00 00 e6 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 80 00 00 00 40 00 00 00 00 01 00 00 00 01 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 40 00 00 00 40 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 0c 00 00 00 18 00 00 00 28 00 00 00 4c 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 40 00 00 00 00 00 00 00 06 00 00 00 0c 00 00 00 18 00 00 00 28 00 00 00 4c 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 40 00 00 00 04 01 00 00 00 00 00 00 08 00 00 00 46 00 00 00 46 00 00 00 00 00 00 00 8c 00 00 00 8c 00 00 00 8c 00 00 00 fa 00 00 00 fa 00 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 c3 00 00 00 08 00 00 00 32 00 00 00 3c 00 00 00 46 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 11 00 00 00 10 00 00 00 10 00 00 00 11 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 b4 00 00 00 b4 00 00 00 b4 00 00 00 b4 00 00 00 21 00 00 00 21 00 00 00 1c 00 00 00 1c 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 08 00 00 00 10 00 00 00 03 00 00 00 10 00 00 00 14 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 00 04 0c 04 02 00 02 00 00 00 00 00 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 08 00 00 00 e0 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 30 00 00 00 48 00 00 00 20 00 00 00 04 00 00 00 02 00 00 00 00 00 00 00 0d 00 00 00 1b 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 00 00 00 00 08 00 00 00 5a 00 00 00 5a 00 00 00 00 00 00 00 b4 00 00 00 b4 00 00 00 b4 00 00 00 22 01 00 00 22 01 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 9d 00 00 00 08 00 00 00 32 00 00 00 3c 00 00 00 46 00 00 00 50 00 00 00 5a 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 17 00 00 00 16 00 00 00 16 00 00 00 17 00 00 00 15 00 00 00 15 00 00 00 15 00 00 00 15 00 00 00 82 00 00 00 82 00 00 00 82 00 00 00 82 00 00 00 78 00 00 00 78 00 00 00 78 00 00 00 78 00 00 00 23 00 00 00 23 00 00 00 1e 00 00 00 1e 00 00 00 19 00 00 00 19 00 00 00 19 00 00 00 19 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 00 00 0a 0a 02 01 0a 04 01 00 00 00 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 08 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 30 00 00 00 48 00 00 00 20 00 00 00 06 00 00 00 02 00 00 00 00 00 00 00 0c 00 00 00 1c 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 01 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 00 00 00 00 c8 00 00 00 c8 00 00 00 2c 01 00 00 2c 01 00 00 2c 01 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 b4 00 00 00 08 00 00 00 04 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00 15 00 00 00 15 00 00 00 15 00 00 00 15 00 00 00 d2 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3a 00 00 00 3a 00 00 00 3a 00 00 00 3a 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 00 19 3c 10 08 04 10 00 00 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 96 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 30 00 00 00 48 00 00 00 30 00 00 00 0c 00 00 00 06 00 00 00 00 00 00 00 0c 00 00 00 16 00 00 00 25 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 02 00 00 01 00 00 00 08 00 00 00 a0 00 00 00 a0 00 00 00 00 00 00 00 40 01 00 00 40 01 00 00 40 01 00 00 f4 01 00 00 f4 01 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 cb 00 00 00 08 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 1f 00 00 00 1e 00 00 00 1e 00 00 00 1f 00 00 00 1d 00 00 00 1d 00 00 00 1d 00 00 00 1d 00 00 00 0e 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 fa 00 00 00 fa 00 00 00 fa 00 00 00 fa 00 00 00 37 00 00 00 37 00 00 00 32 00 00 00 32 00 00 00 2d 00 00 00 2d 00 00 00 2d 00 00 00 2d 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 00 19 46 0f 08 02 00 00 00 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 bc 02 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 40 00 00 00 40 00 00 00 40 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 40 00 00 00 80 00 00 00 40 00 00 00 18 00 00 00 0c 00 00 00 00 00 00 00 0c 00 00 00 19 00 00 00 28 00 00 00 3c 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 02 00 00 00 08 00 00 00 b4 00 00 00 b4 00 00 00 00 00 00 00 1c 02 00 00 1c 02 00 00 1c 02 00 00 80 02 00 00 80 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 98 00 00 00 08 00 00 00 b4 00 00 00 b4 00 00 00 b4 00 00 00 b4 00 00 00 78 00 00 00 78 00 00 00 78 00 00 00 78 00 00 00 1e 00 00 00 1d 00 00 00 1d 00 00 00 1e 00 00 00 1c 00 00 00 1c 00 00 00 1c 00 00 00 1c 00 00 00 e6 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 d2 00 00 00 d2 00 00 00 d2 00 00 00 d2 00 00 00 34 00 00 00 34 00 00 00 2f 00 00 00 2f 00 00 00 2a 00 00 00 2a 00 00 00 2a 00 00 00 2a 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 00 50 78 14 08 02 00 00 00 00 00 00 0c 00 00 00 10 00 00 00 18 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 40 00 00 00 40 00 00 00 40 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 40 00 00 00 80 00 00 00 40 00 00 00 0c 00 00 00 06 00 00 00 00 00 00 00 0c 00 00 00 19 00 00 00 25 00 00 00 34 00 00 00 4a 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 3e 00 00 00 48 00 00 00 57 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 02 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 20 03 00 00 20 03 00 00 03 00 00 00 03 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 d8 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 1d 00 00 00 1c 00 00 00 1c 00 00 00 1d 00 00 00 1b 00 00 00 1b 00 00 00 1b 00 00 00 1b 00 00 00 5e 01 00 00 54 01 00 00 54 01 00 00 54 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 48 00 00 00 48 00 00 00 43 00 00 00 43 00 00 00 3e 00 00 00 3e 00 00 00 3e 00 00 00 3e 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 00 b4 c8 14 0a 05 20 08 02 00 00 00 0c 00 00 00 10 00 00 00 18 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 40 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 ff 00 00 00 ff 00 00 00 40 00 00 00 0c 00 00 00 06 00 00 00 00 00 00 00 07 00 00 00 10 00 00 00 2c 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 15 00 00 00 1e 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 2c 01 00 00 2c 01 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 20 03 00 00 20 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 c3 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 96 00 00 00 96 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 1e 00 00 00 1d 00 00 00 1d 00 00 00 1e 00 00 00 1c 00 00 00 1c 00 00 00 1c 00 00 00 1c 00 00 00 2c 01 00 00 22 01 00 00 22 01 00 00 22 01 00 00 18 01 00 00 18 01 00 00 18 01 00 00 18 01 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3a 00 00 00 3a 00 00 00 3a 00 00 00 3a 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 00 32 64 14 0a 05 40 0c 02 00 00 00 0c 00 00 00 10 00 00 00 18 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 20 03 00 00 2c 01 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 80 00 00 00 ff 00 00 00 40 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 0f 00 00 00 29 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 2c 01 00 00 2c 01 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 e8 03 00 00 e8 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 c3 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 28 00 00 00 27 00 00 00 27 00 00 00 28 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 90 01 00 00 86 01 00 00 86 01 00 00 86 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 62 00 00 00 62 00 00 00 5d 00 00 00 5d 00 00 00 58 00 00 00 58 00 00 00 58 00 00 00 58 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 3c 64 82 40 0c 04 40 0c 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 0c 00 00 00 50 00 00 00 78 00 00 00 80 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 0d 00 00 00 1b 00 00 00 2c 00 00 00 38 00 00 00 3f 00 00 00 45 00 00 00 4b 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 20 03 00 00 20 03 00 00 03 00 00 00 03 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 21 00 00 00 20 00 00 00 20 00 00 00 21 00 00 00 1f 00 00 00 1f 00 00 00 1f 00 00 00 1f 00 00 00 ea 01 00 00 e0 01 00 00 e0 01 00 00 e0 01 00 00 d6 01 00 00 d6 01 00 00 d6 01 00 00 d6 01 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 46 69 8c 1e 08 04 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 09 00 00 00 11 00 00 00 17 00 00 00 1f 00 00 00 27 00 00 00 2d 00 00 00 36 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 84 03 00 00 84 03 00 00 02 00 00 00 02 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 2c 00 00 00 2b 00 00 00 2b 00 00 00 2c 00 00 00 2a 00 00 00 2a 00 00 00 2a 00 00 00 2a 00 00 00 80 02 00 00 76 02 00 00 76 02 00 00 76 02 00 00 6c 02 00 00 6c 02 00 00 6c 02 00 00 6c 02 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 64 6e 8c 32 08 04 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 07 00 00 00 0c 00 00 00 15 00 00 00 1e 00 00 00 26 00 00 00 2c 00 00 00 34 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 08 00 00 00 11 00 00 00 1a 00 00 00 21 00 00 00 27 00 00 00 2f 00 00 00 3a 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 84 03 00 00 84 03 00 00 02 00 00 00 02 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 2f 00 00 00 2e 00 00 00 2e 00 00 00 2f 00 00 00 2d 00 00 00 2d 00 00 00 2d 00 00 00 2d 00 00 00 81 02 00 00 77 02 00 00 77 02 00 00 77 02 00 00 6d 02 00 00 6d 02 00 00 6d 02 00 00 6d 02 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 b4 78 a0 50 08 04 14 08 02 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 07 00 00 00 0c 00 00 00 15 00 00 00 1e 00 00 00 26 00 00 00 2c 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 90 01 00 00 90 01 00 00 90 01 00 00 58 02 00 00 58 02 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 af 00 00 00 03 00 00 00 00 04 00 00 4c 04 00 00 b0 04 00 00 14 05 00 00 14 05 00 00 14 05 00 00 14 05 00 00 14 05 00 00 19 00 00 00 32 00 00 00 32 00 00 00 32 00 00 00 23 00 00 00 23 00 00 00 14 00 00 00 14 00 00 00 50 00 00 00 6e 00 00 00 6e 00 00 00 6e 00 00 00 8c 00 00 00 96 00 00 00 a0 00 00 00 a0 00 00 00 3c 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 44 00 00 00 50 00 00 00 50 00 00 00 5a 00 00 00 10 00 00 00 14 00 00 00 03 00 00 00 b4 00 00 00 c8 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8c 00 00 00 96 00 00 00 a0 00 00 00 aa 00 00 00 80 00 00 00 40 00 00 00 b8 0b 00 00 70 17 00 00 10 00 00 00 10 00 00 00 20 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 40 00 00 00 80 00 00 00 ff 00 00 00 10 00 00 00 06 00 00 00 00 00 00 00 06 00 00 00 0d 00 00 00 15 00 00 00 1c 00 00 00 26 00 00 00 2f 00 00 00 3a 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00]; }; iq_wdr { size = [e4 02 00 00]; - data = [01 00 00 00 00 00 00 00 20 00 00 00 12 00 00 00 80 00 00 00 05 00 00 00 03 00 00 00 00 00 00 00 01 00 00 00 03 00 00 00 07 00 00 00 0f 00 00 00 17 00 00 00 1f 00 00 00 23 00 00 00 27 00 00 00 29 00 00 00 2a 00 00 00 2b 00 00 00 2c 00 00 00 2d 00 00 00 2e 00 00 00 2f 00 00 00 30 00 00 00 31 00 00 00 32 00 00 00 33 00 00 00 34 00 00 00 35 00 00 00 36 00 00 00 37 00 00 00 38 00 00 00 39 00 00 00 3a 00 00 00 3b 00 00 00 3c 00 00 00 3d 00 00 00 3e 00 00 00 3f 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 e6 0f 00 00 a6 0f 00 00 29 0f 00 00 cf 0e 00 00 64 0e 00 00 e8 0d 00 00 5e 0d 00 00 14 0d 00 00 c7 0c 00 00 78 0c 00 00 27 0c 00 00 d5 0b 00 00 81 0b 00 00 2e 0b 00 00 da 0a 00 00 86 0a 00 00 33 0a 00 00 e1 09 00 00 90 09 00 00 41 09 00 00 f3 08 00 00 a7 08 00 00 5e 08 00 00 16 08 00 00 d1 07 00 00 8e 07 00 00 4d 07 00 00 0f 07 00 00 d3 06 00 00 99 06 00 00 62 06 00 00 fb 05 00 00 9c 05 00 00 46 05 00 00 f8 04 00 00 b0 04 00 00 70 04 00 00 35 04 00 00 00 04 00 00 a4 03 00 00 57 03 00 00 e4 02 00 00 94 02 00 00 5b 02 00 00 31 02 00 00 12 02 00 00 fb 01 00 00 e9 01 00 00 dc 01 00 00 d1 01 00 00 c8 01 00 00 c1 01 00 00 bb 01 00 00 b7 01 00 00 b3 01 00 00 b0 01 00 00 ad 01 00 00 ab 01 00 00 a9 01 00 00 a7 01 00 00 a6 01 00 00 a4 01 00 00 a3 01 00 00 a2 01 00 00 20 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00]; + data = [01 00 00 00 01 00 00 00 20 00 00 00 12 00 00 00 80 00 00 00 05 00 00 00 03 00 00 00 00 00 00 00 01 00 00 00 03 00 00 00 07 00 00 00 0f 00 00 00 17 00 00 00 1f 00 00 00 23 00 00 00 27 00 00 00 29 00 00 00 2a 00 00 00 2b 00 00 00 2c 00 00 00 2d 00 00 00 2e 00 00 00 2f 00 00 00 30 00 00 00 31 00 00 00 32 00 00 00 33 00 00 00 34 00 00 00 35 00 00 00 36 00 00 00 37 00 00 00 38 00 00 00 39 00 00 00 3a 00 00 00 3b 00 00 00 3c 00 00 00 3d 00 00 00 3e 00 00 00 3f 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 e6 0f 00 00 a6 0f 00 00 29 0f 00 00 cf 0e 00 00 64 0e 00 00 e8 0d 00 00 5e 0d 00 00 14 0d 00 00 c7 0c 00 00 78 0c 00 00 27 0c 00 00 d5 0b 00 00 81 0b 00 00 2e 0b 00 00 da 0a 00 00 86 0a 00 00 33 0a 00 00 e1 09 00 00 90 09 00 00 41 09 00 00 f3 08 00 00 a7 08 00 00 5e 08 00 00 16 08 00 00 d1 07 00 00 8e 07 00 00 4d 07 00 00 0f 07 00 00 d3 06 00 00 99 06 00 00 62 06 00 00 fb 05 00 00 9c 05 00 00 46 05 00 00 f8 04 00 00 b0 04 00 00 70 04 00 00 35 04 00 00 00 04 00 00 a4 03 00 00 57 03 00 00 e4 02 00 00 94 02 00 00 5b 02 00 00 31 02 00 00 12 02 00 00 fb 01 00 00 e9 01 00 00 dc 01 00 00 d1 01 00 00 c8 01 00 00 c1 01 00 00 bb 01 00 00 b7 01 00 00 b3 01 00 00 b0 01 00 00 ad 01 00 00 ab 01 00 00 a9 01 00 00 a7 01 00 00 a6 01 00 00 a4 01 00 00 a3 01 00 00 a2 01 00 00 40 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00]; }; iq_shdr { size = [ec 01 00 00]; @@ -73,5 +73,13 @@ size = [08 02 00 00]; data = [00 00 00 00 00 00 00 00 02 00 00 00 04 00 00 00 06 00 00 00 08 00 00 00 0a 00 00 00 0c 00 00 00 0e 00 00 00 10 00 00 00 12 00 00 00 14 00 00 00 16 00 00 00 18 00 00 00 1a 00 00 00 1c 00 00 00 1e 00 00 00 20 00 00 00 22 00 00 00 24 00 00 00 26 00 00 00 28 00 00 00 2a 00 00 00 2c 00 00 00 2e 00 00 00 30 00 00 00 32 00 00 00 34 00 00 00 36 00 00 00 38 00 00 00 3a 00 00 00 3c 00 00 00 3e 00 00 00 40 00 00 00 42 00 00 00 44 00 00 00 46 00 00 00 48 00 00 00 4a 00 00 00 4c 00 00 00 4e 00 00 00 50 00 00 00 52 00 00 00 54 00 00 00 56 00 00 00 58 00 00 00 5a 00 00 00 5c 00 00 00 5d 00 00 00 5f 00 00 00 61 00 00 00 64 00 00 00 66 00 00 00 68 00 00 00 6a 00 00 00 6c 00 00 00 6e 00 00 00 70 00 00 00 72 00 00 00 74 00 00 00 76 00 00 00 78 00 00 00 7a 00 00 00 7c 00 00 00 7e 00 00 00 80 00 00 00 82 00 00 00 84 00 00 00 86 00 00 00 88 00 00 00 8a 00 00 00 8c 00 00 00 8e 00 00 00 90 00 00 00 92 00 00 00 94 00 00 00 96 00 00 00 98 00 00 00 9a 00 00 00 9c 00 00 00 9e 00 00 00 a0 00 00 00 a2 00 00 00 a4 00 00 00 a6 00 00 00 a8 00 00 00 aa 00 00 00 ac 00 00 00 ae 00 00 00 b0 00 00 00 b2 00 00 00 b4 00 00 00 b6 00 00 00 b8 00 00 00 ba 00 00 00 bc 00 00 00 be 00 00 00 c0 00 00 00 c2 00 00 00 c4 00 00 00 c6 00 00 00 c8 00 00 00 ca 00 00 00 cc 00 00 00 ce 00 00 00 d0 00 00 00 d2 00 00 00 d4 00 00 00 d6 00 00 00 d8 00 00 00 da 00 00 00 dc 00 00 00 de 00 00 00 e0 00 00 00 e2 00 00 00 e4 00 00 00 e6 00 00 00 e8 00 00 00 ea 00 00 00 ec 00 00 00 ee 00 00 00 f0 00 00 00 f2 00 00 00 f4 00 00 00 f6 00 00 00 f8 00 00 00 fa 00 00 00 fc 00 00 00 fe 00 00 00 ff 00 00 00]; }; + iq_shdr_ext { + size = [11 00 00 00]; + data = [ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff]; + }; + iq_cst { + size = [2c 00 00 00]; + data = [00 00 00 00 4d 00 96 00 1d 00 d5 ff ab ff 80 00 80 00 95 ff eb ff 00 00 80 80 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 00]; + }; }; };