zhaohe 8 months ago
parent
commit
75fad96e51
  1. 34
      uappbase/bean/appevent.hpp
  2. 7
      uappbase/bean/event.hpp
  3. 41
      uappbase/service/app_event_bus.cpp
  4. 2
      uappbase/service/app_event_bus.hpp
  5. 3
      uappbase/service/gstate_mgr.cpp
  6. 3
      usrc/service/pump_ctrl_service.cpp
  7. 6
      usrc/uicontroler/base/page_processer.cpp
  8. 2
      usrc/uicontroler/page/home_page.cpp
  9. 4
      usrc/uicontroler/page/mupage/muReCtrlerBind_page.cpp
  10. 2
      usrc/uicontroler/ui_controler.cpp

34
uappbase/bean/appevent.hpp

@ -3,8 +3,10 @@
#include <functional>
#include "uicontroler/tjc/tjc_base_type.h"
#include "appevent_type.hpp"
extern "C" {
#include "uicontroler/tjc/tjc_base_type.h"
}
/**
*
@ -17,13 +19,27 @@
class AppEvent {
public:
AppEventType_t type;
union val {
uint32_t placeholder;
char bleName[20];
char stateDisplayInfo[30];
UIEvent uiEvent;
int32_t pageChangeTo;
} d;
AppEventType_t type;
std::function<void()> onfnc;
uint8_t buf[sizeof(UIEvent) + 10];
char* getBleName() { return (char*)buf; }
char* getStateDisplayInfo() { return (char*)buf; }
UIEvent* getUIEvent() { return (UIEvent*)buf; }
int32_t getPageChangeTo() { return *(int32_t*)buf; }
void setBleName(const char* name) { strcpy((char*)buf, name); }
void setStateDisplayInfo(const char* info) { strcpy((char*)buf, info); }
void setUIEvent(const UIEvent& event) { memcpy(buf, &event, sizeof(UIEvent)); }
void setPageChangeTo(int32_t page) { *(int32_t*)buf = page; }
void setOnFnc(std::function<void()> fnc) { onfnc = fnc; }
int getBufSize() { return sizeof(buf); }
};

7
uappbase/bean/event.hpp

@ -7,10 +7,5 @@
namespace iflytop {
using namespace std;
static inline AppEvent createStateDisplayInfoEvent(const char* info) {
AppEvent event;
event.type = kAppEvent_StateDisplayInfo;
strncpy(event.d.stateDisplayInfo, info, sizeof(event.d.stateDisplayInfo));
return event;
}
} // namespace iflytop

41
uappbase/service/app_event_bus.cpp

@ -4,6 +4,8 @@
using namespace iflytop;
using namespace std;
static QueueHandle_t xQueue;
static AppEvent eventtxcache;
#define TAG "AppEventBus"
void AppEventBus::initialize() {
lock.init();
@ -11,20 +13,20 @@ void AppEventBus::initialize() {
xQueue = xQueueCreate(20, sizeof(AppEvent));
thread.start([this]() {
AppEvent event;
static AppEvent eventrxcache;
while (1) {
if (xQueueReceive(xQueue, &event, portMAX_DELAY) == pdTRUE) {
// ZLOGI(TAG, "pop event type %d", event.type);
if (xQueueReceive(xQueue, &eventrxcache, portMAX_DELAY) == pdTRUE) {
// ZLOGI(TAG, "pop eventrxcache type %d", eventrxcache.type);
if (event.type == KAE_callOnAppEventBusLoop) {
if (event.onfnc) {
event.onfnc();
if (eventrxcache.type == KAE_callOnAppEventBusLoop) {
if (eventrxcache.onfnc) {
eventrxcache.onfnc();
}
continue;
}
for (int i = 0; i < cbNum; i++) {
m_cbs[i](&event);
m_cbs[i](&eventrxcache);
}
}
}
@ -41,24 +43,31 @@ void AppEventBus::pushEvent(const AppEvent& event) {
ZLOGE(TAG, "xQueueSend failed");
}
}
static AppEvent event;
void AppEventBus::pushSimpleEvent(AppEventType_t type) {
zlock_guard lck(lock);
event.type = type;
pushEvent(event);
eventtxcache.type = type;
pushEvent(eventtxcache);
}
void AppEventBus::pushPageChangeEvent(uint8_t toPage) {
zlock_guard lck(lock);
event.type = KAE_PageChangeEvent;
event.d.pageChangeTo = toPage;
pushEvent(event);
eventtxcache.type = KAE_PageChangeEvent;
eventtxcache.setPageChangeTo(toPage);
pushEvent(eventtxcache);
}
void AppEventBus::callFnInEventBus(function<void()> onfnc) {
zlock_guard lck(lock);
event.type = KAE_callOnAppEventBusLoop;
event.onfnc = onfnc;
pushEvent(event);
eventtxcache.type = KAE_callOnAppEventBusLoop;
eventtxcache.onfnc = onfnc;
pushEvent(eventtxcache);
}
void AppEventBus::pushStateDisplayInfoEvent(const char* info) {
zlock_guard lck(lock);
eventtxcache.type = kAppEvent_StateDisplayInfo;
// strncpy(event.getStateDisplayInfo(), info, event.getBufSize());
eventtxcache.setStateDisplayInfo(info);
pushEvent(eventtxcache);
}

2
uappbase/service/app_event_bus.hpp

@ -29,6 +29,8 @@ class AppEventBus {
void pushPageChangeEvent(uint8_t toPage);
void callFnInEventBus(function<void()> onfnc);
void pushStateDisplayInfoEvent(const char* info) ;
};
} // namespace iflytop

3
uappbase/service/gstate_mgr.cpp

@ -59,7 +59,8 @@ void GStateMgr::setRemoterS(int32_t state, const char* name) {
if (state) {
ZLOGI(TAG, "on ble connect -> client name:%s", name);
strncpy(m_RemoterName, name, sizeof(m_RemoterName));
strncpy(appevent.d.bleName, name, sizeof(appevent.d.bleName));
// strncpy(appevent.d.bleName, name, sizeof(appevent.d.bleName));
appevent.setBleName(name);
appevent.type = kAE_RemoterConnectedEvent;
} else {

3
usrc/service/pump_ctrl_service.cpp

@ -11,7 +11,7 @@ using namespace iflytop;
static TMC51X0* m_motors[4];
#define PUMP_NUM 4
#define PUSH_DIS_INFO(info) AppEventBus::ins()->pushEvent(createStateDisplayInfoEvent(info))
#define PUSH_DIS_INFO(info) AppEventBus::ins()->pushStateDisplayInfoEvent(info);
void PumpCtrlService::initialize() {
m_motors[0] = AppHardware::ins()->getPump(0);
@ -34,7 +34,6 @@ void PumpCtrlService::initialize() {
});
m_monitor_thread.init("PumpCtrlServiceMonitor", 1024);
#if ENABLE_MOTOR_CHECK_THREAD
m_monitor_thread.start([this]() {
for (size_t i = 0; i < 4; i++) {

6
usrc/uicontroler/base/page_processer.cpp

@ -30,12 +30,12 @@ void IPageProcesser::initialize() {
AppEventBus::ins()->regOnEvent([this](AppEvent* event) {
if (event->type == KAE_UIEvent) {
if (thisPage != event->d.uiEvent.pid) {
if (thisPage != event->getUIEvent()->pid) {
return;
}
// uint8_t bid = event->d.uiEvent.bid;
UIEvent* uiEvent = &event->d.uiEvent;
UIEvent* uiEvent = event->getUIEvent();
if (uiEvent->eventId == kpt_sys_event_page_id) {
OnPageLoadContext cxt = {0};
@ -59,7 +59,7 @@ void IPageProcesser::initialize() {
}
//
} else if (event->type == KAE_PageChangeEvent) {
if (thisPage != event->d.pageChangeTo) {
if (thisPage != event->getUIEvent()->pid) {
return;
}
onChangePageEvent();

2
usrc/uicontroler/page/home_page.cpp

@ -117,7 +117,7 @@ class HomePage : public IPageProcesser {
} else if (event->type == kAE_AcidStatChangeEvent) {
syncStat(); // 初始化统计数据
} else if (event->type == kAppEvent_StateDisplayInfo) {
UIS->setTxt(thisPage, ob_home_sysInfo, event->d.stateDisplayInfo);
UIS->setTxt(thisPage, ob_home_sysInfo, event->getStateDisplayInfo());
}
}

4
usrc/uicontroler/page/mupage/muReCtrlerBind_page.cpp

@ -99,9 +99,9 @@ class muReCtrlerBindPage : public IPageProcesser {
if (event->type == kAE_RemoterConnectedEvent) {
ZLOGI(TAG, "ble connect success");
setText(ob_muReCtlerBind_infoWin, "%s", "ɨÃèµ½É豸");
DeviceSettingDao::updateBleClientName(event->d.bleName);
DeviceSettingDao::updateBleClientName(event->getBleName());
setText(ob_muReCtlerBind_infoWin, "%s", "°ó¶¨³É¹¦");
setText(ob_muReCtlerBind_bleCliName, "%s", event->d.bleName);
setText(ob_muReCtlerBind_bleCliName, "%s", event->getBleName());
m_scaning = false;
}
}

2
usrc/uicontroler/ui_controler.cpp

@ -68,7 +68,7 @@ void UIControler::pageInitialize() { UIControlerHock_PageInit(); }
void UIControler::callUsrEventCb(UIEvent* event) {
static AppEvent appEvent;
appEvent.type = KAE_UIEvent;
memcpy(&appEvent.d.uiEvent, event, sizeof(UIEvent));
memcpy(appEvent.getUIEvent(), event, sizeof(UIEvent));
AppEventBus::ins()->pushEvent(appEvent);
}

Loading…
Cancel
Save