From 73c22bd566db5f88d2082087fe2e1c145c77daaf Mon Sep 17 00:00:00 2001 From: zhaohe Date: Wed, 27 Nov 2024 23:54:55 +0800 Subject: [PATCH] update --- README.md | 4 +- uappbase/bean/appevent.h | 40 ---- uappbase/bean/appevent.hpp | 48 ++++ uappbase/bean/dbtype/acid_distrubt_record.hpp | 15 ++ uappbase/bean/dbtype/acid_use_record.hpp | 18 ++ uappbase/bean/event.hpp | 9 +- uappbase/service/app_event_bus.cpp | 27 ++- uappbase/service/app_event_bus.hpp | 5 +- uappbase/service/gstate_mgr.cpp | 2 +- ui/ui.h | 247 +++++++++++---------- usrc/db/dao/acid_distrubt_record_dao.cpp | 108 +++++++++ usrc/db/dao/acid_distrubt_record_dao.hpp | 41 ++++ usrc/db/dao/acid_name_dao.cpp | 4 +- usrc/db/dao/acid_use_record_dao.cpp | 125 +++++++++++ usrc/db/dao/acid_use_record_dao.hpp | 42 ++++ usrc/db/dao/user_dao.cpp | 11 + usrc/db/dao/user_dao.hpp | 4 + usrc/service/app_core.cpp | 9 +- usrc/service/pump_ctrl_service.cpp | 2 +- usrc/uicontroler/base/page_processer.cpp | 12 +- usrc/uicontroler/base/page_processer.hpp | 2 +- usrc/uicontroler/page/demo/demo_page_cpp | 2 +- usrc/uicontroler/page/home_page.cpp | 2 +- usrc/uicontroler/page/login_page.cpp | 2 +- usrc/uicontroler/page/mupage/muAcidUseMgr_page.cpp | 140 ++++++++++++ .../page/mupage/muReCtrlerBind_page.cpp | 2 +- usrc/uicontroler/page/mupage/muUsrMgr_page.cpp | 2 +- usrc/uicontroler/page/navi_page.cpp | 2 +- usrc/uicontroler/page/popwin_page.cpp | 9 +- usrc/uicontroler/ui_controler.cpp | 5 +- usrc/uicontroler/ui_state_mgr.cpp | 12 +- usrc/uicontroler/ui_state_mgr.hpp | 1 + 32 files changed, 754 insertions(+), 200 deletions(-) delete mode 100644 uappbase/bean/appevent.h create mode 100644 uappbase/bean/appevent.hpp create mode 100644 uappbase/bean/dbtype/acid_distrubt_record.hpp create mode 100644 uappbase/bean/dbtype/acid_use_record.hpp create mode 100644 usrc/db/dao/acid_distrubt_record_dao.cpp create mode 100644 usrc/db/dao/acid_distrubt_record_dao.hpp create mode 100644 usrc/db/dao/acid_use_record_dao.cpp create mode 100644 usrc/db/dao/acid_use_record_dao.hpp create mode 100644 usrc/uicontroler/page/mupage/muAcidUseMgr_page.cpp diff --git a/README.md b/README.md index ff906a2..bf52b6a 100644 --- a/README.md +++ b/README.md @@ -55,9 +55,8 @@ UI ``` 量产时注意事项: 1. 量产时,需要注意注意掉显示密码的相关日志 - 2. 考虑干掉蓝牙通信,换成2.4g按键,便宜且简单 + 2. 考虑干掉蓝牙通信,换成433 3. 蓝牙主机扫描,停止扫描,做成停止上报扫描结果。(虽然依然在扫描) - 4. 如果从屏幕读取状态失败,则自动重启设备 ``` @@ -75,4 +74,5 @@ BUG: 如果没有挂外置CAN,can发送会疯狂占用CPU导致 UI读写错误 3. 考虑将所有串口接收改成DMA,目前串口有点多,中断接收有点吃不消了。 + 2. 用户登录时检查记录是否快满或者满,给出提示或者报警 ``` \ No newline at end of file diff --git a/uappbase/bean/appevent.h b/uappbase/bean/appevent.h deleted file mode 100644 index 0e1d16a..0000000 --- a/uappbase/bean/appevent.h +++ /dev/null @@ -1,40 +0,0 @@ -#pragma once -#include - -#include "uicontroler/tjc/tjc_base_type.h" - -typedef enum { - kAE_RunModeChangeEvent, // 运行模式改变 - - kAppEvent_StateDisplayInfo, - kAppEvent_AcidChCfgChangeEvent, - - // UI_EVENT - KAE_UIEvent, - kAE_LoginEvent, - kAE_unLoginEvent, - KAE_PageChangeEvent, - - kAE_AcidStatChangeEvent, // 统计数据变化事件 - kAE_RemoterConnectedEvent, // 遥控器连接成功 - kAE_RemoterDisConnectedEvent, // 遥控器断开连接 - - -} AppEventType_t; - -/** - * - * @注意 - * 下面这个结构不易定义过大,否则容易造成栈溢出 - */ - -typedef struct { - AppEventType_t type; - union { - uint32_t placeholder; - char bleName[20]; - char stateDisplayInfo[30]; - UIEvent uiEvent; - int32_t pageChangeTo; - } d; -} AppEvent_t; \ No newline at end of file diff --git a/uappbase/bean/appevent.hpp b/uappbase/bean/appevent.hpp new file mode 100644 index 0000000..8923ce2 --- /dev/null +++ b/uappbase/bean/appevent.hpp @@ -0,0 +1,48 @@ +#pragma once +#include + +#include + +#include "uicontroler/tjc/tjc_base_type.h" + +typedef enum { + KAE_callOnAppEventBusLoop, + + kAE_RunModeChangeEvent, // 运行模式改变 + + kAppEvent_StateDisplayInfo, + kAppEvent_AcidChCfgChangeEvent, + + // UI_EVENT + KAE_UIEvent, + kAE_LoginEvent, + kAE_unLoginEvent, + KAE_PageChangeEvent, + + kAE_AcidStatChangeEvent, // 统计数据变化事件 + kAE_RemoterConnectedEvent, // 遥控器连接成功 + kAE_RemoterDisConnectedEvent, // 遥控器断开连接 + +} AppEventType_t; + +/** + * + * @注意 + * 下面这个结构不易定义过大,否则容易造成栈溢出 + */ + +// typedef struct { +// } AppEvent; + +class AppEvent { + public: + AppEventType_t type; + union { + uint32_t placeholder; + char bleName[20]; + char stateDisplayInfo[30]; + UIEvent uiEvent; + int32_t pageChangeTo; + } d; + std::function onfnc; +}; diff --git a/uappbase/bean/dbtype/acid_distrubt_record.hpp b/uappbase/bean/dbtype/acid_distrubt_record.hpp new file mode 100644 index 0000000..c9f3762 --- /dev/null +++ b/uappbase/bean/dbtype/acid_distrubt_record.hpp @@ -0,0 +1,15 @@ +#pragma once +#include "stm32components/bean/zdate.hpp" +#include "uappbase/appcfg/appcfg.hpp" +#include "uappbase/appdep.hpp" + +namespace iflytop { +typedef struct { + uint8_t id; + zdate_t date; + uint8_t distrubtAcidUsrid; + uint8_t takeAcidUsrid; + uint16_t distrubtCh; +} acid_distrubt_record_t; + +} // namespace iflytop diff --git a/uappbase/bean/dbtype/acid_use_record.hpp b/uappbase/bean/dbtype/acid_use_record.hpp new file mode 100644 index 0000000..4349175 --- /dev/null +++ b/uappbase/bean/dbtype/acid_use_record.hpp @@ -0,0 +1,18 @@ +#pragma once +#include "stm32components/bean/zdate.hpp" +#include "uappbase/appcfg/appcfg.hpp" +#include "uappbase/appdep.hpp" + +namespace iflytop { +typedef struct { + uint8_t id; + zdate_t date; + uint8_t usrid; + + uint16_t ch0take; // 0.1ml + uint16_t ch1take; // 0.1ml + uint16_t ch2take; // 0.1ml + uint16_t ch3take; // 0.1ml +} acid_use_record_t; + +} // namespace iflytop diff --git a/uappbase/bean/event.hpp b/uappbase/bean/event.hpp index 0db0294..8645843 100644 --- a/uappbase/bean/event.hpp +++ b/uappbase/bean/event.hpp @@ -3,15 +3,12 @@ #include #include -extern "C" { -#include "appevent.h" -} +#include "appevent.hpp" namespace iflytop { using namespace std; - -static inline AppEvent_t createStateDisplayInfoEvent(const char* info) { - AppEvent_t event; +static inline AppEvent createStateDisplayInfoEvent(const char* info) { + AppEvent event; event.type = kAppEvent_StateDisplayInfo; strncpy(event.d.stateDisplayInfo, info, sizeof(event.d.stateDisplayInfo)); return event; diff --git a/uappbase/service/app_event_bus.cpp b/uappbase/service/app_event_bus.cpp index 84b7eac..1b78f03 100644 --- a/uappbase/service/app_event_bus.cpp +++ b/uappbase/service/app_event_bus.cpp @@ -8,13 +8,21 @@ static QueueHandle_t xQueue; void AppEventBus::initialize() { lock.init(); thread.init("AppEventBus", 1024); - xQueue = xQueueCreate(20, sizeof(AppEvent_t)); + xQueue = xQueueCreate(20, sizeof(AppEvent)); thread.start([this]() { - AppEvent_t event; + AppEvent event; while (1) { if (xQueueReceive(xQueue, &event, portMAX_DELAY) == pdTRUE) { - ZLOGI(TAG, "pop event type %d", event.type); + // ZLOGI(TAG, "pop event type %d", event.type); + + if (event.type == KAE_callOnAppEventBusLoop) { + if (event.onfnc) { + event.onfnc(); + } + continue; + } + for (int i = 0; i < cbNum; i++) { m_cbs[i](&event); } @@ -27,13 +35,13 @@ void AppEventBus::regOnEvent(onAppEventCB_t onEvent) { m_cbs[cbNum] = onEvent; cbNum++; } -void AppEventBus::pushEvent(const AppEvent_t& event) { - ZLOGI(TAG, "pushEvent %d", event.type); +void AppEventBus::pushEvent(const AppEvent& event) { + // ZLOGI(TAG, "pushEvent %d", event.type); if (xQueueSend(xQueue, &event, 100) != pdPASS) { ZLOGE(TAG, "xQueueSend failed"); } } -static AppEvent_t event; +static AppEvent event; void AppEventBus::pushSimpleEvent(AppEventType_t type) { zlock_guard lck(lock); @@ -47,3 +55,10 @@ void AppEventBus::pushPageChangeEvent(uint8_t toPage) { event.d.pageChangeTo = toPage; pushEvent(event); } + +void AppEventBus::callFnInEventBus(function onfnc) { + zlock_guard lck(lock); + event.type = KAE_callOnAppEventBusLoop; + event.onfnc = onfnc; + pushEvent(event); +} diff --git a/uappbase/service/app_event_bus.hpp b/uappbase/service/app_event_bus.hpp index 39a94b3..52179c9 100644 --- a/uappbase/service/app_event_bus.hpp +++ b/uappbase/service/app_event_bus.hpp @@ -5,7 +5,7 @@ // namespace iflytop { -typedef function onAppEventCB_t; +typedef function onAppEventCB_t; class AppEventBus { ZThread thread; @@ -24,10 +24,11 @@ class AppEventBus { void initialize(); void regOnEvent(onAppEventCB_t onEvent); - void pushEvent(const AppEvent_t& event); + void pushEvent(const AppEvent& event); void pushSimpleEvent(AppEventType_t type); void pushPageChangeEvent(uint8_t toPage); + void callFnInEventBus(function onfnc); }; } // namespace iflytop diff --git a/uappbase/service/gstate_mgr.cpp b/uappbase/service/gstate_mgr.cpp index bd19f2b..18c571f 100644 --- a/uappbase/service/gstate_mgr.cpp +++ b/uappbase/service/gstate_mgr.cpp @@ -53,7 +53,7 @@ void GStateMgr::setAcidState(int32_t state) { } void GStateMgr::setRemoterS(int32_t state, const char* name) { zlock_guard l(m_mutex); - AppEvent_t appevent; + AppEvent appevent; m_RemoterS = state; if (state) { diff --git a/ui/ui.h b/ui/ui.h index 4cd02bc..e46ab89 100644 --- a/ui/ui.h +++ b/ui/ui.h @@ -13,8 +13,8 @@ #define pg_muCHSetting 11 #define pg_muDeviceInfo 12 #define pg_muReCtlerBind 13 -#define pg_muAcidTakeMgr 14 -#define pg_muAcidUseRecd 15 +#define pg_muAcidUseRecd 14 +#define pg_muAcidTakeMgr 15 #define pg_popwin 16 #define pg_keybdB 17 #define pg_keybdAP 18 @@ -303,129 +303,132 @@ #define ob_muReCtlerBind_bleEventTil 8 #define ob_muReCtlerBind_t0 9 #define ob_muReCtlerBind_infoWin 10 -//muAcidTakeMgr.objs -#define ob_muAcidTakeMgr_muAcidTakeMgr 0 -#define ob_muAcidTakeMgr_t0 1 -#define ob_muAcidTakeMgr_bak 2 -#define ob_muAcidTakeMgr_val01 3 -#define ob_muAcidTakeMgr_h1 4 -#define ob_muAcidTakeMgr_h2 5 -#define ob_muAcidTakeMgr_h0 6 -#define ob_muAcidTakeMgr_val00 7 -#define ob_muAcidTakeMgr_val10 8 -#define ob_muAcidTakeMgr_val20 9 -#define ob_muAcidTakeMgr_val30 10 -#define ob_muAcidTakeMgr_val40 11 -#define ob_muAcidTakeMgr_val50 12 -#define ob_muAcidTakeMgr_val60 13 -#define ob_muAcidTakeMgr_val70 14 -#define ob_muAcidTakeMgr_val11 15 -#define ob_muAcidTakeMgr_val21 16 -#define ob_muAcidTakeMgr_val31 17 -#define ob_muAcidTakeMgr_val41 18 -#define ob_muAcidTakeMgr_val51 19 -#define ob_muAcidTakeMgr_val61 20 -#define ob_muAcidTakeMgr_val71 21 -#define ob_muAcidTakeMgr_val02 22 -#define ob_muAcidTakeMgr_export 23 -#define ob_muAcidTakeMgr_val12 24 -#define ob_muAcidTakeMgr_val22 25 -#define ob_muAcidTakeMgr_val32 26 -#define ob_muAcidTakeMgr_val42 27 -#define ob_muAcidTakeMgr_val52 28 -#define ob_muAcidTakeMgr_val62 29 -#define ob_muAcidTakeMgr_val72 30 -#define ob_muAcidTakeMgr_h3 31 -#define ob_muAcidTakeMgr_val03 32 -#define ob_muAcidTakeMgr_val13 33 -#define ob_muAcidTakeMgr_val23 34 -#define ob_muAcidTakeMgr_val33 35 -#define ob_muAcidTakeMgr_val43 36 -#define ob_muAcidTakeMgr_val53 37 -#define ob_muAcidTakeMgr_val63 38 -#define ob_muAcidTakeMgr_val73 39 -#define ob_muAcidTakeMgr_h4 40 -#define ob_muAcidTakeMgr_val04 41 -#define ob_muAcidTakeMgr_val14 42 -#define ob_muAcidTakeMgr_val24 43 -#define ob_muAcidTakeMgr_val34 44 -#define ob_muAcidTakeMgr_val44 45 -#define ob_muAcidTakeMgr_val54 46 -#define ob_muAcidTakeMgr_val64 47 -#define ob_muAcidTakeMgr_val74 48 -#define ob_muAcidTakeMgr_h5 49 -#define ob_muAcidTakeMgr_val05 50 -#define ob_muAcidTakeMgr_val15 51 -#define ob_muAcidTakeMgr_val25 52 -#define ob_muAcidTakeMgr_val35 53 -#define ob_muAcidTakeMgr_val45 54 -#define ob_muAcidTakeMgr_val55 55 -#define ob_muAcidTakeMgr_val65 56 -#define ob_muAcidTakeMgr_val75 57 -#define ob_muAcidTakeMgr_nxtBut 58 -#define ob_muAcidTakeMgr_preBut 59 -#define ob_muAcidTakeMgr_pageIndex 60 -#define ob_muAcidTakeMgr_t1 61 //muAcidUseRecd.objs #define ob_muAcidUseRecd_muAcidUseRecd 0 -#define ob_muAcidUseRecd_til 1 +#define ob_muAcidUseRecd_t0 1 #define ob_muAcidUseRecd_bak 2 -#define ob_muAcidUseRecd_chTil 3 -#define ob_muAcidUseRecd_chId 4 -#define ob_muAcidUseRecd_val01 5 -#define ob_muAcidUseRecd_h1 6 -#define ob_muAcidUseRecd_volumeVal 7 -#define ob_muAcidUseRecd_volumeTil 8 -#define ob_muAcidUseRecd_volumeUint 9 -#define ob_muAcidUseRecd_addNew 10 -#define ob_muAcidUseRecd_takePers 11 -#define ob_muAcidUseRecd_takePersTil 12 -#define ob_muAcidUseRecd_distPersoTil 13 -#define ob_muAcidUseRecd_distPerso 14 -#define ob_muAcidUseRecd_h2 15 -#define ob_muAcidUseRecd_h3 16 -#define ob_muAcidUseRecd_h4 17 -#define ob_muAcidUseRecd_h0 18 -#define ob_muAcidUseRecd_val04 19 -#define ob_muAcidUseRecd_val00 20 -#define ob_muAcidUseRecd_val10 21 -#define ob_muAcidUseRecd_val20 22 -#define ob_muAcidUseRecd_val30 23 -#define ob_muAcidUseRecd_val40 24 -#define ob_muAcidUseRecd_val50 25 -#define ob_muAcidUseRecd_val60 26 -#define ob_muAcidUseRecd_val70 27 -#define ob_muAcidUseRecd_val11 28 -#define ob_muAcidUseRecd_val21 29 -#define ob_muAcidUseRecd_val31 30 -#define ob_muAcidUseRecd_val41 31 -#define ob_muAcidUseRecd_val51 32 -#define ob_muAcidUseRecd_val61 33 -#define ob_muAcidUseRecd_val71 34 -#define ob_muAcidUseRecd_val02 35 -#define ob_muAcidUseRecd_val12 36 -#define ob_muAcidUseRecd_val22 37 -#define ob_muAcidUseRecd_val32 38 -#define ob_muAcidUseRecd_val42 39 -#define ob_muAcidUseRecd_val52 40 -#define ob_muAcidUseRecd_val62 41 -#define ob_muAcidUseRecd_val72 42 -#define ob_muAcidUseRecd_val03 43 -#define ob_muAcidUseRecd_val13 44 -#define ob_muAcidUseRecd_val23 45 -#define ob_muAcidUseRecd_val33 46 -#define ob_muAcidUseRecd_val43 47 -#define ob_muAcidUseRecd_val53 48 -#define ob_muAcidUseRecd_val63 49 -#define ob_muAcidUseRecd_val73 50 -#define ob_muAcidUseRecd_val14 51 -#define ob_muAcidUseRecd_val24 52 -#define ob_muAcidUseRecd_val34 53 -#define ob_muAcidUseRecd_val44 54 -#define ob_muAcidUseRecd_val54 55 -#define ob_muAcidUseRecd_val64 56 -#define ob_muAcidUseRecd_val74 57 -#define ob_muAcidUseRecd_export 58 +#define ob_muAcidUseRecd_val01 3 +#define ob_muAcidUseRecd_h1 4 +#define ob_muAcidUseRecd_h2 5 +#define ob_muAcidUseRecd_h0 6 +#define ob_muAcidUseRecd_val00 7 +#define ob_muAcidUseRecd_val10 8 +#define ob_muAcidUseRecd_val20 9 +#define ob_muAcidUseRecd_val30 10 +#define ob_muAcidUseRecd_val40 11 +#define ob_muAcidUseRecd_val50 12 +#define ob_muAcidUseRecd_val60 13 +#define ob_muAcidUseRecd_val70 14 +#define ob_muAcidUseRecd_val11 15 +#define ob_muAcidUseRecd_val21 16 +#define ob_muAcidUseRecd_val31 17 +#define ob_muAcidUseRecd_val41 18 +#define ob_muAcidUseRecd_val51 19 +#define ob_muAcidUseRecd_val61 20 +#define ob_muAcidUseRecd_val71 21 +#define ob_muAcidUseRecd_val02 22 +#define ob_muAcidUseRecd_export 23 +#define ob_muAcidUseRecd_val12 24 +#define ob_muAcidUseRecd_val22 25 +#define ob_muAcidUseRecd_val32 26 +#define ob_muAcidUseRecd_val42 27 +#define ob_muAcidUseRecd_val52 28 +#define ob_muAcidUseRecd_val62 29 +#define ob_muAcidUseRecd_val72 30 +#define ob_muAcidUseRecd_h3 31 +#define ob_muAcidUseRecd_val03 32 +#define ob_muAcidUseRecd_val13 33 +#define ob_muAcidUseRecd_val23 34 +#define ob_muAcidUseRecd_val33 35 +#define ob_muAcidUseRecd_val43 36 +#define ob_muAcidUseRecd_val53 37 +#define ob_muAcidUseRecd_val63 38 +#define ob_muAcidUseRecd_val73 39 +#define ob_muAcidUseRecd_h4 40 +#define ob_muAcidUseRecd_val04 41 +#define ob_muAcidUseRecd_val14 42 +#define ob_muAcidUseRecd_val24 43 +#define ob_muAcidUseRecd_val34 44 +#define ob_muAcidUseRecd_val44 45 +#define ob_muAcidUseRecd_val54 46 +#define ob_muAcidUseRecd_val64 47 +#define ob_muAcidUseRecd_val74 48 +#define ob_muAcidUseRecd_h5 49 +#define ob_muAcidUseRecd_val05 50 +#define ob_muAcidUseRecd_val15 51 +#define ob_muAcidUseRecd_val25 52 +#define ob_muAcidUseRecd_val35 53 +#define ob_muAcidUseRecd_val45 54 +#define ob_muAcidUseRecd_val55 55 +#define ob_muAcidUseRecd_val65 56 +#define ob_muAcidUseRecd_val75 57 +#define ob_muAcidUseRecd_nxtBut 58 +#define ob_muAcidUseRecd_preBut 59 +#define ob_muAcidUseRecd_pageIndex 60 +#define ob_muAcidUseRecd_t1 61 +#define ob_muAcidUseRecd_clearRecord 62 +//muAcidTakeMgr.objs +#define ob_muAcidTakeMgr_muAcidTakeMgr 0 +#define ob_muAcidTakeMgr_til 1 +#define ob_muAcidTakeMgr_bak 2 +#define ob_muAcidTakeMgr_chTil 3 +#define ob_muAcidTakeMgr_chId 4 +#define ob_muAcidTakeMgr_val01 5 +#define ob_muAcidTakeMgr_h1 6 +#define ob_muAcidTakeMgr_volumeVal 7 +#define ob_muAcidTakeMgr_volumeTil 8 +#define ob_muAcidTakeMgr_volumeUint 9 +#define ob_muAcidTakeMgr_addNew 10 +#define ob_muAcidTakeMgr_takePers 11 +#define ob_muAcidTakeMgr_takePersTil 12 +#define ob_muAcidTakeMgr_distPersoTil 13 +#define ob_muAcidTakeMgr_distPerso 14 +#define ob_muAcidTakeMgr_h2 15 +#define ob_muAcidTakeMgr_h3 16 +#define ob_muAcidTakeMgr_h4 17 +#define ob_muAcidTakeMgr_h0 18 +#define ob_muAcidTakeMgr_val04 19 +#define ob_muAcidTakeMgr_val00 20 +#define ob_muAcidTakeMgr_val10 21 +#define ob_muAcidTakeMgr_val20 22 +#define ob_muAcidTakeMgr_val30 23 +#define ob_muAcidTakeMgr_val40 24 +#define ob_muAcidTakeMgr_val50 25 +#define ob_muAcidTakeMgr_val60 26 +#define ob_muAcidTakeMgr_val70 27 +#define ob_muAcidTakeMgr_val11 28 +#define ob_muAcidTakeMgr_val21 29 +#define ob_muAcidTakeMgr_val31 30 +#define ob_muAcidTakeMgr_val41 31 +#define ob_muAcidTakeMgr_val51 32 +#define ob_muAcidTakeMgr_val61 33 +#define ob_muAcidTakeMgr_val71 34 +#define ob_muAcidTakeMgr_val02 35 +#define ob_muAcidTakeMgr_val12 36 +#define ob_muAcidTakeMgr_val22 37 +#define ob_muAcidTakeMgr_val32 38 +#define ob_muAcidTakeMgr_val42 39 +#define ob_muAcidTakeMgr_val52 40 +#define ob_muAcidTakeMgr_val62 41 +#define ob_muAcidTakeMgr_val72 42 +#define ob_muAcidTakeMgr_val03 43 +#define ob_muAcidTakeMgr_val13 44 +#define ob_muAcidTakeMgr_val23 45 +#define ob_muAcidTakeMgr_val33 46 +#define ob_muAcidTakeMgr_val43 47 +#define ob_muAcidTakeMgr_val53 48 +#define ob_muAcidTakeMgr_val63 49 +#define ob_muAcidTakeMgr_val73 50 +#define ob_muAcidTakeMgr_val14 51 +#define ob_muAcidTakeMgr_val24 52 +#define ob_muAcidTakeMgr_val34 53 +#define ob_muAcidTakeMgr_val44 54 +#define ob_muAcidTakeMgr_val54 55 +#define ob_muAcidTakeMgr_val64 56 +#define ob_muAcidTakeMgr_val74 57 +#define ob_muAcidTakeMgr_export 58 +#define ob_muAcidTakeMgr_clearRecord 59 +#define ob_muAcidTakeMgr_t1 60 //popwin.objs #define ob_popwin_popwin 0 #define ob_popwin_p0 1 diff --git a/usrc/db/dao/acid_distrubt_record_dao.cpp b/usrc/db/dao/acid_distrubt_record_dao.cpp new file mode 100644 index 0000000..04a377c --- /dev/null +++ b/usrc/db/dao/acid_distrubt_record_dao.cpp @@ -0,0 +1,108 @@ +#include "acid_distrubt_record_dao.hpp" + +#include "uappbase/zhdb/zhdb.hpp" + +#define TAG "AcidDistrubtRecordDao" + +using namespace iflytop; + +/*********************************************************************************************************************** + * MARCO * + ***********************************************************************************************************************/ +#define TABLE_VERSION (TABLE_BASE_VERSION + 4) +#define TABLE_NAME "acid_distrubt_record_table" + +/*********************************************************************************************************************** + * STATIC VAR * + ***********************************************************************************************************************/ + +static zhdb_table_t* table; +static bool module_inited; +static acid_distrubt_record_table_t* acid_distrubt_record_table; + +/*********************************************************************************************************************** + * FUNCTION * + ***********************************************************************************************************************/ +static void storgeTableData() { ZHDB::storageData((uint8_t*)acid_distrubt_record_table, sizeof(*acid_distrubt_record_table)); } +// +void AcidDistrubtRecordDao::init() { + // + table = ZHDB::allocTable(TABLE_NAME, sizeof(*acid_distrubt_record_table)); + ASSERT(table != NULL, "alloc table failed"); + acid_distrubt_record_table = (decltype(acid_distrubt_record_table))table->add; + + if (TABLE_VERSION != acid_distrubt_record_table->version || TABLE_VERSION != acid_distrubt_record_table->end) { + ZLOGI(TAG, "%s table version not match, reset table", TABLE_NAME); + + acid_distrubt_record_table->version = TABLE_VERSION; + acid_distrubt_record_table->end = TABLE_VERSION; + acid_distrubt_record_table->maxid = 0; + acid_distrubt_record_table->recordNum = 0; + } + storgeTableData(); + module_inited = true; + + ZLOGI(TAG, "init success"); +} +void AcidDistrubtRecordDao::addRecord(const acid_distrubt_record_t& record) { + ZASSERT_INFO(module_inited, "%s not inited", TABLE_NAME); + + if (acid_distrubt_record_table->recordNum >= ACID_DISTRUBT_RECORD_NUM) { + ZLOGE(TAG, "no space for new record"); + return; + } + + acid_distrubt_record_table->record[acid_distrubt_record_table->recordNum++] = record; + acid_distrubt_record_table->maxid++; + acid_distrubt_record_table->recordNum++; + + ZLOGI(TAG, "add record %d", record.id); + storgeTableData(); +} + +acid_distrubt_record_table_t* AcidDistrubtRecordDao::getRecordTable() { + ZASSERT_INFO(module_inited, "%s not inited", TABLE_NAME); + return acid_distrubt_record_table; +} + +void AcidDistrubtRecordDao::getRecord(int pageNum, AcidDistrubtRcordPage* page) { + ZASSERT_INFO(module_inited, "%s not inited", TABLE_NAME); + + // 获取最新的记录 + memset(page, 0, sizeof(AcidDistrubtRcordPage)); + + int recordNum = acid_distrubt_record_table->recordNum; + int start = recordNum - ACID_DISTRUBT_PAGE_SIZE * pageNum - 1; + if (start < 0) { + page->pageNum = pageNum; + page->recordNum = 0; + return; + } + + int end = start - ACID_DISTRUBT_PAGE_SIZE; + if (end < 0) { + end = -1; + } + + int i = 0; + for (int j = start; j > end; j--) { + page->record[i++] = &acid_distrubt_record_table->record[j]; + } + + page->pageNum = pageNum; + page->recordNum = i; + return; +} +void AcidDistrubtRecordDao::clearRecord() { + ZASSERT_INFO(module_inited, "%s not inited", TABLE_NAME); + + acid_distrubt_record_table->recordNum = 0; + storgeTableData(); +} +bool AcidDistrubtRecordDao::isAlmostFull() { return acid_distrubt_record_table->recordNum >= ACID_DISTRUBT_ALMOST_FULL; } +bool AcidDistrubtRecordDao::isFull() { return acid_distrubt_record_table->recordNum >= ACID_DISTRUBT_RECORD_NUM; } + +int AcidDistrubtRecordDao::getRecordNum() { + ZASSERT_INFO(module_inited, "%s not inited", TABLE_NAME); + return acid_distrubt_record_table->recordNum; +} diff --git a/usrc/db/dao/acid_distrubt_record_dao.hpp b/usrc/db/dao/acid_distrubt_record_dao.hpp new file mode 100644 index 0000000..ec649ce --- /dev/null +++ b/usrc/db/dao/acid_distrubt_record_dao.hpp @@ -0,0 +1,41 @@ +#pragma once +#include "uappbase/base.hpp" +#include "uappbase/bean/dbtype/acid_distrubt_record.hpp" +// +#include "error/errno.hpp" + +namespace iflytop { + +#define ACID_DISTRUBT_RECORD_NUM 500 +#define ACID_DISTRUBT_ALMOST_FULL 400 +#define ACID_DISTRUBT_PAGE_SIZE 8 + +class AcidDistrubtRcordPage { + public: + acid_distrubt_record_t* record[ACID_DISTRUBT_PAGE_SIZE]; + int pageNum; + int recordNum; +}; + +typedef struct { + uint32_t version; + uint32_t maxid; + acid_distrubt_record_t record[ACID_DISTRUBT_RECORD_NUM]; + int recordNum; + uint32_t end; +} acid_distrubt_record_table_t; + +class AcidDistrubtRecordDao { + public: + static void init(); + static acid_distrubt_record_table_t* getRecordTable(); + + static void addRecord(const acid_distrubt_record_t& record); + static void getRecord(int pageNum, AcidDistrubtRcordPage* page); + static bool isAlmostFull(); + static bool isFull(); + static void clearRecord(); + static int getRecordNum(); +}; + +} // namespace iflytop \ No newline at end of file diff --git a/usrc/db/dao/acid_name_dao.cpp b/usrc/db/dao/acid_name_dao.cpp index 1242571..e36cb60 100644 --- a/usrc/db/dao/acid_name_dao.cpp +++ b/usrc/db/dao/acid_name_dao.cpp @@ -86,7 +86,9 @@ void AcidNameDao::updateAcidName(int index, const char* name) { const char* AcidNameDao::getAcidName(int index) { ZASSERT_INFO(module_inited, "acid name dao not inited"); - ZASSERT_INFO(index < MAX_ACID_NUM, "index out of range"); + if (index >= MAX_ACID_NUM) { + return "FAKE_INDEX"; + } return tabledata->acidName[0].acidName[index]; } diff --git a/usrc/db/dao/acid_use_record_dao.cpp b/usrc/db/dao/acid_use_record_dao.cpp new file mode 100644 index 0000000..976f8a9 --- /dev/null +++ b/usrc/db/dao/acid_use_record_dao.cpp @@ -0,0 +1,125 @@ +#include "acid_use_record_dao.hpp" + +#include "uappbase/zhdb/zhdb.hpp" + +#define TAG "AcidUseRecordDao" + +using namespace iflytop; + +/*********************************************************************************************************************** + * MARCO * + ***********************************************************************************************************************/ +#define TABLE_VERSION (TABLE_BASE_VERSION + 5) +#define TABLE_NAME "acid_use_record_table" + +/*********************************************************************************************************************** + * STATIC VAR * + ***********************************************************************************************************************/ + +static zhdb_table_t* table; +static bool module_inited; +static acid_use_record_table_t* acid_use_record_table; + +/*********************************************************************************************************************** + * FUNCTION * + ***********************************************************************************************************************/ +static void storgeTableData() { ZHDB::storageData((uint8_t*)acid_use_record_table, sizeof(*acid_use_record_table)); } +// +void AcidUseRecordDao::init() { + // + table = ZHDB::allocTable(TABLE_NAME, sizeof(*acid_use_record_table)); + ASSERT(table != NULL, "alloc table failed"); + acid_use_record_table = (decltype(acid_use_record_table))table->add; + + if (TABLE_VERSION != acid_use_record_table->version || TABLE_VERSION != acid_use_record_table->end) { + ZLOGI(TAG, "%s table version not match, reset table", TABLE_NAME); + + acid_use_record_table->version = TABLE_VERSION; + acid_use_record_table->end = TABLE_VERSION; + acid_use_record_table->maxid = 0; + acid_use_record_table->recordNum = 0; + } + storgeTableData(); + module_inited = true; + + // for (int i = 0; i < acid_use_record_table->recordNum; i++) { + // auto *record = &acid_use_record_table->record[i]; + + // ZLOGI(TAG, "record: %d/%d/%d %02d:%02d:%02d %d %d %d %d %d", // + // record->date.year, record->date.month, record->date.day, record->date.hours, record->date.minutes, record->date.seconds, // + // record->usrid, record->ch0take, record->ch1take, record->ch2take, record->ch3take); + // } + + ZLOGI(TAG, "init success"); +} +void AcidUseRecordDao::addRecord(const acid_use_record_t& record) { + ZASSERT_INFO(module_inited, "acid use record dao not inited"); + + if (acid_use_record_table->recordNum >= ACIDUSERCORD_RECORD_NUM) { + ZLOGE(TAG, "no space for new record"); + return; + } + + int recordNum = acid_use_record_table->recordNum; + + acid_use_record_table->record[recordNum] = record; + acid_use_record_table->maxid++; + acid_use_record_table->recordNum++; + + ZLOGI(TAG, "add record %d/%d/%d %02d:%02d:%02d %d %d %d %d %d (%d/%d)", // + record.date.year, record.date.month, record.date.day, record.date.hours, record.date.minutes, record.date.seconds, // + record.usrid, record.ch0take, record.ch1take, record.ch2take, record.ch3take, // + acid_use_record_table->recordNum, ACIDUSERCORD_RECORD_NUM); +} + +void AcidUseRecordDao::sync() { + ZASSERT_INFO(module_inited, "acid use record dao not inited"); + storgeTableData(); +} + +acid_use_record_table_t* AcidUseRecordDao::getRecordTable() { + ZASSERT_INFO(module_inited, "acid use record dao not inited"); + return acid_use_record_table; +} + +void AcidUseRecordDao::getRecord(int pageNum, AcidUseRcordPage* page) { + ZASSERT_INFO(module_inited, "acid use record dao not inited"); + + // 获取最新的记录 + memset(page, 0, sizeof(AcidUseRcordPage)); + + int recordNum = acid_use_record_table->recordNum; + int start = recordNum - ACIDUSERCORD_PAGE_SIZE * pageNum - 1; + if (start < 0) { + page->pageNum = pageNum; + page->recordNum = 0; + return; + } + + int end = start - ACIDUSERCORD_PAGE_SIZE; + if (end < 0) { + end = -1; + } + + int i = 0; + for (int j = start; j > end; j--) { + page->record[i++] = &acid_use_record_table->record[j]; + } + + page->pageNum = pageNum; + page->recordNum = i; + return; +} +void AcidUseRecordDao::clearRecord() { + ZASSERT_INFO(module_inited, "acid use record dao not inited"); + + acid_use_record_table->recordNum = 0; + storgeTableData(); +} +bool AcidUseRecordDao::isAlmostFull() { return acid_use_record_table->recordNum >= ACIDUSERCORD_ALMOST_FULL; } +bool AcidUseRecordDao::isFull() { return acid_use_record_table->recordNum >= ACIDUSERCORD_RECORD_NUM; } + +int AcidUseRecordDao::getRecordNum() { + ZASSERT_INFO(module_inited, "acid use record dao not inited"); + return acid_use_record_table->recordNum; +} diff --git a/usrc/db/dao/acid_use_record_dao.hpp b/usrc/db/dao/acid_use_record_dao.hpp new file mode 100644 index 0000000..ff9cb98 --- /dev/null +++ b/usrc/db/dao/acid_use_record_dao.hpp @@ -0,0 +1,42 @@ +#pragma once +#include "uappbase/base.hpp" +#include "uappbase/bean/dbtype/acid_use_record.hpp" +// +#include "error/errno.hpp" + +namespace iflytop { + +#define ACIDUSERCORD_RECORD_NUM 1000 +#define ACIDUSERCORD_ALMOST_FULL 800 +#define ACIDUSERCORD_PAGE_SIZE 8 + +class AcidUseRcordPage { + public: + acid_use_record_t* record[ACIDUSERCORD_PAGE_SIZE]; + int pageNum; + int recordNum; +}; + +typedef struct { + uint32_t version; + uint32_t maxid; + acid_use_record_t record[ACIDUSERCORD_RECORD_NUM]; + int recordNum; + uint32_t end; +} acid_use_record_table_t; + +class AcidUseRecordDao { + public: + static void init(); + static acid_use_record_table_t* getRecordTable(); + + static void addRecord(const acid_use_record_t& record); + static void sync(); + static void getRecord(int pageNum, AcidUseRcordPage* page); + static bool isAlmostFull(); + static bool isFull(); + static void clearRecord(); + static int getRecordNum(); +}; + +} // namespace iflytop \ No newline at end of file diff --git a/usrc/db/dao/user_dao.cpp b/usrc/db/dao/user_dao.cpp index 012bdc7..f2b0764 100644 --- a/usrc/db/dao/user_dao.cpp +++ b/usrc/db/dao/user_dao.cpp @@ -147,6 +147,17 @@ user_t* UserDao::getUserById(int32_t id) { return nullptr; } +user_t* UserDao::getUserByIdNotNull(int32_t id) { + user_t* user = UserDao::getUserById(id); + static user_t nullUser; + nullUser.id = -1; + stpcpy(nullUser.name, "null"); + if (user == nullptr) { + return &nullUser; + } + return user; +} + // Errno UserDao::addUser(const char* name, const char* passwd, user_role_t role) { ZASSERT_INFO(module_inited, "user dao not inited"); diff --git a/usrc/db/dao/user_dao.hpp b/usrc/db/dao/user_dao.hpp index 3a25262..745e760 100644 --- a/usrc/db/dao/user_dao.hpp +++ b/usrc/db/dao/user_dao.hpp @@ -22,6 +22,10 @@ class UserDao { static Errno addUser(const char* name, const char* passwd, user_role_t role); static Errno addUser(); static void delUser(uint8_t userId); + + +static user_t* getUserByIdNotNull(int32_t id); + }; } // namespace iflytop \ No newline at end of file diff --git a/usrc/service/app_core.cpp b/usrc/service/app_core.cpp index 245abc1..43b2e81 100644 --- a/usrc/service/app_core.cpp +++ b/usrc/service/app_core.cpp @@ -18,7 +18,9 @@ #include "uappbase/zhdb/zhdb.hpp" // #include "db/dao/acid_ch_cfg_dao.hpp" +#include "db/dao/acid_distrubt_record_dao.hpp" #include "db/dao/acid_name_dao.hpp" +#include "db/dao/acid_use_record_dao.hpp" #include "db/dao/device_setting_dao.hpp" #include "db/dao/user_dao.hpp" @@ -113,6 +115,8 @@ void AppCore::initialize() { AcidNameDao::init(); AcidChCfgDao::init(); DeviceSettingDao::init(); + AcidUseRecordDao::init(); + AcidDistrubtRecordDao::init(); ZLOGI(TAG, "load zhdb end"); // @@ -134,7 +138,6 @@ void AppCore::initialize() { // ValveStateSyncService::ins()->startSync(); RemoteControlerStateSyncService::ins()->startSync(); - if (strlen(DeviceSettingDao::get()->bleClientName) != 0) { ZLOGI(TAG, "start scan :%s", DeviceSettingDao::get()->bleClientName); for (size_t i = 0;; i++) { @@ -150,7 +153,9 @@ void AppCore::initialize() { } } - UIControler::ins()->chpage(pg_muReCtlerBind, true); + GStateMgr::ins()->setLogin(0, "admin", kadmin); + AppEventBus::ins()->pushSimpleEvent(kAE_LoginEvent); + UIControler::ins()->chpage(pg_muAcidUseRecd, true); /*********************************************************************************************************************** * 统计内存使用情况 * diff --git a/usrc/service/pump_ctrl_service.cpp b/usrc/service/pump_ctrl_service.cpp index 76eeb87..f5efa2d 100644 --- a/usrc/service/pump_ctrl_service.cpp +++ b/usrc/service/pump_ctrl_service.cpp @@ -22,7 +22,7 @@ void PumpCtrlService::initialize() { m_thread.init("PumpCtrlService", 1024); updateMotorSetting(); - AppEventBus::ins()->regOnEvent([this](AppEvent_t* event) { + AppEventBus::ins()->regOnEvent([this](AppEvent* event) { // if (event->type == kAppEvent_ConfigChangeEvent) { // // 电机参数发生改变 // int cfi = event->d.configIndex; diff --git a/usrc/uicontroler/base/page_processer.cpp b/usrc/uicontroler/base/page_processer.cpp index 63ea13f..bb36ba0 100644 --- a/usrc/uicontroler/base/page_processer.cpp +++ b/usrc/uicontroler/base/page_processer.cpp @@ -28,7 +28,7 @@ void IPageProcesser::initialize() { ZLOGI(TAG, "initialize page %s %d", pageName, thisPage); - AppEventBus::ins()->regOnEvent([this](AppEvent_t* event) { + AppEventBus::ins()->regOnEvent([this](AppEvent* event) { if (event->type == KAE_UIEvent) { if (thisPage != event->d.uiEvent.pid) { return; @@ -71,7 +71,10 @@ void IPageProcesser::initialize() { namespace iflytop { void UIControlerHock_PageInit() { - // onlyInitThis + /** + * @brief + * onlyInitThis 用于调试时只初始化某个页面 + */ bool hasOnlyInitThis = false; for (size_t i = 0; i < m_pageNum; i++) { if (m_pages[i]->onlyInitThis) { @@ -79,8 +82,10 @@ void UIControlerHock_PageInit() { break; } } - uint8_t pageId[256]; + + uint8_t pageId[256]; // 用于检查页面是否重复注册 memset(pageId, 0, sizeof(pageId)); + for (size_t i = 0; i < m_pageNum; i++) { if (m_pages[i]->thisPage > 255) { ZLOGE(TAG, "page %s %d is out of range", m_pages[i]->pageName, m_pages[i]->thisPage); @@ -99,6 +104,7 @@ void UIControlerHock_PageInit() { } } + // 检查页面是否重复注册 for (size_t i = 0; i < 256; i++) { ZASSERT_INFO(pageId[i] <= 1, "page %d has been registed %d times", i, pageId[i]); } diff --git a/usrc/uicontroler/base/page_processer.hpp b/usrc/uicontroler/base/page_processer.hpp index f450692..97c9a9a 100644 --- a/usrc/uicontroler/base/page_processer.hpp +++ b/usrc/uicontroler/base/page_processer.hpp @@ -45,7 +45,7 @@ class IPageProcesser { * @param cxt */ virtual void onChangePageEvent() { return; }; - virtual void onAppEvent(AppEvent_t* event) { return; }; + virtual void onAppEvent(AppEvent* event) { return; }; virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) { return; }; virtual void onBackKey() { return; }; diff --git a/usrc/uicontroler/page/demo/demo_page_cpp b/usrc/uicontroler/page/demo/demo_page_cpp index b1b203d..5b34aa7 100644 --- a/usrc/uicontroler/page/demo/demo_page_cpp +++ b/usrc/uicontroler/page/demo/demo_page_cpp @@ -30,7 +30,7 @@ class MuIntervalPage : public IPageProcesser { virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) { return; }; virtual void OnButton(uint8_t bid, uint8_t val) { return; }; virtual void OnDoubleStateButton(uint8_t bid, uint8_t val) { return; }; - virtual void OnAppEvent(AppEvent_t* event) { return; }; + virtual void OnAppEvent(AppEvent* event) { return; }; void syncState() {} }; diff --git a/usrc/uicontroler/page/home_page.cpp b/usrc/uicontroler/page/home_page.cpp index a3e4596..4d6d4ae 100644 --- a/usrc/uicontroler/page/home_page.cpp +++ b/usrc/uicontroler/page/home_page.cpp @@ -68,7 +68,7 @@ class HomePage : public IPageProcesser { UIS->chpage(pg_navi,true); } } - virtual void onAppEvent(AppEvent_t* event) override { + virtual void onAppEvent(AppEvent* event) override { if (event->type == kAE_RemoterConnectedEvent) { syncBleState(); // 同步蓝牙状态 UIS->setTxt(thisPage, ob_home_sysInfo, "连接上手柄"); diff --git a/usrc/uicontroler/page/login_page.cpp b/usrc/uicontroler/page/login_page.cpp index 2d030f9..0f18d47 100644 --- a/usrc/uicontroler/page/login_page.cpp +++ b/usrc/uicontroler/page/login_page.cpp @@ -56,7 +56,7 @@ class LoginPage : public IPageProcesser { resetPage(); } } - virtual void onAppEvent(AppEvent_t* event) override {} + virtual void onAppEvent(AppEvent* event) override {} private: void resetPage() { diff --git a/usrc/uicontroler/page/mupage/muAcidUseMgr_page.cpp b/usrc/uicontroler/page/mupage/muAcidUseMgr_page.cpp new file mode 100644 index 0000000..a0f4085 --- /dev/null +++ b/usrc/uicontroler/page/mupage/muAcidUseMgr_page.cpp @@ -0,0 +1,140 @@ + +#include "db/dao/acid_name_dao.hpp" +#include "db/dao/user_dao.hpp" +#include "uappbase/apphal/apphal.hpp" +#include "ui/ui.h" +#include "uicontroler/base/page_processer.hpp" +#include "usrc/db/dao/acid_ch_cfg_dao.hpp" +// +#include "db/dao/acid_ch_cfg_dao.hpp" +#include "db/dao/acid_use_record_dao.hpp" +#include "db/dao/device_setting_dao.hpp" +// +#include "service/pump_ctrl_service.hpp" +#include "service/remote_controler.hpp" + +namespace iflytop { +using namespace std; +#define TAG "MuAcidUseMgrPage" + +typedef struct { + uint8_t val[6]; // 时间 +} table_iterm_t; + +static table_iterm_t cfgbid_table[] = { + {ob_muAcidUseRecd_h0, ob_muAcidUseRecd_h1, ob_muAcidUseRecd_h2, ob_muAcidUseRecd_h3, ob_muAcidUseRecd_h4, ob_muAcidUseRecd_h5}, + {ob_muAcidUseRecd_val00, ob_muAcidUseRecd_val01, ob_muAcidUseRecd_val02, ob_muAcidUseRecd_val03, ob_muAcidUseRecd_val04, ob_muAcidUseRecd_val05}, + {ob_muAcidUseRecd_val10, ob_muAcidUseRecd_val11, ob_muAcidUseRecd_val12, ob_muAcidUseRecd_val13, ob_muAcidUseRecd_val14, ob_muAcidUseRecd_val15}, + {ob_muAcidUseRecd_val20, ob_muAcidUseRecd_val21, ob_muAcidUseRecd_val22, ob_muAcidUseRecd_val23, ob_muAcidUseRecd_val24, ob_muAcidUseRecd_val25}, + {ob_muAcidUseRecd_val30, ob_muAcidUseRecd_val31, ob_muAcidUseRecd_val32, ob_muAcidUseRecd_val33, ob_muAcidUseRecd_val34, ob_muAcidUseRecd_val35}, + {ob_muAcidUseRecd_val40, ob_muAcidUseRecd_val41, ob_muAcidUseRecd_val42, ob_muAcidUseRecd_val43, ob_muAcidUseRecd_val44, ob_muAcidUseRecd_val45}, + {ob_muAcidUseRecd_val50, ob_muAcidUseRecd_val51, ob_muAcidUseRecd_val52, ob_muAcidUseRecd_val53, ob_muAcidUseRecd_val54, ob_muAcidUseRecd_val55}, + {ob_muAcidUseRecd_val60, ob_muAcidUseRecd_val61, ob_muAcidUseRecd_val62, ob_muAcidUseRecd_val63, ob_muAcidUseRecd_val64, ob_muAcidUseRecd_val65}, + {ob_muAcidUseRecd_val70, ob_muAcidUseRecd_val71, ob_muAcidUseRecd_val72, ob_muAcidUseRecd_val73, ob_muAcidUseRecd_val74, ob_muAcidUseRecd_val75}, +}; + +class MuAcidUseMgrPage : public IPageProcesser { + public: + MuAcidUseMgrPage() : IPageProcesser(TAG, pg_muAcidUseRecd) {} + + virtual void initialize() override { + IPageProcesser::initialize(); + + setText(cfgbid_table[0].val[0], "时间"); + setText(cfgbid_table[0].val[1], "用户"); + setText(cfgbid_table[0].val[2], "%s(ml)", AcidChCfgDao::getCfg(0)->acidChooseName); + setText(cfgbid_table[0].val[3], "%s(ml)", AcidChCfgDao::getCfg(1)->acidChooseName); + setText(cfgbid_table[0].val[4], "%s(ml)", AcidChCfgDao::getCfg(2)->acidChooseName); + setText(cfgbid_table[0].val[5], "%s(ml)", AcidChCfgDao::getCfg(3)->acidChooseName); + + for (int i = 0; i < 8; i++) { + setText(cfgbid_table[i + 1].val[0], ""); + setText(cfgbid_table[i + 1].val[1], ""); + setText(cfgbid_table[i + 1].val[2], ""); + setText(cfgbid_table[i + 1].val[3], ""); + setText(cfgbid_table[i + 1].val[4], ""); + setText(cfgbid_table[i + 1].val[5], ""); + } + } + + /*********************************************************************************************************************** + * CALL_BAK * + ***********************************************************************************************************************/ + + virtual void onPageLoad(OnPageLoadContext* cxt) override { return; }; + /** + * @brief 返回上一页 + */ + virtual void onBackKey() override { UIControler::ins()->chpage(pg_navi, true); } + virtual void onChangePageEvent() override { + ZLOGI(TAG, "onChangePageEvent..............................................."); + // set title + setText(cfgbid_table[0].val[0], "时间"); + setText(cfgbid_table[0].val[1], "用户"); + setText(cfgbid_table[0].val[2], "%s(ml)", AcidChCfgDao::getCfg(0)->acidChooseName); + setText(cfgbid_table[0].val[3], "%s(ml)", AcidChCfgDao::getCfg(1)->acidChooseName); + setText(cfgbid_table[0].val[4], "%s(ml)", AcidChCfgDao::getCfg(2)->acidChooseName); + setText(cfgbid_table[0].val[5], "%s(ml)", AcidChCfgDao::getCfg(3)->acidChooseName); + +#if 0 + for (size_t i = 0; i < 20; i++) { + acid_use_record_t record; + record.id = i; + record.date.year = 2021 + i; + record.date.month = 6; + record.date.day = 1; + record.date.hours = 12; + record.date.minutes = 30; + record.date.seconds = 30; + record.usrid = 0; + + record.ch0take = 100; + record.ch1take = 110; + record.ch2take = 120; + record.ch3take = 130; + AcidUseRecordDao::addRecord(record); + } + AcidUseRecordDao::sync(); +#endif + + // set val + AcidUseRcordPage page; + AcidUseRecordDao::getRecord(0, &page); + for (int i = 0; i < page.recordNum; i++) { + setText(cfgbid_table[i + 1].val[0], "%d/%d/%d %02d:%02d:%02d", page.record[i]->date.year, page.record[i]->date.month, page.record[i]->date.day, page.record[i]->date.hours, page.record[i]->date.minutes, page.record[i]->date.seconds); + setText(cfgbid_table[i + 1].val[1], "%s", UserDao::getUserByIdNotNull(page.record[i]->usrid)->name); + setText(cfgbid_table[i + 1].val[2], "%.1f", page.record[i]->ch0take / 10.0); + setText(cfgbid_table[i + 1].val[3], "%.1f", page.record[i]->ch0take / 10.0); + setText(cfgbid_table[i + 1].val[4], "%.1f", page.record[i]->ch0take / 10.0); + setText(cfgbid_table[i + 1].val[5], "%.1f", page.record[i]->ch0take / 10.0); + } + + for (int i = page.recordNum; i < 8; i++) { + setText(cfgbid_table[i + 1].val[0], ""); + setText(cfgbid_table[i + 1].val[1], ""); + setText(cfgbid_table[i + 1].val[2], ""); + setText(cfgbid_table[i + 1].val[3], ""); + setText(cfgbid_table[i + 1].val[4], ""); + setText(cfgbid_table[i + 1].val[5], ""); + } + } + virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override { + if (bid == ob_muAcidUseRecd_clearRecord) { + UIControler::ins()->popConfirmWin("您是否确定要清空用酸记录?", [](bool isOk) { + if (isOk) { + UILoadingCxt loadingCxt; + AcidUseRecordDao::clearRecord(); + AcidUseRecordDao::sync(); + UIControler::ins()->chpage(pg_muAcidUseRecd, true); + + } + }); + } + } + virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) override {} +}; + +// 实例化Page, 使其自动注册 +static MuAcidUseMgrPage instance; + +} // namespace iflytop diff --git a/usrc/uicontroler/page/mupage/muReCtrlerBind_page.cpp b/usrc/uicontroler/page/mupage/muReCtrlerBind_page.cpp index dd910b8..9c2c9ed 100644 --- a/usrc/uicontroler/page/mupage/muReCtrlerBind_page.cpp +++ b/usrc/uicontroler/page/mupage/muReCtrlerBind_page.cpp @@ -87,7 +87,7 @@ class muReCtrlerBindPage : public IPageProcesser { } } - virtual void onAppEvent(AppEvent_t* event) override { + virtual void onAppEvent(AppEvent* event) override { if (!m_scaning) { return; } diff --git a/usrc/uicontroler/page/mupage/muUsrMgr_page.cpp b/usrc/uicontroler/page/mupage/muUsrMgr_page.cpp index de9551f..3185599 100644 --- a/usrc/uicontroler/page/mupage/muUsrMgr_page.cpp +++ b/usrc/uicontroler/page/mupage/muUsrMgr_page.cpp @@ -87,7 +87,7 @@ class MuUsrMgr : public IPageProcesser { */ virtual void onBackKey() { UIControler::ins()->chpage(pg_navi,true); }; - virtual void onAppEvent(AppEvent_t* event) { return; }; + virtual void onAppEvent(AppEvent* event) { return; }; /** * @brief 点击事件 diff --git a/usrc/uicontroler/page/navi_page.cpp b/usrc/uicontroler/page/navi_page.cpp index 7b0a2dc..b336e75 100644 --- a/usrc/uicontroler/page/navi_page.cpp +++ b/usrc/uicontroler/page/navi_page.cpp @@ -149,7 +149,7 @@ class NaviPage : public IPageProcesser { } } } - virtual void onAppEvent(AppEvent_t* event) override { + virtual void onAppEvent(AppEvent* event) override { if (event->type == kAE_LoginEvent) { if (GStateMgr::ins()->getLoginUsrType() == kadmin) { curMuTable = &adminMuInfoTable; diff --git a/usrc/uicontroler/page/popwin_page.cpp b/usrc/uicontroler/page/popwin_page.cpp index 6943d02..d92fa8a 100644 --- a/usrc/uicontroler/page/popwin_page.cpp +++ b/usrc/uicontroler/page/popwin_page.cpp @@ -103,19 +103,20 @@ class PopWinPage : public IPageProcesser { virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) override {} virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override { // - int num = UIPublicState::getPopInfoNum(); + int num = UIPublicState::getPopInfoNum(); + function onConfirm = hangupInfo.onConfirm; if (bid == ob_popwin_canclekey) { if (hangupInfo.onConfirm) { - hangupInfo.onConfirm(false); + AppEventBus::ins()->callFnInEventBus([onConfirm]() { onConfirm(false); }); } } else if (bid == ob_popwin_confirmkey) { if (hangupInfo.onConfirm) { - hangupInfo.onConfirm(true); + AppEventBus::ins()->callFnInEventBus([onConfirm]() { onConfirm(true); }); } } handupInfoFlag = false; } - virtual void onAppEvent(AppEvent_t* event) override {} + virtual void onAppEvent(AppEvent* event) override {} void updateTitle(UIPopWinType_t type, int messageNum) { if (type == UI_POP_WIN_TYPE_INFO) { diff --git a/usrc/uicontroler/ui_controler.cpp b/usrc/uicontroler/ui_controler.cpp index 57f52f6..5b9a526 100644 --- a/usrc/uicontroler/ui_controler.cpp +++ b/usrc/uicontroler/ui_controler.cpp @@ -66,7 +66,7 @@ void UIControler::initialize() { // void UIControler::pageInitialize() { UIControlerHock_PageInit(); } void UIControler::callUsrEventCb(UIEvent* event) { - static AppEvent_t appEvent; + static AppEvent appEvent; appEvent.type = KAE_UIEvent; memcpy(&appEvent.d.uiEvent, event, sizeof(UIEvent)); AppEventBus::ins()->pushEvent(appEvent); @@ -311,8 +311,9 @@ void UIControler::popWin(UIPopWinType_t type, const char* info, functionchangePage(page); AppEventBus::ins()->pushPageChangeEvent(page); + sendcmd("page %d", page); } void UIControler::sendcmd(const char* format, ...) { // static char buf[256]; diff --git a/usrc/uicontroler/ui_state_mgr.cpp b/usrc/uicontroler/ui_state_mgr.cpp index ecaf2dc..b696d31 100644 --- a/usrc/uicontroler/ui_state_mgr.cpp +++ b/usrc/uicontroler/ui_state_mgr.cpp @@ -46,4 +46,14 @@ int UIStateMgr::getFreeComponentCount() { } } return count; -} \ No newline at end of file +} + +void UIStateMgr::changePage(int toPage) { + if (nowPage == toPage) { + // page not change + } else { + lastPage = nowPage; + nowPage = toPage; + ZLOGI(TAG, "page change from %d to %d ", lastPage, nowPage); + } +} diff --git a/usrc/uicontroler/ui_state_mgr.hpp b/usrc/uicontroler/ui_state_mgr.hpp index 0f04724..4dabd42 100644 --- a/usrc/uicontroler/ui_state_mgr.hpp +++ b/usrc/uicontroler/ui_state_mgr.hpp @@ -32,6 +32,7 @@ class UIStateMgr { component_info_t* forceFindComponent(uint8_t pid, uint16_t bid); int getFreeComponentCount(); + void changePage(int toPage); }; } // namespace iflytop