wireless/bluetooth and net/bluetooth: Clean up some garbage left in Kconfig file that broke 'make menuconfig'. Clean up some craziness with Bluetooth frame length definitions.

This commit is contained in:
Gregory Nutt 2018-04-01 15:21:58 -06:00
parent 7e05d5e9c7
commit aae0d92598
11 changed files with 44 additions and 100 deletions

View File

@ -46,13 +46,31 @@
* Public Function Prototypes * Public Function Prototypes
****************************************************************************/ ****************************************************************************/
/* REVISIT: Is there any header on the Bluetooth data as received by the /****************************************************************************
* network stack? * Pre-processor Definitions
****************************************************************************/
/* BLUETOOTH_MAX_FRAMELEN
* Maximum amount of data that can fit in a buffer.
*
* The biggest foreseeable buffer size requirement right now comes from
* the Bluetooth 4.2 SMP MTU which is 65. This then become 65 + 4 (L2CAP
* header) + 4 (ACL header) + 1 (H4 header) = 74. This also covers the
* biggest HCI commands and events which are a bit under the 70 byte
* mark.
*/ */
#warning REVISIT #define BLUETOOTH_SMP_MTU 65
#define BLUETOOTH_L2CAP_HDRLEN 4 /* Size of L2CAP header */
#define BLUETOOTH_ACL_HDRLEN 4 /* Size of ACL header */
#define BLUETOOTH_H4_HDRLEN 1 /* Size of H4 header */
#define BLUETOOTH_FRAME_HDRLEN \
(BLUETOOTH_L2CAP_HDRLEN + BLUETOOTH_ACL_HDRLEN + BLUETOOTH_H4_HDRLEN)
#define BLUETOOTH_MAX_FRAMELEN (BLUETOOTH_SMP_MTU + BLUETOOTH_FRAME_HDRLEN)
#define BLUETOOTH_HDRLEN 8 /* Size of L2CAP header */
#define BLUETOOTH_ADDRSIZE 6 #define BLUETOOTH_ADDRSIZE 6
#define BLUETOOTH_ADDRCOPY(d,s) memcpy((d),(s),BLUETOOTH_ADDRSIZE) #define BLUETOOTH_ADDRCOPY(d,s) memcpy((d),(s),BLUETOOTH_ADDRSIZE)
#define BLUETOOTH_ADDRCMP(a,b) (memcmp((a),(b),BLUETOOTH_ADDRSIZE) == 0) #define BLUETOOTH_ADDRCMP(a,b) (memcmp((a),(b),BLUETOOTH_ADDRSIZE) == 0)

View File

@ -49,22 +49,6 @@
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
/****************************************************************************
* Pre-processor Definitions
****************************************************************************/
/* BT_BUF_MAX_DATA
* Maximum amount of data that can fit in a buffer.
*
* The biggest foreseeable buffer size requirement right now comes from
* the Bluetooth 4.2 SMP MTU which is 65. This then become 65 + 4 (L2CAP
* header) + 4 (ACL header) + 1 (H4 header) = 74. This also covers the
* biggest HCI commands and events which are a bit under the 70 byte
* mark.
*/
#define BT_BUF_MAX_DATA 74
/**************************************************************************** /****************************************************************************
* Public Types * Public Types
****************************************************************************/ ****************************************************************************/

View File

@ -22,17 +22,6 @@ config NET_BLUETOOTH
if NET_BLUETOOTH if NET_BLUETOOTH
config NET_BLUETOOTH_FRAMELEN
int "Bluetooth Frame Length"
default 127
range 1 999999
---help---
For standard Bluetooth radios, this should always be 127 bytes.
However, some Bluetooth radios may non-standard frame lengths.
This setting is currently used only for detection data transfers
that would exceed the radio frame length.
config NET_BLUETOOTH_NCONNS config NET_BLUETOOTH_NCONNS
int "Max Bluetooth sockets" int "Max Bluetooth sockets"
default 4 default 4

View File

