DAL_STATUS DAL_LowMemoryOff(void) { UINT32 BG_COLOR = MAKE_TWO_RGB565_COLOR(DAL_BG_COLOR, DAL_BG_COLOR); DAL_LOG("Enter DAL_LowMemoryOff()\n"); DAL_CHECK_MFC_RET(MFC_SetMem(mfc_handle, low_memory_msg, BG_COLOR)); if (LCD_STATE_POWER_OFF == LCD_GetState()) { dal_disable_when_resume_lowmemory = TRUE; goto End; } //what about LCM_PHYSICAL_ROTATION = 180 if(!dal_shown){// only low memory assert shown on screen DAL_CHECK_LCD_RET(LCD_LayerEnable(ASSERT_LAYER, FALSE)); DAL_CHECK_LCD_RET(LCD_LayerSetOffset(ASSERT_LAYER, 0,0)); DAL_CHECK_LCD_RET(LCD_LayerSetWindowOffset(ASSERT_LAYER, 0,0)); DAL_CHECK_LCD_RET(LCD_LayerSetSize(ASSERT_LAYER, DAL_WIDTH, DAL_HEIGHT)); } /* DAL_CHECK_DISP_RET(DISP_UpdateScreen(0, 0, DAL_WIDTH, DAL_HEIGHT)); */ End: dal_lowMemory_shown = FALSE; DAL_LOG("Leave DAL_LowMemoryOff()\n"); return DAL_STATUS_OK; }
DAL_STATUS DAL_Printf(const char *fmt, ...) { va_list args; uint i; DAL_STATUS ret = DAL_STATUS_OK; if (NULL == mfc_handle) return DAL_STATUS_NOT_READY; if (NULL == fmt) return DAL_STATUS_INVALID_ARGUMENT; DAL_LOCK(); va_start (args, fmt); i = vsprintf(dal_print_buffer, fmt, args); BUG_ON(i>=ARRAY_SIZE(dal_print_buffer)); va_end (args); DAL_CHECK_MFC_RET(MFC_Print(mfc_handle, dal_print_buffer)); flush_cache_all(); if (LCD_STATE_POWER_OFF == LCD_GetState()) { ret = DAL_STATUS_LCD_IN_SUSPEND; dal_enable_when_resume = TRUE; goto End; } if (!dal_shown) { DAL_CHECK_LCD_RET(LCD_LayerSetWindowOffset(ASSERT_LAYER,0,0)); DAL_CHECK_LCD_RET(LCD_LayerSetOffset(ASSERT_LAYER, 0,0)); DAL_CHECK_LCD_RET(LCD_LayerSetSize(ASSERT_LAYER, DAL_WIDTH, DAL_HEIGHT)); DAL_CHECK_LCD_RET(LCD_LayerEnable(ASSERT_LAYER, TRUE)); dal_shown = TRUE; } DAL_CHECK_DISP_RET(DISP_UpdateScreen(0, 0, DAL_WIDTH, DAL_HEIGHT)); End: DAL_UNLOCK(); return ret; }
DAL_STATUS DAL_Clean(void) { const UINT32 BG_COLOR = MAKE_TWO_RGB565_COLOR(DAL_BG_COLOR, DAL_BG_COLOR); DAL_STATUS ret = DAL_STATUS_OK; UINT32 i, *ptr; if (NULL == mfc_handle) return DAL_STATUS_NOT_READY; // if (LCD_STATE_POWER_OFF == LCD_GetState()) // return DAL_STATUS_LCD_IN_SUSPEND; DAL_LOCK(); DAL_CHECK_MFC_RET(MFC_ResetCursor(mfc_handle)); ptr = (UINT32 *)dal_fb_addr; for(i = 0; i < DAL_GetLayerSize() / sizeof(UINT32); ++ i) { *ptr ++ = BG_COLOR; } if (LCD_STATE_POWER_OFF == LCD_GetState()) { DISP_LOG_PRINT(ANDROID_LOG_INFO, "DAL", "dal_clean in power off\n"); dal_disable_when_resume = TRUE; ret = DAL_STATUS_LCD_IN_SUSPEND; goto End; } DAL_CHECK_LCD_RET(LCD_LayerEnable(ASSERT_LAYER, FALSE)); dal_shown = FALSE; #ifdef DAL_LOWMEMORY_ASSERT if (dal_lowMemory_shown) {//only need show lowmemory assert UINT32 LOWMEMORY_FG_COLOR = MAKE_TWO_RGB565_COLOR(DAL_LOWMEMORY_FG_COLOR, DAL_LOWMEMORY_FG_COLOR); UINT32 LOWMEMORY_BG_COLOR = MAKE_TWO_RGB565_COLOR(DAL_LOWMEMORY_BG_COLOR, DAL_LOWMEMORY_BG_COLOR); DAL_CHECK_MFC_RET(MFC_LowMemory_Printf(mfc_handle, low_memory_msg, LOWMEMORY_FG_COLOR, LOWMEMORY_BG_COLOR)); Show_LowMemory(); } dal_enable_when_resume_lowmemory = FALSE; dal_disable_when_resume_lowmemory = FALSE; #endif dal_disable_when_resume = FALSE; End: DAL_UNLOCK(); return ret; }
DAL_STATUS DAL_LowMemoryOn(void) { UINT32 LOWMEMORY_FG_COLOR = MAKE_TWO_RGB565_COLOR(DAL_LOWMEMORY_FG_COLOR, DAL_LOWMEMORY_FG_COLOR); UINT32 LOWMEMORY_BG_COLOR = MAKE_TWO_RGB565_COLOR(DAL_LOWMEMORY_BG_COLOR, DAL_LOWMEMORY_BG_COLOR); DAL_LOG("Enter DAL_LowMemoryOn()\n"); DAL_CHECK_MFC_RET(MFC_LowMemory_Printf(mfc_handle, low_memory_msg, LOWMEMORY_FG_COLOR, LOWMEMORY_BG_COLOR)); if (LCD_STATE_POWER_OFF == LCD_GetState()) { dal_enable_when_resume_lowmemory = TRUE; DAL_LOG("LCD is off\n"); goto End; } Show_LowMemory(); // dal_lowMemory_shown = TRUE; End: dal_lowMemory_shown = TRUE; DAL_LOG("Leave DAL_LowMemoryOn()\n"); return DAL_STATUS_OK; }
DAL_STATUS DAL_OnDispPowerOn(void) { DAL_LOCK(); /* Re-enable assertion layer when display resumes */ if (LCD_STATE_POWER_OFF != LCD_GetState()){ if(dal_enable_when_resume) { dal_enable_when_resume = FALSE; if (!dal_shown) { DAL_CHECK_LCD_RET(LCD_LayerSetWindowOffset(ASSERT_LAYER,0,0)); DAL_CHECK_LCD_RET(LCD_LayerSetOffset(ASSERT_LAYER, 0,0)); DAL_CHECK_LCD_RET(LCD_LayerSetSize(ASSERT_LAYER, DAL_WIDTH, DAL_HEIGHT)); DAL_CHECK_LCD_RET(LCD_LayerEnable(ASSERT_LAYER, TRUE)); dal_shown = TRUE; } #ifdef DAL_LOWMEMORY_ASSERT dal_enable_when_resume_lowmemory = FALSE; dal_disable_when_resume_lowmemory = FALSE; #endif goto End; } else if(dal_disable_when_resume){ dal_disable_when_resume = FALSE; DAL_CHECK_LCD_RET(LCD_LayerEnable(ASSERT_LAYER, FALSE)); dal_shown = FALSE; #ifdef DAL_LOWMEMORY_ASSERT if (dal_lowMemory_shown) {//only need show lowmemory assert UINT32 LOWMEMORY_FG_COLOR = MAKE_TWO_RGB565_COLOR(DAL_LOWMEMORY_FG_COLOR, DAL_LOWMEMORY_FG_COLOR); UINT32 LOWMEMORY_BG_COLOR = MAKE_TWO_RGB565_COLOR(DAL_LOWMEMORY_BG_COLOR, DAL_LOWMEMORY_BG_COLOR); DAL_CHECK_MFC_RET(MFC_LowMemory_Printf(mfc_handle, low_memory_msg, LOWMEMORY_FG_COLOR, LOWMEMORY_BG_COLOR)); Show_LowMemory(); } dal_enable_when_resume_lowmemory = FALSE; dal_disable_when_resume_lowmemory = FALSE; #endif goto End; } #ifdef DAL_LOWMEMORY_ASSERT if(dal_enable_when_resume_lowmemory){ dal_enable_when_resume_lowmemory = FALSE; if(!dal_shown){//only need show lowmemory assert Show_LowMemory(); } } else if(dal_disable_when_resume_lowmemory){ if(!dal_shown){// only low memory assert shown on screen DAL_CHECK_LCD_RET(LCD_LayerEnable(ASSERT_LAYER, FALSE)); DAL_CHECK_LCD_RET(LCD_LayerSetOffset(ASSERT_LAYER, 0,0)); DAL_CHECK_LCD_RET(LCD_LayerSetWindowOffset(ASSERT_LAYER, 0,0)); DAL_CHECK_LCD_RET(LCD_LayerSetSize(ASSERT_LAYER, DAL_WIDTH, DAL_HEIGHT)); } } else{} #endif } End: DAL_UNLOCK(); return DAL_STATUS_OK; }