/* * AppBridge.cpp * * Created on: Mar 3, 2025 * Author: juraj */ #include NbusSlave::NbusSlave(uint8_t address, NbusCommunicator *comm) { _address = address; _communicator = comm; _pdu.ma = address; } NbusSlave::~NbusSlave() { // TODO Auto-generated destructor stub } DataFrame* NbusSlave::nbus_echo() { _pdu.sa = SLAVE_ADDRESS_MODULE; _pdu.fc = FC_ECHO; _sensor_cache[0] = 60 + _pdu.ma; _sensor_cache[1] = 61 + _pdu.ma; _sensor_cache[2] = 62 + _pdu.ma; _sensor_cache[3] = 63 + _pdu.ma; _sensor_count = 0; return _communicator->send(&_pdu, _sensor_cache, 4); } uint8_t NbusSlave::nbus_get_sensor_count(bool check_hw) { if (_sensor_count == 0 || check_hw == true) { nbus_sensor_count(); } return _sensor_count; } DataFrame* NbusSlave::nbus_sensor_count() { _pdu.sa = SLAVE_ADDRESS_MODULE; _pdu.fc = FC_SENSOR_CNT; DataFrame* df = _communicator->send(&_pdu, _sensor_cache, 0); _sensor_count = df->GetFrame()[3]; return df; } DataFrame* NbusSlave::nbus_sensor_type(uint8_t sensor_address) { _pdu.sa = sensor_address; _pdu.fc = FC_SENSOR_TYPE; return _communicator->send(&_pdu, _sensor_cache, 0); } DataFrame* NbusSlave::nbus_module_info() { _pdu.sa = SLAVE_ADDRESS_MODULE; _pdu.fc = FC_INFO; return _communicator->send(&_pdu, _sensor_cache, 0); } DataFrame* NbusSlave::nbus_module_format() { _pdu.sa = SLAVE_ADDRESS_MODULE; _pdu.fc = FC_SENSOR_FORMAT; return _communicator->send(&_pdu, _sensor_cache, 0); } DataFrame* NbusSlave::nbus_sensors_parameters() { return nbus_sensor_parameters(0); } DataFrame* NbusSlave::nbus_sensor_parameters(uint8_t sensor_address) { _pdu.sa = sensor_address; _pdu.fc = FC_SENSOR_FORMAT; return _communicator->send(&_pdu, _sensor_cache, 0); } DataFrame* NbusSlave::nbus_sensor_parameter(uint8_t sensor_address, uint8_t parameter) { _pdu.sa = sensor_address; _pdu.fc = FC_SENSOR_FORMAT; _sensor_cache[0] = parameter; return _communicator->send(&_pdu, _sensor_cache, 1); } DataFrame* NbusSlave::nbus_sensor_getData(uint8_t sensor_address) { _pdu.sa = sensor_address; _pdu.fc = FC_DATA; return _communicator->send(&_pdu, _sensor_cache, 0); }