diff --git a/hand_acid_mainboard.launch b/hand_acid_mainboard.launch index 5e97c77..0be6d37 100644 --- a/hand_acid_mainboard.launch +++ b/hand_acid_mainboard.launch @@ -78,5 +78,6 @@ + diff --git a/stm32basic b/stm32basic index 774ea10..a3f7743 160000 --- a/stm32basic +++ b/stm32basic @@ -1 +1 @@ -Subproject commit 774ea10d163aa3a02c54544cab0074371e56d7d3 +Subproject commit a3f7743a964044334b57b0ca786b69f76f6e4af6 diff --git a/stm32components b/stm32components index a588871..3c9d276 160000 --- a/stm32components +++ b/stm32components @@ -1 +1 @@ -Subproject commit a58887133a2b2fe939f9f7245e059adb49f9e4eb +Subproject commit 3c9d276aab2de07bf1dfdcf5bd31c531efa311d9 diff --git a/stm32halport b/stm32halport index 36d0c5a..a0107db 160000 --- a/stm32halport +++ b/stm32halport @@ -1 +1 @@ -Subproject commit 36d0c5aed2f2645c4ec97f2900182cfb8f410d8e +Subproject commit a0107dbac5d3ec2750b60b553097f5f7e1763ef7 diff --git a/uappbase/bean/event.hpp b/uappbase/bean/event.hpp index 4764205..a834780 100644 --- a/uappbase/bean/event.hpp +++ b/uappbase/bean/event.hpp @@ -5,7 +5,6 @@ namespace iflytop { using namespace std; typedef enum { - kAppEvent_BleConnectedStateChangeEvent, kAppEvent_RunModeChangeEvent, kAppEvent_PumpWorkStateChangeEvent, } AppEventType_t; diff --git a/uappbase/service/config_service.hpp b/uappbase/service/config_service.hpp index ec41dbb..84a87c8 100644 --- a/uappbase/service/config_service.hpp +++ b/uappbase/service/config_service.hpp @@ -2,9 +2,9 @@ #include "../appdep.hpp" #include "config_index.hpp" #include "uappbase/appcfg/appcfg.hpp" +#include "uappbase/apphal/apphal.hpp" #include "uappbase/bean/bean.hpp" #include "ucomponents/eeprom/m24m02_i2c_eeprom.hpp" -#include "uappbase/apphal/apphal.hpp" namespace iflytop { using namespace std; @@ -20,7 +20,7 @@ struct CfgItermCache { class ConfigService { private: /* data */ - zmutex mutex; + zmutex mutex = {"ConfigServiceMutex"}; M24M02_I2C_EEPROM eeprom; public: diff --git a/uappbase/service/gstate_mgr.hpp b/uappbase/service/gstate_mgr.hpp index cd19f8b..360a4ad 100644 --- a/uappbase/service/gstate_mgr.hpp +++ b/uappbase/service/gstate_mgr.hpp @@ -16,9 +16,9 @@ class GStateMgr { bool m_isLogin; char m_loginUsr[MAX_USR_NAME_SIZE + 1]; - int32_t m_AcidState; // 酸液桶状态 1:在线,0:离线 - int32_t m_RemoterS; // 遥控器状态 1:在线,0:离线 - hand_acid_mode_t m_RunMode; // 运行模式 + int32_t m_AcidState; // 酸液桶状态 1:在线,0:离线 + int32_t m_RemoterS; // 遥控器状态 1:在线,0:离线 + hand_acid_mode_t m_RunMode = khand_acid_m_jog_mode; // 运行模式 bool pumpSelectState[4] = {false}; diff --git a/ucomponents/eeprom/m24m02_i2c_eeprom.hpp b/ucomponents/eeprom/m24m02_i2c_eeprom.hpp index f4d06a2..8d92702 100644 --- a/ucomponents/eeprom/m24m02_i2c_eeprom.hpp +++ b/ucomponents/eeprom/m24m02_i2c_eeprom.hpp @@ -10,11 +10,11 @@ using namespace std; class M24M02_I2C_EEPROM { I2C_HandleTypeDef* m_i2c_handle; bool i2c_ping_state[255] = {0}; - zmutex m_lock; + zmutex m_lock = {"M24M02_I2C_EEPROM_LOCK"}; public: - M24M02_I2C_EEPROM(){}; - ~M24M02_I2C_EEPROM(){}; + M24M02_I2C_EEPROM() {}; + ~M24M02_I2C_EEPROM() {}; void initialize(I2C_HandleTypeDef* i2c_handle); diff --git a/usrc/service/app_core.cpp b/usrc/service/app_core.cpp index 684a97e..3c99cce 100644 --- a/usrc/service/app_core.cpp +++ b/usrc/service/app_core.cpp @@ -99,11 +99,11 @@ void blelogdump(uint8_t* rx, int32_t len) { 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_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)); @@ -123,6 +123,7 @@ void AppCore::appsetup() { /*********************************************************************************************************************** * INIT * ***********************************************************************************************************************/ + AppEventBus::ins()->initialize(); ConfigService::ins()->initialize(); // hardInit @@ -154,7 +155,7 @@ void AppCore::appsetup() { } }); - // AciDisp00000 + // /*********************************************************************************************************************** * START * @@ -163,9 +164,14 @@ void AppCore::appsetup() { RCTRL->startSchedule(); RemoteControlerStateSyncService::ins()->startSync(); - // dim UIS->chpage(pg_login); + + osDelay(100); + RCTRL->clearMasterResetFlag(); + RCTRL->clearMasterResetFlag(); + RCTRL->clearMasterResetFlag(); + RCTRL->clearMasterResetFlag(); } #define DEBUG_LIGHT_IO PE2 @@ -185,11 +191,11 @@ void AppCore::initialize() { SysMgr::ins()->dumpSysInfo(); appsetup(); - AppHal::MX_IWDG_Init(); + // AppHal::MX_IWDG_Init(); while (true) { osDelay(1); debugLightLoop(); - HAL_IWDG_Refresh(&hiwdg); + // HAL_IWDG_Refresh(&hiwdg); } } diff --git a/usrc/service/front_end_controler.hpp b/usrc/service/front_end_controler.hpp index a885788..b936118 100644 --- a/usrc/service/front_end_controler.hpp +++ b/usrc/service/front_end_controler.hpp @@ -19,7 +19,7 @@ class FrontEndControler { ZThread m_thread; tjc_rx_packet_t ackcache; - zmutex m_cmdlock; + zmutex m_cmdlock = {"FrontEndControler_LOCK"}; tjc::tjc_usr_event_t event_cache; diff --git a/usrc/service/remote_controler.cpp b/usrc/service/remote_controler.cpp index 8e3a936..0ce95c7 100644 --- a/usrc/service/remote_controler.cpp +++ b/usrc/service/remote_controler.cpp @@ -3,7 +3,7 @@ #include "app_protocols/ble_through/ble_proto_utils.h" using namespace iflytop; -#define UART_RX_OVERTIME 100 +#define UART_RX_OVERTIME 200 #define TAG "RemoteControler" #define CMD_OVERTIME 500 @@ -35,6 +35,8 @@ void RemoteControlerUpper::initialize() { m_uart = AppHardware::ins()->remoteContolerUart; m_cmdlock.init(); zble_proto_utils_init(kzble_master); + + // m_cmdlock } void RemoteControlerUpper::regOnReport(on_report_cb_t on_report) { m_cb[m_ncb] = on_report; @@ -160,18 +162,18 @@ bool RemoteControlerUpper::txcmd(uint8_t* data, uint32_t len) { ZLOGI(TAG, "txcmd : %s(%d)", zhex2str(data, len), len); #endif - // HAL_UART_Transmit(m_uart, data, len, 100); - HAL_UART_Transmit_DMA(m_uart, data, len); + HAL_UART_Transmit(m_uart, data, len, 100); + // HAL_UART_Transmit_DMA(m_uart, data, len); bool suc = ackQueue.receive(&ackcache, CMD_OVERTIME); if (!suc) { - ZLOGI(TAG, "txcmd failed"); - HAL_UART_DMAStop(m_uart); + ZLOGI(TAG, "txcmd : %s(%d) fail", zhex2str(data, len), len); + // HAL_UART_DMAStop(m_uart); return false; } #if DEBUG ZLOGI(TAG, "ack : %s", zhex2str(ackcache.data, ackcache.datalen)); #endif - HAL_UART_DMAStop(m_uart); + // HAL_UART_DMAStop(m_uart); return true; } @@ -233,8 +235,16 @@ bool RemoteControlerUpper::setSlaveInDfuMode() { return suc; } -bool RemoteControlerUpper::startScan() { - zble_proto_utils_create_cmd_packet(txpacket, kzble_cmd_start_scan, m_index++, NULL, 0); +bool RemoteControlerUpper::startScan(const char* slaveName, bool autoConnect) { + // typedef struct { + // uint8_t slaveName[20]; + // uint8_t autoConnect; + // } zble_start_scan_t; + zble_start_scan_t scanparam = {0}; + if (slaveName) strncpy((char*)scanparam.slaveName, slaveName, 20); + scanparam.autoConnect = autoConnect; + + zble_proto_utils_create_cmd_packet(txpacket, kzble_cmd_start_scan, m_index++, (uint8_t*)&scanparam, sizeof(scanparam)); zble_proto_utils_set_packet_to(txpacket, kzble_master); bool suc = txcmd(txbuf, txpacket->packetlen); return suc; diff --git a/usrc/service/remote_controler.hpp b/usrc/service/remote_controler.hpp index 0322200..98e4858 100644 --- a/usrc/service/remote_controler.hpp +++ b/usrc/service/remote_controler.hpp @@ -16,7 +16,7 @@ class RemoteControlerUpper { on_report_cb_t m_cb[50]; int32_t m_ncb = 0; - zmutex m_cmdlock; + zmutex m_cmdlock = {"RemoteControlerUpperLock"}; uint8_t txbuf[255]; RemoteControlerReportPacket_t ackcache; @@ -24,6 +24,7 @@ class RemoteControlerUpper { zble_proto_packet_t* rxpacket = (zble_proto_packet_t*)ackcache.data; uint8_t m_index = 0; + public: RemoteControlerUpper() {}; @@ -62,7 +63,7 @@ class RemoteControlerUpper { bool setMasterInDfuMode(); bool setSlaveInDfuMode(); - bool startScan(); + bool startScan(const char* slaveName, bool autoConnect); bool stopScan(); /*********************************************************************************************************************** diff --git a/usrc/service/remote_controler_state_sync_service.cpp b/usrc/service/remote_controler_state_sync_service.cpp index fdfc3d9..4f34a66 100644 --- a/usrc/service/remote_controler_state_sync_service.cpp +++ b/usrc/service/remote_controler_state_sync_service.cpp @@ -6,10 +6,13 @@ using namespace iflytop; void RemoteControlerStateSyncService::initialize() { - AppEventBus::ins()->regOnEvent([this](AppEvent_t* event) { - if (event->type == kAppEvent_BleConnectedStateChangeEvent) { - zlock_guard lck(m_forceUpdateflagLock); + m_forceUpdateflagLock.init(); + + RCTRL->regOnReport([this](uint8_t* rx, int32_t len) { + zble_proto_packet_t* packet = (zble_proto_packet_t*)rx; + if (packet->cmd == kzble_report_connected_event) { m_forceUpdateflag = true; + return; } }); @@ -19,10 +22,11 @@ void RemoteControlerStateSyncService::initialize() { void RemoteControlerStateSyncService::startSync() { bleStateUpdateThread.start([this]() { // - hand_acid_mode_t runmode = khand_acid_m_unset_mode; + hand_acid_mode_t runmode = khand_acid_m_jog_mode; bool workState = false; bool forceupdate = false; + RCTRL->setRemoterState(runmode, workState); while (true) { if (!RCTRL->isConnected()) { osDelay(100); diff --git a/usrc/service/remote_controler_state_sync_service.hpp b/usrc/service/remote_controler_state_sync_service.hpp index 618685b..bcc4314 100644 --- a/usrc/service/remote_controler_state_sync_service.hpp +++ b/usrc/service/remote_controler_state_sync_service.hpp @@ -8,8 +8,9 @@ class RemoteControlerStateSyncService { private: /* data */ ZThread bleStateUpdateThread; - bool m_forceUpdateflag = false; - zmutex m_forceUpdateflagLock; + bool m_forceUpdateflag = false; + zmutex m_forceUpdateflagLock = {"m_forceUpdateflagLock"}; + public: static RemoteControlerStateSyncService* ins() {