@@ -32,12 +32,28 @@ HCIVirtualTransportZephyrClass::~HCIVirtualTransportZephyrClass()
32
32
}
33
33
34
34
extern " C" void set_public_address (struct k_fifo *rx_queue);
35
+ extern " C" int bt_h4_vnd_setup (const struct device *dev);
36
+ struct h4_config {
37
+ const struct device *uart;
38
+ k_thread_stack_t *rx_thread_stack;
39
+ size_t rx_thread_stack_size;
40
+ struct k_thread *rx_thread;
41
+ };
42
+
35
43
int HCIVirtualTransportZephyrClass::begin ()
36
44
{
37
45
bt_enable_raw (__rx_queue);
38
- // bt_hci_raw_set_mode(BT_HCI_RAW_MODE_PASSTHROUGH);
46
+ #if defined(CONFIG_BT_HCI_SETUP)
47
+ const struct device *dev = DEVICE_DT_GET (DT_CHOSEN (zephyr_bt_hci));
48
+ if (!dev) {
49
+ return 0 ;
50
+ }
51
+ const struct h4_config *cfg = (const struct h4_config *)dev->config ;
52
+ bt_h4_vnd_setup (cfg->uart );
53
+ #else
39
54
set_public_address (__rx_queue);
40
- bt_hci_raw_set_mode (BT_HCI_RAW_MODE_H4);
55
+ #endif
56
+
41
57
rxbuf.clear ();
42
58
return 1 ;
43
59
}
@@ -93,7 +109,7 @@ int HCIVirtualTransportZephyrClass::read()
93
109
94
110
size_t HCIVirtualTransportZephyrClass::write (const uint8_t * data, size_t length)
95
111
{
96
- struct net_buf *__net_buf = bt_buf_get_tx (BT_BUF_H4, K_MSEC ( 10 ), data, length);
112
+ struct net_buf *__net_buf = bt_buf_get_tx (bt_buf_type_from_h4 (data[ 0 ], BT_BUF_OUT ), K_FOREVER, & data[ 1 ] , length - 1 );
97
113
if (__net_buf) {
98
114
auto err = bt_send (__net_buf);
99
115
if (err) {
0 commit comments