|
|
@@ -25,7 +25,6 @@ static const uint8_t __crc8x_table[] = {
|
|
|
0xCB, 0xE6, 0xE1, 0xE8, 0xEF, 0xFA, 0xFD, 0xF4, 0xF3};
|
|
|
|
|
|
|
|
|
-
|
|
|
NbusBridge::NbusBridge(NbusCommunicator *nbus_communicator)
|
|
|
: _communicator(nbus_communicator)
|
|
|
{
|
|
|
@@ -39,28 +38,28 @@ void NbusBridge::scanNetwork()
|
|
|
_num_slaves = 0;
|
|
|
|
|
|
uint8_t *response_raw;
|
|
|
- Nbus_PDU_t pdu = {NBUS_SLAVE_ADDRESS_MODULE, NBUS_SLAVE_ADDRESS_MODULE, FC_ECHO};
|
|
|
- uint8_t data[] = ECHO_SCAN_DATA;
|
|
|
+ Nbus_PDU_t pdu = {NBUS_BROADCAST_ADDRESS, NBUS_BROADCAST_ADDRESS, FC_ECHO};
|
|
|
+ uint8_t data[] = {NBUS_BRIDGE_ECHO_SCAN_BYTE0, NBUS_BRIDGE_ECHO_SCAN_BYTE1, NBUS_BRIDGE_ECHO_SCAN_BYTE2, NBUS_BRIDGE_ECHO_SCAN_BYTE3};
|
|
|
uint8_t slave_index = 0;
|
|
|
|
|
|
- for (uint32_t i = 1; i < MAX_SLAVES; i++)
|
|
|
+ for (uint32_t i = 1; i < NBUS_BRIDGE_MAX_SLAVES; i++)
|
|
|
{
|
|
|
_slave_adress[i] = 0;
|
|
|
}
|
|
|
|
|
|
- for (uint32_t i = 1; i < MAX_SLAVES; i++)
|
|
|
+ for (uint32_t i = 1; i < NBUS_BRIDGE_MAX_SLAVES; i++)
|
|
|
{
|
|
|
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_3);
|
|
|
pdu.ma = i;
|
|
|
|
|
|
- _worker_frame_ptr = _communicator->sendAndReceiveSlave(_makePacket(pdu, data, ECHO_SCAN_LENGTH));
|
|
|
+ _worker_frame_ptr = _communicator->sendAndReceiveSlave(_makePacket(pdu, data, NBUS_BRIDGE_ECHO_SCAN_SIZE));
|
|
|
|
|
|
if (!_worker_frame_ptr->IsEmpty())
|
|
|
{
|
|
|
response_raw = _worker_frame_ptr->GetFrame();
|
|
|
|
|
|
- if (DATA0_TX_ADDRESS(response_raw + 0) == ECHO_SCAN_CHAR0 && DATA0_TX_ADDRESS(response_raw + 1) == ECHO_SCAN_CHAR1 &&
|
|
|
- DATA0_TX_ADDRESS(response_raw + 2) == ECHO_SCAN_CHAR2 && DATA0_TX_ADDRESS(response_raw + 3) == ECHO_SCAN_CHAR3)
|
|
|
+ if (NBUS_TX_DATA0(response_raw + 0) == NBUS_BRIDGE_ECHO_SCAN_BYTE0 && NBUS_TX_DATA0(response_raw + 1) == NBUS_BRIDGE_ECHO_SCAN_BYTE1 &&
|
|
|
+ NBUS_TX_DATA0(response_raw + 2) == NBUS_BRIDGE_ECHO_SCAN_BYTE2 && NBUS_TX_DATA0(response_raw + 3) == NBUS_BRIDGE_ECHO_SCAN_BYTE3)
|
|
|
{
|
|
|
_num_slaves++;
|
|
|
_slaves[i].setAddress(i);
|
|
|
@@ -78,7 +77,7 @@ void NbusBridge::processRequest(uint8_t *rxFrame, uint8_t size)
|
|
|
{
|
|
|
uint8_t crcC = _crc8x_fast(rxFrame, size - 1);
|
|
|
|
|
|
- if (crcC != CRC8_RX_ADDRESS(rxFrame, size))
|
|
|
+ if (crcC != NBUS_RX_CRC8(rxFrame, size))
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
@@ -87,9 +86,9 @@ void NbusBridge::processRequest(uint8_t *rxFrame, uint8_t size)
|
|
|
_pdu.sa = rxFrame[1];
|
|
|
_pdu.fc = (Nbus_FC_e)rxFrame[2];
|
|
|
|
|
|
- if (_pdu.ma == BROADCAST_ADDRESS)
|
|
|
+ if (_pdu.ma == NBUS_BROADCAST_ADDRESS)
|
|
|
{
|
|
|
- if (_pdu.sa == BRIDGE_ADDRESS)
|
|
|
+ if (_pdu.sa == NBUS_BRIDGE_ADDRESS)
|
|
|
{
|
|
|
_processBridgeRequest(rxFrame, size);
|
|
|
}
|
|
|
@@ -136,7 +135,7 @@ void NbusBridge::processRunningState()
|
|
|
}
|
|
|
|
|
|
/// TODO toto sa MI NEPACI, TREBA VYRIESIT INAK!!!!!!
|
|
|
- HAL_Delay(BRIDGE_RUNNING_STATE_DELAY); // TREBA VYSKUSAT
|
|
|
+ HAL_Delay(NBUS_BRIDGE_RUNNING_STATE_DELAY); // TREBA VYSKUSAT
|
|
|
}
|
|
|
|
|
|
uint8_t NbusBridge::_crc8x_fast(void const *mem, uint16_t len)
|
|
|
@@ -153,7 +152,7 @@ uint8_t NbusBridge::_crc8x_fast(void const *mem, uint16_t len)
|
|
|
|
|
|
NbusSlave *NbusBridge::_getSlave(uint8_t index)
|
|
|
{
|
|
|
- if (index >= 0 && index < MAX_SLAVES)
|
|
|
+ if (index >= 0 && index < NBUS_BRIDGE_MAX_SLAVES)
|
|
|
{
|
|
|
if (_slaves[index].isActive())
|
|
|
{
|
|
|
@@ -171,21 +170,21 @@ void NbusBridge::_processBroadcast(uint8_t *rx_frame, uint8_t size)
|
|
|
|
|
|
void NbusBridge::_processBridgeRequest(uint8_t *rx_frame, uint8_t size)
|
|
|
{
|
|
|
- switch (FUNCTION_RX_CODE(rx_frame))
|
|
|
+ switch (NBUS_RX_FUNCTION_CODE(rx_frame))
|
|
|
{
|
|
|
case FC_ECHO: /* GET 1 */
|
|
|
_worker_frame_ptr = _forwardPacket(rx_frame, size);
|
|
|
break;
|
|
|
|
|
|
- case SET_CMD(FC_STOP): /* SET 2 */
|
|
|
+ case NBUS_SET_CMD(FC_STOP): /* SET 2 */
|
|
|
_cmdSetStop();
|
|
|
break;
|
|
|
|
|
|
- case SET_CMD(FC_START): /* SET 3 */
|
|
|
+ case NBUS_SET_CMD(FC_START): /* SET 3 */
|
|
|
_cmdSetStart();
|
|
|
break;
|
|
|
|
|
|
- case SET_CMD(FC_RESET): /* SET 9 */
|
|
|
+ case NBUS_SET_CMD(FC_RESET): /* SET 9 */
|
|
|
_scan_request = 1;
|
|
|
_worker_frame_ptr = _rspSetStatus(STATUS_SUCCESS);
|
|
|
break;
|
|
|
@@ -211,7 +210,7 @@ void NbusBridge::_processBridgeRequest(uint8_t *rx_frame, uint8_t size)
|
|
|
|
|
|
void NbusBridge::_processSlaveRequest(uint8_t *rx_frame, uint8_t size)
|
|
|
{
|
|
|
- NbusSlave *selected_slave = _getSlave(MODULE_RX_ADDRESS(rx_frame));
|
|
|
+ NbusSlave *selected_slave = _getSlave(NBUS_RX_MODULE_ADDRESS(rx_frame));
|
|
|
|
|
|
if (selected_slave == nullptr)
|
|
|
{
|
|
|
@@ -239,12 +238,12 @@ DataFrame* NbusBridge::_cmdGetData()
|
|
|
{
|
|
|
_bridge_cast_frame.AddInt8(slave_ptr->getModuleAddress());
|
|
|
_worker_frame_ptr = slave_ptr->cmdGetData();
|
|
|
- _bridge_cast_frame.AddArray(&DATA0_RX_ADDRESS(_worker_frame_ptr->GetFrame() + 1), _worker_frame_ptr->GetLength() - (RX_META_SIZE + 1)); // add without length byte
|
|
|
+ _bridge_cast_frame.AddArray(&NBUS_RX_DATA0(_worker_frame_ptr->GetFrame() + 1), _worker_frame_ptr->GetLength() - (NBUS_RX_META_SIZE + 1)); // add without length byte
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- _bridge_cast_frame.AddInt8(BRIDGE_TERMINATOR);
|
|
|
- _bridge_cast_frame.AddInt8(BRIDGE_TERMINATOR);
|
|
|
+ _bridge_cast_frame.AddInt8(NBUS_BRIDGE_TERMINATOR);
|
|
|
+ _bridge_cast_frame.AddInt8(NBUS_BRIDGE_TERMINATOR);
|
|
|
_bridge_cast_frame.Commit();
|
|
|
|
|
|
return &_bridge_cast_frame;
|
|
|
@@ -253,12 +252,12 @@ DataFrame* NbusBridge::_cmdGetData()
|
|
|
DataFrame * NbusBridge::_cmdGetInfo()
|
|
|
{
|
|
|
_default_frame.Init();
|
|
|
- _default_frame.AddUint8(BROADCAST_ADDRESS);
|
|
|
- _default_frame.AddUint8(BRIDGE_ADDRESS);
|
|
|
+ _default_frame.AddUint8(NBUS_BROADCAST_ADDRESS);
|
|
|
+ _default_frame.AddUint8(NBUS_BRIDGE_ADDRESS);
|
|
|
_default_frame.AddUint8(FC_INFO);
|
|
|
- _default_frame.AddArray((uint8_t*)BRIDGE_INFO_VERSION, 3);
|
|
|
- _default_frame.AddArray((uint8_t*)BRIDGE_INFO_HW_FAMILY, 3);
|
|
|
- _default_frame.AddArray((uint8_t*)BRIDGE_INFO_HW_VERSION, 3);
|
|
|
+ _default_frame.AddArray((uint8_t*)NBUS_BRIDGE_INFO_VERSION, 3);
|
|
|
+ _default_frame.AddArray((uint8_t*)NBUS_BRIDGE_INFO_HW_FAMILY, 3);
|
|
|
+ _default_frame.AddArray((uint8_t*)NBUS_BRIDGE_INFO_HW_VERSION, 3);
|
|
|
_default_frame.Commit();
|
|
|
|
|
|
return &_default_frame;
|
|
|
@@ -267,8 +266,8 @@ DataFrame * NbusBridge::_cmdGetInfo()
|
|
|
DataFrame* NbusBridge::_cmdGetSlaves()
|
|
|
{
|
|
|
_default_frame.Init();
|
|
|
- _default_frame.AddUint8(BROADCAST_ADDRESS);
|
|
|
- _default_frame.AddUint8(BRIDGE_ADDRESS);
|
|
|
+ _default_frame.AddUint8(NBUS_BROADCAST_ADDRESS);
|
|
|
+ _default_frame.AddUint8(NBUS_BRIDGE_ADDRESS);
|
|
|
_default_frame.AddUint8(FC_SLAVES);
|
|
|
|
|
|
for (uint8_t i = 0; i < _num_slaves; i++)
|
|
|
@@ -284,14 +283,14 @@ DataFrame* NbusBridge::_cmdGetSlaves()
|
|
|
|
|
|
void NbusBridge::_cmdSetStop()
|
|
|
{
|
|
|
- _pdu.sa = BROADCAST_ADDRESS;
|
|
|
+ _pdu.sa = NBUS_BROADCAST_ADDRESS;
|
|
|
_communicator->sendToSlave(_makePacket(_pdu, nullptr, 0));
|
|
|
_run_state = STATE_TO_STOP;
|
|
|
}
|
|
|
|
|
|
void NbusBridge::_cmdSetStart()
|
|
|
{
|
|
|
- _pdu.sa = BROADCAST_ADDRESS;
|
|
|
+ _pdu.sa = NBUS_BROADCAST_ADDRESS;
|
|
|
_communicator->sendToSlave(_makePacket(_pdu, nullptr, 0));
|
|
|
_run_state = STATE_RUNNING;
|
|
|
}
|
|
|
@@ -301,7 +300,7 @@ DataFrame* NbusBridge::_rspSetError(Nbus_EC_e error_code)
|
|
|
_default_frame.Init();
|
|
|
_default_frame.AddUint8(_pdu.ma);
|
|
|
_default_frame.AddUint8(_pdu.sa);
|
|
|
- _default_frame.AddUint8(SET_ERR_RESPONSE(_pdu.fc));
|
|
|
+ _default_frame.AddUint8(NBUS_SET_ERR_RESPONSE(_pdu.fc));
|
|
|
_default_frame.AddUint8(error_code);
|
|
|
_default_frame.Commit();
|
|
|
|