From b547e9e91738677569dae5f598bcae8eec6ac601 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 30 Aug 2024 16:18:45 +0800 Subject: [PATCH] update --- uappbase/bean/config_index_enum.hpp | 86 ++++++++++++++++++++++++++ uappbase/bean/event.hpp | 13 +++- uappbase/service/config_index.cpp | 2 +- uappbase/service/config_index.hpp | 88 +-------------------------- uappbase/service/config_service.cpp | 7 ++- uappbase/service/config_service_utils.cpp | 8 +-- usrc/service/app_core.cpp | 1 + usrc/service/page/Page_main.cpp | 25 +++++++- usrc/service/page/page.hpp | 1 + usrc/service/page/submenu/Page_muInterval.cpp | 42 +++++++++++++ usrc/service/page/submenu/Page_muInterval.hpp | 25 ++++++++ 11 files changed, 201 insertions(+), 97 deletions(-) create mode 100644 uappbase/bean/config_index_enum.hpp create mode 100644 usrc/service/page/submenu/Page_muInterval.cpp create mode 100644 usrc/service/page/submenu/Page_muInterval.hpp diff --git a/uappbase/bean/config_index_enum.hpp b/uappbase/bean/config_index_enum.hpp new file mode 100644 index 0000000..0fdb5a1 --- /dev/null +++ b/uappbase/bean/config_index_enum.hpp @@ -0,0 +1,86 @@ +#pragma once + +typedef enum { + + /*********************************************************************************************************************** + * 用户配置 * + ***********************************************************************************************************************/ + kusr_name0, // 用户0名字(默认为管理员) + kusr_enable0, // 用户0是否使能 + kusr_passwd0, // 用户0密码 + kusr_name1, // 用户1名字 + kusr_enable1, // 用户1是否使能 + kusr_passwd1, // 用户1密码 + kusr_name2, // 用户2名字 + kusr_enable2, // 用户2是否使能 + kusr_passwd2, // 用户2密码 + kusr_name3, // 用户3名字 + kusr_enable3, // 用户3是否使能 + kusr_passwd3, // 用户3密码 + kusr_name4, // 用户4名字 + kusr_enable4, // 用户4是否使能 + kusr_passwd4, // 用户4密码 + kusr_name5, // 用户5名字 + kusr_enable5, // 用户5是否使能 + kusr_passwd5, // 用户5密码 + + /*********************************************************************************************************************** + * 酸液预设名称 * + ***********************************************************************************************************************/ + kcfg_acidName1, // 酸液中预设名字 + kcfg_acidName2, // 酸液中预设名字 + kcfg_acidName3, // 酸液中预设名字 + kcfg_acidName4, // 酸液中预设名字 + kcfg_acidName5, // 酸液中预设名字 + kcfg_acidName6, // 酸液中预设名字 + kcfg_acidName7, // 酸液中预设名字 + kcfg_acidName8, // 酸液中预设名字 + kcfg_acidName9, // 酸液中预设名字 + kcfg_acidName10, // 酸液中预设名字 + kcfg_acidName11, // 酸液中预设名字 + kcfg_acidName12, // 酸液中预设名字 + kcfg_acidName13, // 酸液中预设名字 + kcfg_acidName14, // 酸液中预设名字 + kcfg_acidName15, // 酸液中预设名字 + + /*********************************************************************************************************************** + * 酸液通道选择名称 * + ***********************************************************************************************************************/ + kcfg_acidChooseName0, // 酸液0 选择的名字 + kcfg_acidChooseName1, // 酸液1 选择的名字 + kcfg_acidChooseName2, // 酸液2 选择的名字 + kcfg_acidChooseName3, // 酸液3 选择的名字 + + /*********************************************************************************************************************** + * 酸液通道每次分配的数值 * + ***********************************************************************************************************************/ + kcfg_acideval0, // 酸液0 distribution + kcfg_acideval1, // 酸液1 + kcfg_acideval2, // 酸液2 + kcfg_acideval3, // 酸液3 + + /*********************************************************************************************************************** + * 电机默认配置 * + ***********************************************************************************************************************/ + + kcfg_1ulTrunsM0, // 电机0 1ul 转数 + kcfg_1ulTrunsM1, // 电机0 1ul 转数 + kcfg_1ulTrunsM2, // 电机0 1ul 转数 + kcfg_1ulTrunsM3, // 电机0 1ul 转数 + + /*********************************************************************************************************************** + * 其他配置 * + ***********************************************************************************************************************/ + kcfg_lockAcidName, // 锁定酸液名称 + kcfg_echDitrUpLi, // 每次分配上限设定值 each distri up-limit + kcfg_pumpDefVel, // 泵机默认速度RPM + kcfg_distrInterval, // 每次分配间隔时间 + + /*********************************************************************************************************************** + * 回流参数配置 * + ***********************************************************************************************************************/ + kcfg_pipeLengthML, // 酸液管路长度 + + kcfg_max, + +} config_index_t; diff --git a/uappbase/bean/event.hpp b/uappbase/bean/event.hpp index 6b8a44c..1db552f 100644 --- a/uappbase/bean/event.hpp +++ b/uappbase/bean/event.hpp @@ -2,12 +2,15 @@ #include #include + +#include "config_index_enum.hpp" namespace iflytop { using namespace std; typedef enum { kAppEvent_RunModeChangeEvent, kAppEvent_RemoterConnectStateChangeEvent, kAppEvent_PumpWorkStateChangeEvent, + kAppEvent_ConfigChangeEvent, } AppEventType_t; /** @@ -21,7 +24,8 @@ typedef enum { typedef struct { AppEventType_t type; union event { - uint32_t placeholder; + uint32_t placeholder; + config_index_t configIndex; } d; } AppEvent_t; @@ -32,4 +36,11 @@ static inline AppEvent_t createAppEvent(AppEventType_t type) { return event; } +static inline AppEvent_t createConfigChangeEvent(config_index_t index) { + AppEvent_t event; + event.type = kAppEvent_ConfigChangeEvent; + event.d.configIndex = index; + return event; +} + } // namespace iflytop \ No newline at end of file diff --git a/uappbase/service/config_index.cpp b/uappbase/service/config_index.cpp index 8f4125a..6d75c1f 100644 --- a/uappbase/service/config_index.cpp +++ b/uappbase/service/config_index.cpp @@ -81,7 +81,7 @@ static cfg_iterm_info_t cfg_iterm_infos[] = { ***********************************************************************************************************************/ CFG_ITERM(kcfg_lockAcidName, kcfgt_bool, "false"), // CFG_ITERM(kcfg_echDitrUpLi, kcfgt_int32, "40"), // 每次分配上限设定值 each distri up-limit - CFG_ITERM(kcfg_distrInterval, kcfgt_int32, "50"), // 每次分配间隔时间 + CFG_ITERM(kcfg_distrInterval, kcfgt_int32, "10"), // 每次分配间隔时间 CFG_ITERM(kcfg_pumpDefVel, kcfgt_int32, "800"), // /*********************************************************************************************************************** diff --git a/uappbase/service/config_index.hpp b/uappbase/service/config_index.hpp index f5eb5b2..9a51330 100644 --- a/uappbase/service/config_index.hpp +++ b/uappbase/service/config_index.hpp @@ -1,7 +1,8 @@ #pragma once +#include "../appdep.hpp" #include "uappbase/appcfg/appcfg.hpp" #include "uappbase/bean/bean.hpp" -#include "../appdep.hpp" +#include "uappbase/bean/config_index_enum.hpp" namespace iflytop { typedef enum { @@ -18,91 +19,6 @@ typedef struct { const char *initval; } cfg_iterm_info_t; -typedef enum { - - /*********************************************************************************************************************** - * 用户配置 * - ***********************************************************************************************************************/ - kusr_name0, // 用户0名字(默认为管理员) - kusr_enable0, // 用户0是否使能 - kusr_passwd0, // 用户0密码 - kusr_name1, // 用户1名字 - kusr_enable1, // 用户1是否使能 - kusr_passwd1, // 用户1密码 - kusr_name2, // 用户2名字 - kusr_enable2, // 用户2是否使能 - kusr_passwd2, // 用户2密码 - kusr_name3, // 用户3名字 - kusr_enable3, // 用户3是否使能 - kusr_passwd3, // 用户3密码 - kusr_name4, // 用户4名字 - kusr_enable4, // 用户4是否使能 - kusr_passwd4, // 用户4密码 - kusr_name5, // 用户5名字 - kusr_enable5, // 用户5是否使能 - kusr_passwd5, // 用户5密码 - - /*********************************************************************************************************************** - * 酸液预设名称 * - ***********************************************************************************************************************/ - kcfg_acidName1, // 酸液中预设名字 - kcfg_acidName2, // 酸液中预设名字 - kcfg_acidName3, // 酸液中预设名字 - kcfg_acidName4, // 酸液中预设名字 - kcfg_acidName5, // 酸液中预设名字 - kcfg_acidName6, // 酸液中预设名字 - kcfg_acidName7, // 酸液中预设名字 - kcfg_acidName8, // 酸液中预设名字 - kcfg_acidName9, // 酸液中预设名字 - kcfg_acidName10, // 酸液中预设名字 - kcfg_acidName11, // 酸液中预设名字 - kcfg_acidName12, // 酸液中预设名字 - kcfg_acidName13, // 酸液中预设名字 - kcfg_acidName14, // 酸液中预设名字 - kcfg_acidName15, // 酸液中预设名字 - - /*********************************************************************************************************************** - * 酸液通道选择名称 * - ***********************************************************************************************************************/ - kcfg_acidChooseName0, // 酸液0 选择的名字 - kcfg_acidChooseName1, // 酸液1 选择的名字 - kcfg_acidChooseName2, // 酸液2 选择的名字 - kcfg_acidChooseName3, // 酸液3 选择的名字 - - /*********************************************************************************************************************** - * 酸液通道每次分配的数值 * - ***********************************************************************************************************************/ - kcfg_acideval0, // 酸液0 distribution - kcfg_acideval1, // 酸液1 - kcfg_acideval2, // 酸液2 - kcfg_acideval3, // 酸液3 - - /*********************************************************************************************************************** - * 电机默认配置 * - ***********************************************************************************************************************/ - - kcfg_1ulTrunsM0, // 电机0 1ul 转数 - kcfg_1ulTrunsM1, // 电机0 1ul 转数 - kcfg_1ulTrunsM2, // 电机0 1ul 转数 - kcfg_1ulTrunsM3, // 电机0 1ul 转数 - - /*********************************************************************************************************************** - * 其他配置 * - ***********************************************************************************************************************/ - kcfg_lockAcidName, // 锁定酸液名称 - kcfg_echDitrUpLi, // 每次分配上限设定值 each distri up-limit - kcfg_pumpDefVel, // 泵机默认速度RPM - kcfg_distrInterval, // 每次分配间隔时间 - - /*********************************************************************************************************************** - * 回流参数配置 * - ***********************************************************************************************************************/ - kcfg_pipeLengthML, // 酸液管路长度 - - kcfg_max, - -} config_index_t; - #define CFG_MAX_INDEX 50 const char *cfgName(int32_t index); diff --git a/uappbase/service/config_service.cpp b/uappbase/service/config_service.cpp index 0e861d1..8a5d1d2 100644 --- a/uappbase/service/config_service.cpp +++ b/uappbase/service/config_service.cpp @@ -1,4 +1,6 @@ #include "config_service.hpp" + +#include "uappbase\service\app_event_bus.hpp" // #define CFG_HEADER 0x12345678 @@ -41,7 +43,7 @@ typedef struct { #define SET_CFG_STR(index, value) memcpy(cfgcache.cfg[index].str, value, strlen(value)) #define CHECKSUM() checksum((uint8_t *)&(cfgcache.cfg[0].str[0]), sizeof(cfgcache) - 8) -static config_data_t cfgcache; +static config_data_t cfgcache; static int32_t checksum(uint8_t *data, int32_t n) { int32_t sum = 0; @@ -57,7 +59,6 @@ bool ConfigService::initialize() { AppHal::MX_I2C1_Init(); eeprom.initialize(&hi2c1); - static_assert(kcfg_max == CFG_MAX_INDEX, ""); if (!checkcfg()) { ZLOGI(TAG, "cfg check fail,init cfg"); @@ -158,6 +159,8 @@ void ConfigService::_setcfg(int32_t index, const char *value) { memset(cfgcache.cfg[index].str, 0, 32); strncpy((char *)cfgcache.cfg[index].str, value, 31); cfgcache.checksum = CHECKSUM(); + + AppEventBus::ins()->pushEvent(createConfigChangeEvent((config_index_t)index)); return; } void ConfigService::_setcfgAndFlush(int32_t index, const char *value) { diff --git a/uappbase/service/config_service_utils.cpp b/uappbase/service/config_service_utils.cpp index 564deb1..9dba3a0 100644 --- a/uappbase/service/config_service_utils.cpp +++ b/uappbase/service/config_service_utils.cpp @@ -19,16 +19,16 @@ void setMotorULToTruns(int motorid, int32_t val) { // switch (motorid) { case 0: - CS->setcfg(kcfg_1ulTrunsM0, val); + CS->setcfgAndFlush(kcfg_1ulTrunsM0, val); break; case 1: - CS->setcfg(kcfg_1ulTrunsM1, val); + CS->setcfgAndFlush(kcfg_1ulTrunsM1, val); break; case 2: - CS->setcfg(kcfg_1ulTrunsM2, val); + CS->setcfgAndFlush(kcfg_1ulTrunsM2, val); break; case 3: - CS->setcfg(kcfg_1ulTrunsM3, val); + CS->setcfgAndFlush(kcfg_1ulTrunsM3, val); break; default: ZASSERT(0); diff --git a/usrc/service/app_core.cpp b/usrc/service/app_core.cpp index 027f0d9..b359d32 100644 --- a/usrc/service/app_core.cpp +++ b/usrc/service/app_core.cpp @@ -75,6 +75,7 @@ void AppCore::appsetup() { Page_keybAcidCh::ins()->initialize(); Page_muAcidType::ins()->initialize(); Page_menu::ins()->initialize(); + Page_muInterval::ins()->initialize(); // EventProcesser diff --git a/usrc/service/page/Page_main.cpp b/usrc/service/page/Page_main.cpp index 230da8e..70e34a7 100644 --- a/usrc/service/page/Page_main.cpp +++ b/usrc/service/page/Page_main.cpp @@ -16,7 +16,7 @@ static CfgItermCache cfgcache; * */ -bool Page_main::isBelongThisPage(int page) { return page == PAGE; } +bool Page_main::isBelongThisPage(int page) { return page == PAGE; } void Page_main::OnPageLoad() { // 只有管理员能够修改,酸液通道名称 @@ -48,7 +48,8 @@ void Page_main::OnPageLoad() { UIS->setEnumComponentState(PAGE, ob_main_RemoterS, GSM->getRemoterS()); // 遥控器是否在线 // 更新底部状态栏 - UIS->setEnumComponentState(PAGE, ob_main_RunMode, (int32_t)GSM->getRunMode()); // 运行模式 + UIS->setEnumComponentState(PAGE, ob_main_RunMode, (int32_t)GSM->getRunMode()); // 运行模式 + UIS->setVal(PAGE, ob_main_RunModeVal, CS->getStr(kcfg_distrInterval, &cfgcache)); // 加酸间隔状态更新 UIS->setVal(PAGE, ob_main_acidch0, GSM->getPumpSelectState(0)); UIS->setVal(PAGE, ob_main_acidch1, GSM->getPumpSelectState(1)); @@ -60,7 +61,7 @@ void Page_main::OnPageLoad() { // UIS->setVal(PAGE, ob_main_clock, "版本:%s", APP_VERSION); // 根据当前登录用户设置菜单页面 - + if (GStateMgr::ins()->isAdmin()) { UIS->setVal(UI_UUID(gvar, menupageid), ADMIN_MENU_ID); } else { @@ -105,6 +106,24 @@ void Page_main::OnInputFieldContentChange(uint8_t bid, const char* text) { ZLOGI(TAG, "acidname3:%s", text); CS->setcfgAndFlush(kcfg_acidChooseName3, text); } + + // 设置加酸间隔 + if (bid == ob_main_RunModeVal) { + int32_t distrIntervalSecond = atoi(text); + if (distrIntervalSecond <= 0) { + UIS->alert("酸液间隔时间不能小于0"); + UIS->setVal(PAGE, ob_main_RunModeVal, CS->getStr(kcfg_distrInterval, &cfgcache)); + return; + } + + if (distrIntervalSecond > 30) { + UIS->alert("酸液间隔时间不能大于30"); + UIS->setVal(PAGE, ob_main_RunModeVal, CS->getStr(kcfg_distrInterval, &cfgcache)); + return; + } + + CS->setcfgAndFlush(kcfg_distrInterval, distrIntervalSecond); + } } void Page_main::OnButton(uint8_t bid, uint8_t val) { diff --git a/usrc/service/page/page.hpp b/usrc/service/page/page.hpp index 69fea3e..3340dda 100644 --- a/usrc/service/page/page.hpp +++ b/usrc/service/page/page.hpp @@ -3,5 +3,6 @@ #include "Page_login.hpp" #include "Page_main.hpp" #include "submenu/Page_muAcidType.hpp" +#include "submenu/Page_muInterval.hpp" #include "keyboard/Page_keybAcidCh.hpp" #include "Page_menu.hpp" \ No newline at end of file diff --git a/usrc/service/page/submenu/Page_muInterval.cpp b/usrc/service/page/submenu/Page_muInterval.cpp new file mode 100644 index 0000000..5b99647 --- /dev/null +++ b/usrc/service/page/submenu/Page_muInterval.cpp @@ -0,0 +1,42 @@ +#include "Page_muInterval.hpp" +using namespace iflytop; + +/** + * @brief + * 酸类修改页面 + */ + +#define PAGE pg_muInterval +#define TAG "Page_muInterval" +static CfgItermCache cfgcache; + +bool Page_muInterval::isBelongThisPage(int page) { return page == PAGE; } + +void Page_muInterval::OnPageLoad() { + // 设置加酸间隔时间 + UIS->setVal(PAGE, ob_muInterval_stAcidInte, CS->getStr(kcfg_distrInterval, &cfgcache)); +}; + +void Page_muInterval::OnInputFieldContentChange(uint8_t bid, const char* text) { + if (bid == ob_muInterval_stAcidInte) { + int32_t distrIntervalSecond = atoi(text); + if (distrIntervalSecond <= 0) { + UIS->alert("酸液间隔时间不能小于0"); + UIS->setVal(PAGE, ob_muInterval_stAcidInte, CS->getStr(kcfg_distrInterval, &cfgcache)); + return; + } + + if (distrIntervalSecond > 30) { + UIS->alert("酸液间隔时间不能大于30"); + UIS->setVal(PAGE, ob_muInterval_stAcidInte, CS->getStr(kcfg_distrInterval, &cfgcache)); + return; + } + + CS->setcfgAndFlush(kcfg_distrInterval, distrIntervalSecond); + } +}; +void Page_muInterval::OnButton(uint8_t bid, uint8_t val) { + // +}; + +// muAcidType \ No newline at end of file diff --git a/usrc/service/page/submenu/Page_muInterval.hpp b/usrc/service/page/submenu/Page_muInterval.hpp new file mode 100644 index 0000000..a22da94 --- /dev/null +++ b/usrc/service/page/submenu/Page_muInterval.hpp @@ -0,0 +1,25 @@ +#pragma once +// +#include "../page_processer.hpp" +namespace iflytop { +using namespace std; +// page: keybAcidCh +class Page_muInterval : public IPageProcesser { + private: + /* data */ + + public: + static Page_muInterval* ins() { + static Page_muInterval instance; + return &instance; + } + + private: + virtual bool isBelongThisPage(int page) override; + + virtual void OnPageLoad() override; + virtual void OnInputFieldContentChange(uint8_t bid, const char* text) override; + virtual void OnButton(uint8_t bid, uint8_t val) override; +}; + +} // namespace iflytop