Browse Source

修改事件上报接口

change_pipette_api
zhaohe 2 years ago
parent
commit
4b222a92c6
  1. 8
      api/zi_event_bus.hpp
  2. 21
      protocol_event_bus_sender.cpp
  3. 2
      protocol_event_bus_sender.hpp
  4. 15
      zmodule_device_manager.cpp
  5. 6
      zmodule_device_manager.hpp

8
api/zi_event_bus.hpp

@ -8,9 +8,9 @@
namespace iflytop { namespace iflytop {
using namespace std; using namespace std;
typedef enum {
kreg_change_event = 1,
} event_type_t;
// typedef enum {
// kreg_change_event = 1,
// } event_type_t;
class ZIEventBusSender { class ZIEventBusSender {
public: public:
@ -20,6 +20,6 @@ class ZIEventBusSender {
* *
* @param moduleid * @param moduleid
*/ */
virtual void push_reg_state_change_event(int32_t moduleid, int32_t regindex, int32_t toval) = 0;
virtual void push_reg_state_change_event(int32_t moduleid, int32_t regindex, int32_t oldval, int32_t toval) = 0;
}; };
} // namespace iflytop } // namespace iflytop

21
protocol_event_bus_sender.cpp

@ -1,19 +1,24 @@
#include "protocol_event_bus_sender.hpp" #include "protocol_event_bus_sender.hpp"
#include "api/api.hpp" #include "api/api.hpp"
#include "cmdid.hpp"
namespace iflytop { namespace iflytop {
using namespace std; using namespace std;
void ProtocolEventBusSender::initialize(IZCanCmder* zcan_cmder) { m_zcan_cmder = zcan_cmder; } void ProtocolEventBusSender::initialize(IZCanCmder* zcan_cmder) { m_zcan_cmder = zcan_cmder; }
void ProtocolEventBusSender::push_reg_state_change_event(int32_t moduleid, int32_t event_id, int32_t eventval) {
zcr_cmd_header_t rx_cmd_header = {0};
int32_t data[4];
data[0] = kreg_change_event;
data[1] = moduleid;
data[2] = event_id;
data[3] = eventval;
m_zcan_cmder->triggerEvent(&rx_cmd_header, (uint8_t*)data, sizeof(data));
void ProtocolEventBusSender::push_reg_state_change_event(int32_t moduleid, int32_t regindex, int32_t oldval, int32_t toval) {
zcr_cmd_header_t cmd_header = {0};
int32_t data[3];
cmd_header.cmdmoduleid = moduleid;
cmd_header.cmdmoduleid = zcr::kevent_bus_reg_change_report >> 8;
cmd_header.submoduleid = zcr::kevent_bus_reg_change_report & 0xff;
data[1] = regindex;
data[2] = oldval;
data[3] = toval;
m_zcan_cmder->triggerEvent(&cmd_header, (uint8_t*)data, sizeof(data));
} }
} // namespace iflytop } // namespace iflytop

2
protocol_event_bus_sender.hpp

@ -8,6 +8,6 @@ class ProtocolEventBusSender : public ZIEventBusSender {
public: public:
void initialize(IZCanCmder* zcan_cmder); void initialize(IZCanCmder* zcan_cmder);
virtual void push_reg_state_change_event(int32_t moduleid, int32_t event_id, int32_t eventval) override;
virtual void push_reg_state_change_event(int32_t moduleid, int32_t regindex, int32_t oldval, int32_t toval) override;
}; };
} // namespace iflytop } // namespace iflytop

15
zmodule_device_manager.cpp

@ -18,15 +18,12 @@ void ZModuleDeviceManager::initialize(IZcanCmderMaster *cancmder) {
// assert(m_cancmder != nullptr); // assert(m_cancmder != nullptr);
if (m_cancmder) { if (m_cancmder) {
m_cancmder->regEventPacketListener([this](int32_t fromboard, zcr_cmd_header_t *packet, int32_t datalen) { m_cancmder->regEventPacketListener([this](int32_t fromboard, zcr_cmd_header_t *packet, int32_t datalen) {
if (datalen < 4) return;
int32_t *pdata = (int32_t *)packet->data;
int32_t event = pdata[0];
if (event == kreg_change_event) {
int32_t moduleid = pdata[1];
int32_t event_id = pdata[2];
int32_t eventval = pdata[3];
callOnRegValChangeEvent(moduleid, event_id, eventval);
if (CMDID(packet->cmdmoduleid, packet->subcmdid) == zcr::kevent_bus_reg_change_report) {
int32_t *pdata = (int32_t *)packet->data;
int32_t regindex = pdata[0];
int32_t regold = pdata[1];
int32_t regnew = pdata[2];
callOnRegValChangeEvent(packet->cmdmoduleid, regindex, regold, regnew);
} }
}); });
} }

6
zmodule_device_manager.hpp

@ -13,7 +13,7 @@ class ZModuleDeviceManager {
map<uint16_t, ZIModule *> m_modulers; map<uint16_t, ZIModule *> m_modulers;
IZcanCmderMaster *m_cancmder = nullptr; IZcanCmderMaster *m_cancmder = nullptr;
typedef function<void(int32_t moduleid, int32_t event_id, int32_t eventval)> regval_change_event_t;
typedef function<void(int32_t moduleid, int32_t regindex, int32_t oldval, int32_t toval)> regval_change_event_t;
regval_change_event_t m_on_reg_val_change_event_cb; regval_change_event_t m_on_reg_val_change_event_cb;
list<regval_change_event_t> m_on_reg_val_change_event_cbs; list<regval_change_event_t> m_on_reg_val_change_event_cbs;
@ -23,9 +23,9 @@ class ZModuleDeviceManager {
void registerModule(ZIModule *module); void registerModule(ZIModule *module);
void regOnRegValChangeEvent(regval_change_event_t on_regval_change_event) { m_on_reg_val_change_event_cbs.push_back(on_regval_change_event); } void regOnRegValChangeEvent(regval_change_event_t on_regval_change_event) { m_on_reg_val_change_event_cbs.push_back(on_regval_change_event); }
void callOnRegValChangeEvent(int32_t moduleid, int32_t event_id, int32_t eventval) {
void callOnRegValChangeEvent(int32_t moduleid, int32_t regindex, int32_t oldval, int32_t toval) {
for (auto &cb : m_on_reg_val_change_event_cbs) for (auto &cb : m_on_reg_val_change_event_cbs)
if (cb) cb(moduleid, event_id, eventval);
if (cb) cb(moduleid, regindex, oldval,toval);
} }
void for_each_module(function<void(int32_t moduleid)> cb) { void for_each_module(function<void(int32_t moduleid)> cb) {

Loading…
Cancel
Save