/** * @file AppBridge.h * @brief nBus Slave module declaration. * @date Nov 26, 2025 * @author Juraj Dudak, Matus Necas */ #ifndef SRC_APPSLAVE_H_ #define SRC_APPSLAVE_H_ #include "inttypes.h" #include "dataframe.h" #include "NbusCommunicator.h" /** Macro for module-only address. */ #define SLAVE_ADDRESS_MODULE 0 /** Class for nBus slave communication */ class NbusSlave { private: NbusCommunicator* _communicator{nullptr}; ///< hardware bus communicator Nbus_PDU_t _pdu{0, 0, FC_ECHO}; ///< slave PDU uint8_t _sensor_cache[16]{0}; ///< sensor temporary data uint8_t _sensor_count{0}; ///< number of sensors public: /** Set nBus communicator * @param nbus_comm: communicator to set */ void setCommunicator(NbusCommunicator* nbus_comm); /** Set nBus address * @param addr: address to set */ void setAddress(uint8_t addr); /** Get slave active status * @return: active status (1 = active, 0 = inactive) */ bool isActive(); /** Get nBus module address * @return: actual address (0 if not set) */ uint8_t getModuleAddress(); /** Send nBus request and get sensor count * @param check_hw: 1 = load from bus, 0 = use local cache * @return: response data frame */ uint8_t nbusSlaveCmd_getSensorCnt(bool check_hw); /** Send any nBus request and get response * @param slave_frame: data to send * @return: response data frame */ DataFrame * nbusSlaveCmd_processRequest(DataFrame *slave_frame); /** Send nBus request and get sensor data * @return: response data frame */ DataFrame * nbusSlaveCmd_getData(); }; #ifdef __cplusplus extern "C" { #endif #ifdef __cplusplus } #endif #endif /* SRC_APPSLAVE_H_ */