ESPHome 2026.5.0-dev
Loading...
Searching...
No Matches
ble_nus.h
Go to the documentation of this file.
1#pragma once
2#ifdef USE_ZEPHYR
6#ifdef USE_LOGGER
8#endif
9#include <shell/shell_bt_nus.h>
10#include <atomic>
11
12namespace esphome::ble_nus {
13
14class BLENUS : public uart::UARTComponent, public Component {
15 enum TxStatus {
16 TX_DISABLED,
17 TX_ENABLED,
18 TX_BUSY,
19 };
20
21 public:
22 void setup() override;
23 void dump_config() override;
24 void loop() override;
25 void write_array(const uint8_t *data, size_t len) override;
26 bool peek_byte(uint8_t *data) override;
27 bool read_array(uint8_t *data, size_t len) override;
28 size_t available() override;
30 void check_logger_conflict() override {}
31 void set_expose_log(bool expose_log) { this->expose_log_ = expose_log; }
32#ifdef USE_LOGGER
33 void on_log(uint8_t level, const char *tag, const char *message, size_t message_len);
34#endif
35
36 protected:
37 static void send_enabled_callback(bt_nus_send_status status);
38 static void tx_callback(bt_conn *conn);
39 static void rx_callback(bt_conn *conn, const uint8_t *data, uint16_t len);
40 static void connected(bt_conn *conn, uint8_t err);
41 static void disconnected(bt_conn *conn, uint8_t reason);
42
43 std::atomic<bt_conn *> conn_ = nullptr;
44 bool expose_log_ = false;
45 atomic_t tx_status_ = ATOMIC_INIT(TX_DISABLED);
46 std::atomic<bool> connected_{};
47#ifdef ESPHOME_BLE_NUS_RX_RING_BUFFER_SIZE
48 // RX buffer for peek functionality
49 uint8_t peek_buffer_{0};
50 bool has_peek_{false};
51#endif
52};
53
54} // namespace esphome::ble_nus
55#endif
static void disconnected(bt_conn *conn, uint8_t reason)
Definition ble_nus.cpp:126
static void rx_callback(bt_conn *conn, const uint8_t *data, uint16_t len)
Definition ble_nus.cpp:157
size_t available() override
Definition ble_nus.cpp:96
static void connected(bt_conn *conn, uint8_t err)
Definition ble_nus.cpp:119
uart::UARTFlushResult flush() override
Definition ble_nus.cpp:106
void setup() override
Definition ble_nus.cpp:166
bool read_array(uint8_t *data, size_t len) override
Definition ble_nus.cpp:59
void set_expose_log(bool expose_log)
Definition ble_nus.h:31
void loop() override
Definition ble_nus.cpp:220
std::atomic< bt_conn * > conn_
Definition ble_nus.h:43
void check_logger_conflict() override
Definition ble_nus.h:30
static void tx_callback(bt_conn *conn)
Definition ble_nus.cpp:135
void write_array(const uint8_t *data, size_t len) override
Definition ble_nus.cpp:24
bool peek_byte(uint8_t *data) override
Definition ble_nus.cpp:40
void on_log(uint8_t level, const char *tag, const char *message, size_t message_len)
Definition ble_nus.cpp:197
void dump_config() override
Definition ble_nus.cpp:206
std::atomic< bool > connected_
Definition ble_nus.h:46
static void send_enabled_callback(bt_nus_send_status status)
Definition ble_nus.cpp:140
const char * message
Definition component.cpp:35
UARTFlushResult
Result of a flush() call.
const char * tag
Definition log.h:74
std::string size_t len
Definition helpers.h:1045