diff --git a/.settings/stm32cubeide.project.prefs b/.settings/stm32cubeide.project.prefs index 184ab7f..fdac5ce 100644 --- a/.settings/stm32cubeide.project.prefs +++ b/.settings/stm32cubeide.project.prefs @@ -1,6 +1,6 @@ -2F62501ED4689FB349E356AB974DBE57=1A37C75E31949FC1CF47D46CC4BFA318 +2F62501ED4689FB349E356AB974DBE57=D1D13CF78BE39097E724CD6F0136AC59 635E684B79701B039C64EA45C3F84D30=C8B026EBE17C208F17FB66CE4235156C 66BE74F758C12D739921AEA421D593D3=1 -8DF89ED150041C4CBC7CB9A9CAA90856=1A37C75E31949FC1CF47D46CC4BFA318 +8DF89ED150041C4CBC7CB9A9CAA90856=D1D13CF78BE39097E724CD6F0136AC59 DC22A860405A8BF2F2C095E5B6529F12=EC6C4D369FD4F7EABFE17B3222B5F3A0 eclipse.preferences.version=1 diff --git a/Core b/Core index fd98100..41922cf 160000 --- a/Core +++ b/Core @@ -1 +1 @@ -Subproject commit fd9810003dcdd1c419fea3444dad1528b881822a +Subproject commit 41922cfe8ea480cafe9b982f2f204a07ee88a9a7 diff --git a/README.md b/README.md index 6f6bf55..d05f8df 100644 --- a/README.md +++ b/README.md @@ -60,3 +60,8 @@ UI 2. 如果从屏幕读取状态失败,则自动重启设备 ``` + +``` +BUG: + 1. 数字键盘按下任意键,会清除输入(这是正确的),但会忽略掉本次输入 +``` \ No newline at end of file diff --git a/STM32F407VETX_FLASH.ld b/STM32F407VETX_FLASH.ld index 16a870a..c9991eb 100644 --- a/STM32F407VETX_FLASH.ld +++ b/STM32F407VETX_FLASH.ld @@ -39,7 +39,7 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ _estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ -_Min_Heap_Size = 0x0; /* required amount of heap */ +_Min_Heap_Size = 0x2000; /* required amount of heap */ _Min_Stack_Size = 0x2000; /* required amount of stack */ /* Memories definition */ diff --git a/stm32basic b/stm32basic index 60f3510..d830dc9 160000 --- a/stm32basic +++ b/stm32basic @@ -1 +1 @@ -Subproject commit 60f3510b130731e26643271cad9d8f9a444b7155 +Subproject commit d830dc9ba6bbcae328723d94f6b8a0c1829fe850 diff --git a/ui/ui.h b/ui/ui.h index 1ffbade..227199b 100644 --- a/ui/ui.h +++ b/ui/ui.h @@ -1,25 +1,26 @@ //pages #define pg_gvar 0 -#define pg_pStart 1 -#define pg_login 2 -#define pg_home 3 -#define pg_navi 4 -#define pg_muInterval 5 -#define pg_muUsrMgr 6 -#define pg_muDateMgr 7 -#define pg_muAcidType 8 -#define pg_muChangePasswd 9 -#define pg_muCHSetting 10 -#define pg_muDeviceInfo 11 -#define pg_muReCtlerBind 12 -#define pg_muAcidTakeMgr 13 -#define pg_muAcidUseRecd 14 -#define pg_popwin 15 -#define pg_keybdB 16 -#define pg_keybdAP 17 -#define pg_keyPasswd 18 -#define pg_keybMutSel 19 -#define pg_keybMutSelFix 20 +#define pg_powerOn 1 +#define pg_pStart 2 +#define pg_login 3 +#define pg_home 4 +#define pg_navi 5 +#define pg_muInterval 6 +#define pg_muUsrMgr 7 +#define pg_muDateMgr 8 +#define pg_muAcidType 9 +#define pg_muChangePasswd 10 +#define pg_muCHSetting 11 +#define pg_muDeviceInfo 12 +#define pg_muReCtlerBind 13 +#define pg_muAcidTakeMgr 14 +#define pg_muAcidUseRecd 15 +#define pg_popwin 16 +#define pg_keybdB 17 +#define pg_keybdAP 18 +#define pg_keyPasswd 19 +#define pg_keybMutSel 20 +#define pg_keybMutSelFix 21 //gvar.objs #define ob_gvar_gvar 0 #define ob_gvar_edit 1 @@ -44,6 +45,8 @@ #define ob_gvar_save 20 #define ob_gvar_stateSwitch0 21 #define ob_gvar_stateSwitch1 22 +//powerOn.objs +#define ob_powerOn_powerOn 0 //pStart.objs #define ob_pStart_pStart 0 #define ob_pStart_j0 1 diff --git a/usrc/db/dao/acid_ch_cfg_dao.cpp b/usrc/db/dao/acid_ch_cfg_dao.cpp index baeb50c..0f67b26 100644 --- a/usrc/db/dao/acid_ch_cfg_dao.cpp +++ b/usrc/db/dao/acid_ch_cfg_dao.cpp @@ -9,7 +9,7 @@ using namespace iflytop; /*********************************************************************************************************************** * MARCO * ***********************************************************************************************************************/ -#define TABLE_VERSION TABLE_BASE_VERSION +#define TABLE_VERSION (TABLE_BASE_VERSION + 1) #define TABLE_NAME "acid_ch_cfg_table" /*********************************************************************************************************************** diff --git a/usrc/db/dao/acid_name_dao.cpp b/usrc/db/dao/acid_name_dao.cpp index b4edcc1..1242571 100644 --- a/usrc/db/dao/acid_name_dao.cpp +++ b/usrc/db/dao/acid_name_dao.cpp @@ -96,4 +96,5 @@ const char** AcidNameDao::getAcidNameList() { for (int i = 0; i < MAX_ACID_NUM; i++) { acidNameList[i] = tabledata->acidName[0].acidName[i]; } + return acidNameList; } diff --git a/usrc/project_configs.h b/usrc/project_configs.h index bbaebc0..73602c1 100644 --- a/usrc/project_configs.h +++ b/usrc/project_configs.h @@ -8,7 +8,7 @@ #define SDK_CFG__CFG_FLASH_ADDR 0x080C0000 // flash配置地址 #define SDK_CFG__SN_FLASH_ADDR 0x080E0004 // -#define SDK_MAX_TASK 10 // 最大任务数量 +#define SDK_MAX_TASK 15 // 最大任务数量 /*********************************************************************************************************************** * FLASH分区 * @@ -22,5 +22,6 @@ #define MOTOR_NUM 4 -#define MAX_USR_NUM 8 // 数量更改时候需要修改UsrMgr页面 -#define DEFAULT_PASSWD "888888" \ No newline at end of file +#define MAX_USR_NUM 8 // 数量更改时候需要修改UsrMgr页面 +#define DEFAULT_PASSWD "888888" +#define ENABLE_MOTOR_CHECK_THREAD 0 // 是否启用电机检测线程 \ No newline at end of file diff --git a/usrc/service/app_core.cpp b/usrc/service/app_core.cpp index 78c14a7..d408c98 100644 --- a/usrc/service/app_core.cpp +++ b/usrc/service/app_core.cpp @@ -59,10 +59,14 @@ extern "C" { void umain() { AppCore::ins()->initialize(); } } +extern void popWinPageInit(); + void AppCore::initialize() { + /*********************************************************************************************************************** + * 日志初始化 * + ***********************************************************************************************************************/ AppHal::MX_TIM6_Init(); AppHal::MX_TIM7_Init(); - AppHal::DEBUG_UART_INIT(DEBUG_TX_PIN, DEBUG_RX_PIN, DEBUG_UART_BAUDRATE); zlog_init(&DEBUG_UART_INS); @@ -72,21 +76,36 @@ void AppCore::initialize() { ZLOGI(TAG, "sn : %s", sn_get_str()); ZLOGI(TAG, "="); - SysMgr::ins()->initedFinished(); - SysMgr::ins()->dumpSysInfo(); - - // 硬件无关组件初始化 - GStateMgr::ins()->initialize(); - AppEventBus::ins()->initialize(); - + /*********************************************************************************************************************** + * 调试指示灯初始化 * + ***********************************************************************************************************************/ debuglegInit(); - // 硬件初始化 + /*********************************************************************************************************************** + * 硬件初始化 * + ***********************************************************************************************************************/ AppHardware::ins()->initialize(); // 基础硬件初始化 + UIControler::ins()->postInitialize(); + + ID* id = &AppHardware::ins()->id; + ZLOGI(TAG, "ID0:%d ID1:%d ID2:%d ID3:%d ID4:%d", // + id->ID0.read(), id->ID1.read(), id->ID2.read(), id->ID3.read(), id->ID4.read()); + + // if (!AppHardware::ins()->isHardInitOk()) { + // GStateMgr::ins()->initialize(); + // AppEventBus::ins()->initialize(); + + // UIControler::ins()->initialize(); + // popWinPageInit(); + // UIControler::ins()->popFatalErrorWin("硬件初始化失败,请尝试掉电重启设备"); + // while (true) osDelay(30); + // } /*********************************************************************************************************************** - * 服务初始化 * + * 组件初始化 * ***********************************************************************************************************************/ + GStateMgr::ins()->initialize(); + AppEventBus::ins()->initialize(); ZLOGI(TAG, "load zhdb"); ZHDB::init(); @@ -96,15 +115,46 @@ void AppCore::initialize() { DeviceSettingDao::init(); ZLOGI(TAG, "load zhdb end"); + // + // RemoteControlerUpper::ins()->initialize(); // 遥控器初始化 + // RemoteControlerUpper::ins()->startSchedule(); + // ValveStateSyncService::ins()->initialize(ZCAN1::ins()); // 阀门状态同步服务初始化 + // ValveStateSyncService::ins()->startSync(); + PumpCtrlService::ins()->initialize(); // 泵控制服务初始化 + RemoteControlerStateSyncService::ins()->initialize(); // 遥控器状态同步服务初始化 + RemoteControlerStateSyncService::ins()->startSync(); + + // UI初始化 UIControler::ins()->initialize(); + UIControler::ins()->pageInitialize(); - GStateMgr::ins()->setLogin(0, "admin", kadmin); - UIControler::ins()->chpage(pg_muChangePasswd, true); + /*********************************************************************************************************************** + * 开始蓝牙扫描 * + ***********************************************************************************************************************/ + // osDelay(100); + // if (strlen(DeviceSettingDao::get()->bleClientName) != 0) { + // ZLOGI(TAG, "start scan :%s", DeviceSettingDao::get()->bleClientName); + // for (size_t i = 0;; i++) { + // if (i != 0) ZLOGI(TAG, "re start scan %s %d", DeviceSettingDao::get()->bleClientName, i); + // bool suc = RCTRL->startScan(DeviceSettingDao::get()->bleClientName, true); + // if (suc) break; + // } + // } else { + // ZLOGI(TAG, "start scan %s", "XXXXXXXXX"); + // for (size_t i = 0;; i++) { + // if (i != 0) ZLOGI(TAG, "re start scan %s %d", "XXXXXXXX", i); + // bool suc = RCTRL->startScan("XXXXXXXXX", false); // 输入一个错误的设备名,当作不扫描 + // if (suc) break; + // } + // } + + UIControler::ins()->chpage(pg_muCHSetting, true); - osDelay(1000); - // UIControler::ins()->popWarningWin("警告!!!!!!!"); - // UIControler::ins()->popConfirmWin("消息确认!!!!!!!", [](bool val) { ZLOGI(TAG, "confirm val %d", val); }); - // UIControler::ins()->popInfoWin("消息确认!!!!!!!"); + /*********************************************************************************************************************** + * 统计内存使用情况 * + ***********************************************************************************************************************/ + SysMgr::ins()->initedFinished(); + SysMgr::ins()->dumpSysInfo(); while (true) osDelay(30); } diff --git a/usrc/service/pump_ctrl_service.cpp b/usrc/service/pump_ctrl_service.cpp index c68a5cc..76eeb87 100644 --- a/usrc/service/pump_ctrl_service.cpp +++ b/usrc/service/pump_ctrl_service.cpp @@ -33,6 +33,9 @@ void PumpCtrlService::initialize() { // } }); m_monitor_thread.init("PumpCtrlServiceMonitor", 1024); + + +#if ENABLE_MOTOR_CHECK_THREAD m_monitor_thread.start([this]() { for (size_t i = 0; i < 4; i++) { TMC51X0* motor = m_motors[i]; @@ -75,6 +78,7 @@ void PumpCtrlService::initialize() { } } }); +#endif } #define WAIT_FOR_MOTOR_STOP() \ diff --git a/usrc/service/valve_state_ctrl_service.cpp b/usrc/service/valve_state_ctrl_service.cpp index 7c502c4..b9f9c27 100644 --- a/usrc/service/valve_state_ctrl_service.cpp +++ b/usrc/service/valve_state_ctrl_service.cpp @@ -8,9 +8,12 @@ void ValveStateSyncService::initialize(ZCAN1* can) { m_thread.init("ValveStateSyncService-Thread"); this->can = can; lock.init(); + inited = true; } void ValveStateSyncService::startSync() { + ZASSERT_INFO(inited, "ValveStateSyncService not initialized"); + m_thread.start([this]() { while (true) { m_thread.sleep(300); @@ -29,6 +32,8 @@ void ValveStateSyncService::startSync() { }); } void ValveStateSyncService::setValveState(bool state) { + if (!inited) return; + { zlock_guard l(lock); output0state = (output0state & ~(1 << 0)) | (state << 0); @@ -45,6 +50,8 @@ void ValveStateSyncService::setValveState(bool state) { } void ValveStateSyncService::setValveState(int valveIndex, bool state) { + if (!inited) return; + if (valveIndex >= 4) { ZLOGW(TAG, "valveIndex %d out of range", valveIndex); return; @@ -63,6 +70,8 @@ void ValveStateSyncService::setValveState(int valveIndex, bool state) { } void ValveStateSyncService::setValveState(bool state0, bool state1, bool state2, bool state3) { + if (!inited) return; + { zlock_guard l(lock); output0state = (output0state & ~(1 << 0)) | (state0 << 0); @@ -81,18 +90,26 @@ void ValveStateSyncService::setValveState(bool state0, bool state1, bool state2, #define SETBIT(byte, off, valve) (byte = (byte & ~(1 << off)) | (valve << off)) void ValveStateSyncService::setRGBState(bool r, bool g, bool b) { - zlock_guard l(lock); - // bit0:r - // bit1:g - // bit2:b - SETBIT(rgbwstate, 0, r); - SETBIT(rgbwstate, 1, g); - SETBIT(rgbwstate, 2, b); - m_thread.wake(); + if (!inited) return; + + { + zlock_guard l(lock); + // bit0:r + // bit1:g + // bit2:b + SETBIT(rgbwstate, 0, r); + SETBIT(rgbwstate, 1, g); + SETBIT(rgbwstate, 2, b); + m_thread.wake(); + } } void ValveStateSyncService::setWarningState(bool warning) { - zlock_guard l(lock); + if (!inited) return; - SETBIT(rgbwstate, 3, warning); - m_thread.wake(); + { + zlock_guard l(lock); + + SETBIT(rgbwstate, 3, warning); + m_thread.wake(); + } } diff --git a/usrc/service/valve_state_ctrl_service.hpp b/usrc/service/valve_state_ctrl_service.hpp index bec146a..6e5ce7a 100644 --- a/usrc/service/valve_state_ctrl_service.hpp +++ b/usrc/service/valve_state_ctrl_service.hpp @@ -19,6 +19,8 @@ class ValveStateSyncService { bool forceupdate = false; zmutex lock = {"ValveStateSyncServiceLock"}; + bool inited = false; + public: static ValveStateSyncService* ins() { static ValveStateSyncService instance; diff --git a/usrc/uicontroler/page/mupage/muCHSetting_page.cpp b/usrc/uicontroler/page/mupage/muCHSetting_page.cpp index da6731c..f9a3e33 100644 --- a/usrc/uicontroler/page/mupage/muCHSetting_page.cpp +++ b/usrc/uicontroler/page/mupage/muCHSetting_page.cpp @@ -135,7 +135,7 @@ class MuChSetting : public IPageProcesser { * @brief 配置按键,绑定键盘 */ if (ACID_CHOOS_ENAME_BIND_CFG && bid == ACID_CHOOS_ENAME_BIND_CFG->cfgbid) { // 通道绑定名称 - UIControler::ins()->popKeyBMutSelFix(thisPage, bid, 0, AcidNameDao::getAcidNameList()); + UIControler::ins()->popKeyBMutSelFix(thisPage, bid, 0,"酸液种类选择", AcidNameDao::getAcidNameList()); } else if (IRUN_BIND_CFG && bid == IRUN_BIND_CFG->cfgbid) { // IRUN UIControler::ins()->popNumKeyBoard(thisPage, bid, 2, fmt("%d", AcidChCfgDao::getCfg(0)->irun)); } else if (PUMP_DEF_VEL_BIND_CFG && bid == PUMP_DEF_VEL_BIND_CFG->cfgbid) { // 速度 @@ -180,9 +180,11 @@ class MuChSetting : public IPageProcesser { pumpChangeSelectId(m_chId); syncUIContent(); } - } else + } + + - if (ACID_CHOOS_ENAME_BIND_CFG && bid == ACID_CHOOS_ENAME_BIND_CFG->cfgbid) { + if (ACID_CHOOS_ENAME_BIND_CFG && bid == ACID_CHOOS_ENAME_BIND_CFG->cfgbid) { /** * @brief 更新通道名称 */ diff --git a/usrc/uicontroler/page/popwin_page.cpp b/usrc/uicontroler/page/popwin_page.cpp index b0de7e3..6943d02 100644 --- a/usrc/uicontroler/page/popwin_page.cpp +++ b/usrc/uicontroler/page/popwin_page.cpp @@ -13,7 +13,7 @@ typedef enum { static UIPopInfo_t hangupInfo; -static int lastPage = 0; +static int lastPage = pg_powerOn; static int displayNum = 0; static bool handupInfoFlag = false; @@ -65,7 +65,7 @@ class PopWinPage : public IPageProcesser { if (!handupInfoFlag) { if (UIControler::ins()->getNowPage() == thisPage) { - UIControler::ins()->chpage(lastPage,false); + UIControler::ins()->chpage(lastPage, false); osDelay(200); // 等待页面切换 } } @@ -81,7 +81,7 @@ class PopWinPage : public IPageProcesser { if (UIControler::ins()->getNowPage() != thisPage) { lastPage = UIControler::ins()->getNowPage(); } - UIControler::ins()->chpage(pg_popwin,false); + UIControler::ins()->chpage(pg_popwin, false); } void visPopWin(bool state) { @@ -125,7 +125,7 @@ class PopWinPage : public IPageProcesser { } else if (type == UI_POP_WIN_TYPE_CONFIRM) { UIControler::ins()->setTxt(thisPage, ob_popwin_popTil, "消息(%d)", messageNum); } else if (type == UI_POP_WIN_TYPE_FATAL_ERROR) { - UIControler::ins()->setTxt(thisPage, ob_popwin_popTil, "警告(%d)", messageNum); + UIControler::ins()->setTxt(thisPage, ob_popwin_popTil, "错误(%d)", messageNum); } } @@ -188,3 +188,8 @@ class PopWinPage : public IPageProcesser { // 实例化LoginPage, 使其自动注册 static PopWinPage instance; + +/** + * @brief 只有当系统启动异常时候,才单独调用此函数 + */ +void popWinPageInit() { instance.initialize(); } diff --git a/usrc/uicontroler/ui_controler.cpp b/usrc/uicontroler/ui_controler.cpp index 68099d4..9055326 100644 --- a/usrc/uicontroler/ui_controler.cpp +++ b/usrc/uicontroler/ui_controler.cpp @@ -12,9 +12,9 @@ using namespace iflytop; #define TAG "UIScheduler" -#define MODULE_DEBUG 1 +#define MODULE_DEBUG 0 #define UART_RX_OVERTIME 5 -#define CMD_OVERTIME 50 +#define CMD_OVERTIME 100 static ZThread uart_rx_thread; static ZThread rx_processed_thread; @@ -45,20 +45,26 @@ __weak void UIControlerHock_PageInit() {} /*********************************************************************************************************************** * FUNC * ***********************************************************************************************************************/ -void UIControler::initialize() { // + +void UIControler::postInitialize() { ackQueue.initialize(5, sizeof(tjc_rx_packet_t)); eventQueue.initialize(5, sizeof(tjc_rx_packet_t)); usartRxThread.init("usartRxThread", 1024); eventProcessThread.init("eventProcessThread", 1024); - tjcUart = AppHardware::ins()->tjcUart; UIPublicState::initialize(); m_cmdlock.init(); + sendcmd("rest"); + osDelay(1000); + sendcmd("page %d", pg_pStart); +} +void UIControler::initialize() { // startSchedule(); - UIControlerHock_PageInit(); } +void UIControler::pageInitialize() { UIControlerHock_PageInit(); } + void UIControler::callUsrEventCb(UIEvent* event) { static AppEvent_t appEvent; appEvent.type = KAE_UIEvent; @@ -187,6 +193,7 @@ bool UIControler::readFiledAsInt(uint8_t pid, uint8_t bid, const char* filedName return true; } ZLOGW(TAG, "readFiledAsInt %s failed retry %d", filedName, i); + osDelay(100); } ZLOGE(TAG, "readFiledAsInt %s failed", filedName); return false; @@ -387,11 +394,19 @@ bool UIControler::visEx(uint8_t pid, uint8_t bid, bool val) { if (!component->isPosInited) { suc = readFiledAsInt(pid, bid, "x", &component->oldPosX); if (!suc) { - ZLOGE(TAG, "fatal error, reboot"); + for (size_t i = 0; i < 10; i++) { + ZLOGE(TAG, "fatal error, reboot"); + osDelay(1000); + } + NVIC_SystemReset(); } suc = readFiledAsInt(pid, bid, "y", &component->oldPosY); if (!suc) { - ZLOGE(TAG, "fatal error, reboot"); + for (size_t i = 0; i < 10; i++) { + ZLOGE(TAG, "fatal error, reboot"); + osDelay(1000); + } + NVIC_SystemReset(); } } @@ -491,11 +506,13 @@ void UIControler::popKeyBMutSel(uint8_t fromPid, uint8_t fromBid, int selectvali sendcmd("p[%d].b[%d].val=%d", pg_keybMutSel, ob_keybMutSel_loadpageid, fromPid); sendcmd("p[%d].b[%d].val=%d", pg_keybMutSel, ob_keybMutSel_loadcmpid, fromBid); sendcmd("p[%d].b[%d].val=%d", pg_keybMutSel, ob_keybMutSel_ctent, selectvalindex); + + chpage(pg_keybMutSel, false); // 先切换页面,再设置选项 + sendcmd("p[%d].b[%d].path=\"%s\"", pg_keybMutSel, ob_keybMutSel_ctent, selectvals); - chpage(pg_keybMutSel, false); } -void UIControler::popKeyBMutSelFix(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char** selectvals) { +void UIControler::popKeyBMutSelFix(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char* keyboardName, const char** selectvals) { int selectValsNum = 0; uint8_t pgNum = pg_keybMutSelFix; @@ -558,17 +575,23 @@ void UIControler::popKeyBMutSelFix(uint8_t fromPid, uint8_t fromBid, int selectv sendcmd("p[%d].b[%d].val=%d", pgNum, ob_keybMutSelFix_val, selectvalindex); sendcmd("p[%d].b[%d].txt=%d", pgNum, ob_keybMutSelFix_txt, selectvals[selectvalindex]); + sendcmd("p[%d].b[%d].txt=\"%s\"", pgNum, ob_keybMutSelFix_keybtil, keyboardName); + + chpage(pgNum, false); // 先切换页面,再设置选项 // 设置选项 for (int i = 0; i < selectValsNum; i++) { - visEx(pgNum, selbid_table[i], true); + // visEx(pgNum, selbid_table[i], true); sendcmd("p[%d].b[%d].txt=\"%s\"", pgNum, selbid_table[i], selectvals[i]); - movePicToXY(pgNum, selmaskbid_table[i], -100, -100); } - // 清空多余的选项 for (int i = selectValsNum; i < sizeof(selbid_table) / sizeof(selbid_table[0]); i++) { - movePicTo(pgNum, selmaskbid_table[i], selbid_table[i]); + sendcmd("p[%d].b[%d].txt=\"\"", pgNum, selbid_table[i], selectvals[i]); } - chpage(pgNum, false); + for (int i = 0; i < selectValsNum; i++) { + movePicToXY(pgNum, selmaskbid_table[i], -100, -100); + } + for (int i = selectValsNum; i < sizeof(selbid_table) / sizeof(selbid_table[0]); i++) { + movePicTo(pgNum, selmaskbid_table[i], selbid_table[i]); + } } diff --git a/usrc/uicontroler/ui_controler.hpp b/usrc/uicontroler/ui_controler.hpp index 89bab2e..b90db68 100644 --- a/usrc/uicontroler/ui_controler.hpp +++ b/usrc/uicontroler/ui_controler.hpp @@ -33,8 +33,9 @@ class UIControler { static UIControler instance; return &instance; } - + void postInitialize(); void initialize(); + void pageInitialize(); int getNowPage() { return UIStateMgr::ins()->nowPage; } void chpage(uint8_t page, bool triggerEvent); bool echo(uint8_t tx, uint8_t* rx); @@ -77,6 +78,7 @@ class UIControler { ***********************************************************************************************************************/ void popWin(UIPopWinType_t type, const char* info, function onConfirm); void popWarningWin(const char* info) { popWin(UI_POP_WIN_TYPE_WARNING_INFO, info, nullptr); } + void popFatalErrorWin(const char* info) { popWin(UI_POP_WIN_TYPE_FATAL_ERROR, info, nullptr); } void popConfirmWin(const char* info, function onConfirm) { popWin(UI_POP_WIN_TYPE_CONFIRM, info, onConfirm); } void popInfoWin(const char* info) { popWin(UI_POP_WIN_TYPE_INFO, info, nullptr); } void setLoadingState(bool state) { @@ -97,7 +99,7 @@ class UIControler { void popKeyBMutSel(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char** selectvals); void popKeyBMutSel(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char* selectvals); - void popKeyBMutSelFix(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char** selectvals); + void popKeyBMutSelFix(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char* keyboardName,const char** selectvals); /*********************************************************************************************************************** * UTILS *