Skip to content

Commit 3144971

Browse files
chengkai15xiaoxiang781216
authored andcommitted
bluetooth: extract btuart_register interface
add btuart_create interface, which would be more flexible in complex cases. And extract btuart_register interface. Signed-off-by: chengkai <[email protected]>
1 parent cae60fb commit 3144971

File tree

5 files changed

+70
-45
lines changed

5 files changed

+70
-45
lines changed

drivers/wireless/bluetooth/bt_uart.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,3 +326,39 @@ int btuart_ioctl(FAR struct bt_driver_s *dev,
326326
return -ENOTTY;
327327
}
328328
}
329+
330+
/****************************************************************************
331+
* Name: btuart_register
332+
*
333+
* Description:
334+
* Register the UART-based bluetooth driver.
335+
*
336+
* Input Parameters:
337+
* lower - an instance of the lower half driver interface
338+
*
339+
* Returned Value:
340+
* Zero is returned on success; a negated errno value is returned on any
341+
* failure.
342+
*
343+
****************************************************************************/
344+
345+
int btuart_register(FAR const struct btuart_lowerhalf_s *lower)
346+
{
347+
FAR struct bt_driver_s *driver;
348+
int ret;
349+
350+
ret = btuart_create(lower, &driver);
351+
if (ret < 0)
352+
{
353+
return ret;
354+
}
355+
356+
ret = bt_netdev_register(driver);
357+
if (ret < 0)
358+
{
359+
wlerr("ERROR: bt_netdev_register failed: %d\n", ret);
360+
kmm_free(driver);
361+
}
362+
363+
return ret;
364+
}

drivers/wireless/bluetooth/bt_uart_bcm4343x.c

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -379,10 +379,9 @@ static int load_bcm4343x_firmware(FAR const struct btuart_lowerhalf_s *lower)
379379
****************************************************************************/
380380

381381
/****************************************************************************
382-
* Name: btuart_register
382+
* Name: btuart_create
383383
*
384-
* Create the UART-based Bluetooth device and register it with the
385-
* Bluetooth stack.
384+
* Create the UART-based bluetooth device.
386385
*
387386
* Input Parameters:
388387
* lower - an instance of the lower half driver interface
@@ -393,7 +392,8 @@ static int load_bcm4343x_firmware(FAR const struct btuart_lowerhalf_s *lower)
393392
*
394393
****************************************************************************/
395394

396-
int btuart_register(FAR const struct btuart_lowerhalf_s *lower)
395+
int btuart_create(FAR const struct btuart_lowerhalf_s *lower,
396+
FAR struct bt_driver_s **driver)
397397
{
398398
FAR struct btuart_upperhalf_s *upper;
399399
int ret;
@@ -436,14 +436,6 @@ int btuart_register(FAR const struct btuart_lowerhalf_s *lower)
436436
return -EINVAL;
437437
}
438438

439-
/* And register the driver with the network and the Bluetooth stack. */
440-
441-
ret = bt_netdev_register(&upper->dev);
442-
if (ret < 0)
443-
{
444-
wlerr("ERROR: bt_netdev_register failed: %d\n", ret);
445-
kmm_free(upper);
446-
}
447-
439+
*driver = &upper->dev;
448440
return ret;
449441
}

drivers/wireless/bluetooth/bt_uart_cc2564.c

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -145,11 +145,9 @@ int load_cc2564_firmware(FAR const struct btuart_lowerhalf_s *lower)
145145
}
146146

147147
/****************************************************************************
148-
* Name: btuart_register
148+
* Name: btuart_create
149149
*
150-
* Description:
151-
* Create the UART-based Bluetooth device and register it with the
152-
* Bluetooth stack.
150+
* Create the UART-based bluetooth device.
153151
*
154152
* Input Parameters:
155153
* lower - an instance of the lower half driver interface
@@ -160,7 +158,8 @@ int load_cc2564_firmware(FAR const struct btuart_lowerhalf_s *lower)
160158
*
161159
****************************************************************************/
162160

163-
int btuart_register(FAR const struct btuart_lowerhalf_s *lower)
161+
int btuart_create(FAR const struct btuart_lowerhalf_s *lower,
162+
FAR struct bt_driver_s **driver)
164163
{
165164
FAR struct btuart_upperhalf_s *upper;
166165
int ret;
@@ -203,14 +202,6 @@ int btuart_register(FAR const struct btuart_lowerhalf_s *lower)
203202
return -EINVAL;
204203
}
205204

206-
/* And register the driver with the network and the Bluetooth stack. */
207-
208-
ret = bt_netdev_register(&upper->dev);
209-
if (ret < 0)
210-
{
211-
wlerr("ERROR: bt_netdev_register failed: %d\n", ret);
212-
kmm_free(upper);
213-
}
214-
205+
*driver = &upper->dev;
215206
return ret;
216207
}

drivers/wireless/bluetooth/bt_uart_generic.c

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,9 @@
3939
****************************************************************************/
4040

4141
/****************************************************************************
42-
* Name: btuart_register
42+
* Name: btuart_create
4343
*
44-
* Description:
45-
* Create the UART-based Bluetooth device and register it with the
46-
* Bluetooth stack.
44+
* Create the UART-based bluetooth device.
4745
*
4846
* Input Parameters:
4947
* lower - an instance of the lower half driver interface
@@ -54,10 +52,10 @@
5452
*
5553
****************************************************************************/
5654

57-
int btuart_register(FAR const struct btuart_lowerhalf_s *lower)
55+
int btuart_create(FAR const struct btuart_lowerhalf_s *lower,
56+
FAR struct bt_driver_s **driver)
5857
{
5958
FAR struct btuart_upperhalf_s *upper;
60-
int ret;
6159

6260
wlinfo("lower %p\n", lower);
6361

@@ -87,14 +85,6 @@ int btuart_register(FAR const struct btuart_lowerhalf_s *lower)
8785
upper->dev.ioctl = btuart_ioctl;
8886
upper->lower = lower;
8987

90-
/* And register the driver with the network and the Bluetooth stack. */
91-
92-
ret = bt_netdev_register(&upper->dev);
93-
if (ret < 0)
94-
{
95-
wlerr("ERROR: bt_netdev_registe failed: %d\n", ret);
96-
kmm_free(upper);
97-
}
98-
99-
return ret;
88+
*driver = &upper->dev;
89+
return OK;
10090
}

include/nuttx/wireless/bluetooth/bt_uart.h

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,12 +148,28 @@ struct btuart_lowerhalf_s
148148
* Public Function Prototypes
149149
****************************************************************************/
150150

151+
/****************************************************************************
152+
* Name: btuart_create
153+
*
154+
* Create the UART-based Bluetooth device.
155+
*
156+
* Input Parameters:
157+
* lower - an instance of the lower half driver interface
158+
*
159+
* Returned Value:
160+
* Zero is returned on success; a negated errno value is returned on any
161+
* failure.
162+
*
163+
****************************************************************************/
164+
165+
int btuart_create(FAR const struct btuart_lowerhalf_s *lower,
166+
FAR struct bt_driver_s **driver);
167+
151168
/****************************************************************************
152169
* Name: btuart_register
153170
*
154171
* Description:
155-
* Create the generic UART-based Bluetooth device and register it with the
156-
* Bluetooth stack.
172+
* Register the generic UART-based bluetooth driver.
157173
*
158174
* Input Parameters:
159175
* lower - an instance of the lower half driver interface

0 commit comments

Comments
 (0)