From 95626e25193bdb17428bf4edca04af30f1306c04 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sat, 21 Oct 2023 14:38:57 +0800 Subject: [PATCH] update --- api/i_cmdparser.hpp | 4 ++-- protocol_parser.cpp | 9 ++++++++- protocol_parser.hpp | 5 ++++- protocol_proxy.hpp | 5 ++++- zmodule_device_manager.cpp | 15 +++++++++++++++ zmodule_device_manager.hpp | 4 ++-- 6 files changed, 35 insertions(+), 7 deletions(-) diff --git a/api/i_cmdparser.hpp b/api/i_cmdparser.hpp index 61bf245..7ab825f 100644 --- a/api/i_cmdparser.hpp +++ b/api/i_cmdparser.hpp @@ -26,14 +26,14 @@ class ICmdParserACK { int32_t rawlen; int32_t *getAck(int index) { - if (index < 0 || index >= rawlen / sizeof(int32_t)) { + if (index < 0 || index >= rawlen / (int)sizeof(int32_t)) { return nullptr; } return (int32_t *)rawdata + index; } int32_t getAckInt32Val(int index) { - if (index < 0 || index >= rawlen / sizeof(int32_t)) { + if (index < 0 || index >= rawlen / (int)sizeof(int32_t)) { return 0; } return *((int32_t *)rawdata + index); diff --git a/protocol_parser.cpp b/protocol_parser.cpp index 1cb3e30..890bd82 100644 --- a/protocol_parser.cpp +++ b/protocol_parser.cpp @@ -67,7 +67,14 @@ void ZIProtocolParser::initialize(IZCanCmder* cancmder) { m_cancmder = cancmder; m_cancmder->registerListener(this); } -void ZIProtocolParser::registerModule(uint16_t id, ZIModule* module) { m_modulers[id] = module; } +void ZIProtocolParser::_registerModule(uint16_t id, ZIModule* module) { m_modulers[id] = module; } +void ZIProtocolParser::registerModule(ZIModule* module) { + int32_t moduleid = 0; + module->getid(&moduleid); + uint16_t id = moduleid; + _registerModule(id, module); +} + void ZIProtocolParser::onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, int32_t len) { uint16_t submoduleid = rxcmd->submoduleid; auto it = m_modulers.find(submoduleid); diff --git a/protocol_parser.hpp b/protocol_parser.hpp index e3c6eed..332e9a5 100644 --- a/protocol_parser.hpp +++ b/protocol_parser.hpp @@ -13,7 +13,10 @@ class ZIProtocolParser : public IZcanCmderListener { public: void initialize(IZCanCmder* cancmder); virtual void onRceivePacket(zcr_cmd_header_t* rxcmd, uint8_t* data, int32_t len); - void registerModule(uint16_t id, ZIModule* module); + void registerModule(ZIModule* module); + + private: + void _registerModule(uint16_t id, ZIModule* module); }; } // namespace iflytop \ No newline at end of file diff --git a/protocol_proxy.hpp b/protocol_proxy.hpp index 28bd038..269da52 100644 --- a/protocol_proxy.hpp +++ b/protocol_proxy.hpp @@ -14,7 +14,10 @@ class ZIProtocolProxy : public ZIMotor, // int32_t m_id = 0; public: - void initialize(IZCanCmder *cancmder, int32_t id); + void initialize(int32_t moduleId,IZcanCmderMaster *cancmder) { + m_cancmder = cancmder; + m_id = moduleId; + } virtual int32_t getid(int32_t *id) { *id = m_id; diff --git a/zmodule_device_manager.cpp b/zmodule_device_manager.cpp index cfbd0f2..ff52436 100644 --- a/zmodule_device_manager.cpp +++ b/zmodule_device_manager.cpp @@ -1,4 +1,6 @@ #include "zmodule_device_manager.hpp" + +#include using namespace iflytop; using namespace std; @@ -9,6 +11,19 @@ using namespace std; return ecode; \ } \ return module->functionName(__VA_ARGS__); + +void ZModuleDeviceManager::initialize(IZcanCmderMaster *cancmder) { + m_cancmder = cancmder; + assert(m_cancmder != nullptr); +} +void ZModuleDeviceManager::registerModule(ZIModule *module) { + assert(module != nullptr); + int32_t id = 0; + module->getid(&id); + uint16_t id16 = id; + m_modulers[id16] = module; +} + /******************************************************************************* * ZIModule * *******************************************************************************/ diff --git a/zmodule_device_manager.hpp b/zmodule_device_manager.hpp index ef2a565..abfff8a 100644 --- a/zmodule_device_manager.hpp +++ b/zmodule_device_manager.hpp @@ -12,8 +12,8 @@ class ZModuleDeviceManager { IZcanCmderMaster *m_cancmder = nullptr; public: - void initialize(); - void registerModule(uint16_t id, ZIModule *module); + void initialize(IZcanCmderMaster *m_cancmder); + void registerModule(ZIModule *module); /******************************************************************************* * ZIModule * *******************************************************************************/