|
|
@ -2,8 +2,8 @@ |
|
|
|
|
|
|
|
#ifdef HAL_CAN_MODULE_ENABLED
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
using namespace iflytop; |
|
|
|
|
|
|
|
#define TAG "IflytopCanProtocolStackProcesser"
|
|
|
@ -12,7 +12,6 @@ using namespace iflytop; |
|
|
|
|
|
|
|
IflytopCanProtocolStackProcesser::IflytopCanProtocolStackProcesser() { |
|
|
|
memset(&m_config, 0, sizeof(m_config)); |
|
|
|
m_listener = NULL; |
|
|
|
m_regList = NULL; |
|
|
|
m_regListSize = 0; |
|
|
|
m_canOnRxDataFlag = false; |
|
|
@ -110,7 +109,9 @@ void IflytopCanProtocolStackProcesser::initialize(cfg_t *config) { |
|
|
|
} |
|
|
|
void IflytopCanProtocolStackProcesser::registerListener( //
|
|
|
|
IflytopCanProtocolStackProcesserListener *listener) { //
|
|
|
|
m_listener = listener; |
|
|
|
ZASSERT(m_listenerSize < ZARRAY_SIZE(m_listeners)); |
|
|
|
m_listeners[m_listenerSize] = listener; |
|
|
|
m_listenerSize++; |
|
|
|
} |
|
|
|
void IflytopCanProtocolStackProcesser::periodicJob() { |
|
|
|
LoopJobContext loopContext = {0}; |
|
|
@ -436,7 +437,7 @@ HAL_StatusTypeDef IflytopCanProtocolStackProcesser::activateRxIT() { |
|
|
|
return hal_status; |
|
|
|
} |
|
|
|
HAL_StatusTypeDef IflytopCanProtocolStackProcesser::deactivateRxIT() { |
|
|
|
HAL_StatusTypeDef hal_status = HAL_ERROR; |
|
|
|
HAL_StatusTypeDef hal_status = HAL_ERROR; |
|
|
|
if (m_config->rxfifoNum == CAN_RX_FIFO0) { |
|
|
|
hal_status = HAL_CAN_DeactivateNotification(m_config->canHandle, CAN_IT_RX_FIFO0_MSG_PENDING); |
|
|
|
} else if (m_config->rxfifoNum == CAN_RX_FIFO1) { |
|
|
@ -684,7 +685,13 @@ icps::error_t IflytopCanProtocolStackProcesser::callOnHostRegisterWriteEvent(icp |
|
|
|
writeEvent.newvalue = newvalue; |
|
|
|
writeEvent.oldvalue = oldvalue; |
|
|
|
writeEvent.reg = reg; |
|
|
|
if (m_listener) return m_listener->onHostRegisterWriteEvent(this, &writeEvent); |
|
|
|
// if (m_listener) return m_listener->onHostRegisterWriteEvent(this, &writeEvent);
|
|
|
|
for (size_t i = 0; i < m_listenerSize; i++) { |
|
|
|
if (m_listeners[i]->isThisRegOwnToMe(this, reg)) { |
|
|
|
return m_listeners[i]->onHostRegisterWriteEvent(this, &writeEvent); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
newvalue = writeEvent.newvalue; |
|
|
|
return icps::kSuccess; |
|
|
|
} |
|
|
@ -692,7 +699,12 @@ icps::error_t IflytopCanProtocolStackProcesser::callOnHostRegisterReadEvent(icps |
|
|
|
icps::ReadEvent eve = {0}; |
|
|
|
eve.reg = reg; |
|
|
|
eve.value = value; |
|
|
|
if (m_listener) return m_listener->onHostRegisterReadEvent(this, &eve); |
|
|
|
|
|
|
|
for (size_t i = 0; i < m_listenerSize; i++) { |
|
|
|
if (m_listeners[i]->isThisRegOwnToMe(this, reg)) { |
|
|
|
return m_listeners[i]->onHostRegisterReadEvent(this, &eve); |
|
|
|
} |
|
|
|
} |
|
|
|
value = eve.value; |
|
|
|
return icps::kSuccess; |
|
|
|
} |
|
|
@ -700,7 +712,14 @@ void IflytopCanProtocolStackProcesser::callOnRegisterValueAutoReportEvent(icps:: |
|
|
|
icps::ReportEvent eve = {0}; |
|
|
|
eve.reg = reg; |
|
|
|
eve.value = value; |
|
|
|
if (m_listener) m_listener->onHostRegisterReportEvent(this, &eve); |
|
|
|
// if (m_listener) m_listener->onHostRegisterReportEvent(this, &eve);
|
|
|
|
|
|
|
|
for (size_t i = 0; i < m_listenerSize; i++) { |
|
|
|
if (m_listeners[i]->isThisRegOwnToMe(this, reg)) { |
|
|
|
m_listeners[i]->onHostRegisterReportEvent(this, &eve); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
value = eve.value; |
|
|
|
} |
|
|
|
#if 1
|
|
|
@ -709,7 +728,13 @@ void IflytopCanProtocolStackProcesser::callOnRegisterExtEvent(icps::Reg_t *reg, |
|
|
|
eve.reg = reg; |
|
|
|
eve.value = value; |
|
|
|
eve.extRegSubOff = subregindex; |
|
|
|
if (m_listener) m_listener->onHostRegisterReportEvent(this, &eve); |
|
|
|
// if (m_listener) m_listener->onHostRegisterReportEvent(this, &eve);
|
|
|
|
|
|
|
|
for (size_t i = 0; i < m_listenerSize; i++) { |
|
|
|
if (m_listeners[i]->isThisRegOwnToMe(this, reg)) { |
|
|
|
m_listeners[i]->onHostRegisterReportEvent(this, &eve); |
|
|
|
} |
|
|
|
} |
|
|
|
value = eve.value; |
|
|
|
} |
|
|
|
#endif
|
|
|
|