15 changed files with 329 additions and 187 deletions
-
50README.md
-
1uappbase/bean/event.hpp
-
67uappbase/service/gstate_mgr.cpp
-
5uappbase/service/gstate_mgr.hpp
-
BINui/hand_acid_mainboard_ui.HMI
-
90usrc/service/app_core.cpp
-
1usrc/service/app_core.hpp
-
11usrc/service/front_end_controler.cpp
-
4usrc/service/front_end_controler.hpp
-
116usrc/service/page/Page_main.cpp
-
4usrc/service/page/Page_main.hpp
-
11usrc/service/page/page_processer.hpp
-
16usrc/service/remote_controler.cpp
-
110usrc/service/remote_controler_event_processer.cpp
-
30usrc/service/remote_controler_event_processer.hpp
@ -0,0 +1,110 @@ |
|||
#include "remote_controler_event_processer.hpp"
|
|||
|
|||
#include "pump_ctrl_service.hpp"
|
|||
#include "service/remote_controler.hpp"
|
|||
|
|||
using namespace iflytop; |
|||
#define TAG "RemoteControlerEventProcesser"
|
|||
static const char* zhex2str(uint8_t* data, size_t len) { |
|||
static char buf[256]; |
|||
memset(buf, 0, sizeof(buf)); |
|||
for (size_t i = 0; i < len; i++) { |
|||
sprintf(buf + i * 2, "%02X", data[i]); |
|||
} |
|||
return buf; |
|||
} |
|||
|
|||
void RemoteControlerEventProcesser::initialize() { |
|||
m_thread.init(TAG); |
|||
|
|||
GSM->setRemoterS(RemoteControlerUpper::ins()->isConnected()); |
|||
|
|||
RCTRL->regOnReport([this](uint8_t* rx, int32_t len) { |
|||
zble_proto_packet_t* packet = (zble_proto_packet_t*)rx; |
|||
logevent(rx, len); |
|||
if (packet->cmd == kzble_app_report_key_event) { |
|||
int32_t keyEvent = *(int32_t*)packet->data; |
|||
processKeyEventFromRemoter((hand_acid_remoter_key_event_t)keyEvent); |
|||
return; |
|||
} |
|||
|
|||
if (packet->cmd == kzble_report_connected_event) { |
|||
GSM->setRemoterS(true); |
|||
} else if (packet->cmd == kzble_report_disconnect_event) { |
|||
GSM->setRemoterS(false); |
|||
} |
|||
}); |
|||
} |
|||
|
|||
void RemoteControlerEventProcesser::logevent(uint8_t* rx, int32_t len) { |
|||
//
|
|||
zble_proto_packet_t* packet = (zble_proto_packet_t*)rx; |
|||
// ZLOGI(TAG, "onEvent: index:[%d],from:%d,to:%d cmd:%d", packet->frameIndex, packet->from, packet->to, packet->cmd);
|
|||
|
|||
if (packet->cmd == kzble_report_connected_event) { |
|||
zble_connected_event_t* event = (zble_connected_event_t*)packet->data; |
|||
ZLOGI(TAG, "onBleEvent -> [connected], name:%20s, peeradd:%s, rssi:%d, tx_power:%d", event->blename, zhex2str(event->peeradd, 6), event->rssi, event->tx_power); |
|||
return; |
|||
} |
|||
|
|||
if (packet->cmd == kzble_report_disconnect_event) { |
|||
ZLOGI(TAG, "onBleEvent -> disconnect"); |
|||
return; |
|||
} |
|||
if (packet->cmd == kzble_report_scan_result) { |
|||
zble_scan_result_t* event = (zble_scan_result_t*)packet->data; |
|||
ZLOGI(TAG, "onBleEvent -> [scanResult], name:%20s, peeradd:%s, rssi:%d, tx_power:%d", event->blename, zhex2str(event->peeradd, 6), event->rssi, event->tx_power); |
|||
return; |
|||
} |
|||
|
|||
if (packet->cmd == kzble_report_heart) { |
|||
zble_heart_t* event = (zble_heart_t*)packet->data; |
|||
// ZLOGI(TAG, "onBleEvent -> [heart], from:%s, resetFlag:%d, connectedFlag:%d, power:%d", zble_proto_role_2_str(packet->from), event->reset_flag, event->connected_flag, event->power);
|
|||
return; |
|||
} |
|||
|
|||
if (packet->cmd == kzble_report_power_on) { |
|||
ZLOGI(TAG, "onBleEvent -> [power_on], from:%s", zble_proto_role_2_str(packet->from)); |
|||
return; |
|||
} |
|||
|
|||
if (packet->cmd == kzble_app_report_key_event) { |
|||
int32_t keyEvent = *(int32_t*)packet->data; |
|||
ZLOGI(TAG, "onBleEvent -> [keyEvent] : %s(%d)", hand_acid_remoter_key_event_2_str(keyEvent), keyEvent); |
|||
return; |
|||
} |
|||
|
|||
ZLOGI(TAG, "[process-thread] rx unkown event(%d) : %s", packet->cmd, zhex2str(rx, len)); |
|||
} |
|||
|
|||
void RemoteControlerEventProcesser::processKeyEventFromRemoter(hand_acid_remoter_key_event_t keyEvent) { |
|||
/**
|
|||
* @brief 如果当前设备处于工作中,则无论什么按键都是停止工作 |
|||
*/ |
|||
if (PUMPCS->isWorking()) { |
|||
PUMPCS->stop(); |
|||
RCTRL->setRemoterState(GSM->getRunMode(), PUMPCS->isWorking()); |
|||
} else { |
|||
if (keyEvent == hand_acid_remoter_kevent_add_liquid) { |
|||
//
|
|||
if (GSM->getRunMode() == khand_acid_m_jog_mode) { |
|||
PUMPCS->moveOnce(); |
|||
} else if (GSM->getRunMode() == khand_acid_m_continuous_mode) { |
|||
PUMPCS->autoMoveMutiTimes(); |
|||
} |
|||
} else if (keyEvent == hand_acid_remoter_kevent_change_next_mode) { |
|||
// 修改工作模式
|
|||
if (GSM->getRunMode() == khand_acid_m_jog_mode) { |
|||
GSM->setRunMode(khand_acid_m_continuous_mode); |
|||
} else if (GSM->getRunMode() == khand_acid_m_continuous_mode) { |
|||
GSM->setRunMode(khand_acid_m_jog_mode); |
|||
} |
|||
} else if (keyEvent == hand_acid_remoter_kevent_reflux) { |
|||
// 回流
|
|||
PUMPCS->reflux(); |
|||
} else if (keyEvent == hand_acid_remoter_kevent_preFilling) { |
|||
// 管路填充
|
|||
PUMPCS->acidPrefilling(); |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,30 @@ |
|||
#pragma once
|
|||
|
|||
#include "apphardware/apphardware.hpp"
|
|||
#include "uappbase/base.hpp"
|
|||
namespace iflytop { |
|||
using namespace std; |
|||
/**
|
|||
* @brief |
|||
* |
|||
* Ò£¿ØÆ÷ʼþ´¦Àí |
|||
*/ |
|||
class RemoteControlerEventProcesser { |
|||
private: |
|||
/* data */ |
|||
ZThread m_thread; |
|||
zmutex m_lock = {"RemoteControlerEventProcesserLock"}; |
|||
|
|||
public: |
|||
static RemoteControlerEventProcesser* ins() { |
|||
static RemoteControlerEventProcesser instance; |
|||
return &instance; |
|||
} |
|||
|
|||
void initialize(); |
|||
|
|||
public: |
|||
void logevent(uint8_t* rx, int32_t len); |
|||
void processKeyEventFromRemoter(hand_acid_remoter_key_event_t keyEvent); |
|||
}; |
|||
} // namespace iflytop
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue