From 7144add8893558bba63a730a1f4c9cb2fe13b998 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Tue, 26 Nov 2024 19:45:27 +0800 Subject: [PATCH] finish rtc page --- uappbase/apphal/apphal.cpp | 61 ++++++--- uappbase/apphal/apphal.hpp | 1 + uappbase/bean/appevent.h | 3 + uappbase/service/app_event_bus.cpp | 12 +- uappbase/service/app_event_bus.hpp | 2 + ui/hand_acid_mainboard_ui.HMI | Bin 18638442 -> 18638442 bytes usrc/service/app_core.cpp | 6 +- usrc/uicontroler/base/page_processer.cpp | 5 + usrc/uicontroler/base/page_processer.hpp | 11 ++ ...eld_content_selected_change_event_processer.cpp | 4 +- ...r_def_clik_release_with_val_event_processer.cpp | 7 +- usrc/uicontroler/page/home_page.cpp | 2 +- usrc/uicontroler/page/login_page.cpp | 2 +- usrc/uicontroler/page/mupage/muDateMgr_page.cpp | 146 +++++++++++++++++++++ usrc/uicontroler/page/mupage/muInterval_page.cpp | 5 +- usrc/uicontroler/page/mupage/muUsrMgr_page.cpp | 4 +- usrc/uicontroler/page/navi_page.cpp | 8 +- usrc/uicontroler/page/popwin_page.cpp | 4 +- usrc/uicontroler/tjc/ui_event.h | 2 +- usrc/uicontroler/ui_controler.cpp | 19 +-- usrc/uicontroler/ui_controler.hpp | 14 +- 21 files changed, 258 insertions(+), 60 deletions(-) create mode 100644 usrc/uicontroler/page/mupage/muDateMgr_page.cpp diff --git a/uappbase/apphal/apphal.cpp b/uappbase/apphal/apphal.cpp index 8e42c80..edebc2e 100644 --- a/uappbase/apphal/apphal.cpp +++ b/uappbase/apphal/apphal.cpp @@ -395,24 +395,24 @@ void AppHal::rtc_init() { Error_Handler(); } - /** Initialize RTC and set the Time and Date - */ - sTime.Hours = 0x0; - sTime.Minutes = 0x0; - sTime.Seconds = 0x0; - sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE; - sTime.StoreOperation = RTC_STOREOPERATION_RESET; - if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK) { - Error_Handler(); - } - sDate.WeekDay = 0x01; - sDate.Month = 0x1; - sDate.Date = 0x1; - sDate.Year = 24; - - if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK) { - Error_Handler(); - } + // /** Initialize RTC and set the Time and Date + // */ + // sTime.Hours = 0x0; + // sTime.Minutes = 0x0; + // sTime.Seconds = 0x0; + // sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE; + // sTime.StoreOperation = RTC_STOREOPERATION_RESET; + // if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK) { + // Error_Handler(); + // } + // sDate.WeekDay = 0x01; + // sDate.Month = 0x1; + // sDate.Date = 0x1; + // sDate.Year = 24; + + // if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK) { + // Error_Handler(); + // } } void AppHal::rtc_get(zdate_t* date) { @@ -437,6 +437,31 @@ void AppHal::rtc_get(zdate_t* date) { // ZLOGI("", "%02d:%02d:%02d\r\n", GetTime.Hours, GetTime.Minutes, GetTime.Seconds); } +void AppHal::rtc_set(zdate_t* date) { + RTC_DateTypeDef sDate = {0}; + RTC_TimeTypeDef sTime = {0}; + + HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN); + HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN); + + sTime.Hours = date->hours; + sTime.Minutes = date->minutes; + sTime.Seconds = date->seconds; + sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE; + sTime.StoreOperation = RTC_STOREOPERATION_RESET; + if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK) { + Error_Handler(); + } + sDate.WeekDay = 0x01; + sDate.Month = date->month; + sDate.Date = date->day; + sDate.Year = date->year - 2000; + + if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK) { + Error_Handler(); + } +} + void AppHal::usb_init() { GPIO_InitTypeDef GPIO_InitStruct = {0}; diff --git a/uappbase/apphal/apphal.hpp b/uappbase/apphal/apphal.hpp index 6bda47c..4611537 100644 --- a/uappbase/apphal/apphal.hpp +++ b/uappbase/apphal/apphal.hpp @@ -19,6 +19,7 @@ class AppHal { static void rtc_init(); static void rtc_get(zdate_t* date); + static void rtc_set(zdate_t* date); static void usb_init(); }; diff --git a/uappbase/bean/appevent.h b/uappbase/bean/appevent.h index 34f193d..383359f 100644 --- a/uappbase/bean/appevent.h +++ b/uappbase/bean/appevent.h @@ -1,5 +1,6 @@ #pragma once #include + #include "uicontroler/tjc/tjc_base_type.h" typedef enum { @@ -12,6 +13,7 @@ typedef enum { KAE_UIEvent, kAE_LoginEvent, kAE_unLoginEvent, + KAE_PageChangeEvent, kAE_AcidStatChangeEvent, // 统计数据变化事件 kAE_RemoterConnectedEvent, // 遥控器连接成功 @@ -32,5 +34,6 @@ typedef struct { char bleName[20]; char stateDisplayInfo[30]; UIEvent uiEvent; + int32_t pageChangeTo; } d; } AppEvent_t; \ No newline at end of file diff --git a/uappbase/service/app_event_bus.cpp b/uappbase/service/app_event_bus.cpp index ff4d016..eebd51a 100644 --- a/uappbase/service/app_event_bus.cpp +++ b/uappbase/service/app_event_bus.cpp @@ -10,7 +10,6 @@ void AppEventBus::initialize() { thread.init("AppEventBus", 1024); xQueue = xQueueCreate(20, sizeof(AppEvent_t)); - thread.start([this]() { AppEvent_t event; while (1) { @@ -20,7 +19,6 @@ void AppEventBus::initialize() { m_cbs[i](&event); } } - } }); } @@ -35,11 +33,17 @@ void AppEventBus::pushEvent(const AppEvent_t& event) { ZLOGE(TAG, "xQueueSend failed"); } } +static AppEvent_t event; void AppEventBus::pushSimpleEvent(AppEventType_t type) { zlock_guard lck(lock); - - static AppEvent_t event; event.type = type; pushEvent(event); } + +void AppEventBus::pushPageChangeEvent(uint8_t toPage) { + zlock_guard lck(lock); + event.type = KAE_PageChangeEvent; + event.d.pageChangeTo = toPage; + pushEvent(event); +} diff --git a/uappbase/service/app_event_bus.hpp b/uappbase/service/app_event_bus.hpp index e620422..39a94b3 100644 --- a/uappbase/service/app_event_bus.hpp +++ b/uappbase/service/app_event_bus.hpp @@ -26,6 +26,8 @@ class AppEventBus { void regOnEvent(onAppEventCB_t onEvent); void pushEvent(const AppEvent_t& event); void pushSimpleEvent(AppEventType_t type); + + void pushPageChangeEvent(uint8_t toPage); }; } // namespace iflytop diff --git a/ui/hand_acid_mainboard_ui.HMI b/ui/hand_acid_mainboard_ui.HMI index 7a3ac957a0a3b7ceb0e72941f57bb6117d1700d6..3ff5646dc599ae79b3bf4f254b0c8b11b365238b 100644 GIT binary patch delta 4476 zcmeI!c~DhV90%}oAFC)LvQ&!Gof@&?f%kz9XyHOiT3A%B5hC(lKnPsnp`jMb{mG*p zv);)z!ZMc@pJBZgD|vuO_9KpAu+Wzt;AqIr}}^C^d{WTTrX zm+~l|Zl(fSK!sF9#hcZR8E)TcYFi+eQq*!sW|j&Ip#)074rQ37I5%CrPwbK;Bzp+2Xw_mWHlsMv$CLa&<8LE&g!rxN$C$6Lr~FJX zW0Q??dnjWU8|5L`oG%&WT|*eFHOe=f&)6bk%$*l7cG4)n8_n1fqnv`xi1JAN30q~H+N|55^w0# zEC~r>jyZYRMY*<=e5*ddi0FK4^oSr)zaT%SKrU3wia0gxg-V>QDA~d*{mK&E!++JH zG1xe6F;O@_5m+|&Y{qhLJ*8z}m@2;Q>&h^$bZV>5W*B`+{BSc~^87P+Nr`dAM61qz zsPR+P2zR6pggwZV@0X# z>FLQoeMln-d-d~n3+p)@Z)SR*V?5f(&cDCQUBPD@9eCOzP86MP{jVQmoApY>YFX%8;UD^iOm+ARQe^>(QNVd6l>Mpge5Xt z>L-2^Bqi2QsST1M0*s0AFD7Y`&MUNy&Vrg4URkgLOHxqdlfp#fII6YwOgfu~?Ctb_Hi0iK3u;8_rJ-3Tt&1kXbwY=#%$MR3DQ@G`stufi61 z4PJ*gU@L5cCU_IJ!&~q+yaVq-GrR}y!w&cWK7@~8CwvUMU^nc6y|52HflpyS9DsxH z861Mca0EVwFW^h~3Xa0p@C|$m-@*6L0zbfy&azriW^ z9Ztg^&MGOs0f2a g2ooV(ga{ELML0)u_(n_=6>@KbqpZ;z>pYOxN%slhXyu9zr*#qZ8 z&Vtf$gHo)t`>dJ5LKj7bB+b&-hcHiT$gr>m6JyHZW=i>PWmNOvllSAd-J_QDjh>p! z(&}`74)V_I(V_X!l>I78YLD?foZZ#MlII^ME7kwroAp2^_Idw&x zb48p2I?zJ^1VWHl5f_|UUG9!kl>hPmRCk;cTLc~GApim)NVwyIhgAO`Cg3JcT}{c< zgL+ag>P>f33iY8>N~3h@OZU*d)Q|ep02)a5(I6U3_tOLPAPu3RG>nGRLzF=yXe2#M zkI%OQG=?%Mi?V4fjiVeIPZMY&<{EwX)qn0f*CLqo`zZQ49tdS zp%83f7o#&BgGU(njceD)2R#|jYb(C-oV8P7tisqqo%dO;)guSlHU~5Iqc49W+@EXB z{Q0bCe?Fn5KOfr0pZ9L(&u_cMpSQTplNWj}cBP|#;7k|B|f?8{f*%UF;vFYDKqF}v^d=7Ee&YdrB_S-|Z^?E$g6 z)_PeHl{U2`m~Xr2crG#wt3Nq;{J1XDvnSte=BZ27emrY08F}O-O65b=sgrqKkD?&n zu1M|8D_>MiJa%G{NgV&hk*oWAae}wlRj3B?%Zr^+yv$r=;>#u)8o_6D3LB5_1RDBq~bPi%reB zQ{d#oo4R0kZ*`wKn~|?C#fdx@?7vJ+_uLNQTBbHAOtMyl0HF*(AshqG)tk2PI*SVH|6|SW5stam7 z&oWHw!xt9NX@9M_lBn$^i)Fet*#K75F`+qIO&3$N#I5dxL@lEEH zLy2=u)n*%Z=a1Yf|DnlmLH?C&$+Ztt6hYRRQvq?8(h- zi(dI*vRhzi=J@Oa&&ya~9cS*GXihXoq4$aWDc0P^?u5<>k?70Gp4r%w*f{}P zX1V#(uGMynkY$smG)_sv`ItyJs6MaPh13i4R>yfoX9(kQ6^;aMIckgKnIBj?iY*n6 zTQMPp@2FN|_<}FgG1m=l-{okJK|9}Z$`;Mty|geMdP1GZuYRpww+64?PexI8RE^R* zyXpw$KoK~h80NxrFc0R#0$2!(K!e5bJS>41;6*3_4yEuCybQ0vQdkDBf(w?z3RnrR z!Rzn_ya{i?Dp(C`U@feJ_3$>7fg3i!Mkt3(@D98S0^Wo7VKaOHTVN|}g9_LVJ76d5 zg59tO_QF2+5cb1I@G%^KgK!8cp$a~MPvJ8-44=an@Fg69ui$Gq3di6ZsD>Ii4&TCe zZ~{)kDL4(^!x{Ji&ccsy4r<{isDpYq4;SEPXninitialize(); - - - UIControler::ins()->chpage(pg_muUsrMgr); + UIControler::ins()->chpage(pg_muDateMgr,true); osDelay(1000); // UIControler::ins()->popWarningWin("警告!!!!!!!"); diff --git a/usrc/uicontroler/base/page_processer.cpp b/usrc/uicontroler/base/page_processer.cpp index 8156992..be4c7d8 100644 --- a/usrc/uicontroler/base/page_processer.cpp +++ b/usrc/uicontroler/base/page_processer.cpp @@ -53,6 +53,11 @@ void IPageProcesser::initialize() { onInputFieldContentChange(uiEvent->bid, uiEvent->val, uiEvent->text); } // + } else if (event->type == KAE_PageChangeEvent) { + if (thisPage != event->d.pageChangeTo) { + return; + } + onChangePageEvent(); } else { onAppEvent(event); } diff --git a/usrc/uicontroler/base/page_processer.hpp b/usrc/uicontroler/base/page_processer.hpp index 0305452..56ee549 100644 --- a/usrc/uicontroler/base/page_processer.hpp +++ b/usrc/uicontroler/base/page_processer.hpp @@ -32,7 +32,18 @@ class IPageProcesser { virtual void initialize(); private: + /** + * @brief 页面加载,该事件,即便页面视觉上没有改变,只要页面发生变化,都会触发,例如弹窗,加载动画,键盘,等 + * + * @param cxt + */ virtual void onPageLoad(OnPageLoadContext* cxt) { return; }; + /** + * @brief 该事件绑定的业务层面的页面切换,例如从导航栏到对应的配置页面,发生了页面切换,此时会触发这个事件 + * + * @param cxt + */ + virtual void onChangePageEvent() { return; }; virtual void onAppEvent(AppEvent_t* event) { return; }; virtual void onInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) { return; }; 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 9a0d391..691ffe5 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 @@ -19,8 +19,8 @@ void InputfieldContentSelectedChangeEventProcesser::process(uint8_t* indata, siz result->eventId = indata[0]; result->pid = indata[1]; result->bid = indata[2]; - result->val = indata[3]; - const char* strbegin = (const char*)&indata[4]; + result->val = *(int32_t*)(&indata[3]); + const char* strbegin = (const char*)&indata[7]; strbegin = TJCStrUtils::cpystr(result->text, strbegin, sizeof(result->text)); result->butEventType = kbutton_release; } diff --git a/usrc/uicontroler/event_proceesser/usr_def_clik_release_with_val_event_processer.cpp b/usrc/uicontroler/event_proceesser/usr_def_clik_release_with_val_event_processer.cpp index ad10321..069aa28 100644 --- a/usrc/uicontroler/event_proceesser/usr_def_clik_release_with_val_event_processer.cpp +++ b/usrc/uicontroler/event_proceesser/usr_def_clik_release_with_val_event_processer.cpp @@ -8,7 +8,7 @@ void UsrDefClikReleaseWithValEventProcesser::process(uint8_t* indata, size_t len * printh B1 * prints dp,1 * prints '&id&',1 - * prints '&val&',1 + * prints '&val&',4 * prints '&txt&',0 * printh FF FF FF * @@ -16,9 +16,8 @@ void UsrDefClikReleaseWithValEventProcesser::process(uint8_t* indata, size_t len result->eventId = indata[0]; result->pid = indata[1]; result->bid = indata[2]; - result->val = indata[3]; - - const char* strbegin = (const char*)&indata[4]; + result->val = *(int32_t*)(&indata[3]); + const char* strbegin = (const char*)&indata[7]; strbegin = TJCStrUtils::cpystr(result->text, strbegin, sizeof(result->text)); result->butEventType = kbutton_release; diff --git a/usrc/uicontroler/page/home_page.cpp b/usrc/uicontroler/page/home_page.cpp index 293dc22..a3e4596 100644 --- a/usrc/uicontroler/page/home_page.cpp +++ b/usrc/uicontroler/page/home_page.cpp @@ -65,7 +65,7 @@ class HomePage : public IPageProcesser { } else if (bid == ob_home_SelCH3) { setPumpSelectState(3, !GStateMgr::ins()->getPumpSelectState(3)); } else if (bid == ob_home_MenuButton) { - UIS->chpage(pg_navi); + UIS->chpage(pg_navi,true); } } virtual void onAppEvent(AppEvent_t* event) override { diff --git a/usrc/uicontroler/page/login_page.cpp b/usrc/uicontroler/page/login_page.cpp index 11e0570..4ea1092 100644 --- a/usrc/uicontroler/page/login_page.cpp +++ b/usrc/uicontroler/page/login_page.cpp @@ -51,7 +51,7 @@ class LoginPage : public IPageProcesser { ZLOGI(TAG, "login %s success", userName); AppEventBus::ins()->pushSimpleEvent(kAE_LoginEvent); - UIControler::ins()->chpage(pg_home); + UIControler::ins()->chpage(pg_home,true); resetPage(); } } diff --git a/usrc/uicontroler/page/mupage/muDateMgr_page.cpp b/usrc/uicontroler/page/mupage/muDateMgr_page.cpp new file mode 100644 index 0000000..16488ae --- /dev/null +++ b/usrc/uicontroler/page/mupage/muDateMgr_page.cpp @@ -0,0 +1,146 @@ + +#include "db/dao/user_dao.hpp" +#include "uappbase/apphal/apphal.hpp" +#include "ui/ui.h" +#include "uicontroler/base/page_processer.hpp" +// +#include "db/dao/acid_ch_cfg_dao.hpp" +#include "db/dao/device_setting_dao.hpp" +// +#include "service/pump_ctrl_service.hpp" + +namespace iflytop { +using namespace std; +#define TAG "MuDateMgrPage" + +static zdate_t date; +static int m_oneMonthDay = 0; + +static int getOneMonthDay(int year, int month) { + if (month == 2) { + if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { + return 29; + } else { + return 28; + } + } else if (month == 4 || month == 6 || month == 9 || month == 11) { + return 30; + } else { + return 31; + } +} + +class MuDateMgrPage : public IPageProcesser { + private: + public: + MuDateMgrPage() : IPageProcesser(TAG, pg_muDateMgr) {} + + virtual void initialize() override { IPageProcesser::initialize(); } + + private: + virtual void onPageLoad(OnPageLoadContext* cxt) override { return; }; + /** + * @brief 返回上一页 + */ + virtual void onBackKey() override { UIControler::ins()->chpage(pg_navi, true); }; + + virtual void onChangePageEvent() override { + AppHal::rtc_get(&date); + ZLOGI(TAG, "get rtc %d-%d-%d %d:%d", date.year, date.month, date.day, date.hours, date.minutes); + if (date.year < 2020) { + date.year = 2020; + date.month = 1; + date.day = 1; + date.hours = 0; + date.minutes = 0; + AppHal::rtc_set(&date); + } + + m_oneMonthDay = getOneMonthDay(date.year, date.month); + tryUpdateMonthDay(); + + setVal(ob_muDateMgr_year, date.year - 2020); + setVal(ob_muDateMgr_month, date.month - 1); + setVal(ob_muDateMgr_day, date.day - 1); + setVal(ob_muDateMgr_hour, date.hours); + setVal(ob_muDateMgr_min, date.minutes); + UIControler::ins()->setrtc(&date); + return; + }; + + virtual void tryUpdateMonthDay() { + if (m_oneMonthDay == 28) { + if (date.day > 28) { + date.day = 28; + } + UIControler::ins()->setPath( // + thisPage, ob_muDateMgr_day, // + "1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24\r\n25\r\n26\r\n27\r\n28"); + } else if (m_oneMonthDay == 29) { + if (date.day > 29) { + date.day = 29; + } + UIControler::ins()->setPath( // + thisPage, ob_muDateMgr_day, // + "1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24\r\n25\r\n26\r\n27\r\n28\r\n29"); + } else if (m_oneMonthDay == 30) { + if (date.day > 30) { + date.day = 30; + } + UIControler::ins()->setPath( // + thisPage, ob_muDateMgr_day, // + "1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24\r\n25\r\n26\r\n27\r\n28\r\n29\r\n30"); + } else if (m_oneMonthDay == 31) { + if (date.day > 31) { + date.day = 31; + } + UIControler::ins()->setPath( // + thisPage, ob_muDateMgr_day, // + "1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20\r\n21\r\n22\r\n23\r\n24\r\n25\r\n26\r\n27\r\n28\r\n29\r\n30\r\n31"); + } + } + + virtual void OnInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) {}; + virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override { + if (bid == ob_muDateMgr_year) { + ZLOGI(TAG, "set year %s(%d)", text, val); + date.year = atoi(text); + + int32_t oneMonthDay = getOneMonthDay(date.year, date.month); + if (m_oneMonthDay != oneMonthDay) { + m_oneMonthDay = oneMonthDay; + tryUpdateMonthDay(); + setVal(ob_muDateMgr_day, date.day - 1); + } + + } else if (bid == ob_muDateMgr_month) { + ZLOGI(TAG, "set month %s(%d)", text, val); + date.month = atoi(text); + + int32_t oneMonthDay = getOneMonthDay(date.year, date.month); + if (m_oneMonthDay != oneMonthDay) { + m_oneMonthDay = oneMonthDay; + tryUpdateMonthDay(); + setVal(ob_muDateMgr_day, date.day - 1); + } + + } else if (bid == ob_muDateMgr_day) { + ZLOGI(TAG, "set day %s(%d)", text, val); + date.day = atoi(text); + } else if (bid == ob_muDateMgr_hour) { + ZLOGI(TAG, "set hour %s(%d)", text, val); + date.hours = atoi(text); + } else if (bid == ob_muDateMgr_min) { + ZLOGI(TAG, "set min %s(%d)", text, val); + date.minutes = atoi(text); + } + if (bid == ob_muDateMgr_save) { + ZLOGI(TAG, "set rtc %d-%d-%d %d:%d", date.year, date.month, date.day, date.hours, date.minutes); + AppHal::rtc_set(&date); + } + } +}; + +// 实例化Page, 使其自动注册 +static MuDateMgrPage instance; +} // namespace iflytop diff --git a/usrc/uicontroler/page/mupage/muInterval_page.cpp b/usrc/uicontroler/page/mupage/muInterval_page.cpp index f881199..7f4d631 100644 --- a/usrc/uicontroler/page/mupage/muInterval_page.cpp +++ b/usrc/uicontroler/page/mupage/muInterval_page.cpp @@ -25,13 +25,12 @@ class MuIntervalPage : public IPageProcesser { private: virtual void OnPageLoad(OnPageLoadContext* cxt) { - syncState(); return; }; /** * @brief 返回上一页 */ - virtual void OnBackKey() { UIControler::ins()->chpage(pg_navi); }; + virtual void OnBackKey() { UIControler::ins()->chpage(pg_navi,true); }; virtual void OnInputFieldContentChange(uint8_t bid, uint8_t slecId, const char* text) { if (bid == ob_muInterval_stAcidInte) { @@ -48,7 +47,7 @@ class MuIntervalPage : public IPageProcesser { return; } DeviceSettingDao::updatedistrIntervalS(distrIntervalSSecond); - UIS->setTxt(thisPage, bid, "%.1f", distrIntervalSSecond); + syncState(); } }; virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override {} diff --git a/usrc/uicontroler/page/mupage/muUsrMgr_page.cpp b/usrc/uicontroler/page/mupage/muUsrMgr_page.cpp index 514eb60..a39568d 100644 --- a/usrc/uicontroler/page/mupage/muUsrMgr_page.cpp +++ b/usrc/uicontroler/page/mupage/muUsrMgr_page.cpp @@ -64,7 +64,7 @@ static EditContext_t m_editContext = {0}; class MuUsrMgr : public IPageProcesser { private: public: - MuUsrMgr() : IPageProcesser(TAG, pg_muUsrMgr) { onlyInitThis = true; } + MuUsrMgr() : IPageProcesser(TAG, pg_muUsrMgr) {} virtual void initialize() override { IPageProcesser::initialize(); @@ -85,7 +85,7 @@ class MuUsrMgr : public IPageProcesser { /** * @brief 返回上一页 */ - virtual void onBackKey() { UIControler::ins()->chpage(pg_navi); }; + virtual void onBackKey() { UIControler::ins()->chpage(pg_navi,true); }; virtual void onAppEvent(AppEvent_t* event) { return; }; diff --git a/usrc/uicontroler/page/navi_page.cpp b/usrc/uicontroler/page/navi_page.cpp index 813d1ba..73f3af9 100644 --- a/usrc/uicontroler/page/navi_page.cpp +++ b/usrc/uicontroler/page/navi_page.cpp @@ -72,16 +72,16 @@ class NaviPage : public IPageProcesser { } private: - virtual void onBackKey() override { UIControler::ins()->chpage(pg_home); } + virtual void onBackKey() override { UIControler::ins()->chpage(pg_home,true); } virtual void onClickRelease(uint8_t bid, uint8_t val, const char* text) override { if (bid == ob_navi_nexPage) { if (m_pageNum < m_maxPageNum - 1) { - UIControler::ins()->chpage(pg_navi); + UIControler::ins()->chpage(pg_navi,true); syncMenu(m_pageNum + 1); } } else if (bid == ob_navi_lastPage) { if (m_pageNum > 0) { - UIControler::ins()->chpage(pg_navi); + UIControler::ins()->chpage(pg_navi,true); syncMenu(m_pageNum - 1); } } @@ -94,7 +94,7 @@ class NaviPage : public IPageProcesser { if (buttonIndex < m_menuTotalNum) { if (m_muInfo[buttonIndex].page != 0) { - UIControler::ins()->chpage(m_muInfo[buttonIndex].page); + UIControler::ins()->chpage(m_muInfo[buttonIndex].page,true); } else { } } diff --git a/usrc/uicontroler/page/popwin_page.cpp b/usrc/uicontroler/page/popwin_page.cpp index 7d80252..b0de7e3 100644 --- a/usrc/uicontroler/page/popwin_page.cpp +++ b/usrc/uicontroler/page/popwin_page.cpp @@ -65,7 +65,7 @@ class PopWinPage : public IPageProcesser { if (!handupInfoFlag) { if (UIControler::ins()->getNowPage() == thisPage) { - UIControler::ins()->chpage(lastPage); + UIControler::ins()->chpage(lastPage,false); osDelay(200); // 等待页面切换 } } @@ -81,7 +81,7 @@ class PopWinPage : public IPageProcesser { if (UIControler::ins()->getNowPage() != thisPage) { lastPage = UIControler::ins()->getNowPage(); } - UIControler::ins()->chpage(pg_popwin); + UIControler::ins()->chpage(pg_popwin,false); } void visPopWin(bool state) { diff --git a/usrc/uicontroler/tjc/ui_event.h b/usrc/uicontroler/tjc/ui_event.h index 6a36589..801ce33 100644 --- a/usrc/uicontroler/tjc/ui_event.h +++ b/usrc/uicontroler/tjc/ui_event.h @@ -74,6 +74,6 @@ typedef struct { // content button_event_t butEventType; // 按键事件类型 - uint8_t val; // 数值相关 + int32_t val; // 数值相关 char text[TJC_MAX_PACKET_SIZE]; // 文本相关 } UIEvent; \ No newline at end of file diff --git a/usrc/uicontroler/ui_controler.cpp b/usrc/uicontroler/ui_controler.cpp index 1920e1d..9581959 100644 --- a/usrc/uicontroler/ui_controler.cpp +++ b/usrc/uicontroler/ui_controler.cpp @@ -68,15 +68,15 @@ void UIControler::callUsrEventCb(UIEvent* event) { void UIControler::startSchedule() { usartRxThread.start([this]() { - static uint8_t rxbuf[128]; + static uint8_t rxbuf[256]; tjcUart->USR_UartITRxing = 1; tjcUart->USR_UartITRxBuf = rxbuf; - tjcUart->USR_UartITRxBufSize = 128; + tjcUart->USR_UartITRxBufSize = 256; tjcUart->USR_UartITRxOff = 0; HAL_UART_Receive_IT(tjcUart, &tjcUart->USR_UartITRxBufCache, 1); while (1) { - static uint8_t processbuf[128]; + static uint8_t processbuf[256]; int32_t rxsize = 0; if (tjcUart->USR_UartITRxOff != 0 && zos_haspassedms(tjcUart->USR_UartITLastRxTicket) > UART_RX_OVERTIME) { vPortEnterCritical(); @@ -250,7 +250,7 @@ bool UIControler::setTxt(uint8_t pid, uint8_t bid, const char* txt, ...) { } bool UIControler::setTxt(uint8_t pid, uint8_t bid, const char* txt, va_list args) { zlock_guard lg(m_cmdlock); - static char buf[128]; + static char buf[256]; vsprintf(buf, txt, args); sendcmd("p[%d].b[%d].txt=\"%s\"", pid, bid, buf); return true; @@ -302,9 +302,12 @@ void UIControler::popWin(UIPopWinType_t type, const char* info, functionpushPageChangeEvent(page); +} void UIControler::sendcmd(const char* format, ...) { - // static char buf[128]; + // static char buf[256]; va_list args; va_start(args, format); // vsprintf(buf, format, args); @@ -313,14 +316,14 @@ void UIControler::sendcmd(const char* format, ...) { } void UIControler::sendcmd(const char* format, va_list args) { - static char buf[128]; + static char buf[256]; vsprintf(buf, format, args); #if MODULE_DEBUG ZLOGI(TAG, "tx:%s", buf); #endif uint8_t len = strlen(buf); - if (len > (128 - 3)) { + if (len > (256 - 3)) { ZLOGI(TAG, "sendcmd too long"); return; } diff --git a/usrc/uicontroler/ui_controler.hpp b/usrc/uicontroler/ui_controler.hpp index ee5e743..37212ef 100644 --- a/usrc/uicontroler/ui_controler.hpp +++ b/usrc/uicontroler/ui_controler.hpp @@ -36,7 +36,7 @@ class UIControler { void initialize(); int getNowPage() { return UIStateMgr::ins()->nowPage; } - void chpage(uint8_t page); + void chpage(uint8_t page, bool triggerEvent); bool echo(uint8_t tx, uint8_t* rx); void startSchedule(); @@ -57,6 +57,10 @@ class UIControler { void setPicturePicNumFromGlobal(uint8_t pid, uint8_t bid, uint8_t fromPid, uint8_t fromBid); void setButtonPicNumFromGlobal(uint8_t pid, uint8_t bid, uint8_t fromPid, uint8_t fromBid); void setrtc(zdate_t* date); + void setPath(uint8_t pid, uint8_t bid, const char* path) { + zlock_guard lg(m_cmdlock); + sendcmd("p[%d].b[%d].path=\"%s\"", pid, bid, path); + } void sendcmd(const char* format, ...); void sendcmd(const char* format, va_list args); @@ -94,7 +98,7 @@ class UIControler { sendcmd("p[%d].b[%d].txt=%s", pg_keybdAP, ob_keybdAP_show, initval); sendcmd("p[%d].b[%d].pw=0", pg_keybdAP, ob_keybdAP_show); sendcmd("p[%d].b[%d].val=%d", pg_keybdAP, ob_keybdAP_inputlenth, limitLength); - chpage(pg_keybdAP); + chpage(pg_keybdAP, false); } void popPasswdKeyBoard(uint8_t fromPid, uint8_t fromBid, int limitLength) { @@ -105,7 +109,7 @@ class UIControler { sendcmd("p[%d].b[%d].txt=%s", pg_keyPasswd, ob_keyPasswd_show, ""); sendcmd("p[%d].b[%d].pw=1", pg_keyPasswd, ob_keyPasswd_show); sendcmd("p[%d].b[%d].val=%d", pg_keyPasswd, ob_keyPasswd_inputlenth, limitLength); - chpage(pg_keyPasswd); + chpage(pg_keyPasswd, false); } void popNumKeyBoard(uint8_t fromPid, uint8_t fromBid, int limitLength, const char* initval) { @@ -116,7 +120,7 @@ class UIControler { sendcmd("p[%d].b[%d].txt=%s", pg_keybdB, ob_keybdB_show, initval); sendcmd("p[%d].b[%d].pw=0", pg_keybdB, ob_keybdB_show); sendcmd("p[%d].b[%d].val=%d", pg_keybdB, ob_keybdB_inputlenth, limitLength); - chpage(pg_keybdB); + chpage(pg_keybdB, false); } void popSelcKeyBoard(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char** selectvals) { @@ -140,7 +144,7 @@ class UIControler { sendcmd("p[%d].b[%d].val=%d", pg_keybMutiSel, ob_keybMutiSel_loadcmpid, fromBid); sendcmd("p[%d].b[%d].val=%d", pg_keybMutiSel, ob_keybMutiSel_ctent, selectvalindex); sendcmd("p[%d].b[%d].path=\"%s\"", pg_keybMutiSel, ob_keybMutiSel_ctent, selectvals); - chpage(pg_keybMutiSel); + chpage(pg_keybMutiSel, false); } /***********************************************************************************************************************