| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /**
- * @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"
- /** @brief Class for nBus slave communication
- */
- class NbusSlave
- {
- public:
- /** Set nBus communicator.
- * @param nbus_comm: communicator to set
- */
- void setCommunicator(NbusCommunicator* nbus_comm);
- /** Set nBus address.
- * @param addr: address to set
- */
- void setModuleAddress(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 any nBus request and get response.
- * @param slave_frame: data to send
- * @return: response data frame
- */
- DataFrame* cmdProcessAnyRequest(DataFrame *slave_frame);
- /** Send nBus request and get sensor data.
- * @return: response data frame
- */
- DataFrame* cmdGetData();
- /** Send nBus request and get sensor format.
- * @return: response data frame
- */
- DataFrame* cmdGetFormat();
- /** Send nBus request and get sensor count.
- * @param check_hw: 1 = load from bus, 0 = use local cache
- * @return: number of sensors / actuators
- */
- Nbus_SensorCnt_t cmdGetSensorCnt(bool check_hw);
- private:
- /** Make nBus packet for selected function code.
- * @param fc: function code
- * @return: _slave_cache
- */
- DataFrame* _makePacket(Nbus_FC_e fc);
- NbusCommunicator* _communicator{nullptr}; ///< hardware bus communicator
- Nbus_SensorCnt_t _sensor_count{0, 0}; ///< number of sensors / actuators
- Nbus_PDU_t _pdu{0, 0, FC_ECHO}; ///< slave PDU
- uint8_t _slave_cache[NBUS_SLAVE_CACHE_SIZE]{0}; ///< slave temporary data
- DataFrame _cache_frame{_slave_cache, NBUS_SLAVE_CACHE_SIZE, TYPE_PLAIN, CRC_ON}; ///< data frame of _slave_cache
- };
- #endif /* SRC_APPSLAVE_H_ */
|