diff --git a/.cproject b/.cproject
index 63ababa..7c19e25 100644
--- a/.cproject
+++ b/.cproject
@@ -30,7 +30,7 @@
-
+
diff --git a/ui/hand_acid_mainboard_ui.HMI b/ui/hand_acid_mainboard_ui.HMI
index 072cc67..8c3651c 100644
Binary files a/ui/hand_acid_mainboard_ui.HMI and b/ui/hand_acid_mainboard_ui.HMI differ
diff --git a/usrc/uicontroler/event_proceesser/inputfield_content_change_event_processer.cpp b/usrc/uicontroler/event_proceesser/inputfield_content_change_event_processer.cpp
index 53d9cc4..8b0b7d3 100644
--- a/usrc/uicontroler/event_proceesser/inputfield_content_change_event_processer.cpp
+++ b/usrc/uicontroler/event_proceesser/inputfield_content_change_event_processer.cpp
@@ -1,4 +1,5 @@
#include "inputfield_content_change_event_processer.hpp"
+#include "uicontroler\ui_controler.hpp"
using namespace iflytop;
void InputFieldContentChangeEventProcesser::process(uint8_t* indata, size_t len, UIEvent* result) {
@@ -22,4 +23,7 @@ void InputFieldContentChangeEventProcesser::process(uint8_t* indata, size_t len,
strbegin = TJCStrUtils::cpystr(result->text, strbegin, sizeof(result->text));
result->butEventType = kbutton_release;
+
+ UIControler::ins()->chpage(UIStateMgr::ins()->getKeyFromPid(), false);
+
}
diff --git a/usrc/uicontroler/event_proceesser/inputfield_content_selected_change_event_processer.cpp b/usrc/uicontroler/event_proceesser/inputfield_content_selected_change_event_processer.cpp
index 691ffe5..7d9b412 100644
--- a/usrc/uicontroler/event_proceesser/inputfield_content_selected_change_event_processer.cpp
+++ b/usrc/uicontroler/event_proceesser/inputfield_content_selected_change_event_processer.cpp
@@ -1,4 +1,5 @@
#include "inputfield_content_selected_change_event_processer.hpp"
+#include "uicontroler\ui_controler.hpp"
using namespace iflytop;
void InputfieldContentSelectedChangeEventProcesser::process(uint8_t* indata, size_t len, UIEvent* result) {
@@ -16,6 +17,8 @@ void InputfieldContentSelectedChangeEventProcesser::process(uint8_t* indata, siz
*
*/
// ZLOGI(TAG, "processInputfieldContentChangeEvent1");
+
+
result->eventId = indata[0];
result->pid = indata[1];
result->bid = indata[2];
@@ -23,4 +26,7 @@ void InputfieldContentSelectedChangeEventProcesser::process(uint8_t* indata, siz
const char* strbegin = (const char*)&indata[7];
strbegin = TJCStrUtils::cpystr(result->text, strbegin, sizeof(result->text));
result->butEventType = kbutton_release;
+
+ UIControler::ins()->chpage(UIStateMgr::ins()->getKeyFromPid(), false);
+
}
diff --git a/usrc/uicontroler/event_proceesser/keyboard_bak_request_processer.cpp b/usrc/uicontroler/event_proceesser/keyboard_bak_request_processer.cpp
new file mode 100644
index 0000000..663be0c
--- /dev/null
+++ b/usrc/uicontroler/event_proceesser/keyboard_bak_request_processer.cpp
@@ -0,0 +1,14 @@
+#include "keyboard_bak_request_processer.hpp"
+
+#include "uicontroler\ui_controler.hpp"
+using namespace iflytop;
+void KeyboardBakRequestProcesser::process(uint8_t* indata, size_t len, UIEvent* result) {
+ /**
+ * @brief
+ *
+ * printh AE FF FF FF
+ *
+ */
+ result->internal = true;
+ UIControler::ins()->chpage(UIStateMgr::ins()->getKeyFromPid(), false);
+}
diff --git a/usrc/uicontroler/event_proceesser/keyboard_bak_request_processer.hpp b/usrc/uicontroler/event_proceesser/keyboard_bak_request_processer.hpp
new file mode 100644
index 0000000..ac9b93d
--- /dev/null
+++ b/usrc/uicontroler/event_proceesser/keyboard_bak_request_processer.hpp
@@ -0,0 +1,11 @@
+#pragma once
+#include "if/i_tjc_ui_event_processer.hpp"
+namespace iflytop {
+
+class KeyboardBakRequestProcesser : public iTjcUiEventProcesser {
+ public:
+ KeyboardBakRequestProcesser(/* args */) : iTjcUiEventProcesser(kpt_keyboard_bak_request) {}
+ virtual void process(uint8_t* indata, size_t len, UIEvent* result) override;
+};
+
+} // namespace iflytop
diff --git a/usrc/uicontroler/event_proceesser/sys_event_page_id_processer.cpp b/usrc/uicontroler/event_proceesser/sys_event_page_id_processer.cpp
index edb49b9..fd4eee9 100644
--- a/usrc/uicontroler/event_proceesser/sys_event_page_id_processer.cpp
+++ b/usrc/uicontroler/event_proceesser/sys_event_page_id_processer.cpp
@@ -13,6 +13,7 @@ void SysEventPageIdProcesser::process(uint8_t* indata, size_t len, UIEvent* resu
if (UIStateMgr::ins()->nowPage == indata[1]) {
// page not change
} else {
+ // changePage()
// UIStateMgr::ins()->lastPage = UIStateMgr::ins()->nowPage;
// UIStateMgr::ins()->nowPage = indata[1];
// ZLOGI(TAG, "page change from %d to %d ", UIStateMgr::ins()->lastPage, UIStateMgr::ins()->nowPage);
diff --git a/usrc/uicontroler/tjc/ui_event.h b/usrc/uicontroler/tjc/ui_event.h
index c964466..a205600 100644
--- a/usrc/uicontroler/tjc/ui_event.h
+++ b/usrc/uicontroler/tjc/ui_event.h
@@ -51,6 +51,7 @@ typedef enum {
//
kpt_inputfield_content_change_event = 0xAC, // 跨页面键盘输入事件
kpt_inputfield_content_selected_change_event = 0xAD, // 跨页面多选框输入事件
+ kpt_keyboard_bak_request = 0xAE, // 页面切换请求
kpt_page_back_event = 0xB0, // 回退按键事件
kpt_usr_def_clik_release_event = 0xB1 // 用户自定义按键释放事件
@@ -63,9 +64,10 @@ typedef struct {
int32_t eventId;
uint8_t pid;
uint8_t bid;
+ bool internal;
// content
jtc_button_event_t butEventType; // 按键事件类型
- int32_t val; // 数值相关
- char text[TJC_MAX_PACKET_SIZE]; // 文本相关
+ int32_t val; // 数值相关
+ char text[TJC_MAX_PACKET_SIZE]; // 文本相关
} UIEvent;
\ No newline at end of file
diff --git a/usrc/uicontroler/tjc_event_processer_mgr.cpp b/usrc/uicontroler/tjc_event_processer_mgr.cpp
index f4da5c9..6f1a783 100644
--- a/usrc/uicontroler/tjc_event_processer_mgr.cpp
+++ b/usrc/uicontroler/tjc_event_processer_mgr.cpp
@@ -3,6 +3,7 @@
#include "event_proceesser/button_event_processer.hpp"
#include "event_proceesser/inputfield_content_change_event_processer.hpp"
#include "event_proceesser/inputfield_content_selected_change_event_processer.hpp"
+#include "event_proceesser/keyboard_bak_request_processer.hpp"
#include "event_proceesser/page_back_event_processer.hpp"
#include "event_proceesser/sys_event_page_id_processer.hpp"
#include "event_proceesser/usr_def_clik_release_with_val_event_processer.hpp"
@@ -18,6 +19,7 @@ static PageBackEventProcesser pageBackEventProcesser;
static SysEventPageIdProcesser sysEventPageIdProcesser;
static ButtonEventProcesser buttonEventProcesser;
static InputfieldContentSelectedChangeEventProcesser inputfieldContentSelectedChangeEventProcesser;
+static KeyboardBakRequestProcesser keyboardBakRequestProcesser;
static iTjcUiEventProcesser* m_eventProcessers[] = {
&usrDefClikReleaseWithValEventProcesser, //
@@ -26,6 +28,7 @@ static iTjcUiEventProcesser* m_eventProcessers[] = {
&sysEventPageIdProcesser, //
&buttonEventProcesser, //
&inputfieldContentSelectedChangeEventProcesser, //
+ &keyboardBakRequestProcesser,
};
/***********************************************************************************************************************
diff --git a/usrc/uicontroler/ui_controler.cpp b/usrc/uicontroler/ui_controler.cpp
index 361b2c6..fe11845 100644
--- a/usrc/uicontroler/ui_controler.cpp
+++ b/usrc/uicontroler/ui_controler.cpp
@@ -481,6 +481,8 @@ bool UIControler::movePicOutOfScreen(uint8_t pid, uint8_t bid) {
void UIControler::popFullKeyBoard(uint8_t fromPid, uint8_t fromBid, int limitLength, const char* initval) {
zlock_guard lg(m_cmdlock);
+ UIStateMgr::ins()->setKeyboardFrom(fromPid, fromBid);
+
sendcmd("p[%d].b[%d].val=%d", pg_keybdAP, ob_keybdAP_loadpageid, fromPid);
sendcmd("p[%d].b[%d].val=%d", pg_keybdAP, ob_keybdAP_loadcmpid, fromBid);
sendcmd("p[%d].b[%d].txt=\"%s\"", pg_keybdAP, ob_keybdAP_show, initval);
@@ -491,6 +493,7 @@ void UIControler::popFullKeyBoard(uint8_t fromPid, uint8_t fromBid, int limitLen
void UIControler::popPasswdKeyBoard(uint8_t fromPid, uint8_t fromBid, int limitLength) {
zlock_guard lg(m_cmdlock);
+ UIStateMgr::ins()->setKeyboardFrom(fromPid, fromBid);
sendcmd("p[%d].b[%d].val=%d", pg_keyPasswd, ob_keyPasswd_loadpageid, fromPid);
sendcmd("p[%d].b[%d].val=%d", pg_keyPasswd, ob_keyPasswd_loadcmpid, fromBid);
@@ -502,6 +505,7 @@ void UIControler::popPasswdKeyBoard(uint8_t fromPid, uint8_t fromBid, int limitL
void UIControler::popNumKeyBoard(uint8_t fromPid, uint8_t fromBid, int limitLength, const char* initval, ...) {
zlock_guard lg(m_cmdlock);
+ UIStateMgr::ins()->setKeyboardFrom(fromPid, fromBid);
static char buf[60];
va_list args;
@@ -519,6 +523,7 @@ void UIControler::popNumKeyBoard(uint8_t fromPid, uint8_t fromBid, int limitLeng
void UIControler::popKeyBMutSel(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char** selectvals) {
zlock_guard lg(m_cmdlock);
+
static char contentbus[128];
memset(contentbus, 0, sizeof(contentbus));
for (int i = 0;; i++) {
@@ -535,6 +540,8 @@ void UIControler::popKeyBMutSel(uint8_t fromPid, uint8_t fromBid, int selectvali
void UIControler::popKeyBMutSel(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char* selectvals) {
zlock_guard lg(m_cmdlock);
+ UIStateMgr::ins()->setKeyboardFrom(fromPid, fromBid);
+
sendcmd("p[%d].b[%d].val=%d", pg_keybMutSel, ob_keybMutSel_loadpageid, fromPid);
sendcmd("p[%d].b[%d].val=%d", pg_keybMutSel, ob_keybMutSel_loadcmpid, fromBid);
sendcmd("p[%d].b[%d].val=%d", pg_keybMutSel, ob_keybMutSel_ctent, selectvalindex);
@@ -547,6 +554,7 @@ void UIControler::popKeyBMutSel(uint8_t fromPid, uint8_t fromBid, int selectvali
void UIControler::popKeyBMutSelFix(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char* keyboardName, const char** selectvals) {
int selectValsNum = 0;
uint8_t pgNum = pg_keybMutSelFix;
+ UIStateMgr::ins()->setKeyboardFrom(fromPid, fromBid);
static uint8_t selbid_table[] = {
ob_keybMutSelFix_b0, //
diff --git a/usrc/uicontroler/ui_state_mgr.cpp b/usrc/uicontroler/ui_state_mgr.cpp
index 0de4ccb..a5e18df 100644
--- a/usrc/uicontroler/ui_state_mgr.cpp
+++ b/usrc/uicontroler/ui_state_mgr.cpp
@@ -57,3 +57,10 @@ void UIStateMgr::changePage(int toPage) {
// ZLOGI(TAG, "page change from %d to %d ", lastPage, nowPage);
}
}
+
+int UIStateMgr::setKeyboardFrom(uint8_t pid, uint16_t bid) {
+ keyboardFromPid = pid;
+ keyboardFromBid = bid;
+}
+int UIStateMgr::getKeyFromPid() { return keyboardFromPid; }
+int UIStateMgr::getKeyFromBid() { return keyboardFromBid; }
\ No newline at end of file
diff --git a/usrc/uicontroler/ui_state_mgr.hpp b/usrc/uicontroler/ui_state_mgr.hpp
index 4dabd42..711681e 100644
--- a/usrc/uicontroler/ui_state_mgr.hpp
+++ b/usrc/uicontroler/ui_state_mgr.hpp
@@ -19,6 +19,9 @@ class UIStateMgr {
int32_t nowPage = 0;
int32_t lastPage = 0;
+ int32_t keyboardFromPid;
+ int32_t keyboardFromBid;
+
public:
UIStateMgr() {};
static UIStateMgr* ins() {
@@ -31,7 +34,11 @@ class UIStateMgr {
component_info_t* allocComponent(uint8_t pid, uint16_t bid);
component_info_t* forceFindComponent(uint8_t pid, uint16_t bid);
- int getFreeComponentCount();
+ int setKeyboardFrom(uint8_t pid, uint16_t bid);
+ int getKeyFromPid();
+ int getKeyFromBid();
+
+ int getFreeComponentCount();
void changePage(int toPage);
};