zhaohe 8 months ago
parent
commit
73c22bd566
  1. 4
      README.md
  2. 14
      uappbase/bean/appevent.hpp
  3. 15
      uappbase/bean/dbtype/acid_distrubt_record.hpp
  4. 18
      uappbase/bean/dbtype/acid_use_record.hpp
  5. 9
      uappbase/bean/event.hpp
  6. 27
      uappbase/service/app_event_bus.cpp
  7. 5
      uappbase/service/app_event_bus.hpp
  8. 2
      uappbase/service/gstate_mgr.cpp
  9. 247
      ui/ui.h
  10. 108
      usrc/db/dao/acid_distrubt_record_dao.cpp
  11. 41
      usrc/db/dao/acid_distrubt_record_dao.hpp
  12. 4
      usrc/db/dao/acid_name_dao.cpp
  13. 125
      usrc/db/dao/acid_use_record_dao.cpp
  14. 42
      usrc/db/dao/acid_use_record_dao.hpp
  15. 11
      usrc/db/dao/user_dao.cpp
  16. 4
      usrc/db/dao/user_dao.hpp
  17. 9
      usrc/service/app_core.cpp
  18. 2
      usrc/service/pump_ctrl_service.cpp
  19. 12
      usrc/uicontroler/base/page_processer.cpp
  20. 2
      usrc/uicontroler/base/page_processer.hpp
  21. 2
      usrc/uicontroler/page/demo/demo_page_cpp
  22. 2
      usrc/uicontroler/page/home_page.cpp
  23. 2
      usrc/uicontroler/page/login_page.cpp
  24. 140
      usrc/uicontroler/page/mupage/muAcidUseMgr_page.cpp
  25. 2
      usrc/uicontroler/page/mupage/muReCtrlerBind_page.cpp
  26. 2
      usrc/uicontroler/page/mupage/muUsrMgr_page.cpp
  27. 2
      usrc/uicontroler/page/navi_page.cpp
  28. 9
      usrc/uicontroler/page/popwin_page.cpp
  29. 5
      usrc/uicontroler/ui_controler.cpp
  30. 12
      usrc/uicontroler/ui_state_mgr.cpp
  31. 1
      usrc/uicontroler/ui_state_mgr.hpp

4
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. 用户登录时检查记录是否快满或者满,给出提示或者报警
```

14
uappbase/bean/appevent.h → uappbase/bean/appevent.hpp

@ -1,9 +1,13 @@
#pragma once
#include <stdint.h>
#include <functional>
#include "uicontroler/tjc/tjc_base_type.h"
typedef enum {
KAE_callOnAppEventBusLoop,
kAE_RunModeChangeEvent, // 运行模式改变
kAppEvent_StateDisplayInfo,
@ -19,7 +23,6 @@ typedef enum {
kAE_RemoterConnectedEvent, // 遥控器连接成功
kAE_RemoterDisConnectedEvent, // 遥控器断开连接
} AppEventType_t;
/**
@ -28,7 +31,11 @@ typedef enum {
*
*/
typedef struct {
// typedef struct {
// } AppEvent;
class AppEvent {
public:
AppEventType_t type;
union {
uint32_t placeholder;
@ -37,4 +44,5 @@ typedef struct {
UIEvent uiEvent;
int32_t pageChangeTo;
} d;
} AppEvent_t;
std::function<void()> onfnc;
};

15
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

18
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

9
uappbase/bean/event.hpp

@ -3,15 +3,12 @@
#include <stdio.h>
#include <string.h>
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;

27
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<void()> onfnc) {
zlock_guard lck(lock);
event.type = KAE_callOnAppEventBusLoop;
event.onfnc = onfnc;
pushEvent(event);
}

5
uappbase/service/app_event_bus.hpp

@ -5,7 +5,7 @@
//
namespace iflytop {
typedef function<void(AppEvent_t* event)> onAppEventCB_t;
typedef function<void(AppEvent* event)> 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<void()> onfnc);
};
} // namespace iflytop

2
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) {

247
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

108
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;
}

41
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

4
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];
}

125
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;
}

42
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

11
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");

4
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

9
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);
/***********************************************************************************************************************
* ͳ¼ÆÄÚ´æÊ¹ÓÃÇé¿ö *

2
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;

12
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]);
}

2
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; };

2
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() {}
};

2
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, "连接上手柄");

2
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() {

140
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

2
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;
}

2
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

2
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;

9
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<void(bool)> 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) {

5
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, function<void(bo
}
void UIControler::chpage(uint8_t page, bool triggerEvent) {
sendcmd("page %d", page);
UIStateMgr::ins()->changePage(page);
AppEventBus::ins()->pushPageChangeEvent(page);
sendcmd("page %d", page);
}
void UIControler::sendcmd(const char* format, ...) {
// static char buf[256];

12
usrc/uicontroler/ui_state_mgr.cpp

@ -46,4 +46,14 @@ int UIStateMgr::getFreeComponentCount() {
}
}
return count;
}
}
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);
}
}

1
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
Loading…
Cancel
Save