void ap_startup_init(void) { IMAGE_DECODE_STRUCT img_info; INT32U size; INT16U logo_fd; #if C_LOGO == CUSTOM_ON ap_music_effect_resource_init(); //wwj add audio_vol_set(ap_state_config_volume_get()); //wwj add size = ((INT32U) gvarg.DisplayBufferWidth) * ((INT32U) gvarg.DisplayBufferHeight) * 2UL; startup_logo_decode_buff = (INT32U) gp_malloc_align(size, 64); if (!startup_logo_decode_buff) { DBG_PRINT("State startup allocate jpeg output buffer fail.\r\n"); return; } logo_fd = nv_open((INT8U *) "POWER_ON_LOGO.JPG"); if (logo_fd != 0xFFFF) { size = nv_rs_size_get(logo_fd); startup_logo_img_ptr = (INT32S) gp_malloc(size); if (!startup_logo_img_ptr) { DBG_PRINT("State startup allocate jpeg input buffer fail.[%d]\r\n", size); gp_free((void *) startup_logo_decode_buff); return; } if (nv_read(logo_fd, (INT32U) startup_logo_img_ptr, size)) { DBG_PRINT("Failed to read resource_header in ap_startup_init\r\n"); gp_free((void *) startup_logo_img_ptr); gp_free((void *) startup_logo_decode_buff); return; } img_info.image_source = (INT32S) startup_logo_img_ptr; img_info.source_size = size; img_info.source_type = TK_IMAGE_SOURCE_TYPE_BUFFER; img_info.output_format = C_SCALER_CTRL_OUT_RGB565; img_info.output_ratio = 0; img_info.out_of_boundary_color = 0x008080; img_info.output_buffer_width = gvarg.DisplayBufferWidth; img_info.output_buffer_height = gvarg.DisplayBufferHeight; img_info.output_image_width = gvarg.DisplayBufferWidth; img_info.output_image_height = gvarg.DisplayBufferHeight; img_info.output_buffer_pointer = startup_logo_decode_buff; if (jpeg_buffer_decode_and_scale(&img_info) == STATUS_FAIL) { gp_free((void *) startup_logo_img_ptr); gp_free((void *) startup_logo_decode_buff); DBG_PRINT("State startup decode jpeg file fail.\r\n"); return; } OSQPost(DisplayTaskQ, (void *) (startup_logo_decode_buff|MSG_DISPLAY_TASK_JPEG_DRAW)); #if MINI_DVR_BOARD_VERSION == GPL32680_MINI_DVR_CAR_RECORD_V2 OSTimeDly(5); tft_backlight_en_set(TRUE); #endif if (audio_effect_play(EFFECT_BEEP)) { audio_done++; } OSTimeDly(20); if (audio_effect_play(EFFECT_POWER_ON)) { audio_done++; } gp_free((void *) startup_logo_img_ptr); OSTimeDly(100); } else { #if MINI_DVR_BOARD_VERSION == GPL32680_MINI_DVR_CAR_RECORD_V2 tft_backlight_en_set(TRUE); #endif } gp_free((void *) startup_logo_decode_buff); #endif if (vid_dec_entry() < 0) { DBG_PRINT("Failed to init motion jpeg task\r\n"); } }
void state_handling_init(void) { INT32S config_load_flag; StateHandlingQ = OSQCreate(state_handling_q_stack, STATE_HANDLING_QUEUE_MAX); ApQ = msgQCreate(AP_QUEUE_MAX, AP_QUEUE_MAX, AP_QUEUE_MSG_MAX_LEN); nvmemory_init(); config_load_flag = ap_state_config_load(); ap_state_resource_init(); ap_state_config_initial(config_load_flag); #if ENABLE_CHECK_RTC == 1 if (config_load_flag != STATUS_FAIL) { ap_state_config_data_time_check(); } #endif ap_state_handling_calendar_init(); ap_state_handling_storage_id_set(NO_STORAGE); { DISPLAY_ICONSHOW icon = {216, 144, TRANSPARENT_COLOR, 0, 0}; INT32U i, *buff_ptr, color_data, cnt; INT32U display_frame0; display_battery_low_frame0 = (INT32U) gp_malloc_align(icon.icon_w * icon.icon_h * 2, 64); DBG_PRINT("batteryLow_display_buf_addr = 0x%x \r\n",display_frame0); buff_ptr = (INT32U *) display_battery_low_frame0; color_data = 0x8C71ul|(0x8C71ul<<16); cnt = (icon.icon_w * icon.icon_h * 2) >> 2; for (i=0 ; i<cnt ; i++) { *buff_ptr++ = color_data; } DBG_PRINT("batteryLowshow! \r\n"); { INT32U size, read_buf; INT16U logo_fd; INT8U *zip_buf; INT32U icon_buffer; logo_fd = nv_open((INT8U*)"INSERTSDC.GPZP"); if (logo_fd != 0xFFFF) { size = nv_rs_size_get(logo_fd); read_buf = (INT32S) gp_malloc(size); if (!read_buf) { DBG_PRINT("allocate BACKGROUND.GPZP read buffer fail.[%d]\r\n", size); } if (nv_read(logo_fd, (INT32U) read_buf, size)) { DBG_PRINT("Failed to read icon_buffer resource\r\n"); gp_free((void *) read_buf); } zip_buf = (INT8U *)read_buf; if (gpzp_decode((INT8U *) &zip_buf[4], (INT8U *) display_battery_low_frame0) == STATUS_FAIL) { DBG_PRINT("Failed to unzip GPZP file\r\n"); gp_free((void *) read_buf); gp_free((void *) icon_buffer); read_buf = 0; icon_buffer = 0; } gp_free((void *) read_buf); } } } DBG_PRINT("state_handling_init OK!\r\n"); }