/* * @file AppBridge.cpp * @brief Implemetnácia mostup na modul nBus Slave. * @date Mar 2, 2025 * @author Juraj Dudak */ #include NbusSlave::NbusSlave() { _communicator = NULL; _pdu.ma = 0; _pdu.sa = 0; } NbusSlave::NbusSlave(uint8_t address, NbusCommunicator *comm) { _communicator = comm; _pdu.ma = address; } NbusSlave::~NbusSlave() { // empty } void NbusSlave::setCommunicator(NbusCommunicator *comm) { _communicator = comm; } void NbusSlave::setAddress(uint8_t address) { _pdu.ma = address; } uint8_t NbusSlave::getModuleAddress() { return _pdu.ma; } uint8_t NbusSlave::getSensorAddress() { return _pdu.sa; } bool NbusSlave::isActive() { // return _communicator != NULL; return _communicator != NULL && _pdu.ma != 0; } DataFrame *NbusSlave::nbus_echo(uint8_t *echo_data, uint8_t size) { _pdu.sa = SLAVE_ADDRESS_MODULE; _pdu.fc = FC_ECHO; for (uint32_t i = 0; i < size; i++) { _sensor_cache[i] = echo_data[i]; } _sensor_count = 0; return _communicator->sendAndReceive(&_pdu, _sensor_cache, size); } 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->sendAndReceive(&_pdu, _sensor_cache, 0); _sensor_count = df->GetFrame()[3]; return df; } DataFrame *NbusSlave::nbus_sensor_type(uint8_t sensor_index) { _pdu.sa = sensor_index; _pdu.fc = FC_SENSOR_TYPE; return _communicator->sendAndReceive(&_pdu, _sensor_cache, 0); } DataFrame *NbusSlave::nbus_module_info() { _pdu.sa = SLAVE_ADDRESS_MODULE; _pdu.fc = FC_INFO; return _communicator->sendAndReceive(&_pdu, _sensor_cache, 0); } DataFrame *NbusSlave::nbus_sensor_format(uint8_t sensor_index) { _pdu.sa = sensor_index; _pdu.fc = FC_SENSOR_FORMAT; return _communicator->sendAndReceive(&_pdu, _sensor_cache, 0); } DataFrame *NbusSlave::nbus_sensor_getData(uint8_t sensor_address) { _pdu.sa = sensor_address; _pdu.fc = FC_DATA; return _communicator->sendAndReceive(&_pdu, _sensor_cache, 0); } DataFrame *NbusSlave::nbus_sensor_parameter(uint8_t sensor_address, uint8_t parameter) { _pdu.sa = sensor_address; _pdu.fc = FC_PARAM; _sensor_cache[0] = parameter; return _communicator->sendAndReceive(&_pdu, _sensor_cache, 1); } DataFrame *NbusSlave::nbus_sensor_parameters(uint8_t sensor_address) { _pdu.sa = sensor_address; _pdu.fc = FC_PARAM; return _communicator->sendAndReceive(&_pdu, _sensor_cache, 0); }