@ -65,28 +65,6 @@
#define BLUETOOTH_POOL_PREALLOCATED 0 #define BLUETOOTH_POOL_PREALLOCATED 0
#define BLUETOOTH_POOL_DYNAMIC 1 #define BLUETOOTH_POOL_DYNAMIC 1
/* Frame size */
/* This maximum size of an Bluetooth frame. Certain, non-standard
* devices may exceed this value, however.
*/
#define BLUETOOTH_MAC_STDFRAME 127
/* Space for a two byte FCS must be reserved at the end of the frame */
#define BLUETOOTH_MAC_FCSSIZE 2
/* This, then, is the usable size of the frame... */
#if defined(CONFIG_NET_BLUETOOTH_FRAMELEN)
# define BLUETOOTH_MAX_FRAMELEN CONFIG_NET_BLUETOOTH_FRAMELEN
#else
# define BLUETOOTH_MAX_FRAMELEN BLUETOOTH_MAC_STDFRAME
#endif
#define BLUETOOTH_FRAMELEN (BLUETOOTH_MAX_FRAMELEN - BLUETOOTH_MAC_FCSSIZE)
/**************************************************************************** /****************************************************************************
* Public Type Definitions * Public Type Definitions
****************************************************************************/ ****************************************************************************/

View File

@ -146,8 +146,8 @@ static uint16_t bluetooth_sendto_eventhandler(FAR struct net_driver_s *dev,
* MAC header. * MAC header.
*/ */
DEBUGASSERT(CONFIG_NET_BLUETOOTH_FRAMELEN <= CONFIG_IOB_BUFSIZE); DEBUGASSERT(BLUETOOTH_MAX_FRAMELEN <= CONFIG_IOB_BUFSIZE);
if (pstate->is_buflen + hdrlen > BLUETOOTH_FRAMELEN) if (pstate->is_buflen + hdrlen > BLUETOOTH_MAX_FRAMELEN)
{ {
nerr("ERROR: User buffer will not fit into the frame: %u > %u\n", nerr("ERROR: User buffer will not fit into the frame: %u > %u\n",
(unsigned int)(pstate->is_buflen + hdrlen), (unsigned int)(pstate->is_buflen + hdrlen),

View File

@ -1,7 +1,8 @@
/**************************************************************************** /****************************************************************************
* net/netdev/netdev_register.c * net/netdev/netdev_register.c
* *
* Copyright (C) 2007-2012, 2014-2015, 2017 Gregory Nutt. All rights reserved. * Copyright (C) 2007-2012, 2014-2015, 2017-2018 Gregory Nutt. All rights
* reserved.
* Author: Gregory Nutt <gnutt@nuttx.org> * Author: Gregory Nutt <gnutt@nuttx.org>
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -220,13 +221,13 @@ int netdev_register(FAR struct net_driver_s *dev, enum net_lltype_e lltype)
#ifdef CONFIG_NET_BLUETOOTH #ifdef CONFIG_NET_BLUETOOTH
case NET_LL_BLUETOOTH: /* Bluetooth */ case NET_LL_BLUETOOTH: /* Bluetooth */
dev->d_llhdrlen = BLUETOOTH_HDRLEN; dev->d_llhdrlen = BLUETOOTH_FRAME_HDRLEN;
#ifdef CONFIG_NET_6LOWPAN #ifdef CONFIG_NET_6LOWPAN
# warning Missing logic # warning Missing logic
dev->d_mtu = ???; dev->d_mtu = CONFIG_NET_6LOWPAN_MTU;
#ifdef CONFIG_NET_TCP #ifdef CONFIG_NET_TCP
# warning Missing logic # warning Missing logic
dev->d_recvwndo = ???; dev->d_recvwndo = CONFIG_NET_6LOWPAN_TCP_RECVWNDO;
#endif #endif
#endif #endif
devfmt = NETDEV_BNEP_FORMAT; devfmt = NETDEV_BNEP_FORMAT;

View File

@ -96,18 +96,6 @@ config BLUETOOTH_MAXSCANRESULT
This contributes to a static memory allocation that will be greater This contributes to a static memory allocation that will be greater
than CONFIG_BLUETOOTH_MAXSCANDATA * CONFIG_BLUETOOTH_MAXSCANRESULT than CONFIG_BLUETOOTH_MAXSCANDATA * CONFIG_BLUETOOTH_MAXSCANRESULT
#if !defined(CONFIG_BLUETOOTH_BUFFER_PREALLOC) || \
CONFIG_BLUETOOTH_BUFFER_PREALLOC < 0
# undef CONFIG_BLUETOOTH_BUFFER_PREALLOC
# define CONFIG_BLUETOOTH_BUFFER_PREALLOC 20
#endif
#if !defined(CONFIG_) || \
CONFIG_BLUETOOTH_BUFFER_IRQRESERVE < 0
# undef CONFIG_BLUETOOTH_BUFFER_IRQRESERVE
# define CONFIG_BLUETOOTH_BUFFER_IRQRESERVE 0
#endif
config BLUETOOTH_BUFFER_PREALLOC config BLUETOOTH_BUFFER_PREALLOC
int "Number of pre-allocated buffer structures" int "Number of pre-allocated buffer structures"
default 20 default 20

View File

@ -50,6 +50,7 @@
#include <errno.h> #include <errno.h>
#include <debug.h> #include <debug.h>
#include <nuttx/net/bluetooth.h>
#include <nuttx/wireless/bt_hci.h> #include <nuttx/wireless/bt_hci.h>
#include <nuttx/wireless/bt_core.h> #include <nuttx/wireless/bt_core.h>
#include <nuttx/wireless/bt_uuid.h> #include <nuttx/wireless/bt_uuid.h>
@ -559,9 +560,9 @@ static uint8_t att_mtu_rsp(FAR struct bt_conn_s *conn, FAR struct bt_buf_s *buf)
* L2CAP, ACL and driver headers. * L2CAP, ACL and driver headers.
*/ */
maxmtu = BT_BUF_MAX_DATA - (sizeof(struct bt_l2cap_hdr_s) + maxmtu = BLUETOOTH_MAX_FRAMELEN - (sizeof(struct bt_l2cap_hdr_s) +
sizeof(struct bt_hci_acl_hdr_s) + sizeof(struct bt_hci_acl_hdr_s) +
g_btdev.dev->head_reserve); g_btdev.dev->head_reserve);
if (mtu > maxmtu) if (mtu > maxmtu)
{ {
mtu = maxmtu; mtu = maxmtu;

View File

@ -53,6 +53,7 @@
#include <nuttx/arch.h> #include <nuttx/arch.h>
#include <nuttx/kmalloc.h> #include <nuttx/kmalloc.h>
#include <nuttx/mm/iob.h> #include <nuttx/mm/iob.h>
#include <nuttx/net/bluetooth.h>
#include <nuttx/wireless/bt_hci.h> #include <nuttx/wireless/bt_hci.h>
#include <nuttx/wireless/bt_core.h> #include <nuttx/wireless/bt_core.h>
#include <nuttx/wireless/bt_buf.h> #include <nuttx/wireless/bt_buf.h>
@ -641,5 +642,5 @@ size_t bt_buf_headroom(FAR struct bt_buf_s *buf)
size_t bt_buf_tailroom(FAR struct bt_buf_s * buf) size_t bt_buf_tailroom(FAR struct bt_buf_s * buf)
{ {
return BT_BUF_MAX_DATA - bt_buf_headroom(buf) - buf->len; return BLUETOOTH_MAX_FRAMELEN - bt_buf_headroom(buf) - buf->len;
} }

View File

@ -54,6 +54,7 @@
#include <nuttx/kthread.h> #include <nuttx/kthread.h>
#include <nuttx/semaphore.h> #include <nuttx/semaphore.h>
#include <nuttx/net/bluetooth.h>
#include <nuttx/wireless/bt_core.h> #include <nuttx/wireless/bt_core.h>
#include <nuttx/wireless/bt_hci.h> #include <nuttx/wireless/bt_hci.h>
@ -1102,7 +1103,7 @@ static int hci_init(void)
hbs = bt_buf_extend(buf, sizeof(*hbs)); hbs = bt_buf_extend(buf, sizeof(*hbs));
memset(hbs, 0, sizeof(*hbs)); memset(hbs, 0, sizeof(*hbs));
hbs->acl_mtu = BT_HOST2LE16(BT_BUF_MAX_DATA - hbs->acl_mtu = BT_HOST2LE16(BLUETOOTH_MAX_FRAMELEN -
sizeof(struct bt_hci_acl_hdr_s) - sizeof(struct bt_hci_acl_hdr_s) -
g_btdev.dev->head_reserve); g_btdev.dev->head_reserve);
hbs->acl_pkts = BT_HOST2LE16(CONFIG_BLUETOOTH_RXTHREAD_NMSGS); hbs->acl_pkts = BT_HOST2LE16(CONFIG_BLUETOOTH_RXTHREAD_NMSGS);

View File

@ -85,10 +85,8 @@
/* Frame size */ /* Frame size */
#if defined(CONFIG_NET_BLUETOOTH_FRAMELEN) #if BLUETOOTH_MAX_FRAMELEN > CONFIG_IOB_BUFSIZE
# define MACNET_FRAMELEN CONFIG_NET_BLUETOOTH_FRAMELEN # error CONFIG_IOB_BUFSIZE to small for max Bluetooth frame
#else
# define MACNET_FRAMELEN BLUETOOTH_MAX_PHY_PACKET_SIZE
#endif #endif
/* TX poll delay = 1 seconds. CLK_TCK is the number of clock ticks per second */ /* TX poll delay = 1 seconds. CLK_TCK is the number of clock ticks per second */
@ -861,7 +859,7 @@ static int btnet_rmmac(FAR struct net_driver_s *dev, FAR const uint8_t *mac)
static int btnet_get_mhrlen(FAR struct radio_driver_s *netdev, static int btnet_get_mhrlen(FAR struct radio_driver_s *netdev,
FAR const void *meta) FAR const void *meta)
{ {
return sizeof(struct bt_l2cap_hdr_s); return BLUETOOTH_FRAME_HDRLEN;
} }
/**************************************************************************** /****************************************************************************
@ -919,7 +917,7 @@ static int btnet_req_data(FAR struct radio_driver_s *netdev,
/* Allocate a buffer to contain the IOB */ /* Allocate a buffer to contain the IOB */
buf = bt_buf_alloc(BT_ACL_OUT, iob, sizeof(struct bt_l2cap_hdr_s)); buf = bt_buf_alloc(BT_ACL_OUT, iob, BLUETOOTH_FRAME_HDRLEN);
if (buf == NULL) if (buf == NULL)
{ {
wlerr("ERROR: Failed to allocate buffer container\n"); wlerr("ERROR: Failed to allocate buffer container\n");
@ -962,25 +960,10 @@ static int btnet_properties(FAR struct radio_driver_s *netdev,
/* General */ /* General */
properties->sp_addrlen = BLUETOOTH_ADDRSIZE; /* Length of an address */ properties->sp_addrlen = BLUETOOTH_ADDRSIZE; /* Length of an address */
properties->sp_framelen = MACNET_FRAMELEN; /* Fixed frame length */ properties->sp_framelen = BLUETOOTH_MAX_FRAMELEN; /* Fixed frame length */
/* Multicast address -- not supported */ /* Multicast, multicast, and star hub node addresses not supported */
properties->sp_mcast.nv_addrlen = BLUETOOTH_ADDRSIZE;
memset(properties->sp_mcast.nv_addr, 0xff, RADIO_MAX_ADDRLEN);
/* Broadcast address -- not supported */
properties->sp_bcast.nv_addrlen = BLUETOOTH_ADDRSIZE;
memset(properties->sp_mcast.nv_addr, 0xff, RADIO_MAX_ADDRLEN);
#ifdef CONFIG_NET_STARPOINT
/* Star hub node address -- not supported. */
properties->sp_hubnode.nv_addrlen = BLUETOOTH_ADDRSIZE;
memset(properties->sp_hubnode.nv_addr, RADIO_MAX_ADDRLEN);
#endif
return OK; return OK;
} }