/* * NbusBridge.cpp * * Created on: Mar 7, 2025 * Author: juraj */ #include "NbusBridge.h" #include "dataframe.h" NbusBridge::NbusBridge(UART_HandleTypeDef *uartUbus) { _uartUbus = uartUbus; _num_slaves = 0; //_packet_rx = new DataFrame (_data_packet_rx, sizeof(_data_packet_rx), TYPE_PLAIN, CRC_ON); } NbusBridge::~NbusBridge() { // TODO Auto-generated destructor stub } void NbusBridge::transmit(DataFrame *packet) { HAL_UART_Transmit(_uartUbus, packet->GetFrame(), packet->GetLength(), 100); HAL_UARTEx_ReceiveToIdle_DMA(_uartUbus, _data_packet_rx, 64); } uint8_t NbusBridge::send(DataFrame *frame){ frame->Commit(); transmit(frame); return 0; } bool NbusBridge::addSlave(NbusSlave *slave){ if(_num_slaves >= MAX_SLAVES){ return false; } _slaves[_num_slaves++] = slave; return true; } bool NbusBridge::call_echo(uint8_t slave){ if(slave >= _num_slaves){ return false; } if(slave == 0){ for(uint32_t i = 0 ; i<_num_slaves ; i++){ _slaves[i]->nbus_echo(); } return true; } _slaves[slave]->nbus_echo(); return true; }