| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /*
- * @file AppBridge.cpp
- * @brief Implemetnácia modulu nBus Slave z pohľadu nBus Bridge
- * @date Mar 2, 2025
- * @author Juraj Dudak
- */
- #include <NbusSlave.h>
- 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, 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->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);
- }
|