MXC_A39_20240320/SW/components/btdm/include/btconfig.h

1768 lines
62 KiB
C
Raw Permalink Normal View History

2024-03-07 16:46:43 +08:00
/****************************************************************************
*
* File:
* $Id: btconfig.h 1399 2009-04-15 20:01:20Z benbrown $
* $Product: iAnywhere Blue SDK v3.x $
* $Revision: 1399 $
*
* Description:
* Default constants for configuring the Bluetooth protocol stack.
*
* Copyright 1999-2005 Extended Systems, Inc.
* Portions copyright 2005-2008 iAnywhere Solutions, Inc.
* All rights reserved. All unpublished rights reserved.
*
* Unpublished Confidential Information of iAnywhere Solutions, Inc.
* Do Not Disclose.
*
* No part of this work may be used or reproduced in any form or by any
* means, or stored in a database or retrieval system, without prior written
* permission of iAnywhere Solutions, Inc.
*
* Use of this work is governed by a license granted by iAnywhere Solutions,
* Inc. This work contains confidential and proprietary information of
* iAnywhere Solutions, Inc. which is protected by copyright, trade secret,
* trademark and other intellectual property rights.
*
****************************************************************************/
#ifndef __BTCONFIG_H
#define __BTCONFIG_H
#include "config.h"
#if !defined(BT_STACK) || BT_STACK == XA_DISABLED
#error "Bluetooth Stack must be enabled!"
#endif
/*---------------------------------------------------------------------------
* Bluetooth Configuration API layer
*
* The constants in this layer configure the layers of the Bluetooth
* stack. To change a constant, simply #define it in your overide.h
* include file.
*
* Configuration constants here and in the General Configuration API
* (config.h) are used to make the stack more appropriate for a
* particular environment. Constants can be modified to allow tradeoffs
* between code size, RAM usage, functionality, and throughput.
*
* Some constants are numeric, and others indicate whether a feature
* is enabled (defined as XA_ENABLED) or disabled (defined as
* XA_DISABLED).
*/
/****************************************************************************
*
* Section: General Constants
*
****************************************************************************/
/*---------------------------------------------------------------------------
* BT_STACK_VERSION
* Defines the stack's version number.
*/
#define BT_STACK_VERSION 313
/*---------------------------------------------------------------------------
* NUM_BT_DEVICES constant
*
* The number of devices with which we can connect. This value
* represents the maximum size of the piconet in which this device is
* the master, plus any master devices for which we are concurrently a
* slave. This value includes devices which may be parked, holding,
* or sniffing as well any active devices.
*
* The default value is 2.
*/
#ifndef NUM_BT_DEVICES
#define NUM_BT_DEVICES 2
#endif
#if NUM_BT_DEVICES < 1
#error NUM_BT_DEVICES must be greater than 0
#endif
#if NUM_BT_DEVICES > 255
#error NUM_BT_DEVICES must be less than 256
#endif
/*---------------------------------------------------------------------------
* NUM_SCO_CONNS constant
*
* Defines the number of SCO connections supported by this device.
* When NUM_SCO_CONNS is set to 0, SCO capabilities are disabled
* to save code size.
*
* The default value is 0, and the maximum is 3.
*/
#ifndef NUM_SCO_CONNS
#define NUM_SCO_CONNS 0
#endif
#if NUM_SCO_CONNS > 3
#error NUM_SCO_CONNS must be 3 or less
#endif
/****************************************************************************
*
* Section: Management Entity Constants
*
****************************************************************************/
/*---------------------------------------------------------------------------
* BT_ALLOW_SCAN_WHILE_CON constant
*
* Determines whether page and inquiry scans are allowed during a
* connection. Performing Page and Inquiry scans while connected takes
* bandwidth away from the connections, so it should only be used in
* circumstances where scatternets or master/slave switching is required
* (for instance, when implementing a LAN access port).
*
* When BT_ALLOW_SCAN_WHILE_CON is XA_ENABLED, the Management Entity
* includes code for page and inquiry scans during a connection. When
* it is XA_DISABLED, scans are not allowed during a connection.
*
* By default, this constant is disabled.
*/
#ifndef BT_ALLOW_SCAN_WHILE_CON
#define BT_ALLOW_SCAN_WHILE_CON XA_DISABLED
#endif
/*---------------------------------------------------------------------------
* BT_SCO_HCI_DATA constant
*
* Determines whether code to send and receive SCO is included. This
* constant should be defined only when SCO audio data is sent through
* the HCI interface. SCO connections are always supported when
* NUM_SCO_CONNS is greater than zero.
*
* By default, this constant is disabled.
*/
#ifndef BT_SCO_HCI_DATA
#define BT_SCO_HCI_DATA XA_DISABLED
#endif
#if BT_SCO_HCI_DATA == XA_ENABLED && NUM_SCO_CONNS == 0
#error NUM_SCO_CONNS must be > 0 when BT_SCO_HCI_DATA is enabled
#endif
/*---------------------------------------------------------------------------
* BT_SCO_HCI_NUM_PACKETS constant
*
* Represents the number of HCI packets allocated for sending SCO data to
* the Host Controller. These packets are used for SCO data only. If the
* HCI layer runs out of SCO packets, no more data will be sent until the
* transport layer returns one.
*
* The default number of packets is 20 for each potential SCO connection.
*/
#ifndef BT_SCO_HCI_NUM_PACKETS
#define BT_SCO_HCI_NUM_PACKETS (20 * NUM_SCO_CONNS)
#endif
/*---------------------------------------------------------------------------
* BT_SCO_USE_LEGACY_CONNECT constant
*
* Determines whether code to create SCO connections uses the new
* HCC_SETUP_SYNC_CONNECTION command or the legacy HCC_ADD_SCO_CONNECTION
* command when SCO connections are created. Some radios have difficulty
* negotiating a SCO connection using the HCC_SETUP_SYNC_CONNECTION command.
* Enabling this option will force the stack to use the legacy command for
* creating a SCO connection. Certain versions of the CSR firmware have
* this problem.
*
* By default, this constant is disabled.
*/
#ifndef BT_SCO_USE_LEGACY_CONNECT
#define BT_SCO_USE_LEGACY_CONNECT XA_DISABLED
#endif
/*---------------------------------------------------------------------------
* BT_SECURITY constant
*
* Determines whether code to handle BT security features is included.
* This constant is typically enabled, but may be disabled for minimal
* applications that don't need security.
*
* By default, this constant is enabled.
*/
#ifndef BT_SECURITY
#define BT_SECURITY XA_ENABLED
#endif
/*---------------------------------------------------------------------------
* BT_SECURITY_TIMEOUT constant
*
* Specifies the number of seconds to elapse before a service-specific
* access request (see SEC_AccessRequest) is automatically cancelled.
* The stack's security manager will cancel the request regardless of
* what is causing the delay. Cancelling the request will cause the
* security request to fail, which in most cases will prevent the
* requesting service from connecting.
*
* This value does not affect authentication or encryption operations
* requested directly through APIs such as SEC_AuthenticateLink or
* SEC_SetLinkEncryption; it only affects operations initiated through
* SEC_AccessRequest.
*
* Set this value to 0 to disable security timeouts. When disabled, it
* may be necessary to drop the ACL connection in order to safely cancel
* the security request.
*
* By default, this value is set to 80 seconds. Although any time value
* may be used, sufficient time should be allowed for the user of both
* the local and remote devices to enter PIN codes and select
* authorization settings if required.
*/
#ifndef BT_SECURITY_TIMEOUT
#define BT_SECURITY_TIMEOUT 80
#endif /* BT_SECURITY_TIMEOUT */
/*---------------------------------------------------------------------------
* BT_DEFAULT_PAGE_SCAN_WINDOW constant
*
* The following are used as the default values for settings in the radio
* module and must be 0 or match the radio defaults. When an application
* sets specific values for radio settings then returns to the default
* settings of the radio it is necessary to set the radio defaults. When
* setting the radio defaults these macros are used. Therefore, these
* values must be set appropriately for the given radio. If the values
* are set to 0 then that implies that these values cannot be changed
* for the given radio. If the values are set to 0 the API will prevent
* a application from attempting to change the values.
*/
#ifndef BT_DEFAULT_PAGE_SCAN_WINDOW
#define BT_DEFAULT_PAGE_SCAN_WINDOW 0
#endif
/*---------------------------------------------------------------------------
* BT_DEFAULT_PAGE_SCAN_INTERVAL constant
*
* See BT_DEFAULT_PAGE_SCAN_WINDOW.
*/
#ifndef BT_DEFAULT_PAGE_SCAN_INTERVAL
#define BT_DEFAULT_PAGE_SCAN_INTERVAL 0
#endif
/*---------------------------------------------------------------------------
* BT_DEFAULT_INQ_SCAN_WINDOW constant
*
* See BT_DEFAULT_PAGE_SCAN_WINDOW.
*/
#ifndef BT_DEFAULT_INQ_SCAN_WINDOW
#define BT_DEFAULT_INQ_SCAN_WINDOW 0
#endif
/*---------------------------------------------------------------------------
* BT_DEFAULT_INQ_SCAN_INTERVAL constant
*
* See BT_DEFAULT_PAGE_SCAN_WINDOW.
*/
#ifndef BT_DEFAULT_INQ_SCAN_INTERVAL
#define BT_DEFAULT_INQ_SCAN_INTERVAL 0
#endif
/* Verify that the values are in the legal range. Note that these macros
* cannot be broken over more than one line or some compilers break (gcc) */
#define BT_PSW_TEST ((BT_DEFAULT_PAGE_SCAN_WINDOW != 0) && ((BT_DEFAULT_PAGE_SCAN_WINDOW < 0x0012) || (BT_DEFAULT_PAGE_SCAN_WINDOW > 0x1000)))
#if BT_PSW_TEST
#error BT_DEFAULT_PAGE_SCAN_WINDOW is not legal
#endif
#define BT_PSI_TEST ((BT_DEFAULT_PAGE_SCAN_INTERVAL != 0) && ((BT_DEFAULT_PAGE_SCAN_INTERVAL < 0x0012) || (BT_DEFAULT_PAGE_SCAN_INTERVAL > 0x1000)))
#if BT_PSI_TEST
#error BT_DEFAULT_PAGE_SCAN_INTERVAL is not legal
#endif
#define BT_ISW_TEST ((BT_DEFAULT_INQ_SCAN_WINDOW != 0) && ((BT_DEFAULT_INQ_SCAN_WINDOW < 0x0012) || (BT_DEFAULT_INQ_SCAN_WINDOW > 0x1000)))
#if BT_ISW_TEST
#error BT_DEFAULT_INQ_SCAN_WINDOW is not legal
#endif
#define BT_ISI_TEST ((BT_DEFAULT_INQ_SCAN_INTERVAL != 0) && ((BT_DEFAULT_INQ_SCAN_INTERVAL < 0x0012) || (BT_DEFAULT_INQ_SCAN_INTERVAL > 0x1000)))
#if BT_ISI_TEST
#error BT_DEFAULT_INQ_SCAN_INTERVAL is not legal
#endif
/*---------------------------------------------------------------------------
* BT_DEFAULT_ACCESS_MODE_NC constant
*
* Specifies the default accessibility mode when not-connected that
* the ME should set the radio to during initialization. This value
* must be of type BtAccessibleMode, found in me.h.
*/
#ifndef BT_DEFAULT_ACCESS_MODE_NC
#define BT_DEFAULT_ACCESS_MODE_NC BAM_GENERAL_ACCESSIBLE
#endif /* BT_DEFAULT_ACCESS_MODE_NC */
/*---------------------------------------------------------------------------
* BT_DEFAULT_ACCESS_MODE_C constant
*
* Specifies the default accessibility mode when connected that the
* ME should set the radio to during initialization. This value
* must be of type BtAccessibleMode, found in me.h.
*
* This default is applied only when BT_ALLOW_SCAN_WHILE_CON is XA_ENABLED.
*/
#ifndef BT_DEFAULT_ACCESS_MODE_C
#define BT_DEFAULT_ACCESS_MODE_C BAM_NOT_ACCESSIBLE
#endif /* BT_DEFAULT_ACCESS_MODE_C */
/*---------------------------------------------------------------------------
* BT_HCI_NUM_INIT_RETRIES constant
*
* Specifies the number of times the Radio Manager should retry the
* initialization of HCI when it fails to initialize.
*/
#ifndef BT_HCI_NUM_INIT_RETRIES
#define BT_HCI_NUM_INIT_RETRIES 0xFF
#endif
/*---------------------------------------------------------------------------
* BT_DEFAULT_PAGE_TIMEOUT constant
*
* The BT_DEFAULT_PAGE_TIMEOUT constant is the maximum time the
* local Link Manager will wait for a response from the remote
* device on a connection attempt. The default is 0x2000 = 5.12 sec.
*/
#ifndef BT_DEFAULT_PAGE_TIMEOUT
#define BT_DEFAULT_PAGE_TIMEOUT 0x2000
#endif
/*---------------------------------------------------------------------------
* BT_PACKET_HEADER_LEN constant
*
* The BT_PACKET_HEADER_LEN constant is the size of the BtPacket header.
* The default size is the max(L2CAP) header size (8 bytes), plus the
* max(RFCOMM,SDP,TCS) header size (6 bytes). If BNEP is used, you must
* increase the BT_PACKET_HEADER_LEN by 5 bytes: (8+6+5) in your config
* overide file.
*/
#ifndef BT_PACKET_HEADER_LEN
#define BT_PACKET_HEADER_LEN (8+6)
#endif
#if BT_PACKET_HEADER_LEN < 14 || BT_PACKET_HEADER_LEN > 255
#error BT_PACKET_HEADER_LEN must be greater than 13 and less than 256
#endif
/*---------------------------------------------------------------------------
* NUM_KNOWN_DEVICES constant
*
* Defines the maximum number of devices that the ME Device Selection
* manager can track. If this value is zero, the MEDEV component is
* disabled, resulting in a code size savings.
*/
#ifndef NUM_KNOWN_DEVICES
#define NUM_KNOWN_DEVICES 20
#endif
/*---------------------------------------------------------------------------
* DS_NUM_SERVICES constant
*
* This constant represents the maximum number of services that can
* be tracked within a BtDeviceContext. Each time a successful service
* search attribute request is performed, the UUID of the found service
* is stored in the device context. This list of services is used for
* selecting the best device for a specific service type. If this
* constant is defined to 0, service tracking is disabled and the
* supporting code is eliminated from the build.
*/
#ifndef DS_NUM_SERVICES
#define DS_NUM_SERVICES 4
#endif
/****************************************************************************
*
* Section: HCI Constants
*
****************************************************************************/
/*---------------------------------------------------------------------------
* HCI_RESET_TIMEOUT constant
*
* Specifies the amount of time that the HCI will wait for a response
* to the RESET command before indicating an error to the Radio Manager.
* When the Radio Manager detects the error, it will attempt to reset
* the transports and the HCI again.
*
* The default is 10 seconds.
*/
#ifndef HCI_RESET_TIMEOUT
#define HCI_RESET_TIMEOUT 10000
#endif
/*---------------------------------------------------------------------------
* HCI_NUM_PACKETS constant
*
* Represents the number of HCI packets allocated for sending ACL data to
* the Host Controller. If the HCI layer runs out of packets, no more data
* will be sent until the transport layer returns one.
*
* The default number of packets for ACL data is 2 for each potential
* connection. See HCI_NUM_COMMANDS to define the number packets
* allocated for commands, and BT_SCO_HCI_NUM_PACKETS to define the number
* of packets allocated for SCO data.
*/
#ifndef HCI_NUM_PACKETS
#define HCI_NUM_PACKETS (2 * NUM_BT_DEVICES)
#endif
#if HCI_NUM_PACKETS < (2 * NUM_BT_DEVICES)
#error HCI_NUM_PACKETS should be greater than or equal to (2 * NUM_BT_DEVICES)
#endif
/*---------------------------------------------------------------------------
* HCI_NUM_COMMANDS constant
*
* Represents the number of HCI packets allocated for sending commands
* to the host controller.
*
* The default number of packets is 1.
*/
#ifndef HCI_NUM_COMMANDS
#define HCI_NUM_COMMANDS 1
#endif
/*---------------------------------------------------------------------------
* HCI_NUM_EVENTS constant
*
* Represents the number of HCI buffers allocated for handling events
* from the host controller.
*
* The default number of packets is 2.
*/
#ifndef HCI_NUM_EVENTS
#define HCI_NUM_EVENTS 2
#endif
/*---------------------------------------------------------------------------
* HCI_CMD_PARM_LEN constant
*
* Represents the largest size allowed for HCI command parameters.
*
* The default command parameter length is 248.
*/
#ifndef HCI_CMD_PARM_LEN
#define HCI_CMD_PARM_LEN 248
#endif
/* The longest known HCI command is 248 bytes at this time.
*/
#if HCI_CMD_PARM_LEN < 248
#error HCI_CMD_PARM_LEN must be at least 248
#endif
/*---------------------------------------------------------------------------
* HCI_HOST_FLOW_CONTROL constant
*
* Controls whether HCI applies flow control to data received from the
* host controller.
*
* When HCI_HOST_FLOW_CONTROL is enabled, the HCI layer uses
* HCC_HOST_NUM_COMPLETED_PACKET commands to periodically tell the
* radio hardware how many receive packets it can accept. This is
* necessary if the HCI driver's receive buffers could overflow
* with incoming data.
*
* When HCI_HOST_FLOW_CONTROL is disabled, the HCI driver assumes
* that it can process data faster than the radio hardware can generate
* it.
*
* By default, host-side flow control is disabled.
*/
#ifndef HCI_HOST_FLOW_CONTROL
#define HCI_HOST_FLOW_CONTROL XA_DISABLED
#endif
/*-------------------------------------------------------------------------
* HCI_MAX_COMPLETED_PKTS constant
*
* Defines the maximum number of receive buffers that will be used
* before an HCC_HOST_NUM_COMPLETED_PACKET command is sent to the
* controller.
*
* By default, the maximum is 8 completed packets.
*/
#ifndef HCI_MAX_COMPLETED_PKTS
#if HCI_HOST_FLOW_CONTROL == XA_ENABLED
#define HCI_MAX_COMPLETED_PKTS 8
#endif
#endif
/*---------------------------------------------------------------------------
* HCI_SCO_FLOW_CONTROL constant
*
* Controls whether the host controller applies flow control to SCO data
* sent by the host.
*
* When HCI_SCO_FLOW_CONTROL is enabled, flow control is applied to SCO
* data transmitted to the host controller.
*
* When HCI_SCO_FLOW_CONTROL is disabled, no flow control mechanism is
* used when transmitting data to the host controller.
*
* By default, SCO flow control is disabled.
*/
#ifndef HCI_SCO_FLOW_CONTROL
#define HCI_SCO_FLOW_CONTROL XA_DISABLED
#endif
/*---------------------------------------------------------------------------
* HCI_ALLOW_PRESCAN constant
*
* Controls whether prescan handlers can be registered with HCI. Prescan
* handlers allow receive and transmit data to be viewed or modified
* before being sent or received by the stack.
*
* When HCI_ALLOW_PRESCAN is enabled, the functions for registering
* prescan handlers are included in the code.
*
* When HCI_ALLOW_PRESCAN is disabled, the functions for registering
* prescan handlers are not included in the code.
*/
#ifndef HCI_ALLOW_PRESCAN
#define HCI_ALLOW_PRESCAN XA_ENABLED
#endif
/*-------------------------------------------------------------------------
* HCI_NUM_ACL_TX_RESERVE constant
*
* Defines the number of TX packets to hold in reserve to prevent
* resource depletion by any one HCI channel. A single ACL channel
* may use all but HCI_NUM_ACL_TX_RESERVE packets from the TX
* packet pool. Use caution when setting this value; as there
* must be sufficient transmit packets allocated by HCI_NUM_PACKETS.
*
* By default, 1 ACL TX packet is reserved.
* Set this to 0 to disable this option.
*/
#ifndef HCI_NUM_ACL_TX_RESERVE
#define HCI_NUM_ACL_TX_RESERVE 1
#endif
/*-------------------------------------------------------------------------
* HCI_NUM_UNCONN_RESERVE constant
*
* Defines the number of TX packets to hold in reserve for unconnected
* devices. This setting ensures HCI_NUM_UNCONN_RESERVE packets will
* always be available for each device that is not yet connected. This
* value is calculated from NUM_BT_DEVICES less the number of devices
* currently connected. Use caution when setting this value; as there
* must be sufficient transmit packets allocated by HCI_NUM_PACKETS.
*
* By default, 1 ACL TX packet is reserved per unconnected device.
* Set this to 0 to disable this option.
*/
#ifndef HCI_NUM_UNCONN_RESERVE
#define HCI_NUM_UNCONN_RESERVE 1
#endif
/*-------------------------------------------------------------------------
* HCI_ACL_DATA_SIZE constant
*
* Defines the maximum data size of a received ACL packet in the HCI
* layer. This value affects the size of receive buffers allocated
* by the HCI driver.
*
* This value must be at least 255 and no more than 65531. The default
* is 800 bytes.
*/
#ifndef HCI_ACL_DATA_SIZE
#define HCI_ACL_DATA_SIZE 800
#endif
#if HCI_ACL_DATA_SIZE > 65531
#error HCI_ACL_DATA_SIZE cannot be greater than 65531
#endif
#if HCI_ACL_DATA_SIZE < 255
#error HCI_ACL_DATA_SIZE cannot be less than 255
#endif
/*-------------------------------------------------------------------------
* HCI_SCO_DATA_SIZE constant
*
* Defines the maximum data size of a received SCO packet in the HCI
* layer. This value affects the size of receive buffers allocated by
* the HCI driver.
*
* The SCO data size must be less than 256 bytes. The default size is
* 255 bytes.
*/
#ifndef HCI_SCO_DATA_SIZE
#define HCI_SCO_DATA_SIZE 255
#endif
#if HCI_SCO_DATA_SIZE > 255
#error HCI_SCO_DATA_SIZE must be less than 256
#endif
/*-------------------------------------------------------------------------
* HCI_NUM_ACL_BUFFERS constant
*
* Defines the number of buffers allocated by the HCI driver
* for receiving ACL data.
*
* By default, 8 ACL data buffers are allocated.
*/
#ifndef HCI_NUM_ACL_BUFFERS
#if L2CAP_NUM_ENHANCED_CHANNELS > 0
#define HCI_NUM_ACL_BUFFERS (L2CAP_ERTM_RX_WIN_SIZE * L2CAP_NUM_ENHANCED_CHANNELS)
#else
#define HCI_NUM_ACL_BUFFERS 8
#endif
#endif
/*-------------------------------------------------------------------------
* HCI_NUM_SCO_BUFFERS constant
*
* Defines the number of buffers allocated by the HCI driver
* for receiving SCO data. If the number of SCO connections allowed
* (NUM_SCO_CONNS) is zero, the HCI does not need to
* allocate any SCO buffers.
*
* By default, 8 SCO data buffers are allocated.
*/
#ifndef HCI_NUM_SCO_BUFFERS
#define HCI_NUM_SCO_BUFFERS 8
#endif
/*---------------------------------------------------------------------------
* HCI3W_SLIDING_WINDOW constant
*
* For the HCI 3-Wire Transport Layer code, this value indicates how
* many sliding window slots are allowed by the host. The controller
* has an independent number of sliding window slots that it supports.
* The lower value of the two sliding window slots from the host and
* the controller is the actual number of sliding window slots that
* will be used. This define should range from 1 to 7. Larger
* values require more memory for reliable message retransmission
* buffers. If the controller also supports them, larger values
* will result in higher payload throughput if the connection to the
* controller is reliable and bug free, due to the reduced need for
* as many acknowledgements. Smaller values reduce how many messages
* may be outstanding before an acknowledgement is required.
*/
#ifndef HCI3W_SLIDING_WINDOW
#define HCI3W_SLIDING_WINDOW (3)
#endif
/*---------------------------------------------------------------------------
* HCI3W_MAX_PAYLOAD constant
*
* For the HCI 3-Wire Transport Layer code, this value indicates the
* maximum payload size before framing and before slip encoding. The
* maximum payload size should range from around 10 up through 4095.
* Smaller values reduce memory use but limit the maximum message size.
*/
#ifndef HCI3W_MAX_PAYLOAD
#define HCI3W_MAX_PAYLOAD (0x0FFF)
#endif
/*---------------------------------------------------------------------------
* HCI3W_MEM_POOL_SIZE constant
*
* For the HCI 3-Wire Transport Layer code, this value indicates
* the size of the memory pool. If you are using an HCI 3-wire
* sliding window size of 3, this value should be roughly 8 to 16
* times larger than HCI3W_MAX_PAYLOAD, depending on how often
* large messages will be transferred. Larger sliding window sizes
* require more memory. To reduce memory usage, you can reduce
* the maximum payload size and reduce the sliding window size.
*/
#ifndef HCI3W_MEM_POOL_SIZE
#define HCI3W_MEM_POOL_SIZE (0x8000)
#endif
/*---------------------------------------------------------------------------
* HCI3W_UART_MULTIPLIER constant
*
* For the HCI 3-Wire Transport Layer code, this value indicates how
* much UART speeds are multiplied by the internal UART hardware.
* Multiplying the UART clock allows the hardware to achieve higher
* speeds while allowing legacy software to use the older unclocked
* values. If the UART hardware being used does not have a clock
* multiplier, then this value should be set to the default value of 1.
* Otherwise, it must be overridden in the overide.h file to the correct
* multiplier value or the calculations of Tmax will not be correct. If
* Tmax is too large, then some devices will time out operations before
* they are acknowledged, making the HCI 3-wire communication unusable.
*/
#ifndef HCI3W_UART_MULTIPLIER
#define HCI3W_UART_MULTIPLIER (1)
#endif
/*---------------------------------------------------------------------------
* HCI3W_TXQ_MAX constant
*
* For the HCI 3-Wire Transport Layer code, this value defines the total
* number of simultaneous outstanding reliable transmission requests
* that can exist. At most, there can only be as many reliable messages
* queued up as the HCI 3-wire sliding window size. So setting this
* value to a little over the HCI 3-wire sliding limit is sufficient.
* Note that the HCI interface does not specify whether a message should
* be transmitted reliably or unreliably. However, the HCI 3-wire
* specification requires that HCI Command Packets, HCI ACL Data Packets,
* and HCI Event Packets always be sent as reliable packets. The HCI
* 3-wire specification also requires that HCI Synchronous Data Packets
* be sent as unreliable packets unless HCI Synchronous Flow Control
* is enabled, in which case they are to be sent as reliable packets.
*/
#ifndef HCI3W_TXQ_MAX
#define HCI3W_TXQ_MAX (8)
#endif
/*---------------------------------------------------------------------------
* HCI3W_CRC constant
*
* For the HCI 3-Wire Transport Layer code, this value indicates
* whether CRCs are allowed by the host. Both the host and the
* controller must allow CRCs in order for them to be actually used.
*/
#ifndef HCI3W_CRC
#define HCI3W_CRC XA_ENABLED
#endif
/*---------------------------------------------------------------------------
* HCI3W_OOF constant
*
* For the HCI 3-Wire Transport Layer code, this value indicates
* whether out-of-frame software flow control is allowed by the
* host. Both the host and the controller must allow out-of-frame
* software flow control in order for it to be actually used.
*/
#ifndef HCI3W_OOF
#define HCI3W_OOF XA_ENABLED
#endif
/*---------------------------------------------------------------------------
* HCI3W_DEBUG_TXQ constant
*
* For the HCI 3-Wire Transport Layer code, this value indicates
* whether reliable retransmission queue information should be reported
* for debugging purposes or not.
*/
#ifndef HCI3W_DEBUG_TXQ
#define HCI3W_DEBUG_TXQ XA_DISABLED
#endif
/*---------------------------------------------------------------------------
* BT_EXPOSE_BCCMD constant
*
* Exposes an interface to the BCCMD interface supported by CSR chips
* using ABCSP connections.
*
* For more information about the BCCMD interface, refer to the
* documentation provided by CSR.
*
* By default, the BCCMD interface is disabled because most applications
* do not need to use the interface.
*/
#define BT_EXPOSE_BCCMD XA_DISABLED
/****************************************************************************
*
* Section: L2CAP Constants
*
****************************************************************************/
/*---------------------------------------------------------------------------
* L2CAP_NUM_PROTOCOLS constant
*
* Defines the number of protocol services that may be layered above
* L2CAP.
*
* Between 1 and 255 L2CAP protocol services are allowed. The default
* is three: one for the SDP client, one for the SDP server,
* and one for RFCOMM.
*/
#ifndef L2CAP_NUM_PROTOCOLS
#define L2CAP_NUM_PROTOCOLS 3
#endif
#if L2CAP_NUM_PROTOCOLS < 1 || L2CAP_NUM_PROTOCOLS > 255
#error L2CAP_NUM_PROTOCOLS must be between 1 and 255
#endif
/*---------------------------------------------------------------------------
* L2CAP_NUM_GROUPS constant
*
* Defines the number of broadcast groups supported by L2CAP. When
* this value is zero, support for groups is removed from the stack,
* reducing code size.
*
* Between 0 and 255 L2CAP groups are allowed. The default number of
* groups is zero.
*/
#ifndef L2CAP_NUM_GROUPS
#define L2CAP_NUM_GROUPS 0
#endif
#if L2CAP_NUM_GROUPS > 255
#error L2CAP_NUM_GROUPS must be no greater than 255
#endif
/*---------------------------------------------------------------------------
* L2CAP_PING_SUPPORT constant
*
* Controls whether the Ping operation (L2CAP_Ping) is supported.
* When disabled, the L2CAP_Ping() API is not included in the stack,
* resulting in code size savings.
*
* By default, Ping support is enabled.
*/
#ifndef L2CAP_PING_SUPPORT
#define L2CAP_PING_SUPPORT XA_ENABLED
#endif
/*---------------------------------------------------------------------------
* L2CAP_GET_INFO_SUPPORT constant
*
* Controls whether the GetInfo operation (L2CAP_GetInfo) is supported.
* When disabled, the L2CAP_GetInfo() API is not included in the stack,
* resulting in code size savings.
*
* By default, GetInfo support is disabled.
*/
#ifndef L2CAP_GET_INFO_SUPPORT
#define L2CAP_GET_INFO_SUPPORT XA_DISABLED
#endif
/*---------------------------------------------------------------------------
* L2CAP_FLEXIBLE_CONFIG constant
*
* Controls whether a L2CAP user is allowed to manage channel
* configuration options.
*
* When L2CAP_FLEXIBLE_CONFIG is enabled, the application will receive
* events have access to functions which enable it to control the
* flow of configuration requests and responses.
*
* When L2CAP_FLEXIBLE_CONFIG is disabled, configuration messages are
* handled internally by the protocol. The associated APIs are not
* included in the stack, resulting in code size savings.
*
* By default, L2CAP flexible configuration is disabled.
*/
#ifndef L2CAP_FLEXIBLE_CONFIG
#define L2CAP_FLEXIBLE_CONFIG XA_DISABLED
#endif
/*---------------------------------------------------------------------------
* L2CAP_RTX_TIMEOUT constant
*
* Defines the response timeout value for signaling commands, in
* seconds. If the timer elapses without a response from the remote
* device, the channel is disconnected.
*
* The timeout value may range from 1 to 60 seconds. The default value
* is 30 seconds.
*/
#ifndef L2CAP_RTX_TIMEOUT
#define L2CAP_RTX_TIMEOUT 30
#endif
#if L2CAP_RTX_TIMEOUT < 1 || L2CAP_RTX_TIMEOUT > 60
#error L2CAP_RTX_TIMEOUT must be between 1 and 60 seconds.
#endif
/*---------------------------------------------------------------------------
* L2CAP_ERTX_TIMEOUT constant
*
* Defines the extended response timeout value for signaling commands,
* in seconds. Certain signaling commands (such as a Connect Response
* Pending) allow for a longer timeout period than the L2CAP_RTX_TIMEOUT
* value. When the ERTX timer elapses without a response, the channel
* is disconnected.
*
* The extended timeout value may range from 60 to 300 seconds. The
* default value is 150 seconds.
*/
#ifndef L2CAP_ERTX_TIMEOUT
#define L2CAP_ERTX_TIMEOUT 150
#endif
#if L2CAP_ERTX_TIMEOUT < 60 || L2CAP_ERTX_TIMEOUT > 300
#error L2CAP_ERTX_TIMEOUT must be between 60 and 300 seconds.
#endif
/*---------------------------------------------------------------------------
* L2CAP_NUM_CHANNELS constant
*
* Defines the number of L2CAP Channels, based on number of protocols and
* devices. This constant must be large enough to support all the channels
* that are needed by the upper layer protocols. There is typically one
* channel per protocol per supported device.
*/
#ifndef L2CAP_NUM_CHANNELS
/*
* First calculate the number of L2CAP Auxiliary Channels. Auxiliary channels
* are used to support the Echo (Ping) and Info (GetInfo) signalling procedures.
*/
#if (L2CAP_PING_SUPPORT == XA_ENABLED) && (L2CAP_GET_INFO_SUPPORT == XA_ENABLED)
#define AUX_CHANNELS 2
#elif (L2CAP_PING_SUPPORT == XA_ENABLED) || (L2CAP_GET_INFO_SUPPORT == XA_ENABLED)
#define AUX_CHANNELS 1
#else
#define AUX_CHANNELS 0
#endif
#define L2CAP_NUM_CHANNELS ((L2CAP_NUM_PROTOCOLS * NUM_BT_DEVICES) + AUX_CHANNELS)
#endif
#if L2CAP_NUM_CHANNELS < 1
#error L2CAP_NUM_CHANNELS must be at least 1
#endif
/*---------------------------------------------------------------------------
* L2CAP_NUM_ENHANCED_CHANNELS constant
*
* Enables support for L2CAP Enhanced Retransmission mode. When enabled,
* an L2CAP user is able to configure L2CAP connections to include
* support for retransmission of lost frames, SDU segmentation and
* reassembly and selective rejection of error frames.
*
* By default this option is disabled, which results in a code size
* savings. This option should be enabled if L2CAP based protocols or
* profiles are used which depend on this feature. Each additional
* ERTM channel requires allocation of additional buffer space.
*/
#ifndef L2CAP_NUM_ENHANCED_CHANNELS
#define L2CAP_NUM_ENHANCED_CHANNELS 0
#endif
#if L2CAP_NUM_ENHANCED_CHANNELS > L2CAP_NUM_CHANNELS
#error L2CAP_NUM_ENHANCED_CHANNELS must not be greater than L2CAP_NUM_CHANNELS
#endif
/*---------------------------------------------------------------------------
* L2CAP_ERTM_TX_WIN_SIZE constant
*
* Specifies the maximum send window size for L2CAP Enhanced mode
* channels. This setting controls the amount of memory allocated to
* send unacknowledged ERTM I-frame segments. This value is indicated in
* the Configuration Response as a hint to the remote device of the number
* of frames that can be sent before resources are depleted. The remote
* device can use this information to efficiently acknowledge I-frames.
* A smaller size will save memory. A larger size will increase
* throughput.
*
* Note that the TX window may be adjusted lower than this default value
* if the remote device specifies an RX window that is smaller than the
* local L2CAP_ERTM_TX_WIN_SIZE since we must not overflow the remote
* device's RX window.
*
* By default this is set to 5. It should be adjusted as appropriate
* for your implementation.
*/
#ifndef L2CAP_ERTM_TX_WIN_SIZE
#define L2CAP_ERTM_TX_WIN_SIZE 5
#endif
#if L2CAP_ERTM_TX_WIN_SIZE > 63 || L2CAP_ERTM_TX_WIN_SIZE < 1
#error L2CAP_ERTM_TX_WIN_SIZE must be between 1 and 63
#endif
/*---------------------------------------------------------------------------
* L2CAP_ERTM_RX_WIN_SIZE constant
*
* Specifies the maximum receive window size for L2CAP Enhanced mode
* channels. This setting controls the amount of memory allocated to
* manage received ERTM I-frames before indication to the higher layer.
* A smaller size will save memory. A larger size will increase
* throughput.
*
* By default this is set to 5. It should be adjusted as appropriate
* for your implementation.
*/
#ifndef L2CAP_ERTM_RX_WIN_SIZE
#define L2CAP_ERTM_RX_WIN_SIZE 5
#endif
#if L2CAP_ERTM_RX_WIN_SIZE > 63 || L2CAP_ERTM_RX_WIN_SIZE < 1
#error L2CAP_ERTM_RX_WIN_SIZE must be between 1 and 63
#endif
/*---------------------------------------------------------------------------
* L2CAP_ERTM_MAX_TRANSMIT constant
*
* Specifies the default maximum number of transmissions of an I-frame
* (including the first transmission) before the link is disconnected.
*
* The default is 10 transmissions.
*/
#ifndef L2CAP_ERTM_MAX_TRANSMIT
#define L2CAP_ERTM_MAX_TRANSMIT 10
#endif
/*---------------------------------------------------------------------------
* L2CAP_ERTM_RETRANS_TIMEOUT constant
*
* Specifies the default Retransmission timeout value in milliseconds.
* If a flush timeout is defined for the link, this value should be the
* greater of 3 times the flush timeout value or 1 second.
*
* The default is 2 seconds.
*/
#ifndef L2CAP_ERTM_RETRANS_TIMEOUT
#define L2CAP_ERTM_RETRANS_TIMEOUT 2000
#endif
/*---------------------------------------------------------------------------
* L2CAP_ERTM_MONITOR_TIMEOUT constant
*
* Specifies the default Monitor timeout value in milliseconds. If a
* flush timeout is defined for the link, this value should be the
* greater of 6 times the flush timeout value or 12 seconds.
*
* The default is 12 seconds.
*/
#ifndef L2CAP_ERTM_MONITOR_TIMEOUT
#define L2CAP_ERTM_MONITOR_TIMEOUT 12000
#endif
/*---------------------------------------------------------------------------
* L2CAP_FCS_OPTION constant
*
* Specifies the default FCS option for Enhanced L2CAP channels. Use
* one of the options defined by the L2capFcsOption type in l2cap_bt.h.
*
* The default is 16 bit with the option to turn off FCS.
*/
#ifndef L2CAP_FCS_OPTION
#define L2CAP_FCS_OPTION L2FCS_16BIT
#endif
#if L2CAP_FCS_OPTION != L2FCS_NONE && L2CAP_FCS_OPTION != L2FCS_16BIT
#error L2CAP_FCS_OPTION must be L2FCS_NONE or L2FCS_16BIT.
#endif
/*---------------------------------------------------------------------------
* L2CAP_ERTM_ACK_TIMEOUT constant
*
* Specifies the default maximum amount of time to wait before a received
* I-frame is acknowledged. Normally, I-frames are acknowledged long
* before this timer expires on a busy channel. This timer ensures
* acknowledgments are sent in a timely manner on a channel with little
* traffic.
*
* Note: this timer will not fire if set larger than
* L2CAP_ERTM_RETRANS_TIMEOUT.
*
* The default is 1/2 retransmission timeout.
*/
#ifndef L2CAP_ERTM_ACK_TIMEOUT
#define L2CAP_ERTM_ACK_TIMEOUT (L2CAP_ERTM_RETRANS_TIMEOUT/2)
#endif
/*---------------------------------------------------------------------------
* L2CAP_ERTM_SREJ_ENABLE constant
*
* Specifies whether Selective Reject capability is enabled for the
* enhanced L2CAP channels. Disabling Selective Reject will save memory,
* but will likely cause more retransmitted I-frames.
*
* Selective Reject is Enabled by default.
*/
#ifndef L2CAP_ERTM_SREJ_ENABLE
#define L2CAP_ERTM_SREJ_ENABLE XA_ENABLED
#endif
/*---------------------------------------------------------------------------
* L2CAP_ERTM_FRAGMENTS constant
*
* Enables support for fragmented receives in L2CAP Enhanced
* Retransmission mode. When enabled, received data will be indicated
* with the events L2EVENT_FRAGMENT_IND and L2EVENT_LAST_FRAG_IND.
*
* By default this option is disabled, which ensures compatibility with
* profiles that cannot handle fragmented receives. Enable this option
* for more efficient received data indications. Note that a receive
* buffer the size of L2CAP_MAXIMUM_MTU will be pre-allocated for each
* Enhanced L2CAP channel when this option is disabled.
*/
#ifndef L2CAP_ERTM_FRAGMENTS
#define L2CAP_ERTM_FRAGMENTS XA_DISABLED
#endif
/*---------------------------------------------------------------------------
* L2CAP_FLOW_CONTROL constant
*
* This option is deprecated. Use L2CAP_NUM_ENHANCED_CHANNELS.
*/
#ifndef L2CAP_FLOW_CONTROL
#define L2CAP_FLOW_CONTROL XA_DISABLED
#endif
#if L2CAP_FLOW_CONTROL == XA_ENABLED
#error The L2CAP_FLOW_CONTROL option is deprecated.
#endif
/*---------------------------------------------------------------------------
* L2CAP_PRIORITY constant
*
* Enables support for L2CAP BtPacket priority management.
*/
#ifndef L2CAP_PRIORITY
#define L2CAP_PRIORITY XA_DISABLED
#endif
/*---------------------------------------------------------------------------
* L2CAP_MTU constant
*
* Defines the maximum receivable L2CAP SDU size, in bytes. This
* limitation applies only to packets received from the remote device.
* When L2CAP_NUM_ENHANCED_CHANNELS is 1 or greater, this constant defines
* the maximum receivable segmented SDU size and can be composed from
* multiple PDUs.
*
* This constant also affects the L2CAP Connectionless MTU. Some profiles
* require a minimum Connectionless MTU that is greater than the L2CAP
* minimum of 48 bytes. When implementing such a profile it is important
* that the L2CAP_MTU constant be at least as large as the specified
* Connectionless MTU size.
*
* This value may range from 48 to 65529. The default value is 672 bytes.
*/
#ifndef L2CAP_MTU
#define L2CAP_MTU 672
#endif
#if L2CAP_MTU < 48 || L2CAP_MTU > 65529
#error L2CAP_MTU must be between 48 and 65529.
#endif
/*---------------------------------------------------------------------------
* L2CAP_MPS constant
*
* Defines the maximum receivable L2CAP PDU size, in bytes. This constant
* is equivalent to L2CAP_MTU when L2CAP_NUM_ENHANCED_CHANNELS is 0. When
* L2CAP_NUM_ENHANCED_CHANNELS is 1 or greater, an L2CAP_MTU may be segmented
* into multiple L2CAP_MPS sized PDUs.
*
* This value may range from 48 to L2CAP_MTU. The default value is
* L2CAP_MTU.
*/
#ifndef L2CAP_MPS
#define L2CAP_MPS L2CAP_MTU
#endif
#if L2CAP_NUM_ENHANCED_CHANNELS == 0 && L2CAP_MPS != L2CAP_MTU
#error L2CAP_MPS must equal L2CAP_MTU when L2CAP_NUM_ENHANCED_CHANNELS is 0.
#endif
#if L2CAP_MPS == 0 || L2CAP_MPS > L2CAP_MTU
#error L2CAP_MPS must be between 1 and L2CAP_MTU.
#endif
/*---------------------------------------------------------------------------
* L2CAP_DEREGISTER_FUNC constant
*
* Controls whether the L2CAP_DeregisterPsm function is allowed. In
* cases where L2CAP services will be dynamically loaded or unloaded,
* this constant must be enabled.
*
* By default, L2CAP service deregistration is disabled. Disabling this
* option results in code size savings.
*/
#ifndef L2CAP_DEREGISTER_FUNC
#define L2CAP_DEREGISTER_FUNC XA_DISABLED
#endif
/*---------------------------------------------------------------------------
* L2CAP_NUM_SIGNAL_PACKETS constant
*
* Defines the number of signaling packets allocated by L2CAP.
*
* By default, L2CAP allocates two packets per device.
*/
#ifndef L2CAP_NUM_SIGNAL_PACKETS
#if L2CAP_NUM_ENHANCED_CHANNELS > 0
#define L2CAP_NUM_SIGNAL_PACKETS (NUM_BT_DEVICES * L2CAP_NUM_ENHANCED_CHANNELS * 4)
#else
#define L2CAP_NUM_SIGNAL_PACKETS (NUM_BT_DEVICES * 2)
#endif
#endif
#if L2CAP_NUM_SIGNAL_PACKETS < 1
#error L2CAP_NUM_SIGNAL_PACKETS must be at least 1
#endif
/*---------------------------------------------------------------------------
* L2CAP_NUM_TX_PACKETS constant
*
* Defines the number of TX packets allocated per device by L2CAP for
* segmenting upper layer packets.
*
* Since this value is based on information obtained at run time, a
* best estimate should be calculated from the max expected TX window
* and max number of segments per packet. For example: if the max TX
* window is expected to be 10 and the max number of segments per Packet
* is expected to be 5, then a minimum 10*5=50 TX packets times the
* number of channels will be required.
*
* Note that the compile time error checks below are very conservative.
* They assume the max window size will be used by each channel
* simultaneously. If some channels (e.g. SDP) do not use the max window
* size, you may need to tune these checks for run time behavior.
*/
#ifndef L2CAP_NUM_TX_PACKETS
#define L2CAP_NUM_TX_PACKETS ((L2CAP_ERTM_TX_WIN_SIZE * L2CAP_NUM_ENHANCED_CHANNELS) + 2)
#endif
#if (L2CAP_ERTM_TX_WIN_SIZE * L2CAP_NUM_ENHANCED_CHANNELS) > L2CAP_NUM_TX_PACKETS
#error Insufficient L2CAP_NUM_TX_PACKETS for current configuration
#endif
#if (L2CAP_ERTM_RX_WIN_SIZE * L2CAP_NUM_ENHANCED_CHANNELS) > HCI_NUM_ACL_BUFFERS
#error Insufficient HCI_NUM_ACL_BUFFERS for current configuration
#endif
/*---------------------------------------------------------------------------
* L2CAP_PRELUDE_SIZE constant
*
* Defines the number of bytes that are appended to the front of the
* L2CAP reassembly buffer. This is only recommended for use by
* protocols which are layered directly above L2CAP.
*
* By default, L2CAP allocates zero extra space.
*/
#ifndef L2CAP_PRELUDE_SIZE
#define L2CAP_PRELUDE_SIZE 0
#endif
#if L2CAP_PRELUDE_SIZE+L2CAP_MTU > 65529
#error L2CAP_PRELUDE_SIZE plus L2CAP_MTU must be less than 65529.
#endif
/*---------------------------------------------------------------------------
* L2CAP_VIOLATE_SPEC_MTU_NEG constant
*
* Controls whether the code is allowed to violate the L2CAP
* specification to do illegal MTU size negotiation. Setting this
* define to XA_ENABLED in the overide.h file causes the code to violate
* the L2CAP specification which specifically prohibits negotiating the
* MTU values. However, some phones such as the Motorola v3m have a bug
* in which they sometimes expect the MTU to be negotiated. In order to
* work with these phones, this define must be set to XA_ENABLED in the
* overide.h file to cause the code to negotiate the MTU to the value
* taken from failed configuration response messages. Note that there
* is no valid reason to negotiate these values, as the two MTUs from
* two connected devices are completely independent, do not need to be
* the same, and no device is never obligated to use all of the
* available MTU space on the other device.
*
* By default, violating the L2CAP specification to negotiate MTU sizes
* is disabled.
*/
#ifndef L2CAP_VIOLATE_SPEC_MTU_NEG
#define L2CAP_VIOLATE_SPEC_MTU_NEG XA_DISABLED
#endif
/****************************************************************************
*
* Section: SDP Constants
*
****************************************************************************/
/*-------------------------------------------------------------------------
* SDP_CLIENT_SUPPORT constant
*
* Controls whether the SDP client is included in the SDP protocol. Set
* this constant to XA_ENABLED when it is necessary to have the SDP client
* compiled into your system.
*
* By default, the SDP client is enabled.
*/
#ifndef SDP_CLIENT_SUPPORT
#define SDP_CLIENT_SUPPORT XA_ENABLED
#endif
/*-------------------------------------------------------------------------
* SDP_SERVER_SUPPORT constant
*
* Controls whether the SDP server is included in the SDP protocol. Set
* this constant to XA_ENABLED when it is necessary to have the SDP server
* compiled into your system.
*
* By default, the SDP server is enabled.
*/
#ifndef SDP_SERVER_SUPPORT
#define SDP_SERVER_SUPPORT XA_ENABLED
#endif
#if (SDP_SERVER_SUPPORT == XA_DISABLED) && (SDP_CLIENT_SUPPORT == XA_DISABLED)
#error SDP_CLIENT_SUPPORT and/or SDP_SERVER_SUPPORT must be enabled.
#endif
#if SDP_CLIENT_SUPPORT == XA_ENABLED
/*-------------------------------------------------------------------------
* SDP_CLIENT_LOCAL_MTU constant
*
* Defines the maximum L2CAP MTU used for the local SDP client.
*
* This value may range from 48 to the L2CAP MTU size (L2CAP_MTU).
* By default, this value is equal to the L2CAP_MTU size.
*/
#ifndef SDP_CLIENT_LOCAL_MTU
#define SDP_CLIENT_LOCAL_MTU L2CAP_MTU
#endif
#if SDP_CLIENT_LOCAL_MTU < 48 || SDP_CLIENT_LOCAL_MTU > L2CAP_MTU
#error SDP_CLIENT_LOCAL_MTU must be between 48 and L2CAP_MTU.
#endif
/*-------------------------------------------------------------------------
* SDP_CLIENT_MIN_REMOTE_MTU constant
*
* Defines the minimum remote MTU size acceptable to the local
* SDP client. If the remote SDP server cannot support the specified
* MTU size, the connection attempt will fail and SDP operations will
* not occur.
*
* This value may range from 48 to the L2CAP MTU size (L2CAP_MTU).
* By default, this value is 48.
*/
#ifndef SDP_CLIENT_MIN_REMOTE_MTU
#define SDP_CLIENT_MIN_REMOTE_MTU 48
#endif
#if SDP_CLIENT_MIN_REMOTE_MTU < 48 || SDP_CLIENT_MIN_REMOTE_MTU > L2CAP_MTU
#error SDP_CLIENT_MIN_REMOTE_MTU must be between 48 and L2CAP_MTU.
#endif
/*-------------------------------------------------------------------------
* SDP_PARSING_FUNCS constant
*
* Controls whether the SDP response parsing is included and made
* available to the application. Set this constant to XA_ENABLED
* when it is necessary to have SDP response parsing available.
*
* By default, SDP parsing is enabled.
*
*/
#ifndef SDP_PARSING_FUNCS
#define SDP_PARSING_FUNCS XA_ENABLED
#endif
#endif /* SDP_CLIENT_SUPPORT == XA_ENABLED */
#if SDP_SERVER_SUPPORT == XA_ENABLED
/*-------------------------------------------------------------------------
* SDP_NUM_CLIENTS constant
*
* Defines the maximum number of clients that can connect
* simultaneously to the SDP server.
*
* This value may range from 1 to the number of possible devices
* (NUM_BT_DEVICES). The default is NUM_BT_DEVICES.
*/
#ifndef SDP_NUM_CLIENTS
#define SDP_NUM_CLIENTS NUM_BT_DEVICES
#endif
#if (SDP_NUM_CLIENTS < 1) || (SDP_NUM_CLIENTS > NUM_BT_DEVICES)
#error SDP_NUM_CLIENTS must be greater than 0 and less than or equal to NUM_BT_DEVICES
#endif
/*-------------------------------------------------------------------------
* SDP_ACTIVE_CLIENTS constant
*
* Defines the maximum number of active clients that can connect
* simultaneously to the SDP server. Active clients are those that
* are not in park.
*
* This value may range from 1 to the number of possible active devices
* (16). The default value is NUM_BT_DEVICES.
*/
#ifndef SDP_ACTIVE_CLIENTS
#if NUM_BT_DEVICES < 16
#define SDP_ACTIVE_CLIENTS (NUM_BT_DEVICES)
#else
#define SDP_ACTIVE_CLIENTS 16
#endif
#endif
#if (SDP_ACTIVE_CLIENTS < 1) || (SDP_ACTIVE_CLIENTS > NUM_BT_DEVICES) || (SDP_ACTIVE_CLIENTS > 16)
#error SDP_ACTIVE_CLIENTS must be greater than 0 and less than or equal to NUM_BT_DEVICES and 16.
#endif
/*-------------------------------------------------------------------------
* SDP_SERVER_SEND_SIZE constant
*
* Defines the maximum number of bytes that the server can send in a
* single response.
*
* This value may range from 48 to the L2CAP MTU size (L2CAP_MTU). The
* default is 128.
*/
#ifndef SDP_SERVER_SEND_SIZE
#define SDP_SERVER_SEND_SIZE 128
#endif
#if (SDP_SERVER_SEND_SIZE < 48) || (SDP_SERVER_SEND_SIZE > L2CAP_MTU)
#error SDP_SERVER_SEND_SIZE must be between 48 and L2CAP_MTU
#endif
/*-------------------------------------------------------------------------
* SDP_SERVER_MAX_LEVEL constant
*
* Defines the maximum number of nested data element sequences in
* an SDP attribute. SDP uses this value internally when examining
* attributes. If the number of nested data elements exceeds
* SDP_SERVER_MAX_LEVEL, certain SDP functions will return errors.
*
* The default value is four, which allows for typical attributes.
*/
#ifndef SDP_SERVER_MAX_LEVEL
#define SDP_SERVER_MAX_LEVEL 4
#endif
#if SDP_SERVER_MAX_LEVEL < 4
#error SDP_SERVER_MAX_LEVEL must be at least 4
#endif
/*-------------------------------------------------------------------------
* SDP_SERVER_LOCAL_MTU constant
*
* Defines the maximum L2CAP MTU used for the local SDP server.
*
* This value may range from 48 to the L2CAP MTU size (L2CAP_MTU).
* By default, this value is equal to the L2CAP_MTU size.
*/
#ifndef SDP_SERVER_LOCAL_MTU
#define SDP_SERVER_LOCAL_MTU L2CAP_MTU
#endif
#if SDP_SERVER_LOCAL_MTU < 48 || SDP_SERVER_LOCAL_MTU > L2CAP_MTU
#error SDP_SERVER_LOCAL_MTU must be between 48 and L2CAP_MTU.
#endif
/*-------------------------------------------------------------------------
* SDP_SERVER_MIN_REMOTE_MTU constant
*
* Defines the minimum remote MTU size acceptable to the local
* SDP server. If the remote SDP client cannot support the specified
* MTU size, the connection attempt will fail and SDP operations will
* not occur.
*
* This value may range from 48 to the L2CAP MTU size (L2CAP_MTU).
* By default, this value is 48.
*/
#ifndef SDP_SERVER_MIN_REMOTE_MTU
#define SDP_SERVER_MIN_REMOTE_MTU 48
#endif
#if SDP_SERVER_MIN_REMOTE_MTU < 48 || SDP_SERVER_MIN_REMOTE_MTU > L2CAP_MTU
#error SDP_SERVER_MIN_REMOTE_MTU must be between 48 and L2CAP_MTU.
#endif
#endif /* SDP_SERVER_SUPPORT == XA_ENABLED */
/****************************************************************************
*
* Section: RFCOMM Constants
*
****************************************************************************/
/*-------------------------------------------------------------------------
* RFCOMM_PROTOCOL constant
*
* Controls whether the RFCOMM protocol layer will be included. Set
* this constant to XA_ENABLED when it is necessary to have RFCOMM
* compiled into your system. This is necessary for all profiles based on
* the serial profile.
*
* By default, RFCOMM is enabled.
*/
#ifndef RFCOMM_PROTOCOL
#define RFCOMM_PROTOCOL XA_ENABLED
#endif
#if RFCOMM_PROTOCOL == XA_ENABLED
/*-------------------------------------------------------------------------
* RF_SECURITY constant
*
* Controls whether RFCOMM protocol layer security is enabled.
* This operates in conjunction with BT_SECURITY. If BT_SECURITY is
* enabled, then an application can enforce different levels of
* security from the Bluetooth stack. Level 2 security includes
* the ability to trigger security on an RFCOMM service ID. If
* RF_SECURITY is disabled, then code to perform RFCOMM security
* checks is excluded. It is possible to enable BT_SECURITY but
* disable RF_SECURITY. For example, if an application wishes to use
* security (BT_SECURITY), but will not use RFCOMM level security,
* then it should enable BT_SECURITY and disable RF_SECURITY to
* minimize code size. If BT_SECURITY is disabled, then RF_SECURITY will
* be disabled as well.
*
* By default, RF_SECURITY inherits the state of BT_SECURITY.
*/
#ifndef RF_SECURITY
#define RF_SECURITY BT_SECURITY
#endif
#if BT_SECURITY != XA_ENABLED
#if RF_SECURITY == XA_ENABLED
#error RF_SECURITY requires BT_SECURITY
#endif /* RF_SECURITY */
#endif /* BT_SECURITY */
/*-------------------------------------------------------------------------
* RF_SEND_TEST constant
*
* Controls whether the stack offers support for sending an RFCOMM
* test. When enabled, the RF_SendTest API can be used to test
* the connection with the remote device.
*
* By default, sending RF tests is disabled.
*/
#ifndef RF_SEND_TEST
#define RF_SEND_TEST XA_DISABLED
#endif
/*-------------------------------------------------------------------------
* RF_SEND_CONTROL constant
*
* Controls whether RFCOMM can be used to send control channel
* information. This includes modem status, line status, and negotiation
* of remote port settings.
*
* If RF_SEND_CONTROL is enabled, control channel information can
* be sent and processed by the application. This includes support for
* the following events and APIs.
*
* Events: RFEVENT_MODEM_STATUS_IND, RFEVENT_MODEM_STATUS_CNF,
* RFEVENT_LINE_STATUS_IND, RFEVENT_LINE_STATUS_CNF,
* RFEVENT_PORT_STATUS_CNF, RFEVENT_PORT_NEG_CNF.
*
* APIs: RF_SetModemStatus, RF_SetLineStatus, RF_RequestPortSettings,
* RF_AcceptPortSettings, RF_RequestPortStatus, and RF_SendPortStatus.
*
* If RF_SEND_CONTROL is disabled, RFCOMM will handle control channel
* requests received from the remote device, but will not send control
* channel requests to the remote device. The APIs and Events listed
* above are disabled, resulting in significant code size savings.
*
* By default, sending control channel information is enabled.
*/
#ifndef RF_SEND_CONTROL
#define RF_SEND_CONTROL XA_ENABLED
#endif
/*-------------------------------------------------------------------------
* NUM_RF_SERVERS constant
*
* Defines the number of RFCOMM services that can be registered with
* RFCOMM_RegisterServerChannel.
*
* This value may range from 0 to 30. The default is 4.
*/
#ifndef NUM_RF_SERVERS
#define NUM_RF_SERVERS 4
#endif
#if NUM_RF_SERVERS >= 0
#if NUM_RF_SERVERS > 30
#error NUM_RF_SERVERS must not exceed 30
#endif
#else
#error NUM_RF_SERVERS must be 0 or more
#endif
/*-------------------------------------------------------------------------
* NUM_RF_CHANNELS constant
*
* Defines the maximum number of RFCOMM channels that can be
* established to each device. This includes both server and client
* channels.
*
* The default number of channels is twice the number of local
* servers.
*/
#ifdef NUM_RF_CHANNELS
#if (NUM_RF_CHANNELS < NUM_RF_SERVERS) || (NUM_RF_CHANNELS > 60)
#error NUM_RF_CHANNELS value is invalid
#endif
#else
#if NUM_RF_SERVERS > 0
#define NUM_RF_CHANNELS (NUM_RF_SERVERS * 2)
#else
#define NUM_RF_CHANNELS 1
#endif
#endif
#if !(NUM_RF_CHANNELS > 0)
#error NUM_RF_CHANNELS must be greater than 0
#endif
/*-------------------------------------------------------------------------
* RF_MAX_FRAME_SIZE constant
*
* Defines the maximum frame size for an RFCOMM channel. All registered
* RfChannel structures must have a "maxFrameSize" equal to or less
* than this value.
*
* This value may range between 127 bytes and 32767 bytes (or the
* L2CAP_MTU size minus 5, whichever is lower). The default maximum
* frame size is the L2CAP_MTU size, minus five bytes for RFCOMM
* protocol information.
*/
#ifndef RF_MAX_FRAME_SIZE
#if L2CAP_MTU > (32767+5)
#define RF_MAX_FRAME_SIZE 32767
#else
#define RF_MAX_FRAME_SIZE (L2CAP_MTU - 5)
#endif
#endif
#if RF_MAX_FRAME_SIZE > (L2CAP_MTU - 5)
#error RF_MAX_FRAME_SIZE cannot exceed the L2CAP_MTU - 5
#endif
/* The value tested here (23) must be the same as RF_MIN_FRAME_SIZE. */
#if RF_MAX_FRAME_SIZE < 23
#error RF_MAX_FRAME_SIZE cannot be less than 23
#endif
#if RF_MAX_FRAME_SIZE > 32767
#error RF_MAX_FRAME_SIZE cannot exceed 32767
#endif
/*-------------------------------------------------------------------------
* RF_CONNECT_TIMEOUT constant
*
* Defines the amount of time to wait for a response to a connect
* request for an RFCOMM channel. Because it is not possible to know
* whether authentication is required, this value must allow time for
* user interaction.
*
* This value may range between 60000 and 300000 (60 sec and 300 sec).
* The default time is 60 seconds.
*/
#ifndef RF_CONNECT_TIMEOUT
#define RF_CONNECT_TIMEOUT 60000
#endif
#if RF_CONNECT_TIMEOUT < 60000
#error RF_CONNECT_TIMEOUT cannot be less than 60000
#endif
#if RF_CONNECT_TIMEOUT > 300000
#error RF_CONNECT_TIMEOUT cannot be greater than 300000
#endif
/*-------------------------------------------------------------------------
* RF_T1_TIMEOUT constant
*
* Defines the amount of time to wait for a response to an RFCOMM command.
* If a response is not received within the allotted time, the RFCOMM
* multiplexer session will be torn down.
*
* This value may range between 10000 and 60000 (10 sec and 60 sec).
* The default time is 20 seconds.
*/
#ifndef RF_T1_TIMEOUT
#define RF_T1_TIMEOUT 20000
#endif
#if RF_T1_TIMEOUT < 10000
#error RF_T1_TIMEOUT cannot be less than 10000
#endif
#if RF_T1_TIMEOUT > 60000
#error RF_T1_TIMEOUT cannot be greater than 60000
#endif
/*-------------------------------------------------------------------------
* RF_T2_TIMEOUT constant
*
* Defines the amount of time to wait for a response to an RFCOMM
* control channel command. If a response is not received within the
* allotted time, the RFCOMM multiplexer session will be torn down.
*
* This value may range between 1000 and 60000 (1 sec and 60 sec).
* The default time is 20 seconds.
*/
#ifndef RF_T2_TIMEOUT
#define RF_T2_TIMEOUT 20000
#endif
#if RF_T2_TIMEOUT < 1000
#error RF_T2_TIMEOUT cannot be less than 1000
#endif
#if RF_T2_TIMEOUT > 60000
#error RF_T2_TIMEOUT cannot be greater than 60000
#endif
#endif /* RFCOMM_PROTOCOL == XA_ENABLED */
/* Internal flag for enable/disable of low level tests */
#ifndef JETTEST
#define JETTEST XA_DISABLED
#endif /* JETTEST */
/****************************************************************************
*
* Section: UnplugFest Testing
*
****************************************************************************/
/*---------------------------------------------------------------------------
* UPF_TWEAKS constant
*
* This value controls the inclusion of code which enables certain
* behaviors for UnplugFest interoperability testing. Certain UnplugFest
* tests require functionality or behaviors that may not be included in
* the Blue SDK. Set this value to XA_ENABLED to include this code.
*
* This constant should always be set to XA_DISABLED, except when
* performing UnplugFest tests.
*/
#ifndef UPF_TWEAKS
#define UPF_TWEAKS XA_DISABLED
#endif /* UPF_TWEAKS */
#endif /* __BTCONFIG_H */