| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #ifdef NBUS_NODE_TYPE_SLAVE
- #include "nbus_app_interface_esp32.h"
- static NbusLoopEsp32 *_loop_driver;
- static bool _in_transmission = false;
- static uint32_t _rx_size = 0;
- nBusPlatformInterface_t* nbus_platform_init(NbusLoopEsp32 *loop_driver)
- {
- #if NBUS_USE_LED
- pinMode(NBUS_LED_PIN, OUTPUT);
- #if NBUS_LED_POLARITY_REVERSED
- digitalWrite(NBUS_LED_PIN, HIGH);
- #else
- digitalWrite(NBUS_LED_PIN, LOW);
- #endif // POLARITY
- #endif // NBUS_USE_LED
- _loop_driver = loop_driver;
- return &nbus_hw_platform;
- }
- static inline void uart_send(uint8_t *data, int n)
- {
- _loop_driver->accessStream().write(data, n);
- }
- static inline void uart_receive(uint8_t *dataNBUS, int n)
- {
- _loop_driver->setData(dataNBUS, n);
- }
- static inline void led_on()
- {
- #if NBUS_USE_LED
- #if NBUS_LED_POLARITY_REVERSED
- digitalWrite(NBUS_LED_PIN, LOW);
- #else
- digitalWrite(NBUS_LED_PIN, HIGH);
- #endif // POLARITY
- #endif // NBUS_USE_LED
- }
- static inline void led_off()
- {
- #if NBUS_USE_LED
- #if NBUS_LED_POLARITY_REVERSED
- digitalWrite(NBUS_LED_PIN, HIGH);
- #else
- digitalWrite(NBUS_LED_PIN, LOW);
- #endif // POLARITY
- #endif // NBUS_USE_LED
- }
- static inline void led_toggle()
- {
- #if NBUS_USE_LED
- digitalWrite(NBUS_LED_PIN, !digitalRead(NBUS_LED_PIN));
- #endif // NBUS_USE_LED
- }
- static inline uint32_t get_time()
- {
- return millis();
- }
- static inline void app_delay(uint8_t ms)
- {
- delay(ms);
- }
- static inline uint8_t loop_callback(nBusStateCallbackType_t state_check)
- {
- if (state_check == CallbackType_SENSOR)
- {
- return 0;
- }
- if (state_check == CallbackType_UART)
- {
- return 1;
- }
- return 0;
- }
- uint8_t read_rx_packet(uint8_t *data, uint8_t *length)
- {
- // data buffers are already interconnected
- *length = _rx_size;
- _rx_size = 0;
- return *length > 0;
- }
- void nbus_platform_loop()
- {
- _rx_size = _loop_driver->receiveData();
- if (_in_transmission == false && _loop_driver->isReceiving() == true)
- {
- led_on();
- _in_transmission = true;
- }
-
- if (_in_transmission == true && _loop_driver->isReceiving() == false)
- {
- led_off();
- _in_transmission = false;
- }
- }
- nBusPlatformInterface_t nbus_hw_platform = {
- uart_receive,
- uart_send,
- led_on,
- led_off,
- led_toggle,
- app_delay,
- get_time,
- loop_callback,
- read_rx_packet
- };
- #endif // NBUS_NODE_TYPE
|