From 85181e10750b36fdc1fa871e41592f58323d5fb1 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Tue, 29 Aug 2023 10:56:32 +0800 Subject: [PATCH] update --- components/dwin/dwin_ram_manager.cpp | 4 ++++ components/dwin/dwin_ram_manager.hpp | 5 ++++- components/dwin/dwin_screen.cpp | 15 +++++++++++++++ components/dwin/dwin_screen.hpp | 6 ++++++ 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/components/dwin/dwin_ram_manager.cpp b/components/dwin/dwin_ram_manager.cpp index d3ad23c..19a8d21 100644 --- a/components/dwin/dwin_ram_manager.cpp +++ b/components/dwin/dwin_ram_manager.cpp @@ -13,9 +13,13 @@ void DwinRamManager::init(uint32_t startadd, uint32_t endadd) { uint16_t DwinRamManager::alloc(uint32_t eachsize) { if (curadd + eachsize > endadd) { + ZASSERT(false); return 0xffff; } uint16_t ret = curadd; curadd += eachsize; return ret; } + +uint16_t DwinRamManager::remainsize(uint32_t eachsize) { return (endadd - curadd) / eachsize; } +uint16_t DwinRamManager::totalsize(uint32_t eachsize) { return (endadd - startadd) / eachsize; } diff --git a/components/dwin/dwin_ram_manager.hpp b/components/dwin/dwin_ram_manager.hpp index 35e02f3..75f305d 100644 --- a/components/dwin/dwin_ram_manager.hpp +++ b/components/dwin/dwin_ram_manager.hpp @@ -11,8 +11,11 @@ class DwinRamManager { uint32_t curadd = 0; public: - void init(uint32_t startadd, uint32_t endadd); + void init(uint32_t startadd, uint32_t endadd); uint16_t alloc(uint32_t eachsize); + uint16_t remainsize(uint32_t eachsize); + uint16_t totalsize(uint32_t eachsize); + }; } // namespace dwin diff --git a/components/dwin/dwin_screen.cpp b/components/dwin/dwin_screen.cpp index 3e1f40b..bf4cd3b 100644 --- a/components/dwin/dwin_screen.cpp +++ b/components/dwin/dwin_screen.cpp @@ -40,6 +40,16 @@ void DwinScreen::init(UART_HandleTypeDef* huart, DwinScreenCfg dwcfg) { m_rammanager.init(dwcfg.freeRawStartAddr, dwcfg.freeRawEndAddr); m_textDisplayerManager.init(dwcfg.textDisplayerStartAddr, dwcfg.textDisplayerEndAddr); m_varIconManager.init(dwcfg.varIconStartAddr, dwcfg.varIconEndAddr); + dumpram(); +} + +void DwinScreen::dumpram() { + ZLOGI(TAG, "ram :(%d/%d)", m_rammanager.totalsize(1) - m_rammanager.remainsize(1), m_rammanager.totalsize(1)); + ZLOGI(TAG, "textDisplayer :(%d/%d)", + m_textDisplayerManager.totalsize(m_dwcfg.textDisplayerSize) - m_textDisplayerManager.remainsize(m_dwcfg.textDisplayerSize), + m_textDisplayerManager.totalsize(m_dwcfg.textDisplayerSize)); + ZLOGI(TAG, "varIcon :(%d/%d)", m_varIconManager.totalsize(m_dwcfg.varIconSize) - m_varIconManager.remainsize(m_dwcfg.varIconSize), + m_varIconManager.totalsize(m_dwcfg.varIconSize)); } uint16_t DwinScreen::alloc_free_ram(uint16_t size) { return m_rammanager.alloc(size); } @@ -48,6 +58,11 @@ uint16_t DwinScreen::alloc_one_var_icon() { uint16_t addr = m_varIconManager.alloc(m_dwcfg.varIconSize); return addr; } + +uint16_t DwinScreen::mem_free_ram_remain() { return m_rammanager.remainsize(1); } +uint16_t DwinScreen::mem_one_text_displayer_remain() { return m_textDisplayerManager.remainsize(m_dwcfg.textDisplayerSize); } +uint16_t DwinScreen::mem_one_var_icon_remain() { return m_varIconManager.remainsize(m_dwcfg.varIconSize); } + void DwinScreen::clearrxcache() { CriticalContext cc; txcontext.receipt_ready_flag = false; diff --git a/components/dwin/dwin_screen.hpp b/components/dwin/dwin_screen.hpp index 72a76b7..52afc2c 100644 --- a/components/dwin/dwin_screen.hpp +++ b/components/dwin/dwin_screen.hpp @@ -101,6 +101,12 @@ class DwinScreen { uint16_t alloc_one_text_displayer(); uint16_t alloc_one_var_icon(); + uint16_t mem_free_ram_remain(); + uint16_t mem_one_text_displayer_remain(); + uint16_t mem_one_var_icon_remain(); + + void dumpram(); + public: bool write_reg16(uint16_t regaddr, uint16_t data, int overtime); bool read_reg16(uint16_t regaddr, uint16_t& data, int overtime);