NbusSlave.cpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*
  2. * AppBridge.cpp
  3. *
  4. * Created on: Mar 3, 2025
  5. * Author: juraj
  6. */
  7. #include <NbusSlave.h>
  8. NbusSlave::NbusSlave(uint8_t address, NbusCommunicator *comm) {
  9. _address = address;
  10. _communicator = comm;
  11. _pdu.ma = address;
  12. }
  13. NbusSlave::~NbusSlave() {
  14. // TODO Auto-generated destructor stub
  15. }
  16. DataFrame* NbusSlave::nbus_echo() {
  17. _pdu.sa = SLAVE_ADDRESS_MODULE;
  18. _pdu.fc = FC_ECHO;
  19. _sensor_cache[0] = 60 + _pdu.ma;
  20. _sensor_cache[1] = 61 + _pdu.ma;
  21. _sensor_cache[2] = 62 + _pdu.ma;
  22. _sensor_cache[3] = 63 + _pdu.ma;
  23. _sensor_count = 0;
  24. return _communicator->send(&_pdu, _sensor_cache, 4);
  25. }
  26. uint8_t NbusSlave::nbus_get_sensor_count(bool check_hw) {
  27. if (_sensor_count == 0 || check_hw == true) {
  28. nbus_sensor_count();
  29. }
  30. return _sensor_count;
  31. }
  32. DataFrame* NbusSlave::nbus_sensor_count() {
  33. _pdu.sa = SLAVE_ADDRESS_MODULE;
  34. _pdu.fc = FC_SENSOR_CNT;
  35. DataFrame* df = _communicator->send(&_pdu, _sensor_cache, 0);
  36. _sensor_count = df->GetFrame()[3];
  37. return df;
  38. }
  39. DataFrame* NbusSlave::nbus_sensor_type(uint8_t sensor_address) {
  40. _pdu.sa = sensor_address;
  41. _pdu.fc = FC_SENSOR_TYPE;
  42. return _communicator->send(&_pdu, _sensor_cache, 0);
  43. }
  44. DataFrame* NbusSlave::nbus_module_info() {
  45. _pdu.sa = SLAVE_ADDRESS_MODULE;
  46. _pdu.fc = FC_INFO;
  47. return _communicator->send(&_pdu, _sensor_cache, 0);
  48. }
  49. DataFrame* NbusSlave::nbus_module_format() {
  50. _pdu.sa = SLAVE_ADDRESS_MODULE;
  51. _pdu.fc = FC_SENSOR_FORMAT;
  52. return _communicator->send(&_pdu, _sensor_cache, 0);
  53. }
  54. DataFrame* NbusSlave::nbus_sensors_parameters() {
  55. return nbus_sensor_parameters(0);
  56. }
  57. DataFrame* NbusSlave::nbus_sensor_parameters(uint8_t sensor_address) {
  58. _pdu.sa = sensor_address;
  59. _pdu.fc = FC_SENSOR_FORMAT;
  60. return _communicator->send(&_pdu, _sensor_cache, 0);
  61. }
  62. DataFrame* NbusSlave::nbus_sensor_parameter(uint8_t sensor_address, uint8_t parameter) {
  63. _pdu.sa = sensor_address;
  64. _pdu.fc = FC_SENSOR_FORMAT;
  65. _sensor_cache[0] = parameter;
  66. return _communicator->send(&_pdu, _sensor_cache, 1);
  67. }
  68. DataFrame* NbusSlave::nbus_sensor_getData(uint8_t sensor_address) {
  69. _pdu.sa = sensor_address;
  70. _pdu.fc = FC_DATA;
  71. return _communicator->send(&_pdu, _sensor_cache, 0);
  72. }