NbusBridge.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * NbusBridge.cpp
  3. *
  4. * Created on: Mar 7, 2025
  5. * Author: juraj
  6. */
  7. #include "NbusBridge.h"
  8. #include "dataframe.h"
  9. NbusBridge::NbusBridge(UART_HandleTypeDef *uartUbus) {
  10. _uartUbus = uartUbus;
  11. _num_slaves = 0;
  12. //_packet_rx = new DataFrame (_data_packet_rx, sizeof(_data_packet_rx), TYPE_PLAIN, CRC_ON);
  13. }
  14. NbusBridge::~NbusBridge() {
  15. // TODO Auto-generated destructor stub
  16. }
  17. void NbusBridge::transmit(DataFrame *packet) {
  18. HAL_UART_Transmit(_uartUbus, packet->GetFrame(), packet->GetLength(), 100);
  19. HAL_UARTEx_ReceiveToIdle_DMA(_uartUbus, _data_packet_rx, 64);
  20. }
  21. uint8_t NbusBridge::send(DataFrame *frame){
  22. frame->Commit();
  23. transmit(frame);
  24. return 0;
  25. }
  26. bool NbusBridge::addSlave(NbusSlave *slave){
  27. if(_num_slaves >= MAX_SLAVES){
  28. return false;
  29. }
  30. _slaves[_num_slaves++] = slave;
  31. return true;
  32. }
  33. bool NbusBridge::call_echo(uint8_t slave){
  34. if(slave >= _num_slaves){
  35. return false;
  36. }
  37. if(slave == 0){
  38. for(uint32_t i = 0 ; i<_num_slaves ; i++){
  39. _slaves[i]->nbus_echo();
  40. }
  41. return true;
  42. }
  43. _slaves[slave]->nbus_echo();
  44. return true;
  45. }