Update IDF to 65acd99 (#358)
* Update IDF to 65acd99 * Update platformio and arduino build paths and libs * Update esptool binaries
This commit is contained in:
parent
450df7e3f8
commit
376961d168
@ -38,7 +38,7 @@
|
||||
{
|
||||
"packager": "esp32",
|
||||
"name": "esptool",
|
||||
"version": "fe69994"
|
||||
"version": "96698a3"
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -80,20 +80,20 @@
|
||||
},
|
||||
{
|
||||
"name": "esptool",
|
||||
"version": "9072736",
|
||||
"version": "96698a3",
|
||||
"systems": [
|
||||
{
|
||||
"host": "i686-mingw32",
|
||||
"url": "https://dl.espressif.com/dl/esptool-9072736-windows.zip",
|
||||
"archiveFileName": "esptool-9072736-windows.zip",
|
||||
"checksum": "SHA-256:eac14998df3fed9998943ace5c2f07114b678869f143c3316f4ff26cc851e268",
|
||||
"url": "https://dl.espressif.com/dl/esptool-96698a3-windows.zip",
|
||||
"archiveFileName": "esptool-96698a3-windows.zip",
|
||||
"checksum": "SHA-256:12f026c84869f0bd2f6a863191ec84d27b91f21d17e2e2e9e11c79be50f2d0fc",
|
||||
"size": "3390935"
|
||||
},
|
||||
{
|
||||
"host": "x86_64-apple-darwin",
|
||||
"url": "https://dl.espressif.com/dl/esptool-9072736-macos.tar.gz",
|
||||
"archiveFileName": "esptool-9072736-macos.tar.gz",
|
||||
"checksum": "SHA-256:2b88ce516719f8b54c22ae637109b1437f3ab5f81a1e6260ef14799e4dd3b355",
|
||||
"url": "https://dl.espressif.com/dl/esptool-96698a3-macos.tar.gz",
|
||||
"archiveFileName": "esptool-96698a3-macos.tar.gz",
|
||||
"checksum": "SHA-256:e3154dbf32c3ba5e5ebd45e913178b167cf761e5ce0152b2bb069a2453f6839b",
|
||||
"size": "3805789"
|
||||
}
|
||||
]
|
||||
|
@ -21,7 +21,7 @@ compiler.warning_flags.all=-Wall -Werror=all -Wextra
|
||||
|
||||
compiler.path={runtime.tools.xtensa-esp32-elf-gcc.path}/bin/
|
||||
compiler.sdk.path={runtime.platform.path}/tools/sdk
|
||||
compiler.cpreprocessor.flags=-DESP_PLATFORM -DMBEDTLS_CONFIG_FILE="mbedtls/esp_config.h" -DHAVE_CONFIG_H "-I{compiler.sdk.path}/include/config" "-I{compiler.sdk.path}/include/bluedroid" "-I{compiler.sdk.path}/include/app_update" "-I{compiler.sdk.path}/include/bootloader_support" "-I{compiler.sdk.path}/include/bt" "-I{compiler.sdk.path}/include/driver" "-I{compiler.sdk.path}/include/esp32" "-I{compiler.sdk.path}/include/ethernet" "-I{compiler.sdk.path}/include/fatfs" "-I{compiler.sdk.path}/include/freertos" "-I{compiler.sdk.path}/include/jsmn" "-I{compiler.sdk.path}/include/log" "-I{compiler.sdk.path}/include/mdns" "-I{compiler.sdk.path}/include/mbedtls" "-I{compiler.sdk.path}/include/mbedtls_port" "-I{compiler.sdk.path}/include/newlib" "-I{compiler.sdk.path}/include/nvs_flash" "-I{compiler.sdk.path}/include/openssl" "-I{compiler.sdk.path}/include/soc" "-I{compiler.sdk.path}/include/spi_flash" "-I{compiler.sdk.path}/include/sdmmc" "-I{compiler.sdk.path}/include/tcpip_adapter" "-I{compiler.sdk.path}/include/ulp" "-I{compiler.sdk.path}/include/vfs" "-I{compiler.sdk.path}/include/xtensa-debug-module" "-I{compiler.sdk.path}/include/newlib" "-I{compiler.sdk.path}/include/coap" "-I{compiler.sdk.path}/include/wpa_supplicant" "-I{compiler.sdk.path}/include/expat" "-I{compiler.sdk.path}/include/json" "-I{compiler.sdk.path}/include/nghttp" "-I{compiler.sdk.path}/include/lwip"
|
||||
compiler.cpreprocessor.flags=-DESP_PLATFORM -DMBEDTLS_CONFIG_FILE="mbedtls/esp_config.h" -DHAVE_CONFIG_H "-I{compiler.sdk.path}/include/config" "-I{compiler.sdk.path}/include/bluedroid" "-I{compiler.sdk.path}/include/app_update" "-I{compiler.sdk.path}/include/bootloader_support" "-I{compiler.sdk.path}/include/bt" "-I{compiler.sdk.path}/include/driver" "-I{compiler.sdk.path}/include/esp32" "-I{compiler.sdk.path}/include/ethernet" "-I{compiler.sdk.path}/include/fatfs" "-I{compiler.sdk.path}/include/freertos" "-I{compiler.sdk.path}/include/jsmn" "-I{compiler.sdk.path}/include/log" "-I{compiler.sdk.path}/include/mdns" "-I{compiler.sdk.path}/include/mbedtls" "-I{compiler.sdk.path}/include/mbedtls_port" "-I{compiler.sdk.path}/include/newlib" "-I{compiler.sdk.path}/include/nvs_flash" "-I{compiler.sdk.path}/include/openssl" "-I{compiler.sdk.path}/include/soc" "-I{compiler.sdk.path}/include/spi_flash" "-I{compiler.sdk.path}/include/sdmmc" "-I{compiler.sdk.path}/include/tcpip_adapter" "-I{compiler.sdk.path}/include/ulp" "-I{compiler.sdk.path}/include/vfs" "-I{compiler.sdk.path}/include/wear_levelling" "-I{compiler.sdk.path}/include/xtensa-debug-module" "-I{compiler.sdk.path}/include/newlib" "-I{compiler.sdk.path}/include/coap" "-I{compiler.sdk.path}/include/wpa_supplicant" "-I{compiler.sdk.path}/include/expat" "-I{compiler.sdk.path}/include/json" "-I{compiler.sdk.path}/include/nghttp" "-I{compiler.sdk.path}/include/lwip"
|
||||
|
||||
compiler.c.cmd=xtensa-esp32-elf-gcc
|
||||
compiler.c.flags=-std=gnu99 -Os -g3 -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -Wpointer-arith {compiler.warning_flags} -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -Wno-old-style-declaration -MMD -c
|
||||
@ -34,7 +34,7 @@ compiler.S.flags=-c -g3 -x assembler-with-cpp -MMD -mlongcalls
|
||||
|
||||
compiler.c.elf.cmd=xtensa-esp32-elf-gcc
|
||||
compiler.c.elf.flags=-nostdlib "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" -T esp32_out.ld -T esp32.common.ld -T esp32.rom.ld -T esp32.peripherals.ld -u call_user_start_cpu0 -Wl,--gc-sections -Wl,-static -Wl,--undefined=uxTopUsedPriority
|
||||
compiler.c.elf.libs=-lgcc -lstdc++ -lapp_update -lbootloader_support -lbt -lbtdm_app -lc -lc_nano -lcoap -lcoexist -lcore -lcxx -ldriver -lesp32 -lethernet -lexpat -lfatfs -lfreertos -lhal -ljsmn -ljson -llog -llwip -lm -lmbedtls -lmdns -lmicro-ecc -lnet80211 -lnewlib -lnghttp -lnvs_flash -lopenssl -lphy -lpp -lrtc -lsdmmc -lsmartconfig -lsoc -lspi_flash -ltcpip_adapter -lulp -lvfs -lwpa -lwpa2 -lwpa_supplicant -lwps -lxtensa-debug-module
|
||||
compiler.c.elf.libs=-lgcc -lstdc++ -lapp_update -lbootloader_support -lbt -lbtdm_app -lc -lc_nano -lcoap -lcoexist -lcore -lcxx -ldriver -lesp32 -lethernet -lexpat -lfatfs -lfreertos -lhal -ljsmn -ljson -llog -llwip -lm -lmbedtls -lmdns -lmicro-ecc -lnet80211 -lnewlib -lnghttp -lnvs_flash -lopenssl -lphy -lpp -lrtc -lsdmmc -lsmartconfig -lsoc -lspi_flash -ltcpip_adapter -lulp -lvfs -lwear_levelling -lwpa -lwpa2 -lwpa_supplicant -lwps -lxtensa-debug-module
|
||||
|
||||
compiler.as.cmd=xtensa-esp32-elf-as
|
||||
|
||||
|
272
tools/esptool.py
272
tools/esptool.py
@ -30,7 +30,7 @@ import base64
|
||||
import zlib
|
||||
import shlex
|
||||
|
||||
__version__ = "2.0-beta2"
|
||||
__version__ = "2.0-beta3"
|
||||
|
||||
MAX_UINT32 = 0xffffffff
|
||||
MAX_UINT24 = 0xffffff
|
||||
@ -574,14 +574,19 @@ class ESPLoader(object):
|
||||
raise FatalError('Digest mismatch: expected %s, got %s' % (expected_digest, digest))
|
||||
return data
|
||||
|
||||
def flash_spi_attach(self,is_hspi,is_legacy):
|
||||
def flash_spi_attach(self, hspi_arg):
|
||||
"""Send SPI attach command to enable the SPI flash pins
|
||||
|
||||
ESP8266 ROM does this when you send flash_begin, ESP32 ROM
|
||||
has it as a SPI command.
|
||||
"""
|
||||
# last 3 bytes in ESP_SPI_ATTACH argument are reserved values
|
||||
arg = struct.pack('<IBBBB', 1 if is_hspi else 0, 1 if is_legacy else 0, 0, 0, 0)
|
||||
arg = struct.pack('<I', hspi_arg)
|
||||
if not self.IS_STUB:
|
||||
# ESP32 ROM loader takes additional 'is legacy' arg, which is not
|
||||
# currently supported in the stub loader or esptool.py (as it's not usually needed.)
|
||||
is_legacy = 0
|
||||
arg += struct.pack('BBBB', is_legacy, 0, 0, 0)
|
||||
self.check_command("configure SPI flash pins", ESP32ROM.ESP_SPI_ATTACH, arg)
|
||||
|
||||
def flash_set_parameters(self, size):
|
||||
@ -809,9 +814,9 @@ class ESP8266ROM(ESPLoader):
|
||||
|
||||
FLASH_HEADER_OFFSET = 0
|
||||
|
||||
def flash_spi_attach(self, is_spi, is_legacy):
|
||||
def flash_spi_attach(self, hspi_arg):
|
||||
if self.IS_STUB:
|
||||
super(ESP8266ROM, self).flash_spi_attach(is_spi, is_legacy)
|
||||
super(ESP8266ROM, self).flash_spi_attach(hspi_arg)
|
||||
else:
|
||||
# ESP8266 ROM has no flash_spi_attach command in serial protocol,
|
||||
# but flash_begin will do it
|
||||
@ -1892,6 +1897,11 @@ def main():
|
||||
dest='operation',
|
||||
help='Run esptool {command} -h for additional help')
|
||||
|
||||
def add_spi_connection_arg(parent):
|
||||
parent.add_argument('--spi-connection', '-sc', help='ESP32-only argument. Override default SPI Flash connection. ' +
|
||||
'Value can be SPI, HSPI or a comma-separated list of 5 I/O numbers to use for SPI flash (CLK,Q,D,HD,CS).',
|
||||
action=SpiConnectionAction)
|
||||
|
||||
parser_load_ram = subparsers.add_parser(
|
||||
'load_ram',
|
||||
help='Download an image to RAM and execute')
|
||||
@ -1928,8 +1938,7 @@ def main():
|
||||
' plus ESP8266-only (256KB, 512KB, 2MB-c1, 4MB-c1, 4MB-2)',
|
||||
action=FlashSizeAction, auto_detect=auto_detect,
|
||||
default=os.environ.get('ESPTOOL_FS', 'detect' if auto_detect else '1MB'))
|
||||
parent.add_argument('--ucIsHspi', '-ih', help='Config SPI PORT/PINS (Espressif internal feature)',action='store_true')
|
||||
parent.add_argument('--ucIsLegacy', '-il', help='Config SPI LEGACY (Espressif internal feature)',action='store_true')
|
||||
add_spi_connection_arg(parent)
|
||||
|
||||
parser_write_flash = subparsers.add_parser(
|
||||
'write_flash',
|
||||
@ -1978,20 +1987,23 @@ def main():
|
||||
'chip_id',
|
||||
help='Read Chip ID from OTP ROM')
|
||||
|
||||
subparsers.add_parser(
|
||||
parser_flash_id = subparsers.add_parser(
|
||||
'flash_id',
|
||||
help='Read SPI flash manufacturer and device ID')
|
||||
add_spi_connection_arg(parser_flash_id)
|
||||
|
||||
parser_read_status = subparsers.add_parser(
|
||||
'read_flash_status',
|
||||
help='Read SPI flash status register')
|
||||
|
||||
add_spi_connection_arg(parser_read_status)
|
||||
parser_read_status.add_argument('--bytes', help='Number of bytes to read (1-3)', type=int, choices=[1,2,3], default=2)
|
||||
|
||||
parser_write_status = subparsers.add_parser(
|
||||
'write_flash_status',
|
||||
help='Write SPI flash status register')
|
||||
|
||||
add_spi_connection_arg(parser_write_status)
|
||||
parser_write_status.add_argument('--non-volatile', help='Write non-volatile bits (use with caution)', action='store_true')
|
||||
parser_write_status.add_argument('--bytes', help='Number of status bytes to write (1-3)', type=int, choices=[1,2,3], default=2)
|
||||
parser_write_status.add_argument('value', help='New value', type=arg_auto_int)
|
||||
@ -1999,6 +2011,7 @@ def main():
|
||||
parser_read_flash = subparsers.add_parser(
|
||||
'read_flash',
|
||||
help='Read SPI flash content')
|
||||
add_spi_connection_arg(parser_read_flash)
|
||||
parser_read_flash.add_argument('address', help='Start address', type=arg_auto_int)
|
||||
parser_read_flash.add_argument('size', help='Size of region to dump', type=arg_auto_int)
|
||||
parser_read_flash.add_argument('filename', help='Name of binary dump')
|
||||
@ -2013,13 +2026,15 @@ def main():
|
||||
choices=['no', 'yes'], default='no')
|
||||
add_spi_flash_subparsers(parser_verify_flash, auto_detect=True)
|
||||
|
||||
subparsers.add_parser(
|
||||
parser_erase_flash = subparsers.add_parser(
|
||||
'erase_flash',
|
||||
help='Perform Chip Erase on SPI flash')
|
||||
add_spi_connection_arg(parser_erase_flash)
|
||||
|
||||
parser_erase_region = subparsers.add_parser(
|
||||
'erase_region',
|
||||
help='Erase a region of the flash')
|
||||
add_spi_connection_arg(parser_erase_region)
|
||||
parser_erase_region.add_argument('address', help='Start address (must be multiple of 4096)', type=arg_auto_int)
|
||||
parser_erase_region.add_argument('size', help='Size of region to erase (must be multiple of 4096)', type=arg_auto_int)
|
||||
|
||||
@ -2066,12 +2081,17 @@ def main():
|
||||
except NotImplementedInROMError:
|
||||
print("WARNING: ROM doesn't support changing baud rate. Keeping initial baud rate %d" % initial_baud)
|
||||
|
||||
# override common SPI flash parameter stuff as required
|
||||
if hasattr(args, "ucIsHspi"):
|
||||
print("Attaching SPI flash...")
|
||||
esp.flash_spi_attach(args.ucIsHspi,args.ucIsLegacy)
|
||||
else:
|
||||
esp.flash_spi_attach(0, 0)
|
||||
# override common SPI flash parameter stuff if configured to do so
|
||||
if hasattr(args, "spi_connection") and args.spi_connection is not None:
|
||||
if esp.CHIP_NAME != "ESP32":
|
||||
raise FatalError("Chip %s does not support --spi-connection option." % esp.CHIP_NAME)
|
||||
print("Configuring SPI flash mode...")
|
||||
esp.flash_spi_attach(args.spi_connection)
|
||||
elif args.no_stub:
|
||||
print("Enabling default SPI flash mode...")
|
||||
# ROM loader doesn't enable flash unless we explicitly do it
|
||||
esp.flash_spi_attach(0)
|
||||
|
||||
if hasattr(args, "flash_size"):
|
||||
print("Configuring flash size...")
|
||||
detect_flash_size(esp, args)
|
||||
@ -2152,6 +2172,34 @@ class FlashSizeAction(argparse.Action):
|
||||
setattr(namespace, self.dest, value)
|
||||
|
||||
|
||||
class SpiConnectionAction(argparse.Action):
|
||||
""" Custom action to parse 'spi connection' override. Values are SPI, HSPI, or a sequence of 5 pin numbers separated by commas.
|
||||
"""
|
||||
def __call__(self, parser, namespace, value, option_string=None):
|
||||
if value.upper() == "SPI":
|
||||
value = 0
|
||||
elif value.upper() == "HSPI":
|
||||
value = 1
|
||||
elif "," in value:
|
||||
values = value.split(",")
|
||||
if len(values) != 5:
|
||||
raise argparse.ArgumentError(self, '%s is not a valid list of comma-separate pin numbers. Must be 5 numbers - CLK,Q,D,HD,CS.' % value)
|
||||
try:
|
||||
values = tuple(int(v,0) for v in values)
|
||||
except ValueError:
|
||||
raise argparse.ArgumentError(self, '%s is not a valid argument. All pins must be numeric values' % values)
|
||||
if any([v for v in values if v > 33 or v < 0]):
|
||||
raise argparse.ArgumentError(self, 'Pin numbers must be in the range 0-33.')
|
||||
# encode the pin numbers as a 32-bit integer with packed 6-bit values, the same way ESP32 ROM takes them
|
||||
# TODO: make this less ESP32 ROM specific somehow...
|
||||
clk,q,d,hd,cs = values
|
||||
value = (hd << 24) | (cs << 18) | (d << 12) | (q << 6) | clk
|
||||
else:
|
||||
raise argparse.ArgumentError(self, '%s is not a valid spi-connection value. ' +
|
||||
'Values are SPI, HSPI, or a sequence of 5 pin numbers CLK,Q,D,HD,CS).' % values)
|
||||
setattr(namespace, self.dest, value)
|
||||
|
||||
|
||||
class AddrFilenamePairAction(argparse.Action):
|
||||
""" Custom parser class for the address/filename pairs passed as arguments """
|
||||
def __init__(self, option_strings, dest, nargs='+', **kwargs):
|
||||
@ -2190,108 +2238,112 @@ class AddrFilenamePairAction(argparse.Action):
|
||||
|
||||
# Binary stub code (see flasher_stub dir for source & details)
|
||||
ESP8266ROM.STUB_CODE = eval(zlib.decompress(base64.b64decode(b"""
|
||||
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\
|
||||
""")))
|
||||
ESP32ROM.STUB_CODE = eval(zlib.decompress(base64.b64decode(b"""
|
||||
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\
|
||||
""")))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
def _main():
|
||||
try:
|
||||
main()
|
||||
except FatalError as e:
|
||||
print('\nA fatal error occurred: %s' % e)
|
||||
sys.exit(2)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
_main()
|
||||
|
@ -73,6 +73,7 @@ env.Prepend(
|
||||
join(FRAMEWORK_DIR, "tools", "sdk", "include", "tcpip_adapter"),
|
||||
join(FRAMEWORK_DIR, "tools", "sdk", "include", "ulp"),
|
||||
join(FRAMEWORK_DIR, "tools", "sdk", "include", "vfs"),
|
||||
join(FRAMEWORK_DIR, "tools", "sdk", "include", "wear_levelling"),
|
||||
join(FRAMEWORK_DIR, "tools", "sdk", "include", "xtensa-debug-module"),
|
||||
join(FRAMEWORK_DIR, "tools", "sdk", "include", "newlib"),
|
||||
join(FRAMEWORK_DIR, "tools", "sdk", "include", "coap"),
|
||||
@ -83,14 +84,12 @@ env.Prepend(
|
||||
join(FRAMEWORK_DIR, "tools", "sdk", "include", "lwip"),
|
||||
join(FRAMEWORK_DIR, "cores", env.BoardConfig().get("build.core"))
|
||||
],
|
||||
|
||||
LIBPATH=[
|
||||
join(FRAMEWORK_DIR, "tools", "sdk", "lib"),
|
||||
join(FRAMEWORK_DIR, "tools", "sdk", "ld")
|
||||
],
|
||||
|
||||
LIBS=[
|
||||
"gcc", "stdc++", "app_update", "bootloader_support", "bt", "btdm_app", "c", "c_nano", "coap", "coexist", "core", "cxx", "driver", "esp32", "ethernet", "expat", "fatfs", "freertos", "hal", "jsmn", "json", "log", "lwip", "m", "mbedtls", "mdns", "micro-ecc", "net80211", "newlib", "nghttp", "nvs_flash", "openssl", "phy", "pp", "rtc", "sdmmc", "smartconfig", "soc", "spi_flash", "tcpip_adapter", "ulp", "vfs", "wpa", "wpa2", "wpa_supplicant", "wps", "xtensa-debug-module"
|
||||
"gcc", "stdc++", "app_update", "bootloader_support", "bt", "btdm_app", "c", "c_nano", "coap", "coexist", "core", "cxx", "driver", "esp32", "ethernet", "expat", "fatfs", "freertos", "hal", "jsmn", "json", "log", "lwip", "m", "mbedtls", "mdns", "micro-ecc", "net80211", "newlib", "nghttp", "nvs_flash", "openssl", "phy", "pp", "rtc", "sdmmc", "smartconfig", "soc", "spi_flash", "tcpip_adapter", "ulp", "vfs", "wear_levelling", "wpa", "wpa2", "wpa_supplicant", "wps", "xtensa-debug-module"
|
||||
],
|
||||
|
||||
UPLOADERFLAGS=[
|
||||
|
Binary file not shown.
255
tools/sdk/include/bluedroid/a2d_api.h
Normal file
255
tools/sdk/include/bluedroid/a2d_api.h
Normal file
@ -0,0 +1,255 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2000-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* nterface to A2DP Application Programming Interface
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef A2D_API_H
|
||||
#define A2D_API_H
|
||||
#include "sdp_api.h"
|
||||
#if (A2D_INCLUDED == TRUE)
|
||||
/*****************************************************************************
|
||||
** constants
|
||||
*****************************************************************************/
|
||||
|
||||
/* Profile supported features */
|
||||
#define A2D_SUPF_PLAYER 0x0001
|
||||
#define A2D_SUPF_MIC 0x0002
|
||||
#define A2D_SUPF_TUNER 0x0004
|
||||
#define A2D_SUPF_MIXER 0x0008
|
||||
|
||||
#define A2D_SUPF_HEADPHONE 0x0001
|
||||
#define A2D_SUPF_SPEAKER 0x0002
|
||||
#define A2D_SUPF_RECORDER 0x0004
|
||||
#define A2D_SUPF_AMP 0x0008
|
||||
|
||||
/* AV Media Types */
|
||||
#define A2D_MEDIA_TYPE_AUDIO 0x00 /* audio media type + RFA */
|
||||
#define A2D_MEDIA_TYPE_VIDEO 0x10 /* video media type + RFA */
|
||||
#define A2D_MEDIA_TYPE_MULTI 0x20 /* multimedia media type + RFA */
|
||||
|
||||
/* AV Media Codec Type (Audio Codec ID) */
|
||||
#define A2D_MEDIA_CT_SBC 0x00 /* SBC media codec type */
|
||||
#define A2D_MEDIA_CT_M12 0x01 /* MPEG-1, 2 Audio media codec type */
|
||||
#define A2D_MEDIA_CT_M24 0x02 /* MPEG-2, 4 AAC media codec type */
|
||||
#define A2D_MEDIA_CT_ATRAC 0x04 /* ATRAC family media codec type */
|
||||
|
||||
#define A2D_SUCCESS 0 /* Success */
|
||||
#define A2D_FAIL 0x0A /* Failed */
|
||||
#define A2D_BUSY 0x0B /* A2D_FindService is already in progress */
|
||||
#define A2D_INVALID_PARAMS 0x0C /* bad parameters */
|
||||
#define A2D_WRONG_CODEC 0x0D /* wrong codec info */
|
||||
#define A2D_BAD_CODEC_TYPE 0xC1 /* Media Codec Type is not valid */
|
||||
#define A2D_NS_CODEC_TYPE 0xC2 /* Media Codec Type is not supported */
|
||||
#define A2D_BAD_SAMP_FREQ 0xC3 /* Sampling Frequency is not valid or multiple values have been selected */
|
||||
#define A2D_NS_SAMP_FREQ 0xC4 /* Sampling Frequency is not supported */
|
||||
#define A2D_BAD_CH_MODE 0xC5 /* Channel Mode is not valid or multiple values have been selected */
|
||||
#define A2D_NS_CH_MODE 0xC6 /* Channel Mode is not supported */
|
||||
#define A2D_BAD_SUBBANDS 0xC7 /* None or multiple values have been selected for Number of Subbands */
|
||||
#define A2D_NS_SUBBANDS 0xC8 /* Number of Subbands is not supported */
|
||||
#define A2D_BAD_ALLOC_MTHD 0xC9 /* None or multiple values have been selected for Allocation Method */
|
||||
#define A2D_NS_ALLOC_MTHD 0xCA /* Allocation Method is not supported */
|
||||
#define A2D_BAD_MIN_BITPOOL 0xCB /* Minimum Bitpool Value is not valid */
|
||||
#define A2D_NS_MIN_BITPOOL 0xCC /* Minimum Bitpool Value is not supported */
|
||||
#define A2D_BAD_MAX_BITPOOL 0xCD /* Maximum Bitpool Value is not valid */
|
||||
#define A2D_NS_MAX_BITPOOL 0xCE /* Maximum Bitpool Value is not supported */
|
||||
#define A2D_BAD_LAYER 0xCF /* None or multiple values have been selected for Layer */
|
||||
#define A2D_NS_LAYER 0xD0 /* Layer is not supported */
|
||||
#define A2D_NS_CRC 0xD1 /* CRC is not supported */
|
||||
#define A2D_NS_MPF 0xD2 /* MPF-2 is not supported */
|
||||
#define A2D_NS_VBR 0xD3 /* VBR is not supported */
|
||||
#define A2D_BAD_BIT_RATE 0xD4 /* None or multiple values have been selected for Bit Rate */
|
||||
#define A2D_NS_BIT_RATE 0xD5 /* Bit Rate is not supported */
|
||||
#define A2D_BAD_OBJ_TYPE 0xD6 /* Either 1) Object type is not valid (b3-b0) or 2) None or multiple values have been selected for Object Type */
|
||||
#define A2D_NS_OBJ_TYPE 0xD7 /* Object type is not supported */
|
||||
#define A2D_BAD_CHANNEL 0xD8 /* None or multiple values have been selected for Channels */
|
||||
#define A2D_NS_CHANNEL 0xD9 /* Channels is not supported */
|
||||
#define A2D_BAD_BLOCK_LEN 0xDD /* None or multiple values have been selected for Block Length */
|
||||
#define A2D_BAD_CP_TYPE 0xE0 /* The requested CP Type is not supported. */
|
||||
#define A2D_BAD_CP_FORMAT 0xE1 /* The format of Content Protection Service Capability/Content Protection Scheme Dependent Data is not correct. */
|
||||
|
||||
typedef UINT8 tA2D_STATUS;
|
||||
|
||||
/* the return values from A2D_BitsSet() */
|
||||
#define A2D_SET_ONE_BIT 1 /* one and only one bit is set */
|
||||
#define A2D_SET_ZERO_BIT 0 /* all bits clear */
|
||||
#define A2D_SET_MULTL_BIT 2 /* multiple bits are set */
|
||||
|
||||
/*****************************************************************************
|
||||
** type definitions
|
||||
*****************************************************************************/
|
||||
|
||||
/* This data type is used in A2D_FindService() to initialize the SDP database
|
||||
* to hold the result service search. */
|
||||
typedef struct {
|
||||
UINT32 db_len; /* Length, in bytes, of the discovery database */
|
||||
UINT16 num_attr;/* The number of attributes in p_attrs */
|
||||
tSDP_DISCOVERY_DB *p_db; /* Pointer to the discovery database */
|
||||
UINT16 *p_attrs; /* The attributes filter. If NULL, A2DP API sets the attribute filter
|
||||
* to be ATTR_ID_SERVICE_CLASS_ID_LIST, ATTR_ID_BT_PROFILE_DESC_LIST,
|
||||
* ATTR_ID_SUPPORTED_FEATURES, ATTR_ID_SERVICE_NAME and ATTR_ID_PROVIDER_NAME.
|
||||
* If not NULL, the input is taken as the filter. */
|
||||
} tA2D_SDP_DB_PARAMS;
|
||||
|
||||
/* This data type is used in tA2D_FIND_CBACK to report the result of the SDP discovery process. */
|
||||
typedef struct {
|
||||
UINT16 service_len; /* Length, in bytes, of the service name */
|
||||
UINT16 provider_len; /* Length, in bytes, of the provider name */
|
||||
char *p_service_name; /* Pointer the service name. This character string may not be null terminated.
|
||||
* Use the service_len parameter to safely copy this string */
|
||||
char *p_provider_name;/* Pointer the provider name. This character string may not be null terminated.
|
||||
* Use the provider_len parameter to safely copy this string */
|
||||
UINT16 features; /* Profile supported features */
|
||||
UINT16 avdt_version; /* AVDTP protocol version */
|
||||
} tA2D_Service;
|
||||
|
||||
/* This is the callback to notify the result of the SDP discovery process. */
|
||||
typedef void (tA2D_FIND_CBACK)(BOOLEAN found, tA2D_Service *p_service);
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
** external function declarations
|
||||
*****************************************************************************/
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
/******************************************************************************
|
||||
**
|
||||
** Function A2D_AddRecord
|
||||
**
|
||||
** Description This function is called by a server application to add
|
||||
** SRC or SNK information to an SDP record. Prior to
|
||||
** calling this function the application must call
|
||||
** SDP_CreateRecord() to create an SDP record.
|
||||
**
|
||||
** Input Parameters:
|
||||
** service_uuid: Indicates SRC or SNK.
|
||||
**
|
||||
** p_service_name: Pointer to a null-terminated character
|
||||
** string containing the service name.
|
||||
**
|
||||
** p_provider_name: Pointer to a null-terminated character
|
||||
** string containing the provider name.
|
||||
**
|
||||
** features: Profile supported features.
|
||||
**
|
||||
** sdp_handle: SDP handle returned by SDP_CreateRecord().
|
||||
**
|
||||
** Output Parameters:
|
||||
** None.
|
||||
**
|
||||
** Returns A2D_SUCCESS if function execution succeeded,
|
||||
** A2D_INVALID_PARAMS if bad parameters are given.
|
||||
** A2D_FAIL if function execution failed.
|
||||
**
|
||||
******************************************************************************/
|
||||
extern tA2D_STATUS A2D_AddRecord(UINT16 service_uuid, char *p_service_name, char *p_provider_name,
|
||||
UINT16 features, UINT32 sdp_handle);
|
||||
|
||||
/******************************************************************************
|
||||
**
|
||||
** Function A2D_FindService
|
||||
**
|
||||
** Description This function is called by a client application to
|
||||
** perform service discovery and retrieve SRC or SNK SDP
|
||||
** record information from a server. Information is
|
||||
** returned for the first service record found on the
|
||||
** server that matches the service UUID. The callback
|
||||
** function will be executed when service discovery is
|
||||
** complete. There can only be one outstanding call to
|
||||
** A2D_FindService() at a time; the application must wait
|
||||
** for the callback before it makes another call to
|
||||
** the function.
|
||||
**
|
||||
** Input Parameters:
|
||||
** service_uuid: Indicates SRC or SNK.
|
||||
**
|
||||
** bd_addr: BD address of the peer device.
|
||||
**
|
||||
** p_db: Pointer to the information to initialize
|
||||
** the discovery database.
|
||||
**
|
||||
** p_cback: Pointer to the A2D_FindService()
|
||||
** callback function.
|
||||
**
|
||||
** Output Parameters:
|
||||
** None.
|
||||
**
|
||||
** Returns A2D_SUCCESS if function execution succeeded,
|
||||
** A2D_INVALID_PARAMS if bad parameters are given.
|
||||
** A2D_BUSY if discovery is already in progress.
|
||||
** A2D_FAIL if function execution failed.
|
||||
**
|
||||
******************************************************************************/
|
||||
extern tA2D_STATUS A2D_FindService(UINT16 service_uuid, BD_ADDR bd_addr,
|
||||
tA2D_SDP_DB_PARAMS *p_db, tA2D_FIND_CBACK *p_cback);
|
||||
|
||||
/******************************************************************************
|
||||
**
|
||||
** Function A2D_SetTraceLevel
|
||||
**
|
||||
** Description Sets the trace level for A2D. If 0xff is passed, the
|
||||
** current trace level is returned.
|
||||
**
|
||||
** Input Parameters:
|
||||
** new_level: The level to set the A2D tracing to:
|
||||
** 0xff-returns the current setting.
|
||||
** 0-turns off tracing.
|
||||
** >= 1-Errors.
|
||||
** >= 2-Warnings.
|
||||
** >= 3-APIs.
|
||||
** >= 4-Events.
|
||||
** >= 5-Debug.
|
||||
**
|
||||
** Returns The new trace level or current trace level if
|
||||
** the input parameter is 0xff.
|
||||
**
|
||||
******************************************************************************/
|
||||
extern UINT8 A2D_SetTraceLevel (UINT8 new_level);
|
||||
|
||||
/******************************************************************************
|
||||
** Function A2D_BitsSet
|
||||
**
|
||||
** Description Check the given num for the number of bits set
|
||||
** Returns A2D_SET_ONE_BIT, if one and only one bit is set
|
||||
** A2D_SET_ZERO_BIT, if all bits clear
|
||||
** A2D_SET_MULTL_BIT, if multiple bits are set
|
||||
******************************************************************************/
|
||||
extern UINT8 A2D_BitsSet(UINT8 num);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function A2D_Init
|
||||
**
|
||||
** Description This function is called at stack startup to allocate the
|
||||
** control block (if using dynamic memory), and initializes the
|
||||
** control block and tracing level.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void A2D_Init(void);
|
||||
#endif ///A2D_INCLUDED
|
||||
#endif /* A2D_API_H */
|
81
tools/sdk/include/bluedroid/a2d_int.h
Normal file
81
tools/sdk/include/bluedroid/a2d_int.h
Normal file
@ -0,0 +1,81 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2002-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* 2DP internal header file
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef A2D_INT_H
|
||||
#define A2D_INT_H
|
||||
|
||||
#include "a2d_api.h"
|
||||
#if (A2D_INCLUDED == TRUE)
|
||||
/*****************************************************************************
|
||||
** Constants
|
||||
*****************************************************************************/
|
||||
#define A2D_VERSION 0x0102
|
||||
|
||||
/* Number of attributes in A2D SDP record. */
|
||||
#define A2D_NUM_ATTR 6
|
||||
|
||||
/* Number of protocol elements in protocol element list. */
|
||||
#define A2D_NUM_PROTO_ELEMS 2
|
||||
|
||||
/*****************************************************************************
|
||||
** Type definitions
|
||||
*****************************************************************************/
|
||||
|
||||
/* Control block used by A2D_FindService(). */
|
||||
typedef struct {
|
||||
tA2D_FIND_CBACK *p_cback; /* pointer to application callback */
|
||||
tSDP_DISCOVERY_DB *p_db; /* pointer to discovery database */
|
||||
UINT16 service_uuid; /* service UUID of search */
|
||||
} tA2D_FIND_CB;
|
||||
|
||||
typedef struct {
|
||||
tA2D_FIND_CB find; /* find service control block */
|
||||
UINT8 trace_level;
|
||||
BOOLEAN use_desc;
|
||||
UINT16 avdt_sdp_ver; /* AVDTP version */
|
||||
} tA2D_CB;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/******************************************************************************
|
||||
** Main Control Block
|
||||
*******************************************************************************/
|
||||
#if A2D_DYNAMIC_MEMORY == FALSE
|
||||
extern tA2D_CB a2d_cb;
|
||||
#else
|
||||
extern tA2D_CB *a2d_cb_ptr;
|
||||
#define a2d_cb (*a2d_cb_ptr)
|
||||
#endif
|
||||
|
||||
/* Used only for conformance testing */
|
||||
extern void a2d_set_avdt_sdp_ver (UINT16 avdt_sdp_ver);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif ///A2D_INCLUDED == TRUE
|
||||
#endif /* A2D_INT_H */
|
213
tools/sdk/include/bluedroid/a2d_sbc.h
Normal file
213
tools/sdk/include/bluedroid/a2d_sbc.h
Normal file
@ -0,0 +1,213 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2000-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* nterface to low complexity subband codec (SBC)
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef A2D_SBC_H
|
||||
#define A2D_SBC_H
|
||||
#if (A2D_INCLUDED == TRUE)
|
||||
/*****************************************************************************
|
||||
** Constants
|
||||
*****************************************************************************/
|
||||
/* the length of the SBC Media Payload header. */
|
||||
#define A2D_SBC_MPL_HDR_LEN 1
|
||||
|
||||
/* the LOSC of SBC media codec capabilitiy */
|
||||
#define A2D_SBC_INFO_LEN 6
|
||||
|
||||
/* for Codec Specific Information Element */
|
||||
#define A2D_SBC_IE_SAMP_FREQ_MSK 0xF0 /* b7-b4 sampling frequency */
|
||||
#define A2D_SBC_IE_SAMP_FREQ_16 0x80 /* b7:16 kHz */
|
||||
#define A2D_SBC_IE_SAMP_FREQ_32 0x40 /* b6:32 kHz */
|
||||
#define A2D_SBC_IE_SAMP_FREQ_44 0x20 /* b5:44.1kHz */
|
||||
#define A2D_SBC_IE_SAMP_FREQ_48 0x10 /* b4:48 kHz */
|
||||
|
||||
#define A2D_SBC_IE_CH_MD_MSK 0x0F /* b3-b0 channel mode */
|
||||
#define A2D_SBC_IE_CH_MD_MONO 0x08 /* b3: mono */
|
||||
#define A2D_SBC_IE_CH_MD_DUAL 0x04 /* b2: dual */
|
||||
#define A2D_SBC_IE_CH_MD_STEREO 0x02 /* b1: stereo */
|
||||
#define A2D_SBC_IE_CH_MD_JOINT 0x01 /* b0: joint stereo */
|
||||
|
||||
#define A2D_SBC_IE_BLOCKS_MSK 0xF0 /* b7-b4 number of blocks */
|
||||
#define A2D_SBC_IE_BLOCKS_4 0x80 /* 4 blocks */
|
||||
#define A2D_SBC_IE_BLOCKS_8 0x40 /* 8 blocks */
|
||||
#define A2D_SBC_IE_BLOCKS_12 0x20 /* 12blocks */
|
||||
#define A2D_SBC_IE_BLOCKS_16 0x10 /* 16blocks */
|
||||
|
||||
#define A2D_SBC_IE_SUBBAND_MSK 0x0C /* b3-b2 number of subbands */
|
||||
#define A2D_SBC_IE_SUBBAND_4 0x08 /* b3: 4 */
|
||||
#define A2D_SBC_IE_SUBBAND_8 0x04 /* b2: 8 */
|
||||
|
||||
#define A2D_SBC_IE_ALLOC_MD_MSK 0x03 /* b1-b0 allocation mode */
|
||||
#define A2D_SBC_IE_ALLOC_MD_S 0x02 /* b1: SNR */
|
||||
#define A2D_SBC_IE_ALLOC_MD_L 0x01 /* b0: loundess */
|
||||
|
||||
#define A2D_SBC_IE_MIN_BITPOOL 2
|
||||
#define A2D_SBC_IE_MAX_BITPOOL 250
|
||||
|
||||
/* for media payload header */
|
||||
#define A2D_SBC_HDR_F_MSK 0x80
|
||||
#define A2D_SBC_HDR_S_MSK 0x40
|
||||
#define A2D_SBC_HDR_L_MSK 0x20
|
||||
#define A2D_SBC_HDR_NUM_MSK 0x0F
|
||||
|
||||
/*****************************************************************************
|
||||
** Type Definitions
|
||||
*****************************************************************************/
|
||||
|
||||
/* data type for the SBC Codec Information Element*/
|
||||
typedef struct {
|
||||
UINT8 samp_freq; /* Sampling frequency */
|
||||
UINT8 ch_mode; /* Channel mode */
|
||||
UINT8 block_len; /* Block length */
|
||||
UINT8 num_subbands; /* Number of subbands */
|
||||
UINT8 alloc_mthd; /* Allocation method */
|
||||
UINT8 max_bitpool; /* Maximum bitpool */
|
||||
UINT8 min_bitpool; /* Minimum bitpool */
|
||||
} tA2D_SBC_CIE;
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
** External Function Declarations
|
||||
*****************************************************************************/
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
/******************************************************************************
|
||||
**
|
||||
** Function A2D_SbcChkFrInit
|
||||
**
|
||||
** Description check if need to init the descramble control block.
|
||||
**
|
||||
** Returns nothing.
|
||||
******************************************************************************/
|
||||
extern void A2D_SbcChkFrInit(UINT8 *p_pkt);
|
||||
|
||||
/******************************************************************************
|
||||
**
|
||||
** Function A2D_SbcDescramble
|
||||
**
|
||||
** Description descramble the packet.
|
||||
**
|
||||
** Returns nothing.
|
||||
******************************************************************************/
|
||||
extern void A2D_SbcDescramble(UINT8 *p_pkt, UINT16 len);
|
||||
|
||||
/******************************************************************************
|
||||
**
|
||||
** Function A2D_BldSbcInfo
|
||||
**
|
||||
** Description This function is called by an application to build
|
||||
** the SBC Media Codec Capabilities byte sequence
|
||||
** beginning from the LOSC octet.
|
||||
** Input Parameters:
|
||||
** media_type: Indicates Audio, or Multimedia.
|
||||
**
|
||||
** p_ie: The SBC Codec Information Element information.
|
||||
**
|
||||
** Output Parameters:
|
||||
** p_result: the resulting codec info byte sequence.
|
||||
**
|
||||
** Returns A2D_SUCCESS if function execution succeeded.
|
||||
** Error status code, otherwise.
|
||||
******************************************************************************/
|
||||
extern tA2D_STATUS A2D_BldSbcInfo(UINT8 media_type, tA2D_SBC_CIE *p_ie,
|
||||
UINT8 *p_result);
|
||||
|
||||
/******************************************************************************
|
||||
**
|
||||
** Function A2D_ParsSbcInfo
|
||||
**
|
||||
** Description This function is called by an application to parse
|
||||
** the SBC Media Codec Capabilities byte sequence
|
||||
** beginning from the LOSC octet.
|
||||
** Input Parameters:
|
||||
** p_info: the byte sequence to parse.
|
||||
**
|
||||
** for_caps: TRUE, if the byte sequence is for get capabilities response.
|
||||
**
|
||||
** Output Parameters:
|
||||
** p_ie: The SBC Codec Information Element information.
|
||||
**
|
||||
** Returns A2D_SUCCESS if function execution succeeded.
|
||||
** Error status code, otherwise.
|
||||
******************************************************************************/
|
||||
extern tA2D_STATUS A2D_ParsSbcInfo(tA2D_SBC_CIE *p_ie, UINT8 *p_info,
|
||||
BOOLEAN for_caps);
|
||||
|
||||
/******************************************************************************
|
||||
**
|
||||
** Function A2D_BldSbcMplHdr
|
||||
**
|
||||
** Description This function is called by an application to parse
|
||||
** the SBC Media Payload header.
|
||||
** Input Parameters:
|
||||
** frag: 1, if fragmented. 0, otherwise.
|
||||
**
|
||||
** start: 1, if the starting packet of a fragmented frame.
|
||||
**
|
||||
** last: 1, if the last packet of a fragmented frame.
|
||||
**
|
||||
** num: If frag is 1, this is the number of remaining fragments
|
||||
** (including this fragment) of this frame.
|
||||
** If frag is 0, this is the number of frames in this packet.
|
||||
**
|
||||
** Output Parameters:
|
||||
** p_dst: the resulting media payload header byte sequence.
|
||||
**
|
||||
** Returns void.
|
||||
******************************************************************************/
|
||||
extern void A2D_BldSbcMplHdr(UINT8 *p_dst, BOOLEAN frag, BOOLEAN start,
|
||||
BOOLEAN last, UINT8 num);
|
||||
|
||||
/******************************************************************************
|
||||
**
|
||||
** Function A2D_ParsSbcMplHdr
|
||||
**
|
||||
** Description This function is called by an application to parse
|
||||
** the SBC Media Payload header.
|
||||
** Input Parameters:
|
||||
** p_src: the byte sequence to parse..
|
||||
**
|
||||
** Output Parameters:
|
||||
** frag: 1, if fragmented. 0, otherwise.
|
||||
**
|
||||
** start: 1, if the starting packet of a fragmented frame.
|
||||
**
|
||||
** last: 1, if the last packet of a fragmented frame.
|
||||
**
|
||||
** num: If frag is 1, this is the number of remaining fragments
|
||||
** (including this fragment) of this frame.
|
||||
** If frag is 0, this is the number of frames in this packet.
|
||||
**
|
||||
** Returns void.
|
||||
******************************************************************************/
|
||||
extern void A2D_ParsSbcMplHdr(UINT8 *p_src, BOOLEAN *p_frag,
|
||||
BOOLEAN *p_start, BOOLEAN *p_last,
|
||||
UINT8 *p_num);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif ///A2D_INCLUDED == TRUE
|
||||
|
||||
#endif /* A2D_SBC_H */
|
@ -26,7 +26,7 @@
|
||||
typedef uint32_t period_ms_t;
|
||||
typedef void (*osi_alarm_callback_t)(void *data);
|
||||
|
||||
#define ALARM_CBS_NUM 20
|
||||
#define ALARM_CBS_NUM 30
|
||||
#define ALARM_ID_BASE 1000
|
||||
typedef struct alarm_t {
|
||||
/* timer id point to here */
|
||||
|
0
tools/sdk/include/bluedroid/avct_api.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/avct_api.h
Executable file → Normal file
62
tools/sdk/include/bluedroid/avct_defs.h
Normal file
62
tools/sdk/include/bluedroid/avct_defs.h
Normal file
@ -0,0 +1,62 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2003-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* This contains constants definitions and other information from the AVCTP
|
||||
* specification. This file is intended for use internal to AVCT only.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef AVCT_DEFS_H
|
||||
#define AVCT_DEFS_H
|
||||
|
||||
/*****************************************************************************
|
||||
** constants
|
||||
*****************************************************************************/
|
||||
|
||||
/* packet type */
|
||||
#define AVCT_PKT_TYPE_SINGLE 0 /* single packet */
|
||||
#define AVCT_PKT_TYPE_START 1 /* start packet */
|
||||
#define AVCT_PKT_TYPE_CONT 2 /* continue packet */
|
||||
#define AVCT_PKT_TYPE_END 3 /* end packet */
|
||||
|
||||
/* header lengths for different packet types */
|
||||
#define AVCT_HDR_LEN_SINGLE 3
|
||||
#define AVCT_HDR_LEN_START 4
|
||||
#define AVCT_HDR_LEN_CONT 1
|
||||
#define AVCT_HDR_LEN_END 1
|
||||
|
||||
/* invalid cr+ipid value */
|
||||
#define AVCT_CR_IPID_INVALID 1
|
||||
|
||||
/*****************************************************************************
|
||||
** message parsing and building macros
|
||||
*****************************************************************************/
|
||||
|
||||
#define AVCT_BLD_HDR(p, label, type, cr_ipid) \
|
||||
*(p)++ = ((label) << 4) | ((type) << 2) | (cr_ipid);
|
||||
|
||||
#define AVCT_PRS_HDR(p, label, type, cr_ipid) \
|
||||
label = *(p) >> 4; \
|
||||
type = (*(p) >> 2) & 3; \
|
||||
cr_ipid = *(p)++ & 3;
|
||||
|
||||
#define AVCT_PRS_PKT_TYPE(p, type) \
|
||||
type = (*(p) >> 2) & 3;
|
||||
|
||||
#endif /* AVCT_DEFS_H */
|
237
tools/sdk/include/bluedroid/avct_int.h
Normal file
237
tools/sdk/include/bluedroid/avct_int.h
Normal file
@ -0,0 +1,237 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2003-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* This file contains interfaces which are internal to AVCTP.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef AVCT_INT_H
|
||||
#define AVCT_INT_H
|
||||
|
||||
#include "gki.h"
|
||||
#include "avct_api.h"
|
||||
#include "avct_defs.h"
|
||||
#include "l2c_api.h"
|
||||
|
||||
/*****************************************************************************
|
||||
** constants
|
||||
*****************************************************************************/
|
||||
|
||||
/* lcb state machine events */
|
||||
enum {
|
||||
AVCT_LCB_UL_BIND_EVT,
|
||||
AVCT_LCB_UL_UNBIND_EVT,
|
||||
AVCT_LCB_UL_MSG_EVT,
|
||||
AVCT_LCB_INT_CLOSE_EVT,
|
||||
AVCT_LCB_LL_OPEN_EVT,
|
||||
AVCT_LCB_LL_CLOSE_EVT,
|
||||
AVCT_LCB_LL_MSG_EVT,
|
||||
AVCT_LCB_LL_CONG_EVT
|
||||
};
|
||||
|
||||
|
||||
/* "states" used for L2CAP channel */
|
||||
#define AVCT_CH_IDLE 0 /* No connection */
|
||||
#define AVCT_CH_CONN 1 /* Waiting for connection confirm */
|
||||
#define AVCT_CH_CFG 2 /* Waiting for configuration complete */
|
||||
#define AVCT_CH_OPEN 3 /* Channel opened */
|
||||
|
||||
/* "no event" indicator used by ccb dealloc */
|
||||
#define AVCT_NO_EVT 0xFF
|
||||
|
||||
/*****************************************************************************
|
||||
** data types
|
||||
*****************************************************************************/
|
||||
/* sub control block type - common data members for tAVCT_LCB and tAVCT_BCB */
|
||||
typedef struct {
|
||||
UINT16 peer_mtu; /* peer l2c mtu */
|
||||
UINT16 ch_result; /* L2CAP connection result value */
|
||||
UINT16 ch_lcid; /* L2CAP channel LCID */
|
||||
UINT8 allocated; /* 0, not allocated. index+1, otherwise. */
|
||||
UINT8 state; /* The state machine state */
|
||||
UINT8 ch_state; /* L2CAP channel state */
|
||||
UINT8 ch_flags; /* L2CAP configuration flags */
|
||||
} tAVCT_SCB;
|
||||
|
||||
/* link control block type */
|
||||
typedef struct {
|
||||
UINT16 peer_mtu; /* peer l2c mtu */
|
||||
UINT16 ch_result; /* L2CAP connection result value */
|
||||
UINT16 ch_lcid; /* L2CAP channel LCID */
|
||||
UINT8 allocated; /* 0, not allocated. index+1, otherwise. */
|
||||
UINT8 state; /* The state machine state */
|
||||
UINT8 ch_state; /* L2CAP channel state */
|
||||
UINT8 ch_flags; /* L2CAP configuration flags */
|
||||
BT_HDR *p_rx_msg; /* Message being reassembled */
|
||||
UINT16 conflict_lcid; /* L2CAP channel LCID */
|
||||
BD_ADDR peer_addr; /* BD address of peer */
|
||||
BUFFER_Q tx_q; /* Transmit data buffer queue */
|
||||
BOOLEAN cong; /* TRUE, if congested */
|
||||
} tAVCT_LCB;
|
||||
|
||||
/* browse control block type */
|
||||
typedef struct {
|
||||
UINT16 peer_mtu; /* peer l2c mtu */
|
||||
UINT16 ch_result; /* L2CAP connection result value */
|
||||
UINT16 ch_lcid; /* L2CAP channel LCID */
|
||||
UINT8 allocated; /* 0, not allocated. index+1, otherwise. */
|
||||
UINT8 state; /* The state machine state */
|
||||
UINT8 ch_state; /* L2CAP channel state */
|
||||
UINT8 ch_flags; /* L2CAP configuration flags */
|
||||
BT_HDR *p_tx_msg; /* Message to be sent - in case the browsing channel is not open when MsgReg is called */
|
||||
UINT8 ch_close; /* CCB index+1, if CCB initiated channel close */
|
||||
} tAVCT_BCB;
|
||||
|
||||
#define AVCT_ALOC_LCB 0x01
|
||||
#define AVCT_ALOC_BCB 0x02
|
||||
/* connection control block */
|
||||
typedef struct {
|
||||
tAVCT_CC cc; /* parameters from connection creation */
|
||||
tAVCT_LCB *p_lcb; /* Associated LCB */
|
||||
tAVCT_BCB *p_bcb; /* associated BCB */
|
||||
BOOLEAN ch_close; /* Whether CCB initiated channel close */
|
||||
UINT8 allocated; /* Whether LCB/BCB is allocated */
|
||||
} tAVCT_CCB;
|
||||
|
||||
/* data type associated with UL_MSG_EVT */
|
||||
typedef struct {
|
||||
BT_HDR *p_buf;
|
||||
tAVCT_CCB *p_ccb;
|
||||
UINT8 label;
|
||||
UINT8 cr;
|
||||
} tAVCT_UL_MSG;
|
||||
|
||||
/* union associated with lcb state machine events */
|
||||
typedef union {
|
||||
tAVCT_UL_MSG ul_msg;
|
||||
BT_HDR *p_buf;
|
||||
tAVCT_CCB *p_ccb;
|
||||
UINT16 result;
|
||||
BOOLEAN cong;
|
||||
UINT8 err_code;
|
||||
} tAVCT_LCB_EVT;
|
||||
|
||||
/* Control block for AVCT */
|
||||
typedef struct {
|
||||
tAVCT_LCB lcb[AVCT_NUM_LINKS]; /* link control blocks */
|
||||
tAVCT_BCB bcb[AVCT_NUM_LINKS]; /* browse control blocks */
|
||||
tAVCT_CCB ccb[AVCT_NUM_CONN]; /* connection control blocks */
|
||||
UINT16 mtu; /* our L2CAP MTU */
|
||||
UINT16 mtu_br; /* our L2CAP MTU for the Browsing channel */
|
||||
UINT8 trace_level; /* trace level */
|
||||
} tAVCT_CB;
|
||||
|
||||
/*****************************************************************************
|
||||
** function declarations
|
||||
*****************************************************************************/
|
||||
|
||||
/* LCB function declarations */
|
||||
extern void avct_lcb_event(tAVCT_LCB *p_lcb, UINT8 event, tAVCT_LCB_EVT *p_data);
|
||||
#if (AVCT_BROWSE_INCLUDED == TRUE)
|
||||
extern void avct_bcb_event(tAVCT_BCB *p_bcb, UINT8 event, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_close_bcb(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern tAVCT_LCB *avct_lcb_by_bcb(tAVCT_BCB *p_bcb);
|
||||
extern tAVCT_BCB *avct_bcb_by_lcb(tAVCT_LCB *p_lcb);
|
||||
extern BOOLEAN avct_bcb_last_ccb(tAVCT_BCB *p_bcb, tAVCT_CCB *p_ccb_last);
|
||||
extern tAVCT_BCB *avct_bcb_by_lcid(UINT16 lcid);
|
||||
#endif
|
||||
extern tAVCT_LCB *avct_lcb_by_bd(BD_ADDR bd_addr);
|
||||
extern tAVCT_LCB *avct_lcb_alloc(BD_ADDR bd_addr);
|
||||
extern void avct_lcb_dealloc(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern tAVCT_LCB *avct_lcb_by_lcid(UINT16 lcid);
|
||||
extern tAVCT_CCB *avct_lcb_has_pid(tAVCT_LCB *p_lcb, UINT16 pid);
|
||||
extern BOOLEAN avct_lcb_last_ccb(tAVCT_LCB *p_lcb, tAVCT_CCB *p_ccb_last);
|
||||
|
||||
/* LCB action functions */
|
||||
extern void avct_lcb_chnl_open(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_lcb_unbind_disc(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_lcb_open_ind(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_lcb_open_fail(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_lcb_close_ind(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_lcb_close_cfm(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_lcb_bind_conn(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_lcb_chk_disc(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_lcb_chnl_disc(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_lcb_bind_fail(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_lcb_cong_ind(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_lcb_discard_msg(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_lcb_send_msg(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_lcb_msg_ind(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_lcb_free_msg_ind(tAVCT_LCB *p_lcb, tAVCT_LCB_EVT *p_data);
|
||||
|
||||
/* BCB action functions */
|
||||
#if (AVCT_BROWSE_INCLUDED == TRUE)
|
||||
typedef void (*tAVCT_BCB_ACTION)(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_chnl_open(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_unbind_disc(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_open_ind(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_open_fail(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_close_ind(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_close_cfm(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_bind_conn(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_chk_disc(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_chnl_disc(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_bind_fail(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_cong_ind(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_discard_msg(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_send_msg(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_msg_ind(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
extern void avct_bcb_free_msg_ind(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
|
||||
extern void avct_bcb_dealloc(tAVCT_BCB *p_bcb, tAVCT_LCB_EVT *p_data);
|
||||
|
||||
extern const tAVCT_BCB_ACTION avct_bcb_action[];
|
||||
extern const UINT8 avct_lcb_pkt_type_len[];
|
||||
extern const tL2CAP_FCR_OPTS avct_l2c_br_fcr_opts_def;
|
||||
#endif
|
||||
|
||||
/* CCB function declarations */
|
||||
extern tAVCT_CCB *avct_ccb_alloc(tAVCT_CC *p_cc);
|
||||
extern void avct_ccb_dealloc(tAVCT_CCB *p_ccb, UINT8 event, UINT16 result, BD_ADDR bd_addr);
|
||||
extern UINT8 avct_ccb_to_idx(tAVCT_CCB *p_ccb);
|
||||
extern tAVCT_CCB *avct_ccb_by_idx(UINT8 idx);
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
** global data
|
||||
*****************************************************************************/
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/* Main control block */
|
||||
#if AVCT_DYNAMIC_MEMORY == FALSE
|
||||
extern tAVCT_CB avct_cb;
|
||||
#else
|
||||
extern tAVCT_CB *avct_cb_ptr;
|
||||
#define avct_cb (*avct_cb_ptr)
|
||||
#endif
|
||||
|
||||
/* L2CAP callback registration structure */
|
||||
extern const tL2CAP_APPL_INFO avct_l2c_appl;
|
||||
#if (AVCT_BROWSE_INCLUDED == TRUE)
|
||||
extern const tL2CAP_APPL_INFO avct_l2c_br_appl;
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* AVCT_INT_H */
|
@ -203,6 +203,9 @@ typedef UINT8 AVDT_REPORT_TYPE;
|
||||
#define AVDT_NSC_RECONFIG 0x02 /* Reconfigure command not supported */
|
||||
#define AVDT_NSC_SECURITY 0x04 /* Security command not supported */
|
||||
|
||||
/* AVDT disconnection reason */
|
||||
#define AVDT_DISC_RSN_NORMAL 0
|
||||
#define AVDT_DISC_RSN_ABNORMAL (0xce) /* unintentional disconnection */
|
||||
/*****************************************************************************
|
||||
** Type Definitions
|
||||
*****************************************************************************/
|
||||
|
5
tools/sdk/include/bluedroid/avdt_defs.h
Executable file → Normal file
5
tools/sdk/include/bluedroid/avdt_defs.h
Executable file → Normal file
@ -24,6 +24,9 @@
|
||||
******************************************************************************/
|
||||
#ifndef AVDT_DEFS_H
|
||||
#define AVDT_DEFS_H
|
||||
#include "bt_target.h"
|
||||
|
||||
#if (AVDT_INCLUDED == TRUE)
|
||||
|
||||
/*****************************************************************************
|
||||
** constants
|
||||
@ -199,5 +202,7 @@
|
||||
#define AVDT_MSG_BLD_NOSP(p, nosp) \
|
||||
*(p)++ = (UINT8) (nosp);
|
||||
|
||||
#endif ///AVRC_INCLUDED == TRUE
|
||||
|
||||
#endif /* AVDT_DEFS_H */
|
||||
|
||||
|
748
tools/sdk/include/bluedroid/avdt_int.h
Normal file
748
tools/sdk/include/bluedroid/avdt_int.h
Normal file
@ -0,0 +1,748 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2002-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* This file contains interfaces which are internal to AVDTP.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef AVDT_INT_H
|
||||
#define AVDT_INT_H
|
||||
|
||||
#include "gki.h"
|
||||
#include "avdt_api.h"
|
||||
#include "avdtc_api.h"
|
||||
#include "avdt_defs.h"
|
||||
#include "l2c_api.h"
|
||||
#include "btm_api.h"
|
||||
|
||||
#if (AVRC_INCLUDED == TRUE)
|
||||
|
||||
#ifndef AVDT_DEBUG
|
||||
#define AVDT_DEBUG FALSE
|
||||
#endif
|
||||
|
||||
/*****************************************************************************
|
||||
** constants
|
||||
*****************************************************************************/
|
||||
|
||||
/* channel types */
|
||||
enum {
|
||||
AVDT_CHAN_SIG, /* signaling channel */
|
||||
AVDT_CHAN_MEDIA, /* media channel */
|
||||
#if AVDT_REPORTING == TRUE
|
||||
AVDT_CHAN_REPORT, /* reporting channel */
|
||||
#endif
|
||||
AVDT_CHAN_NUM_TYPES
|
||||
};
|
||||
|
||||
/* protocol service capabilities of this AVDTP implementation */
|
||||
/* for now multiplexing will be used only for fragmentation */
|
||||
#if ((AVDT_MULTIPLEXING == TRUE) && (AVDT_REPORTING == TRUE))
|
||||
#define AVDT_PSC (AVDT_PSC_TRANS | AVDT_PSC_MUX | AVDT_PSC_REPORT | AVDT_PSC_DELAY_RPT)
|
||||
#define AVDT_LEG_PSC (AVDT_PSC_TRANS | AVDT_PSC_MUX | AVDT_PSC_REPORT)
|
||||
#else /* AVDT_MULTIPLEXING && AVDT_REPORTING */
|
||||
|
||||
#if (AVDT_MULTIPLEXING == TRUE)
|
||||
#define AVDT_PSC (AVDT_PSC_TRANS | AVDT_PSC_MUX | AVDT_PSC_DELAY_RPT)
|
||||
#define AVDT_LEG_PSC (AVDT_PSC_TRANS | AVDT_PSC_MUX)
|
||||
#else /* AVDT_MULTIPLEXING */
|
||||
|
||||
#if (AVDT_REPORTING == TRUE)
|
||||
#define AVDT_PSC (AVDT_PSC_TRANS | AVDT_PSC_REPORT | AVDT_PSC_DELAY_RPT)
|
||||
#define AVDT_LEG_PSC (AVDT_PSC_TRANS | AVDT_PSC_REPORT)
|
||||
#else /* AVDT_REPORTING */
|
||||
#define AVDT_PSC (AVDT_PSC_TRANS | AVDT_PSC_DELAY_RPT)
|
||||
#define AVDT_LEG_PSC (AVDT_PSC_TRANS)
|
||||
#endif /* AVDT_REPORTING */
|
||||
|
||||
#endif /* AVDT_MULTIPLEXING */
|
||||
|
||||
#endif /* AVDT_MULTIPLEXING && AVDT_REPORTING */
|
||||
|
||||
/* initiator/acceptor signaling roles */
|
||||
#define AVDT_CLOSE_ACP 0
|
||||
#define AVDT_CLOSE_INT 1
|
||||
#define AVDT_OPEN_ACP 2
|
||||
#define AVDT_OPEN_INT 3
|
||||
|
||||
/* states for avdt_scb_verify */
|
||||
#define AVDT_VERIFY_OPEN 0
|
||||
#define AVDT_VERIFY_STREAMING 1
|
||||
#define AVDT_VERIFY_SUSPEND 2
|
||||
#define AVDT_VERIFY_START 3
|
||||
|
||||
/* to distinguish CCB events from SCB events */
|
||||
#define AVDT_CCB_MKR 0x80
|
||||
|
||||
/* offset where AVDTP signaling message header starts in message */
|
||||
#define AVDT_HDR_OFFSET (L2CAP_MIN_OFFSET + AVDT_NUM_SEPS)
|
||||
|
||||
/* offset where AVDTP signaling message content starts;
|
||||
** use the size of a start header since it's the largest possible
|
||||
** layout of signaling message in a buffer is:
|
||||
**
|
||||
** | BT_HDR | SCB handles | L2CAP + HCI header | AVDTP header | data ... |
|
||||
**
|
||||
** Note that we "hide" the scb handles at the top of the message buffer.
|
||||
*/
|
||||
#define AVDT_MSG_OFFSET (L2CAP_MIN_OFFSET + AVDT_NUM_SEPS + AVDT_LEN_TYPE_START)
|
||||
|
||||
/* scb transport channel connect timeout value */
|
||||
#define AVDT_SCB_TC_CONN_TOUT 10
|
||||
|
||||
/* scb transport channel disconnect timeout value */
|
||||
#define AVDT_SCB_TC_DISC_TOUT 10
|
||||
|
||||
/* maximum number of command retransmissions */
|
||||
#ifndef AVDT_RET_MAX
|
||||
#define AVDT_RET_MAX 1
|
||||
#endif
|
||||
|
||||
|
||||
/* ccb state machine states */
|
||||
enum {
|
||||
AVDT_CCB_IDLE_ST,
|
||||
AVDT_CCB_OPENING_ST,
|
||||
AVDT_CCB_OPEN_ST,
|
||||
AVDT_CCB_CLOSING_ST
|
||||
};
|
||||
|
||||
/* state machine action enumeration list */
|
||||
enum {
|
||||
AVDT_CCB_CHAN_OPEN,
|
||||
AVDT_CCB_CHAN_CLOSE,
|
||||
AVDT_CCB_CHK_CLOSE,
|
||||
AVDT_CCB_HDL_DISCOVER_CMD,
|
||||
AVDT_CCB_HDL_DISCOVER_RSP,
|
||||
AVDT_CCB_HDL_GETCAP_CMD,
|
||||
AVDT_CCB_HDL_GETCAP_RSP,
|
||||
AVDT_CCB_HDL_START_CMD,
|
||||
AVDT_CCB_HDL_START_RSP,
|
||||
AVDT_CCB_HDL_SUSPEND_CMD,
|
||||
AVDT_CCB_HDL_SUSPEND_RSP,
|
||||
AVDT_CCB_SND_DISCOVER_CMD,
|
||||
AVDT_CCB_SND_DISCOVER_RSP,
|
||||
AVDT_CCB_SND_GETCAP_CMD,
|
||||
AVDT_CCB_SND_GETCAP_RSP,
|
||||
AVDT_CCB_SND_START_CMD,
|
||||
AVDT_CCB_SND_START_RSP,
|
||||
AVDT_CCB_SND_SUSPEND_CMD,
|
||||
AVDT_CCB_SND_SUSPEND_RSP,
|
||||
AVDT_CCB_CLEAR_CMDS,
|
||||
AVDT_CCB_CMD_FAIL,
|
||||
AVDT_CCB_FREE_CMD,
|
||||
AVDT_CCB_CONG_STATE,
|
||||
AVDT_CCB_RET_CMD,
|
||||
AVDT_CCB_SND_CMD,
|
||||
AVDT_CCB_SND_MSG,
|
||||
AVDT_CCB_SET_RECONN,
|
||||
AVDT_CCB_CLR_RECONN,
|
||||
AVDT_CCB_CHK_RECONN,
|
||||
AVDT_CCB_CHK_TIMER,
|
||||
AVDT_CCB_SET_CONN,
|
||||
AVDT_CCB_SET_DISCONN,
|
||||
AVDT_CCB_DO_DISCONN,
|
||||
AVDT_CCB_LL_CLOSED,
|
||||
AVDT_CCB_LL_OPENED,
|
||||
AVDT_CCB_DEALLOC,
|
||||
AVDT_CCB_NUM_ACTIONS
|
||||
};
|
||||
|
||||
#define AVDT_CCB_IGNORE AVDT_CCB_NUM_ACTIONS
|
||||
|
||||
/* ccb state machine events */
|
||||
enum {
|
||||
AVDT_CCB_API_DISCOVER_REQ_EVT,
|
||||
AVDT_CCB_API_GETCAP_REQ_EVT,
|
||||
AVDT_CCB_API_START_REQ_EVT,
|
||||
AVDT_CCB_API_SUSPEND_REQ_EVT,
|
||||
AVDT_CCB_API_DISCOVER_RSP_EVT,
|
||||
AVDT_CCB_API_GETCAP_RSP_EVT,
|
||||
AVDT_CCB_API_START_RSP_EVT,
|
||||
AVDT_CCB_API_SUSPEND_RSP_EVT,
|
||||
AVDT_CCB_API_CONNECT_REQ_EVT,
|
||||
AVDT_CCB_API_DISCONNECT_REQ_EVT,
|
||||
AVDT_CCB_MSG_DISCOVER_CMD_EVT,
|
||||
AVDT_CCB_MSG_GETCAP_CMD_EVT,
|
||||
AVDT_CCB_MSG_START_CMD_EVT,
|
||||
AVDT_CCB_MSG_SUSPEND_CMD_EVT,
|
||||
AVDT_CCB_MSG_DISCOVER_RSP_EVT,
|
||||
AVDT_CCB_MSG_GETCAP_RSP_EVT,
|
||||
AVDT_CCB_MSG_START_RSP_EVT,
|
||||
AVDT_CCB_MSG_SUSPEND_RSP_EVT,
|
||||
AVDT_CCB_RCVRSP_EVT,
|
||||
AVDT_CCB_SENDMSG_EVT,
|
||||
AVDT_CCB_RET_TOUT_EVT,
|
||||
AVDT_CCB_RSP_TOUT_EVT,
|
||||
AVDT_CCB_IDLE_TOUT_EVT,
|
||||
AVDT_CCB_UL_OPEN_EVT,
|
||||
AVDT_CCB_UL_CLOSE_EVT,
|
||||
AVDT_CCB_LL_OPEN_EVT,
|
||||
AVDT_CCB_LL_CLOSE_EVT,
|
||||
AVDT_CCB_LL_CONG_EVT
|
||||
};
|
||||
|
||||
|
||||
/* scb state machine states; these state values are private to this module so
|
||||
** the scb state cannot be read or set by actions functions
|
||||
*/
|
||||
enum {
|
||||
AVDT_SCB_IDLE_ST,
|
||||
AVDT_SCB_CONF_ST,
|
||||
AVDT_SCB_OPENING_ST,
|
||||
AVDT_SCB_OPEN_ST,
|
||||
AVDT_SCB_STREAM_ST,
|
||||
AVDT_SCB_CLOSING_ST
|
||||
};
|
||||
|
||||
/* state machine action enumeration list */
|
||||
enum {
|
||||
AVDT_SCB_HDL_ABORT_CMD,
|
||||
AVDT_SCB_HDL_ABORT_RSP,
|
||||
AVDT_SCB_HDL_CLOSE_CMD,
|
||||
AVDT_SCB_HDL_CLOSE_RSP,
|
||||
AVDT_SCB_HDL_GETCONFIG_CMD,
|
||||
AVDT_SCB_HDL_GETCONFIG_RSP,
|
||||
AVDT_SCB_HDL_OPEN_CMD,
|
||||
AVDT_SCB_HDL_OPEN_REJ,
|
||||
AVDT_SCB_HDL_OPEN_RSP,
|
||||
AVDT_SCB_HDL_PKT,
|
||||
AVDT_SCB_DROP_PKT,
|
||||
AVDT_SCB_HDL_RECONFIG_CMD,
|
||||
AVDT_SCB_HDL_RECONFIG_RSP,
|
||||
AVDT_SCB_HDL_SECURITY_CMD,
|
||||
AVDT_SCB_HDL_SECURITY_RSP,
|
||||
AVDT_SCB_HDL_SETCONFIG_CMD,
|
||||
AVDT_SCB_HDL_SETCONFIG_REJ,
|
||||
AVDT_SCB_HDL_SETCONFIG_RSP,
|
||||
AVDT_SCB_HDL_START_CMD,
|
||||
AVDT_SCB_HDL_START_RSP,
|
||||
AVDT_SCB_HDL_SUSPEND_CMD,
|
||||
AVDT_SCB_HDL_SUSPEND_RSP,
|
||||
AVDT_SCB_HDL_TC_CLOSE,
|
||||
#if AVDT_REPORTING == TRUE
|
||||
AVDT_SCB_HDL_TC_CLOSE_STO,
|
||||
#endif
|
||||
AVDT_SCB_HDL_TC_OPEN,
|
||||
#if AVDT_REPORTING == TRUE
|
||||
AVDT_SCB_HDL_TC_OPEN_STO,
|
||||
#endif
|
||||
AVDT_SCB_SND_DELAY_RPT_REQ,
|
||||
AVDT_SCB_HDL_DELAY_RPT_CMD,
|
||||
AVDT_SCB_HDL_DELAY_RPT_RSP,
|
||||
AVDT_SCB_HDL_WRITE_REQ,
|
||||
AVDT_SCB_SND_ABORT_REQ,
|
||||
AVDT_SCB_SND_ABORT_RSP,
|
||||
AVDT_SCB_SND_CLOSE_REQ,
|
||||
AVDT_SCB_SND_STREAM_CLOSE,
|
||||
AVDT_SCB_SND_CLOSE_RSP,
|
||||
AVDT_SCB_SND_GETCONFIG_REQ,
|
||||
AVDT_SCB_SND_GETCONFIG_RSP,
|
||||
AVDT_SCB_SND_OPEN_REQ,
|
||||
AVDT_SCB_SND_OPEN_RSP,
|
||||
AVDT_SCB_SND_RECONFIG_REQ,
|
||||
AVDT_SCB_SND_RECONFIG_RSP,
|
||||
AVDT_SCB_SND_SECURITY_REQ,
|
||||
AVDT_SCB_SND_SECURITY_RSP,
|
||||
AVDT_SCB_SND_SETCONFIG_REQ,
|
||||
AVDT_SCB_SND_SETCONFIG_REJ,
|
||||
AVDT_SCB_SND_SETCONFIG_RSP,
|
||||
AVDT_SCB_SND_TC_CLOSE,
|
||||
AVDT_SCB_CB_ERR,
|
||||
AVDT_SCB_CONG_STATE,
|
||||
AVDT_SCB_REJ_STATE,
|
||||
AVDT_SCB_REJ_IN_USE,
|
||||
AVDT_SCB_REJ_NOT_IN_USE,
|
||||
AVDT_SCB_SET_REMOVE,
|
||||
AVDT_SCB_FREE_PKT,
|
||||
AVDT_SCB_CLR_PKT,
|
||||
AVDT_SCB_CHK_SND_PKT,
|
||||
AVDT_SCB_TC_TIMER,
|
||||
AVDT_SCB_CLR_VARS,
|
||||
AVDT_SCB_DEALLOC,
|
||||
AVDT_SCB_NUM_ACTIONS
|
||||
};
|
||||
|
||||
#define AVDT_SCB_IGNORE AVDT_SCB_NUM_ACTIONS
|
||||
|
||||
/* scb state machine events */
|
||||
enum {
|
||||
AVDT_SCB_API_REMOVE_EVT,
|
||||
AVDT_SCB_API_WRITE_REQ_EVT,
|
||||
AVDT_SCB_API_GETCONFIG_REQ_EVT,
|
||||
AVDT_SCB_API_DELAY_RPT_REQ_EVT,
|
||||
AVDT_SCB_API_SETCONFIG_REQ_EVT,
|
||||
AVDT_SCB_API_OPEN_REQ_EVT,
|
||||
AVDT_SCB_API_CLOSE_REQ_EVT,
|
||||
AVDT_SCB_API_RECONFIG_REQ_EVT,
|
||||
AVDT_SCB_API_SECURITY_REQ_EVT,
|
||||
AVDT_SCB_API_ABORT_REQ_EVT,
|
||||
AVDT_SCB_API_GETCONFIG_RSP_EVT,
|
||||
AVDT_SCB_API_SETCONFIG_RSP_EVT,
|
||||
AVDT_SCB_API_SETCONFIG_REJ_EVT,
|
||||
AVDT_SCB_API_OPEN_RSP_EVT,
|
||||
AVDT_SCB_API_CLOSE_RSP_EVT,
|
||||
AVDT_SCB_API_RECONFIG_RSP_EVT,
|
||||
AVDT_SCB_API_SECURITY_RSP_EVT,
|
||||
AVDT_SCB_API_ABORT_RSP_EVT,
|
||||
AVDT_SCB_MSG_SETCONFIG_CMD_EVT,
|
||||
AVDT_SCB_MSG_GETCONFIG_CMD_EVT,
|
||||
AVDT_SCB_MSG_OPEN_CMD_EVT,
|
||||
AVDT_SCB_MSG_START_CMD_EVT,
|
||||
AVDT_SCB_MSG_SUSPEND_CMD_EVT,
|
||||
AVDT_SCB_MSG_CLOSE_CMD_EVT,
|
||||
AVDT_SCB_MSG_ABORT_CMD_EVT,
|
||||
AVDT_SCB_MSG_RECONFIG_CMD_EVT,
|
||||
AVDT_SCB_MSG_SECURITY_CMD_EVT,
|
||||
AVDT_SCB_MSG_DELAY_RPT_CMD_EVT,
|
||||
AVDT_SCB_MSG_DELAY_RPT_RSP_EVT,
|
||||
AVDT_SCB_MSG_SETCONFIG_RSP_EVT,
|
||||
AVDT_SCB_MSG_GETCONFIG_RSP_EVT,
|
||||
AVDT_SCB_MSG_OPEN_RSP_EVT,
|
||||
AVDT_SCB_MSG_START_RSP_EVT,
|
||||
AVDT_SCB_MSG_SUSPEND_RSP_EVT,
|
||||
AVDT_SCB_MSG_CLOSE_RSP_EVT,
|
||||
AVDT_SCB_MSG_ABORT_RSP_EVT,
|
||||
AVDT_SCB_MSG_RECONFIG_RSP_EVT,
|
||||
AVDT_SCB_MSG_SECURITY_RSP_EVT,
|
||||
AVDT_SCB_MSG_SETCONFIG_REJ_EVT,
|
||||
AVDT_SCB_MSG_OPEN_REJ_EVT,
|
||||
AVDT_SCB_MSG_START_REJ_EVT,
|
||||
AVDT_SCB_MSG_SUSPEND_REJ_EVT,
|
||||
AVDT_SCB_TC_TOUT_EVT,
|
||||
AVDT_SCB_TC_OPEN_EVT,
|
||||
AVDT_SCB_TC_CLOSE_EVT,
|
||||
AVDT_SCB_TC_CONG_EVT,
|
||||
AVDT_SCB_TC_DATA_EVT,
|
||||
AVDT_SCB_CC_CLOSE_EVT
|
||||
};
|
||||
|
||||
/* adaption layer number of stream routing table entries */
|
||||
#if AVDT_REPORTING == TRUE
|
||||
/* 2 channels(1 media, 1 report) for each SEP and one for signalling */
|
||||
#define AVDT_NUM_RT_TBL ((AVDT_NUM_SEPS<<1) + 1)
|
||||
#else
|
||||
#define AVDT_NUM_RT_TBL (AVDT_NUM_SEPS + 1)
|
||||
#endif
|
||||
|
||||
/* adaption layer number of transport channel table entries - moved to target.h
|
||||
#define AVDT_NUM_TC_TBL (AVDT_NUM_SEPS + AVDT_NUM_LINKS) */
|
||||
|
||||
/* "states" used in transport channel table */
|
||||
#define AVDT_AD_ST_UNUSED 0 /* Unused - unallocated */
|
||||
#define AVDT_AD_ST_IDLE 1 /* No connection */
|
||||
#define AVDT_AD_ST_ACP 2 /* Waiting to accept a connection */
|
||||
#define AVDT_AD_ST_INT 3 /* Initiating a connection */
|
||||
#define AVDT_AD_ST_CONN 4 /* Waiting for connection confirm */
|
||||
#define AVDT_AD_ST_CFG 5 /* Waiting for configuration complete */
|
||||
#define AVDT_AD_ST_OPEN 6 /* Channel opened */
|
||||
#define AVDT_AD_ST_SEC_INT 7 /* Security process as INT */
|
||||
#define AVDT_AD_ST_SEC_ACP 8 /* Security process as ACP */
|
||||
|
||||
/* Configuration flags. tAVDT_TC_TBL.cfg_flags */
|
||||
#define AVDT_L2C_CFG_IND_DONE (1<<0)
|
||||
#define AVDT_L2C_CFG_CFM_DONE (1<<1)
|
||||
#define AVDT_L2C_CFG_CONN_INT (1<<2)
|
||||
#define AVDT_L2C_CFG_CONN_ACP (1<<3)
|
||||
|
||||
|
||||
/* result code for avdt_ad_write_req() (L2CA_DataWrite()) */
|
||||
#define AVDT_AD_FAILED L2CAP_DW_FAILED /* FALSE */
|
||||
#define AVDT_AD_SUCCESS L2CAP_DW_SUCCESS /* TRUE */
|
||||
#define AVDT_AD_CONGESTED L2CAP_DW_CONGESTED /* 2 */
|
||||
|
||||
/*****************************************************************************
|
||||
** data types
|
||||
*****************************************************************************/
|
||||
|
||||
/* msg union of all message parameter types */
|
||||
typedef union {
|
||||
tAVDT_EVT_HDR hdr;
|
||||
tAVDT_EVT_HDR single;
|
||||
tAVDT_SETCONFIG config_cmd;
|
||||
tAVDT_CONFIG reconfig_cmd;
|
||||
tAVDT_MULTI multi;
|
||||
tAVDT_SECURITY security_cmd;
|
||||
tAVDT_DISCOVER discover_rsp;
|
||||
tAVDT_CONFIG svccap;
|
||||
tAVDT_SECURITY security_rsp;
|
||||
tAVDT_DELAY_RPT delay_rpt_cmd;
|
||||
} tAVDT_MSG;
|
||||
|
||||
/* data type for AVDT_CCB_API_DISCOVER_REQ_EVT */
|
||||
typedef struct {
|
||||
tAVDT_CTRL_CBACK *p_cback;
|
||||
tAVDT_SEP_INFO *p_sep_info;
|
||||
UINT8 num_seps;
|
||||
} tAVDT_CCB_API_DISCOVER;
|
||||
|
||||
/* data type for AVDT_CCB_API_GETCAP_REQ_EVT */
|
||||
typedef struct {
|
||||
tAVDT_EVT_HDR single;
|
||||
tAVDT_CTRL_CBACK *p_cback;
|
||||
tAVDT_CFG *p_cfg;
|
||||
} tAVDT_CCB_API_GETCAP;
|
||||
|
||||
/* data type for AVDT_CCB_API_CONNECT_REQ_EVT */
|
||||
typedef struct {
|
||||
tAVDT_CTRL_CBACK *p_cback;
|
||||
UINT8 sec_mask;
|
||||
} tAVDT_CCB_API_CONNECT;
|
||||
|
||||
/* data type for AVDT_CCB_API_DISCONNECT_REQ_EVT */
|
||||
typedef struct {
|
||||
tAVDT_CTRL_CBACK *p_cback;
|
||||
} tAVDT_CCB_API_DISCONNECT;
|
||||
|
||||
/* union associated with ccb state machine events */
|
||||
typedef union {
|
||||
tAVDT_CCB_API_DISCOVER discover;
|
||||
tAVDT_CCB_API_GETCAP getcap;
|
||||
tAVDT_CCB_API_CONNECT connect;
|
||||
tAVDT_CCB_API_DISCONNECT disconnect;
|
||||
tAVDT_MSG msg;
|
||||
BOOLEAN llcong;
|
||||
UINT8 err_code;
|
||||
} tAVDT_CCB_EVT;
|
||||
|
||||
/* channel control block type */
|
||||
typedef struct {
|
||||
BD_ADDR peer_addr; /* BD address of peer */
|
||||
TIMER_LIST_ENT timer_entry; /* CCB timer list entry */
|
||||
BUFFER_Q cmd_q; /* Queue for outgoing command messages */
|
||||
BUFFER_Q rsp_q; /* Queue for outgoing response and reject messages */
|
||||
tAVDT_CTRL_CBACK *proc_cback; /* Procedure callback function */
|
||||
tAVDT_CTRL_CBACK *p_conn_cback; /* Connection/disconnection callback function */
|
||||
void *p_proc_data; /* Pointer to data storage for procedure */
|
||||
BT_HDR *p_curr_cmd; /* Current command being sent awaiting response */
|
||||
BT_HDR *p_curr_msg; /* Current message being sent */
|
||||
BT_HDR *p_rx_msg; /* Current message being received */
|
||||
BOOLEAN allocated; /* Whether ccb is allocated */
|
||||
UINT8 state; /* The CCB state machine state */
|
||||
BOOLEAN ll_opened; /* TRUE if LL is opened */
|
||||
BOOLEAN proc_busy; /* TRUE when a discover or get capabilities procedure in progress */
|
||||
UINT8 proc_param; /* Procedure parameter; either SEID for get capabilities or number of SEPS for discover */
|
||||
BOOLEAN cong; /* Whether signaling channel is congested */
|
||||
UINT8 label; /* Message header "label" (sequence number) */
|
||||
BOOLEAN reconn; /* If TRUE, reinitiate connection after transitioning from CLOSING to IDLE state */
|
||||
UINT8 ret_count; /* Command retransmission count */
|
||||
UINT8 disc_rsn; /* disconnection reason */
|
||||
} tAVDT_CCB;
|
||||
|
||||
/* type for action functions */
|
||||
typedef void (*tAVDT_CCB_ACTION)(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
|
||||
/* type for AVDT_SCB_API_WRITE_REQ_EVT */
|
||||
typedef struct {
|
||||
BT_HDR *p_buf;
|
||||
UINT32 time_stamp;
|
||||
#if AVDT_MULTIPLEXING == TRUE
|
||||
BUFFER_Q frag_q; /* Queue for outgoing media fragments. p_buf should be 0 */
|
||||
UINT8 *p_data;
|
||||
UINT32 data_len;
|
||||
#endif
|
||||
UINT8 m_pt;
|
||||
tAVDT_DATA_OPT_MASK opt;
|
||||
} tAVDT_SCB_APIWRITE;
|
||||
|
||||
/* type for AVDT_SCB_TC_CLOSE_EVT */
|
||||
typedef struct {
|
||||
UINT8 old_tc_state; /* channel state before closed */
|
||||
UINT8 tcid; /* TCID */
|
||||
UINT8 type; /* channel type */
|
||||
UINT8 disc_rsn; /* disconnection reason */
|
||||
} tAVDT_SCB_TC_CLOSE;
|
||||
|
||||
/* type for scb event data */
|
||||
typedef union {
|
||||
tAVDT_MSG msg;
|
||||
tAVDT_SCB_APIWRITE apiwrite;
|
||||
tAVDT_DELAY_RPT apidelay;
|
||||
tAVDT_OPEN open;
|
||||
tAVDT_SCB_TC_CLOSE close;
|
||||
BOOLEAN llcong;
|
||||
BT_HDR *p_pkt;
|
||||
} tAVDT_SCB_EVT;
|
||||
|
||||
/* stream control block type */
|
||||
typedef struct {
|
||||
tAVDT_CS cs; /* stream creation struct */
|
||||
tAVDT_CFG curr_cfg; /* current configuration */
|
||||
tAVDT_CFG req_cfg; /* requested configuration */
|
||||
TIMER_LIST_ENT timer_entry; /* timer entry */
|
||||
BT_HDR *p_pkt; /* packet waiting to be sent */
|
||||
tAVDT_CCB *p_ccb; /* ccb associated with this scb */
|
||||
UINT16 media_seq; /* media packet sequence number */
|
||||
BOOLEAN allocated; /* whether scb is allocated or unused */
|
||||
BOOLEAN in_use; /* whether stream being used by peer */
|
||||
BOOLEAN sink_activated; /* A2DP Sink activated/de-activated from Application */
|
||||
UINT8 role; /* initiator/acceptor role in current procedure */
|
||||
BOOLEAN remove; /* whether CB is marked for removal */
|
||||
UINT8 state; /* state machine state */
|
||||
UINT8 peer_seid; /* SEID of peer stream */
|
||||
UINT8 curr_evt; /* current event; set only by state machine */
|
||||
BOOLEAN cong; /* Whether media transport channel is congested */
|
||||
UINT8 close_code; /* Error code received in close response */
|
||||
#if AVDT_MULTIPLEXING == TRUE
|
||||
BUFFER_Q frag_q; /* Queue for outgoing media fragments */
|
||||
UINT32 frag_off; /* length of already received media fragments */
|
||||
UINT32 frag_org_len; /* original length before fragmentation of receiving media packet */
|
||||
UINT8 *p_next_frag; /* next fragment to send */
|
||||
UINT8 *p_media_buf; /* buffer for media packet assigned by AVDT_SetMediaBuf */
|
||||
UINT32 media_buf_len; /* length of buffer for media packet assigned by AVDT_SetMediaBuf */
|
||||
#endif
|
||||
} tAVDT_SCB;
|
||||
|
||||
/* type for action functions */
|
||||
typedef void (*tAVDT_SCB_ACTION)(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
|
||||
/* adaption layer type for transport channel table */
|
||||
typedef struct {
|
||||
UINT16 peer_mtu; /* L2CAP mtu of the peer device */
|
||||
UINT16 my_mtu; /* Our MTU for this channel */
|
||||
UINT16 my_flush_to; /* Our flush timeout for this channel */
|
||||
UINT16 lcid;
|
||||
UINT8 tcid; /* transport channel id */
|
||||
UINT8 ccb_idx; /* channel control block associated with this tc */
|
||||
UINT8 state; /* transport channel state */
|
||||
UINT8 cfg_flags; /* L2CAP configuration flags */
|
||||
UINT8 id;
|
||||
} tAVDT_TC_TBL;
|
||||
|
||||
/* adaption layer type for stream routing table */
|
||||
typedef struct {
|
||||
UINT16 lcid; /* L2CAP LCID of the associated transport channel */
|
||||
UINT8 scb_hdl; /* stream control block associated with this tc */
|
||||
} tAVDT_RT_TBL;
|
||||
|
||||
|
||||
/* adaption layer control block */
|
||||
typedef struct {
|
||||
tAVDT_RT_TBL rt_tbl[AVDT_NUM_LINKS][AVDT_NUM_RT_TBL];
|
||||
tAVDT_TC_TBL tc_tbl[AVDT_NUM_TC_TBL];
|
||||
UINT8 lcid_tbl[MAX_L2CAP_CHANNELS]; /* map LCID to tc_tbl index */
|
||||
} tAVDT_AD;
|
||||
|
||||
/* Control block for AVDT */
|
||||
typedef struct {
|
||||
tAVDT_REG rcb; /* registration control block */
|
||||
tAVDT_CCB ccb[AVDT_NUM_LINKS]; /* channel control blocks */
|
||||
tAVDT_SCB scb[AVDT_NUM_SEPS]; /* stream control blocks */
|
||||
tAVDT_AD ad; /* adaption layer control block */
|
||||
tAVDTC_CTRL_CBACK *p_conf_cback; /* conformance callback function */
|
||||
tAVDT_CCB_ACTION *p_ccb_act; /* pointer to CCB action functions */
|
||||
tAVDT_SCB_ACTION *p_scb_act; /* pointer to SCB action functions */
|
||||
tAVDT_CTRL_CBACK *p_conn_cback; /* connection callback function */
|
||||
UINT8 trace_level; /* trace level */
|
||||
} tAVDT_CB;
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
** function declarations
|
||||
*****************************************************************************/
|
||||
|
||||
/* CCB function declarations */
|
||||
extern void avdt_ccb_init(void);
|
||||
extern void avdt_ccb_event(tAVDT_CCB *p_ccb, UINT8 event, tAVDT_CCB_EVT *p_data);
|
||||
extern tAVDT_CCB *avdt_ccb_by_bd(BD_ADDR bd_addr);
|
||||
extern tAVDT_CCB *avdt_ccb_alloc(BD_ADDR bd_addr);
|
||||
extern void avdt_ccb_dealloc(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern UINT8 avdt_ccb_to_idx(tAVDT_CCB *p_ccb);
|
||||
extern tAVDT_CCB *avdt_ccb_by_idx(UINT8 idx);
|
||||
|
||||
/* CCB action functions */
|
||||
extern void avdt_ccb_chan_open(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_chan_close(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_chk_close(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_hdl_discover_cmd(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_hdl_discover_rsp(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_hdl_getcap_cmd(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_hdl_getcap_rsp(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_hdl_start_cmd(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_hdl_start_rsp(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_hdl_suspend_cmd(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_hdl_suspend_rsp(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_snd_discover_cmd(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_snd_discover_rsp(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_snd_getcap_cmd(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_snd_getcap_rsp(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_snd_start_cmd(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_snd_start_rsp(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_snd_suspend_cmd(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_snd_suspend_rsp(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_clear_cmds(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_cmd_fail(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_free_cmd(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_cong_state(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_ret_cmd(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_snd_cmd(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_snd_msg(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_set_reconn(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_clr_reconn(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_chk_reconn(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_chk_timer(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_set_conn(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_set_disconn(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_do_disconn(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_ll_closed(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
extern void avdt_ccb_ll_opened(tAVDT_CCB *p_ccb, tAVDT_CCB_EVT *p_data);
|
||||
|
||||
/* SCB function prototypes */
|
||||
extern void avdt_scb_event(tAVDT_SCB *p_scb, UINT8 event, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_init(void);
|
||||
extern tAVDT_SCB *avdt_scb_alloc(tAVDT_CS *p_cs);
|
||||
extern void avdt_scb_dealloc(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern UINT8 avdt_scb_to_hdl(tAVDT_SCB *p_scb);
|
||||
extern tAVDT_SCB *avdt_scb_by_hdl(UINT8 hdl);
|
||||
extern UINT8 avdt_scb_verify(tAVDT_CCB *p_ccb, UINT8 state, UINT8 *p_seid, UINT16 num_seid, UINT8 *p_err_code);
|
||||
extern void avdt_scb_peer_seid_list(tAVDT_MULTI *p_multi);
|
||||
extern UINT32 avdt_scb_gen_ssrc(tAVDT_SCB *p_scb);
|
||||
|
||||
/* SCB action functions */
|
||||
extern void avdt_scb_hdl_abort_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_abort_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_close_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_close_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_getconfig_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_getconfig_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_open_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_open_rej(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_open_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_pkt(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_drop_pkt(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_reconfig_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_reconfig_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_security_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_security_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_setconfig_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_setconfig_rej(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_setconfig_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_start_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_start_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_suspend_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_suspend_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_delay_rpt_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_delay_rpt_cmd(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_delay_rpt_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_tc_close(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_tc_open(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_tc_close_sto(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_tc_open_sto(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_hdl_write_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_abort_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_abort_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_close_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_stream_close(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_close_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_getconfig_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_getconfig_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_open_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_open_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_reconfig_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_reconfig_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_security_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_security_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_setconfig_req(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_setconfig_rej(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_setconfig_rsp(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_snd_tc_close(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_cb_err(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_cong_state(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_rej_state(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_rej_in_use(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_rej_not_in_use(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_set_remove(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_free_pkt(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_chk_snd_pkt(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_clr_pkt(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_tc_timer(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_clr_vars(tAVDT_SCB *p_scb, tAVDT_SCB_EVT *p_data);
|
||||
extern void avdt_scb_queue_frags(tAVDT_SCB *p_scb, UINT8 **pp_data, UINT32 *p_data_len, BUFFER_Q *pq);
|
||||
|
||||
/* msg function declarations */
|
||||
extern BOOLEAN avdt_msg_send(tAVDT_CCB *p_ccb, BT_HDR *p_msg);
|
||||
extern void avdt_msg_send_cmd(tAVDT_CCB *p_ccb, void *p_scb, UINT8 sig_id, tAVDT_MSG *p_params);
|
||||
extern void avdt_msg_send_rsp(tAVDT_CCB *p_ccb, UINT8 sig_id, tAVDT_MSG *p_params);
|
||||
extern void avdt_msg_send_rej(tAVDT_CCB *p_ccb, UINT8 sig_id, tAVDT_MSG *p_params);
|
||||
extern void avdt_msg_send_grej(tAVDT_CCB *p_ccb, UINT8 sig_id, tAVDT_MSG *p_params);
|
||||
extern void avdt_msg_ind(tAVDT_CCB *p_ccb, BT_HDR *p_buf);
|
||||
|
||||
/* adaption layer function declarations */
|
||||
extern void avdt_ad_init(void);
|
||||
extern UINT8 avdt_ad_type_to_tcid(UINT8 type, tAVDT_SCB *p_scb);
|
||||
extern tAVDT_TC_TBL *avdt_ad_tc_tbl_by_st(UINT8 type, tAVDT_CCB *p_ccb, UINT8 state);
|
||||
extern tAVDT_TC_TBL *avdt_ad_tc_tbl_by_lcid(UINT16 lcid);
|
||||
extern tAVDT_TC_TBL *avdt_ad_tc_tbl_alloc(tAVDT_CCB *p_ccb);
|
||||
extern UINT8 avdt_ad_tc_tbl_to_idx(tAVDT_TC_TBL *p_tbl);
|
||||
extern void avdt_ad_tc_close_ind(tAVDT_TC_TBL *p_tbl, UINT16 reason);
|
||||
extern void avdt_ad_tc_open_ind(tAVDT_TC_TBL *p_tbl);
|
||||
extern void avdt_ad_tc_cong_ind(tAVDT_TC_TBL *p_tbl, BOOLEAN is_congested);
|
||||
extern void avdt_ad_tc_data_ind(tAVDT_TC_TBL *p_tbl, BT_HDR *p_buf);
|
||||
extern tAVDT_TC_TBL *avdt_ad_tc_tbl_by_type(UINT8 type, tAVDT_CCB *p_ccb, tAVDT_SCB *p_scb);
|
||||
extern UINT8 avdt_ad_write_req(UINT8 type, tAVDT_CCB *p_ccb, tAVDT_SCB *p_scb, BT_HDR *p_buf);
|
||||
extern void avdt_ad_open_req(UINT8 type, tAVDT_CCB *p_ccb, tAVDT_SCB *p_scb, UINT8 role);
|
||||
extern void avdt_ad_close_req(UINT8 type, tAVDT_CCB *p_ccb, tAVDT_SCB *p_scb);
|
||||
|
||||
extern void avdt_process_timeout(TIMER_LIST_ENT *p_tle);
|
||||
|
||||
/*****************************************************************************
|
||||
** macros
|
||||
*****************************************************************************/
|
||||
|
||||
/* we store the scb and the label in the layer_specific field of the
|
||||
** current cmd
|
||||
*/
|
||||
#define AVDT_BLD_LAYERSPEC(ls, msg, label) \
|
||||
ls = (((label) << 4) | (msg))
|
||||
|
||||
#define AVDT_LAYERSPEC_LABEL(ls) ((UINT8)((ls) >> 4))
|
||||
|
||||
#define AVDT_LAYERSPEC_MSG(ls) ((UINT8)((ls) & 0x000F))
|
||||
|
||||
/*****************************************************************************
|
||||
** global data
|
||||
*****************************************************************************/
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/******************************************************************************
|
||||
** Main Control Block
|
||||
*******************************************************************************/
|
||||
#if AVDT_DYNAMIC_MEMORY == FALSE
|
||||
extern tAVDT_CB avdt_cb;
|
||||
#else
|
||||
extern tAVDT_CB *avdt_cb_ptr;
|
||||
#define avdt_cb (*avdt_cb_ptr)
|
||||
#endif
|
||||
|
||||
|
||||
/* L2CAP callback registration structure */
|
||||
extern const tL2CAP_APPL_INFO avdt_l2c_appl;
|
||||
|
||||
/* reject message event lookup table */
|
||||
extern const UINT8 avdt_msg_rej_2_evt[];
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif ///AVRC_INCLUDED == TRUE
|
||||
|
||||
#endif /* AVDT_INT_H */
|
0
tools/sdk/include/bluedroid/avdtc_api.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/avdtc_api.h
Executable file → Normal file
@ -27,7 +27,7 @@
|
||||
#include "avct_api.h"
|
||||
#include "sdp_api.h"
|
||||
#include "avrc_defs.h"
|
||||
|
||||
#if (AVRC_INCLUDED == TRUE)
|
||||
/*****************************************************************************
|
||||
** constants
|
||||
*****************************************************************************/
|
||||
@ -634,4 +634,7 @@ extern BOOLEAN AVRC_IsValidPlayerAttr(UINT8 attr);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif ///AVRC_INCLUDED == TRUE
|
||||
|
||||
|
||||
#endif /* AVRC_API_H */
|
||||
|
@ -23,7 +23,9 @@
|
||||
******************************************************************************/
|
||||
#ifndef _AVRC_DEFS_H
|
||||
#define _AVRC_DEFS_H
|
||||
#include "bt_target.h"
|
||||
|
||||
#if (AVRC_INCLUDED == TRUE)
|
||||
/*****************************************************************************
|
||||
** constants
|
||||
*****************************************************************************/
|
||||
@ -1356,5 +1358,5 @@ typedef union {
|
||||
tAVRC_RSP add_to_play; /* AddToNowPlaying */
|
||||
} tAVRC_RESPONSE;
|
||||
|
||||
|
||||
#endif ///AVRC_INCLUDED == TRUE
|
||||
#endif
|
||||
|
158
tools/sdk/include/bluedroid/avrc_int.h
Normal file
158
tools/sdk/include/bluedroid/avrc_int.h
Normal file
@ -0,0 +1,158 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2003-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* VRCP internal header file.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
#ifndef AVRC_INT_H
|
||||
#define AVRC_INT_H
|
||||
|
||||
#include "avct_defs.h"
|
||||
#include "avrc_api.h"
|
||||
|
||||
#if (AVRC_INCLUDED == TRUE)
|
||||
/* DEBUG FLAGS
|
||||
*
|
||||
* #define META_DEBUG_ENABLED
|
||||
*/
|
||||
/*****************************************************************************
|
||||
** Constants
|
||||
*****************************************************************************/
|
||||
|
||||
/* Number of attributes in AVRC SDP record. */
|
||||
#define AVRC_NUM_ATTR 6
|
||||
|
||||
/* Number of protocol elements in protocol element list. */
|
||||
#define AVRC_NUM_PROTO_ELEMS 2
|
||||
|
||||
#ifndef AVRC_MIN_CMD_LEN
|
||||
#define AVRC_MIN_CMD_LEN 20
|
||||
#endif
|
||||
|
||||
#define AVRC_UNIT_OPRND_BYTES 5
|
||||
#define AVRC_SUB_OPRND_BYTES 4
|
||||
#define AVRC_SUBRSP_OPRND_BYTES 3
|
||||
#define AVRC_SUB_PAGE_MASK 7
|
||||
#define AVRC_SUB_PAGE_SHIFT 4
|
||||
#define AVRC_SUB_EXT_CODE 7
|
||||
#define AVRC_PASS_OP_ID_MASK 0x7F
|
||||
#define AVRC_PASS_STATE_MASK 0x80
|
||||
#define AVRC_CMD_OPRND_PAD 0xFF
|
||||
|
||||
#define AVRC_CTYPE_MASK 0x0F
|
||||
#define AVRC_SUBTYPE_MASK 0xF8
|
||||
#define AVRC_SUBTYPE_SHIFT 3
|
||||
#define AVRC_SUBID_MASK 0x07
|
||||
#define AVRC_SUBID_IGNORE 0x07
|
||||
|
||||
#define AVRC_SINGLE_PARAM_SIZE 1
|
||||
#define AVRC_METADATA_PKT_TYPE_MASK 0x03
|
||||
#define AVRC_PASS_THOUGH_MSG_MASK 0x80 /* MSB of msg_type indicates the PAS THROUGH msg */
|
||||
#define AVRC_VENDOR_UNIQUE_MASK 0x70 /* vendor unique id */
|
||||
|
||||
|
||||
/* Company ID is 24-bit integer We can not use the macros in bt_types.h */
|
||||
#define AVRC_CO_ID_TO_BE_STREAM(p, u32) {*(p)++ = (UINT8)((u32) >> 16); *(p)++ = (UINT8)((u32) >> 8); *(p)++ = (UINT8)(u32); }
|
||||
#define AVRC_BE_STREAM_TO_CO_ID(u32, p) {u32 = (((UINT32)(*((p) + 2))) + (((UINT32)(*((p) + 1))) << 8) + (((UINT32)(*(p))) << 16)); (p) += 3;}
|
||||
|
||||
#define AVRC_AVC_HDR_SIZE 3 /* ctype, subunit*, opcode */
|
||||
|
||||
#define AVRC_MIN_META_HDR_SIZE 4 /* pdu id(1), packet type(1), param len(2) */
|
||||
#define AVRC_MIN_BROWSE_HDR_SIZE 3 /* pdu id(1), param len(2) */
|
||||
|
||||
#define AVRC_VENDOR_HDR_SIZE 6 /* ctype, subunit*, opcode, CO_ID */
|
||||
#define AVRC_MSG_VENDOR_OFFSET 23
|
||||
#define AVRC_MIN_VENDOR_SIZE (AVRC_MSG_VENDOR_OFFSET + BT_HDR_SIZE + AVRC_MIN_META_HDR_SIZE)
|
||||
|
||||
#define AVRC_PASS_THRU_SIZE 8
|
||||
#define AVRC_MSG_PASS_THRU_OFFSET 25
|
||||
#define AVRC_MIN_PASS_THRU_SIZE (AVRC_MSG_PASS_THRU_OFFSET + BT_HDR_SIZE + 4)
|
||||
|
||||
#define AVRC_MIN_BROWSE_SIZE (AVCT_BROWSE_OFFSET + BT_HDR_SIZE + AVRC_MIN_BROWSE_HDR_SIZE)
|
||||
|
||||
#define AVRC_CTRL_PKT_LEN(pf, pk) {pf = (UINT8 *)((pk) + 1) + (pk)->offset + 2;}
|
||||
|
||||
#define AVRC_MAX_CTRL_DATA_LEN (AVRC_PACKET_LEN)
|
||||
|
||||
/*****************************************************************************
|
||||
** Type definitions
|
||||
*****************************************************************************/
|
||||
|
||||
#if (AVRC_METADATA_INCLUDED == TRUE)
|
||||
/* type for Metadata fragmentation control block */
|
||||
typedef struct {
|
||||
BT_HDR *p_fmsg; /* the fragmented message */
|
||||
UINT8 frag_pdu; /* the PDU ID for fragmentation */
|
||||
BOOLEAN frag_enabled; /* fragmentation flag */
|
||||
} tAVRC_FRAG_CB;
|
||||
|
||||
/* type for Metadata re-assembly control block */
|
||||
typedef struct {
|
||||
BT_HDR *p_rmsg; /* the received message */
|
||||
UINT16 rasm_offset; /* re-assembly flag, the offset of the start fragment */
|
||||
UINT8 rasm_pdu; /* the PDU ID for re-assembly */
|
||||
} tAVRC_RASM_CB;
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
tAVRC_CONN_CB ccb[AVCT_NUM_CONN];
|
||||
#if (AVRC_METADATA_INCLUDED == TRUE)
|
||||
tAVRC_FRAG_CB fcb[AVCT_NUM_CONN];
|
||||
tAVRC_RASM_CB rcb[AVCT_NUM_CONN];
|
||||
#endif
|
||||
tAVRC_FIND_CBACK *p_cback; /* pointer to application callback */
|
||||
tSDP_DISCOVERY_DB *p_db; /* pointer to discovery database */
|
||||
UINT16 service_uuid; /* service UUID to search */
|
||||
UINT8 trace_level;
|
||||
} tAVRC_CB;
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/******************************************************************************
|
||||
** Main Control Block
|
||||
*******************************************************************************/
|
||||
#if AVRC_DYNAMIC_MEMORY == FALSE
|
||||
extern tAVRC_CB avrc_cb;
|
||||
#else
|
||||
extern tAVRC_CB *avrc_cb_ptr;
|
||||
#define avrc_cb (*avrc_cb_ptr)
|
||||
#endif
|
||||
|
||||
extern BOOLEAN avrc_is_valid_pdu_id(UINT8 pdu_id);
|
||||
extern BOOLEAN avrc_is_valid_player_attrib_value(UINT8 attrib, UINT8 value);
|
||||
extern BT_HDR *avrc_alloc_ctrl_pkt (UINT8 pdu);
|
||||
extern tAVRC_STS avrc_pars_pass_thru(tAVRC_MSG_PASS *p_msg, UINT16 *p_vendor_unique_id);
|
||||
extern UINT8 avrc_opcode_from_pdu(UINT8 pdu);
|
||||
extern BOOLEAN avrc_is_valid_opcode(UINT8 opcode);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif ///AVRC_INCLUDED == TRUE
|
||||
|
||||
#endif /* AVRC_INT_H */
|
0
tools/sdk/include/bluedroid/bdaddr.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/bdaddr.h
Executable file → Normal file
@ -92,6 +92,7 @@ typedef struct blufi_frag_hdr blufi_frag_hdr_t;
|
||||
#define BLUFI_TYPE_CTRL_SUBTYPE_GET_WIFI_STATUS 0x05
|
||||
#define BLUFI_TYPE_CTRL_SUBTYPE_DEAUTHENTICATE_STA 0x06
|
||||
#define BLUFI_TYPE_CTRL_SUBTYPE_GET_VERSION 0x07
|
||||
#define BLUFI_TYPE_CTRL_SUBTYPE_DISCONNECT_BLE 0x08
|
||||
|
||||
#define BLUFI_TYPE_DATA 0x1
|
||||
#define BLUFI_TYPE_DATA_SUBTYPE_NEG 0x00
|
||||
|
0
tools/sdk/include/bluedroid/bt_common_types.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/bt_common_types.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/bt_sdp.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/bt_sdp.h
Executable file → Normal file
@ -34,16 +34,87 @@
|
||||
#include "bdroid_buildcfg.h"
|
||||
#endif
|
||||
|
||||
#include "sdkconfig.h"
|
||||
#include "bt_types.h" /* This must be defined AFTER buildcfg.h */
|
||||
|
||||
/* Include common GKI definitions used by this platform */
|
||||
#include "gki_target.h"
|
||||
#include "dyn_mem.h" /* defines static and/or dynamic memory for components */
|
||||
|
||||
#if CONFIG_CLASSIC_BT_ENABLED
|
||||
#define CLASSIC_BT_INCLUDED TRUE
|
||||
#define BTA_SDP_INCLUDED TRUE
|
||||
#define BTA_PAN_INCLUDED FALSE
|
||||
#define BTA_HH_INCLUDED FALSE
|
||||
#define BTA_AR_INCLUDED TRUE
|
||||
#define BTA_AV_INCLUDED TRUE
|
||||
#define BTA_AV_SINK_INCLUDED TRUE
|
||||
#define SDP_INCLUDED TRUE
|
||||
#define RFCOMM_INCLUDED FALSE
|
||||
#define PAN_INCLUDED FALSE
|
||||
#define HID_HOST_INCLUDED FALSE
|
||||
#define AVDT_INCLUDED TRUE
|
||||
#define A2D_INCLUDED TRUE
|
||||
#define AVCT_INCLUDED TRUE
|
||||
#define AVRC_INCLUDED TRUE
|
||||
#define SBC_DEC_INCLUDED TRUE
|
||||
#define SBC_ENC_INCLUDED FALSE
|
||||
#define MCA_INCLUDED FALSE
|
||||
#define BTC_SM_INCLUDED TRUE
|
||||
#define BTC_PRF_QUEUE_INCLUDED TRUE
|
||||
#define BTC_GAP_BT_INCLUDED TRUE
|
||||
#define BTC_AV_INCLUDED TRUE
|
||||
|
||||
#ifndef CLASSIC_BT_INCLUDED
|
||||
#define CLASSIC_BT_INCLUDED TRUE
|
||||
#endif ///CLASSIC_BT_INCLUDED
|
||||
#else /* #if CONFIG_CLASSIC_BT_ENABLED */
|
||||
#define CLASSIC_BT_INCLUDED FALSE
|
||||
#define BTA_SDP_INCLUDED FALSE
|
||||
#define BTA_PAN_INCLUDED FALSE
|
||||
#define BTA_HH_INCLUDED FALSE
|
||||
#define BTA_AR_INCLUDED FALSE
|
||||
#define BTA_AV_INCLUDED FALSE
|
||||
#define BTA_AV_SINK_INCLUDED FALSE
|
||||
#define SDP_INCLUDED FALSE
|
||||
#define RFCOMM_INCLUDED FALSE
|
||||
#define PAN_INCLUDED FALSE
|
||||
#define HID_HOST_INCLUDED FALSE
|
||||
#define AVDT_INCLUDED FALSE
|
||||
#define A2D_INCLUDED FALSE
|
||||
#define AVCT_INCLUDED FALSE
|
||||
#define AVRC_INCLUDED FALSE
|
||||
#define SBC_DEC_INCLUDED FALSE
|
||||
#define SBC_ENC_INCLUDED FALSE
|
||||
#define MCA_INCLUDED FALSE
|
||||
#define BTC_SM_INCLUDED FALSE
|
||||
#define BTC_PRF_QUEUE_INCLUDED FALSE
|
||||
#define BTC_GAP_BT_INCLUDED FALSE
|
||||
#define BTC_AV_INCLUDED FALSE
|
||||
|
||||
#endif /* #if CONFIG_CLASSIC_BT_ENABLED */
|
||||
|
||||
#if (CONFIG_GATTS_ENABLE)
|
||||
#define GATTS_INCLUDED TRUE
|
||||
#else
|
||||
#define GATTS_INCLUDED FALSE
|
||||
#endif /* CONFIG_GATTS_ENABLE */
|
||||
|
||||
#if (CONFIG_GATTC_ENABLE)
|
||||
#define GATTC_INCLUDED TRUE
|
||||
#else
|
||||
#define GATTC_INCLUDED FALSE
|
||||
#endif /* CONFIG_GATTC_ENABLE */
|
||||
|
||||
#if (CONFIG_SMP_ENABLE)
|
||||
#define SMP_INCLUDED TRUE
|
||||
#define BLE_PRIVACY_SPT TRUE
|
||||
#else
|
||||
#define SMP_INCLUDED FALSE
|
||||
#define BLE_PRIVACY_SPT FALSE
|
||||
#endif /* CONFIG_GATTC_ENABLE */
|
||||
|
||||
#if (CONFIG_BT_ACL_CONNECTIONS)
|
||||
#define MAX_ACL_CONNECTIONS CONFIG_BT_ACL_CONNECTIONS
|
||||
#define GATT_MAX_PHY_CHANNEL CONFIG_BT_ACL_CONNECTIONS
|
||||
#endif /* CONFIG_BT_ACL_CONNECTIONS */
|
||||
|
||||
//------------------Added from bdroid_buildcfg.h---------------------
|
||||
#ifndef L2CAP_EXTFEA_SUPPORTED_MASK
|
||||
@ -91,15 +162,15 @@
|
||||
#endif
|
||||
|
||||
#ifndef BTA_AR_INCLUDED
|
||||
#define BTA_AR_INCLUDED FALSE//TRUE
|
||||
#define BTA_AR_INCLUDED TRUE//TRUE
|
||||
#endif
|
||||
|
||||
#ifndef BTA_AV_INCLUDED
|
||||
#define BTA_AV_INCLUDED FALSE//TRUE
|
||||
#define BTA_AV_INCLUDED TRUE//TRUE
|
||||
#endif
|
||||
|
||||
#ifndef BTA_AV_SINK_INCLUDED
|
||||
#define BTA_AV_SINK_INCLUDED FALSE//FALSE
|
||||
#define BTA_AV_SINK_INCLUDED TRUE//FALSE
|
||||
#endif
|
||||
|
||||
#ifndef BTA_DISABLE_DELAY
|
||||
@ -157,7 +228,7 @@
|
||||
#endif
|
||||
|
||||
#ifndef BT_USE_TRACES
|
||||
#define BT_USE_TRACES TRUE
|
||||
#define BT_USE_TRACES FALSE
|
||||
#endif
|
||||
|
||||
#ifndef BT_TRACE_BTIF
|
||||
@ -431,9 +502,9 @@
|
||||
#define BTM_SCO_DATA_SIZE_MAX 240
|
||||
#endif
|
||||
|
||||
/* The size in bytes of the BTM inquiry database. 40 As Default */
|
||||
/* The size in bytes of the BTM inquiry database. 5 As Default */
|
||||
#ifndef BTM_INQ_DB_SIZE
|
||||
#define BTM_INQ_DB_SIZE 32
|
||||
#define BTM_INQ_DB_SIZE 5
|
||||
#endif
|
||||
|
||||
/* The default scan mode */
|
||||
@ -466,7 +537,7 @@
|
||||
#define BTM_DEFAULT_DISC_INTERVAL 0x0800
|
||||
#endif
|
||||
|
||||
/* Default class of device
|
||||
/*
|
||||
* {SERVICE_CLASS, MAJOR_CLASS, MINOR_CLASS}
|
||||
*
|
||||
* SERVICE_CLASS:0x5A (Bit17 -Networking,Bit19 - Capturing,Bit20 -Object Transfer,Bit22 -Telephony)
|
||||
@ -474,13 +545,29 @@
|
||||
* MINOR_CLASS:0x0C - SMART_PHONE
|
||||
*
|
||||
*/
|
||||
#define BTA_DM_COD_SMARTPHONE {0x5A, 0x02, 0x0C}
|
||||
|
||||
/*
|
||||
* {SERVICE_CLASS, MAJOR_CLASS, MINOR_CLASS}
|
||||
*
|
||||
* SERVICE_CLASS:0x2C (Bit21 - Audio, Bit19 - Capturing)
|
||||
* MAJOR_CLASS:0x04 - Audio/Video
|
||||
* MINOR_CLASS:0x05 - LoudSpeaker
|
||||
*/
|
||||
#define BTA_DM_COD_LOUDSPEAKER {0x2C, 0x04, 0x14}
|
||||
|
||||
/* Default class of device */
|
||||
#ifndef BTA_DM_COD
|
||||
#define BTA_DM_COD {0x5A, 0x02, 0x0C}
|
||||
#define BTA_DM_COD BTA_DM_COD_LOUDSPEAKER
|
||||
#endif
|
||||
|
||||
/* The number of SCO links. */
|
||||
#ifndef BTM_MAX_SCO_LINKS
|
||||
#if (CLASSIC_BT_INCLUDED == TRUE)
|
||||
#define BTM_MAX_SCO_LINKS 1 //3
|
||||
#else ///CLASSIC_BT_INCLUDED == TRUE
|
||||
#define BTM_MAX_SCO_LINKS 0
|
||||
#endif ///CLASSIC_BT_INCLUDED == TRUE
|
||||
#endif
|
||||
|
||||
/* The preferred type of SCO links (2-eSCO, 0-SCO). */
|
||||
@ -573,11 +660,15 @@
|
||||
|
||||
/* The IO capability of the local device (for Simple Pairing) */
|
||||
#ifndef BTM_LOCAL_IO_CAPS
|
||||
#define BTM_LOCAL_IO_CAPS BTM_IO_CAP_IO
|
||||
#define BTM_LOCAL_IO_CAPS BTM_IO_CAP_NONE
|
||||
#endif
|
||||
|
||||
#ifndef BTM_LOCAL_IO_CAPS_BLE
|
||||
#if (BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE)
|
||||
#define BTM_LOCAL_IO_CAPS_BLE BTM_IO_CAP_KBDISP
|
||||
#else
|
||||
#define BTM_LOCAL_IO_CAPS_BLE 4
|
||||
#endif ///BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE
|
||||
#endif
|
||||
|
||||
/* The default MITM Protection Requirement (for Simple Pairing)
|
||||
@ -599,7 +690,7 @@
|
||||
|
||||
/* TRUE to include Sniff Subrating */
|
||||
#ifndef BTM_SSR_INCLUDED
|
||||
#define BTM_SSR_INCLUDED TRUE
|
||||
#define BTM_SSR_INCLUDED FALSE
|
||||
#endif
|
||||
|
||||
/*************************
|
||||
@ -626,22 +717,29 @@
|
||||
#define L2CAP_CLIENT_INCLUDED FALSE
|
||||
#endif
|
||||
|
||||
|
||||
/* The maximum number of simultaneous links that L2CAP can support. Up to 7*/
|
||||
#ifndef MAX_ACL_CONNECTIONS
|
||||
#define MAX_L2CAP_LINKS 3
|
||||
#define MAX_L2CAP_LINKS 5
|
||||
#else
|
||||
#define MAX_L2CAP_LINKS MAX_ACL_CONNECTIONS
|
||||
#endif
|
||||
|
||||
/* The maximum number of simultaneous channels that L2CAP can support. Up to 16*/
|
||||
#ifndef MAX_L2CAP_CHANNELS
|
||||
#if (CLASSIC_BT_INCLUDED == TRUE)
|
||||
#define MAX_L2CAP_CHANNELS 8
|
||||
#else
|
||||
#define MAX_L2CAP_CHANNELS 2 //Not support to create l2cap channels in the BLE only mode in this bluedroid version(6.0)
|
||||
#endif ///CLASSIC_BT_INCLUDED == TRUE
|
||||
#endif
|
||||
|
||||
/* The maximum number of simultaneous applications that can register with L2CAP. */
|
||||
#ifndef MAX_L2CAP_CLIENTS
|
||||
#if (CLASSIC_BT_INCLUDED == TRUE)
|
||||
#define MAX_L2CAP_CLIENTS 8
|
||||
#else
|
||||
#define MAX_L2CAP_CLIENTS 1 //Not support to allocate a channel control block in BLE only mode
|
||||
#endif ///CLASSIC_BT_INCLUDED == TRUE
|
||||
#endif
|
||||
|
||||
/* The number of seconds of link inactivity before a link is disconnected. */
|
||||
@ -727,7 +825,11 @@
|
||||
/* Used for features using fixed channels; set to zero if no fixed channels supported (BLE, etc.) */
|
||||
/* Excluding L2CAP signaling channel and UCD */
|
||||
#ifndef L2CAP_NUM_FIXED_CHNLS
|
||||
#if (CLASSIC_BT_INCLUDED == TRUE)
|
||||
#define L2CAP_NUM_FIXED_CHNLS 32
|
||||
#else
|
||||
#define L2CAP_NUM_FIXED_CHNLS 3 //There are just three fix channel in the BLE only mode(gatt,signal,smp)
|
||||
#endif ///CLASSIC_BT_INCLUDED == TRUE
|
||||
#endif
|
||||
|
||||
/* First fixed channel supported */
|
||||
@ -795,7 +897,7 @@
|
||||
* resolution, local address rotation etc.
|
||||
*/
|
||||
#ifndef BLE_PRIVACY_SPT
|
||||
#define BLE_PRIVACY_SPT TRUE
|
||||
#define BLE_PRIVACY_SPT FALSE
|
||||
#endif
|
||||
|
||||
/*
|
||||
@ -907,7 +1009,7 @@
|
||||
******************************************************************************/
|
||||
#ifndef GATTC_INCLUDED
|
||||
#if BLE_INCLUDED == TRUE
|
||||
#define GATTC_INCLUDED TRUE
|
||||
#define GATTC_INCLUDED FALSE
|
||||
#else
|
||||
#define GATTC_INCLUDED FALSE
|
||||
#endif
|
||||
@ -934,7 +1036,7 @@
|
||||
******************************************************************************/
|
||||
#ifndef SMP_INCLUDED
|
||||
#if BLE_INCLUDED == TRUE
|
||||
#define SMP_INCLUDED TRUE
|
||||
#define SMP_INCLUDED FALSE
|
||||
#else
|
||||
#define SMP_INCLUDED FALSE
|
||||
#endif
|
||||
@ -1001,16 +1103,16 @@
|
||||
|
||||
/* The maximum number of SDP records the server can support. */
|
||||
#ifndef SDP_MAX_RECORDS
|
||||
#define SDP_MAX_RECORDS 15 /*max is 30*/
|
||||
#define SDP_MAX_RECORDS 6 /*max is 30*/
|
||||
#endif
|
||||
|
||||
/* The maximum number of attributes in each record. */
|
||||
#ifndef SDP_MAX_REC_ATTR
|
||||
#define SDP_MAX_REC_ATTR 25
|
||||
#define SDP_MAX_REC_ATTR 8
|
||||
#endif
|
||||
|
||||
#ifndef SDP_MAX_PAD_LEN
|
||||
#define SDP_MAX_PAD_LEN 600
|
||||
#define SDP_MAX_PAD_LEN 300
|
||||
#endif
|
||||
|
||||
/* The maximum length, in bytes, of an attribute. */
|
||||
@ -1326,17 +1428,17 @@ Range: 2 octets
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef AVDT_INCLUDED
|
||||
#define AVDT_INCLUDED FALSE//TRUE
|
||||
#define AVDT_INCLUDED TRUE
|
||||
#endif
|
||||
|
||||
/* Include reporting capability in AVDTP */
|
||||
#ifndef AVDT_REPORTING
|
||||
#define AVDT_REPORTING FALSE//TRUE
|
||||
#define AVDT_REPORTING TRUE
|
||||
#endif
|
||||
|
||||
/* Include multiplexing capability in AVDTP */
|
||||
#ifndef AVDT_MULTIPLEXING
|
||||
#define AVDT_MULTIPLEXING FALSE//TRUE
|
||||
#define AVDT_MULTIPLEXING TRUE
|
||||
#endif
|
||||
|
||||
/* Number of simultaneous links to different peer devices. */
|
||||
@ -1477,7 +1579,7 @@ Range: 2 octets
|
||||
|
||||
/* This is set to enable use of GAP L2CAP connections. */
|
||||
#ifndef GAP_CONN_INCLUDED
|
||||
#if GAP_INCLUDED == TRUE
|
||||
#if (GAP_INCLUDED == TRUE && CLASSIC_BT_INCLUDED == TRUE)
|
||||
#define GAP_CONN_INCLUDED TRUE
|
||||
#else
|
||||
#define GAP_CONN_INCLUDED FALSE
|
||||
@ -1593,7 +1695,7 @@ Range: 2 octets
|
||||
**
|
||||
******************************************************************************/
|
||||
#ifndef AVRC_INCLUDED
|
||||
#define AVRC_INCLUDED FALSE
|
||||
#define AVRC_INCLUDED TRUE
|
||||
#endif
|
||||
|
||||
#ifndef AVRC_METADATA_INCLUDED
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#ifndef _BT_TRACE_H_
|
||||
#define _BT_TRACE_H_
|
||||
#include "sdkconfig.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include "bt_types.h"
|
||||
@ -170,7 +171,7 @@ inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t len)
|
||||
|
||||
/* Enables or disables all trace messages. */
|
||||
#ifndef BT_USE_TRACES
|
||||
#define BT_USE_TRACES TRUE
|
||||
#define BT_USE_TRACES FALSE
|
||||
#endif
|
||||
|
||||
/******************************************************************************
|
||||
@ -270,11 +271,13 @@ inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t len)
|
||||
#ifndef LOG_LEVEL
|
||||
#define LOG_LEVEL LOG_LEVEL_INFO
|
||||
#endif
|
||||
#define LOG_ERROR(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_ERROR) BT_PRINTF(fmt,## args);} while(0)
|
||||
#define LOG_WARN(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_WARN) BT_PRINTF(fmt,## args);} while(0)
|
||||
#define LOG_INFO(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_INFO) BT_PRINTF(fmt,## args);} while(0)
|
||||
#define LOG_DEBUG(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_DEBUG) BT_PRINTF(fmt,## args);} while(0)
|
||||
#define LOG_VERBOSE(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_VERBOSE) BT_PRINTF(fmt,## args);} while(0)
|
||||
|
||||
#if !CONFIG_BT_STACK_NO_LOG
|
||||
#define LOG_ERROR(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_ERROR) BT_PRINTF(fmt,## args);} while(0)
|
||||
#define LOG_WARN(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_WARN) BT_PRINTF(fmt,## args);} while(0)
|
||||
#define LOG_INFO(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_INFO) BT_PRINTF(fmt,## args);} while(0)
|
||||
#define LOG_DEBUG(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_DEBUG) BT_PRINTF(fmt,## args);} while(0)
|
||||
#define LOG_VERBOSE(fmt, args...) do {if (LOG_LEVEL >= LOG_LEVEL_VERBOSE) BT_PRINTF(fmt,## args);} while(0)
|
||||
|
||||
/* Define tracing for the HCI unit
|
||||
*/
|
||||
@ -287,7 +290,7 @@ inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t len)
|
||||
*/
|
||||
#define BTM_TRACE_ERROR(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);}
|
||||
#define BTM_TRACE_WARNING(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);}
|
||||
#define BTM_TRACE_API(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);}
|
||||
#define BTM_TRACE_API(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);}
|
||||
#define BTM_TRACE_EVENT(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);}
|
||||
#define BTM_TRACE_DEBUG(fmt, args...) {if (btm_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);}
|
||||
|
||||
@ -303,7 +306,7 @@ inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t len)
|
||||
*/
|
||||
#define SDP_TRACE_ERROR(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);}
|
||||
#define SDP_TRACE_WARNING(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);}
|
||||
#define SDP_TRACE_API(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);}
|
||||
#define SDP_TRACE_API(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);}
|
||||
#define SDP_TRACE_EVENT(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);}
|
||||
#define SDP_TRACE_DEBUG(fmt, args...) {if (sdp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);}
|
||||
|
||||
@ -318,7 +321,7 @@ inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t len)
|
||||
/* Generic Access Profile traces */
|
||||
#define GAP_TRACE_ERROR(fmt, args...) {if (gap_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);}
|
||||
#define GAP_TRACE_EVENT(fmt, args...) {if (gap_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);}
|
||||
#define GAP_TRACE_API(fmt, args...) {if (gap_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);}
|
||||
#define GAP_TRACE_API(fmt, args...) {if (gap_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);}
|
||||
#define GAP_TRACE_WARNING(fmt, args...) {if (gap_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);}
|
||||
|
||||
/* define traces for HID Host */
|
||||
@ -340,7 +343,7 @@ inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t len)
|
||||
|
||||
#define PAN_TRACE_ERROR(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);}
|
||||
#define PAN_TRACE_WARNING(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);}
|
||||
#define PAN_TRACE_API(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);}
|
||||
#define PAN_TRACE_API(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);}
|
||||
#define PAN_TRACE_EVENT(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);}
|
||||
#define PAN_TRACE_DEBUG(fmt, args...) {if (pan_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);}
|
||||
|
||||
@ -350,7 +353,7 @@ inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t len)
|
||||
#define A2D_TRACE_WARNING(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);}
|
||||
#define A2D_TRACE_EVENT(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);}
|
||||
#define A2D_TRACE_DEBUG(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);}
|
||||
#define A2D_TRACE_API(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);}
|
||||
#define A2D_TRACE_API(fmt, args...) {if (a2d_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);}
|
||||
|
||||
/* AVDTP
|
||||
*/
|
||||
@ -382,7 +385,7 @@ inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t len)
|
||||
#define MCA_TRACE_WARNING(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);}
|
||||
#define MCA_TRACE_EVENT(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);}
|
||||
#define MCA_TRACE_DEBUG(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);}
|
||||
#define MCA_TRACE_API(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);}
|
||||
#define MCA_TRACE_API(fmt, args...) {if (mca_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);}
|
||||
|
||||
/* Define tracing for the ATT/GATT unit
|
||||
*/
|
||||
@ -396,7 +399,7 @@ inline void trc_dump_buffer(const char *prefix, uint8_t *data, uint16_t len)
|
||||
*/
|
||||
#define SMP_TRACE_ERROR(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_ERROR) BT_PRINTF(fmt, ## args);}
|
||||
#define SMP_TRACE_WARNING(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_WARNING) BT_PRINTF(fmt, ## args);}
|
||||
#define SMP_TRACE_API(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);}
|
||||
#define SMP_TRACE_API(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_API) BT_PRINTF(fmt, ## args);}
|
||||
#define SMP_TRACE_EVENT(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_EVENT) BT_PRINTF(fmt, ## args);}
|
||||
#define SMP_TRACE_DEBUG(fmt, args...) {if (smp_cb.trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);}
|
||||
|
||||
@ -419,6 +422,158 @@ extern UINT8 btif_trace_level;
|
||||
#define APPL_TRACE_DEBUG(fmt, args...) {if (appl_trace_level >= BT_TRACE_LEVEL_DEBUG) BT_PRINTF(fmt, ## args);}
|
||||
#define APPL_TRACE_VERBOSE(fmt, args...) {if (appl_trace_level >= BT_TRACE_LEVEL_VERBOSE) BT_PRINTF(fmt, ## args);}
|
||||
|
||||
#else
|
||||
#define LOG_ERROR(fmt, args...)
|
||||
#define LOG_WARN(fmt, args...)
|
||||
#define LOG_INFO(fmt, args...)
|
||||
#define LOG_DEBUG(fmt, args...)
|
||||
#define LOG_VERBOSE(fmt, args...)
|
||||
|
||||
/* Define tracing for the HCI unit
|
||||
*/
|
||||
#define HCI_TRACE_ERROR(fmt, args...)
|
||||
#define HCI_TRACE_WARNING(fmt, args...)
|
||||
#define HCI_TRACE_EVENT(fmt, args...)
|
||||
#define HCI_TRACE_DEBUG(fmt, args...)
|
||||
|
||||
/* Define tracing for BTM
|
||||
*/
|
||||
#define BTM_TRACE_ERROR(fmt, args...)
|
||||
#define BTM_TRACE_WARNING(fmt, args...)
|
||||
#define BTM_TRACE_API(fmt, args...)
|
||||
#define BTM_TRACE_EVENT(fmt, args...)
|
||||
#define BTM_TRACE_DEBUG(fmt, args...)
|
||||
|
||||
/* Define tracing for the L2CAP unit
|
||||
*/
|
||||
#define L2CAP_TRACE_ERROR(fmt, args...)
|
||||
#define L2CAP_TRACE_WARNING(fmt, args...)
|
||||
#define L2CAP_TRACE_API(fmt, args...)
|
||||
#define L2CAP_TRACE_EVENT(fmt, args...)
|
||||
#define L2CAP_TRACE_DEBUG(fmt, args...)
|
||||
|
||||
/* Define tracing for the SDP unit
|
||||
*/
|
||||
#define SDP_TRACE_ERROR(fmt, args...)
|
||||
#define SDP_TRACE_WARNING(fmt, args...)
|
||||
#define SDP_TRACE_API(fmt, args...)
|
||||
#define SDP_TRACE_EVENT(fmt, args...)
|
||||
#define SDP_TRACE_DEBUG(fmt, args...)
|
||||
|
||||
/* Define tracing for the RFCOMM unit
|
||||
*/
|
||||
#define RFCOMM_TRACE_ERROR(fmt, args...)
|
||||
#define RFCOMM_TRACE_WARNING(fmt, args...)
|
||||
#define RFCOMM_TRACE_API(fmt, args...)
|
||||
#define RFCOMM_TRACE_EVENT(fmt, args...)
|
||||
#define RFCOMM_TRACE_DEBUG(fmt, args...)
|
||||
|
||||
/* Generic Access Profile traces */
|
||||
#define GAP_TRACE_ERROR(fmt, args...)
|
||||
#define GAP_TRACE_EVENT(fmt, args...)
|
||||
#define GAP_TRACE_API(fmt, args...)
|
||||
#define GAP_TRACE_WARNING(fmt, args...)
|
||||
|
||||
/* define traces for HID Host */
|
||||
#define HIDH_TRACE_ERROR(fmt, args...)
|
||||
#define HIDH_TRACE_WARNING(fmt, args...)
|
||||
#define HIDH_TRACE_API(fmt, args...)
|
||||
#define HIDH_TRACE_EVENT(fmt, args...)
|
||||
#define HIDH_TRACE_DEBUG(fmt, args...)
|
||||
|
||||
/* define traces for BNEP */
|
||||
|
||||
#define BNEP_TRACE_ERROR(fmt, args...)
|
||||
#define BNEP_TRACE_WARNING(fmt, args...)
|
||||
#define BNEP_TRACE_API(fmt, args...)
|
||||
#define BNEP_TRACE_EVENT(fmt, args...)
|
||||
#define BNEP_TRACE_DEBUG(fmt, args...)
|
||||
|
||||
/* define traces for PAN */
|
||||
|
||||
#define PAN_TRACE_ERROR(fmt, args...)
|
||||
#define PAN_TRACE_WARNING(fmt, args...)
|
||||
#define PAN_TRACE_API(fmt, args...)
|
||||
#define PAN_TRACE_EVENT(fmt, args...)
|
||||
#define PAN_TRACE_DEBUG(fmt, args...)
|
||||
|
||||
/* Define tracing for the A2DP profile
|
||||
*/
|
||||
#define A2D_TRACE_ERROR(fmt, args...)
|
||||
#define A2D_TRACE_WARNING(fmt, args...)
|
||||
#define A2D_TRACE_EVENT(fmt, args...)
|
||||
#define A2D_TRACE_DEBUG(fmt, args...)
|
||||
#define A2D_TRACE_API(fmt, args...)
|
||||
|
||||
/* AVDTP
|
||||
*/
|
||||
#define AVDT_TRACE_ERROR(fmt, args...)
|
||||
#define AVDT_TRACE_WARNING(fmt, args...)
|
||||
#define AVDT_TRACE_EVENT(fmt, args...)
|
||||
#define AVDT_TRACE_DEBUG(fmt, args...)
|
||||
#define AVDT_TRACE_API(fmt, args...)
|
||||
|
||||
/* Define tracing for the AVCTP protocol
|
||||
*/
|
||||
#define AVCT_TRACE_ERROR(fmt, args...)
|
||||
#define AVCT_TRACE_WARNING(fmt, args...)
|
||||
#define AVCT_TRACE_EVENT(fmt, args...)
|
||||
#define AVCT_TRACE_DEBUG(fmt, args...)
|
||||
#define AVCT_TRACE_API(fmt, args...)
|
||||
|
||||
/* Define tracing for the AVRCP profile
|
||||
*/
|
||||
#define AVRC_TRACE_ERROR(fmt, args...)
|
||||
#define AVRC_TRACE_WARNING(fmt, args...)
|
||||
#define AVRC_TRACE_EVENT(fmt, args...)
|
||||
#define AVRC_TRACE_DEBUG(fmt, args...)
|
||||
#define AVRC_TRACE_API(fmt, args...)
|
||||
|
||||
/* MCAP
|
||||
*/
|
||||
#define MCA_TRACE_ERROR(fmt, args...)
|
||||
#define MCA_TRACE_WARNING(fmt, args...)
|
||||
#define MCA_TRACE_EVENT(fmt, args...)
|
||||
#define MCA_TRACE_DEBUG(fmt, args...)
|
||||
#define MCA_TRACE_API(fmt, args...)
|
||||
|
||||
/* Define tracing for the ATT/GATT unit
|
||||
*/
|
||||
#define GATT_TRACE_ERROR(fmt, args...)
|
||||
#define GATT_TRACE_WARNING(fmt, args...)
|
||||
#define GATT_TRACE_API(fmt, args...)
|
||||
#define GATT_TRACE_EVENT(fmt, args...)
|
||||
#define GATT_TRACE_DEBUG(fmt, args...)
|
||||
|
||||
/* Define tracing for the SMP unit
|
||||
*/
|
||||
#define SMP_TRACE_ERROR(fmt, args...)
|
||||
#define SMP_TRACE_WARNING(fmt, args...)
|
||||
#define SMP_TRACE_API(fmt, args...)
|
||||
#define SMP_TRACE_EVENT(fmt, args...)
|
||||
#define SMP_TRACE_DEBUG(fmt, args...)
|
||||
|
||||
extern UINT8 btif_trace_level;
|
||||
|
||||
// define traces for application
|
||||
#define BTIF_TRACE_ERROR(fmt, args...)
|
||||
#define BTIF_TRACE_WARNING(fmt, args...)
|
||||
#define BTIF_TRACE_API(fmt, args...)
|
||||
#define BTIF_TRACE_EVENT(fmt, args...)
|
||||
#define BTIF_TRACE_DEBUG(fmt, args...)
|
||||
#define BTIF_TRACE_VERBOSE(fmt, args...)
|
||||
|
||||
/* define traces for application */
|
||||
|
||||
#define APPL_TRACE_ERROR(fmt, args...)
|
||||
#define APPL_TRACE_WARNING(fmt, args...)
|
||||
#define APPL_TRACE_API(fmt, args...)
|
||||
#define APPL_TRACE_EVENT(fmt, args...)
|
||||
#define APPL_TRACE_DEBUG(fmt, args...)
|
||||
#define APPL_TRACE_VERBOSE(fmt, args...)
|
||||
#endif ///CONFIG_BT_STACK_NO_LOG
|
||||
|
||||
|
||||
/* Simplified Trace Helper Macro
|
||||
*/
|
||||
#define bdld(fmt, args...) \
|
||||
|
@ -41,7 +41,7 @@ typedef int32_t INT32;
|
||||
typedef bool BOOLEAN;
|
||||
|
||||
#define PACKED __packed
|
||||
#define INLINE __inline
|
||||
// #define INLINE __inline
|
||||
|
||||
#define BCM_STRCPY_S(x1,x2,x3) strcpy((x1),(x3))
|
||||
#define BCM_STRNCPY_S(x1,x2,x3,x4) strncpy((x1),(x3),(x4))
|
||||
|
46
tools/sdk/include/bluedroid/bt_utils.h
Normal file
46
tools/sdk/include/bluedroid/bt_utils.h
Normal file
@ -0,0 +1,46 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2009-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef BT_UTILS_H
|
||||
#define BT_UTILS_H
|
||||
|
||||
// static const char BT_UTILS_MODULE[] = "bt_utils_module";
|
||||
|
||||
/*******************************************************************************
|
||||
** Type definitions
|
||||
********************************************************************************/
|
||||
|
||||
typedef enum {
|
||||
TASK_HIGH_MEDIA = 0,
|
||||
TASK_HIGH_GKI_TIMER,
|
||||
TASK_HIGH_BTU,
|
||||
TASK_HIGH_HCI_WORKER,
|
||||
TASK_HIGH_USERIAL_READ,
|
||||
TASK_UIPC_READ,
|
||||
TASK_JAVA_ALARM,
|
||||
TASK_HIGH_MAX
|
||||
} tHIGH_PRIORITY_TASK;
|
||||
|
||||
/*******************************************************************************
|
||||
** Functions
|
||||
********************************************************************************/
|
||||
|
||||
void raise_priority_a2dp(tHIGH_PRIORITY_TASK high_task);
|
||||
void adjust_priority_a2dp(int start);
|
||||
#define UNUSED(x) (void)(x)
|
||||
#endif /* BT_UTILS_H */
|
@ -635,7 +635,7 @@ typedef struct {
|
||||
} tBTA_DM_PIN_REQ;
|
||||
|
||||
/* BLE related definition */
|
||||
|
||||
#if (SMP_INCLUDED == TRUE)
|
||||
#define BTA_DM_AUTH_FAIL_BASE (HCI_ERR_MAX_ERR + 10)
|
||||
#define BTA_DM_AUTH_CONVERT_SMP_CODE(x) (BTA_DM_AUTH_FAIL_BASE + (x))
|
||||
#define BTA_DM_AUTH_SMP_PASSKEY_FAIL BTA_DM_AUTH_CONVERT_SMP_CODE (SMP_PASSKEY_ENTRY_FAIL)
|
||||
@ -655,7 +655,7 @@ typedef struct {
|
||||
#define BTA_DM_AUTH_SMP_BUSY (BTA_DM_AUTH_FAIL_BASE + SMP_BUSY)
|
||||
#define BTA_DM_AUTH_SMP_ENC_FAIL (BTA_DM_AUTH_FAIL_BASE + SMP_ENC_FAIL)
|
||||
#define BTA_DM_AUTH_SMP_RSP_TIMEOUT (BTA_DM_AUTH_FAIL_BASE + SMP_RSP_TIMEOUT)
|
||||
|
||||
#endif ///SMP_INCLUDED == TRUE
|
||||
/* connection parameter boundary value and dummy value */
|
||||
#define BTA_DM_BLE_SCAN_INT_MIN BTM_BLE_SCAN_INT_MIN
|
||||
#define BTA_DM_BLE_SCAN_INT_MAX BTM_BLE_SCAN_INT_MAX
|
||||
@ -668,13 +668,14 @@ typedef struct {
|
||||
#define BTA_DM_BLE_CONN_SUP_TOUT_MAX BTM_BLE_CONN_SUP_TOUT_MAX
|
||||
#define BTA_DM_BLE_CONN_PARAM_UNDEF BTM_BLE_CONN_PARAM_UNDEF /* use this value when a specific value not to be overwritten */
|
||||
|
||||
|
||||
#if (SMP_INCLUDED == TRUE)
|
||||
#define BTA_LE_KEY_PENC BTM_LE_KEY_PENC /* encryption information of peer device */
|
||||
#define BTA_LE_KEY_PID BTM_LE_KEY_PID /* identity key of the peer device */
|
||||
#define BTA_LE_KEY_PCSRK BTM_LE_KEY_PCSRK /* peer SRK */
|
||||
#define BTA_LE_KEY_LENC BTM_LE_KEY_LENC /* master role security information:div */
|
||||
#define BTA_LE_KEY_LID BTM_LE_KEY_LID /* master device ID key */
|
||||
#define BTA_LE_KEY_LCSRK BTM_LE_KEY_LCSRK /* local CSRK has been deliver to peer */
|
||||
#endif ///SMP_INCLUDED == TRUE
|
||||
typedef UINT8 tBTA_LE_KEY_TYPE; /* can be used as a bit mask */
|
||||
|
||||
|
||||
@ -702,10 +703,11 @@ typedef struct {
|
||||
BT_OCTET16 irk;
|
||||
BT_OCTET16 dhk;
|
||||
} tBTA_BLE_LOCAL_ID_KEYS;
|
||||
|
||||
#if (SMP_INCLUDED == TRUE)
|
||||
#define BTA_DM_SEC_GRANTED BTA_SUCCESS
|
||||
#define BTA_DM_SEC_PAIR_NOT_SPT BTA_DM_AUTH_SMP_PAIR_NOT_SUPPORT
|
||||
#define BTA_DM_SEC_REP_ATTEMPTS BTA_DM_AUTH_SMP_REPEATED_ATTEMPT
|
||||
#endif ///SMP_INCLUDED == TRUE
|
||||
typedef UINT8 tBTA_DM_BLE_SEC_GRANT;
|
||||
|
||||
|
||||
@ -810,6 +812,7 @@ typedef tBTM_AUTH_REQ tBTA_AUTH_REQ;
|
||||
#define BTA_AUTH_GEN_BOND BTM_AUTH_SPGB_NO /* 4 this bit is set for general bonding */
|
||||
#define BTA_AUTH_BONDS BTM_AUTH_BONDS /* 6 the general/dedicated bonding bits */
|
||||
|
||||
#if (SMP_INCLUDED == TRUE)
|
||||
#define BTA_LE_AUTH_NO_BOND BTM_LE_AUTH_REQ_NO_BOND /* 0*/
|
||||
#define BTA_LE_AUTH_BOND BTM_LE_AUTH_REQ_BOND /* 1 << 0 */
|
||||
#define BTA_LE_AUTH_REQ_MITM BTM_LE_AUTH_REQ_MITM /* 1 << 2 */
|
||||
@ -818,6 +821,7 @@ typedef tBTM_AUTH_REQ tBTA_AUTH_REQ;
|
||||
#define BTA_LE_AUTH_REQ_SC_BOND BTM_LE_AUTH_REQ_SC_BOND /* 1001 */
|
||||
#define BTA_LE_AUTH_REQ_SC_MITM BTM_LE_AUTH_REQ_SC_MITM /* 1100 */
|
||||
#define BTA_LE_AUTH_REQ_SC_MITM_BOND BTM_LE_AUTH_REQ_SC_MITM_BOND /* 1101 */
|
||||
#endif ///SMP_INCLUDED == TRUE
|
||||
typedef tBTM_LE_AUTH_REQ tBTA_LE_AUTH_REQ; /* combination of the above bit pattern */
|
||||
|
||||
#define BTA_OOB_NONE BTM_OOB_NONE
|
||||
@ -1099,7 +1103,9 @@ typedef void (tBTA_BLE_SCAN_SETUP_CBACK) (tBTA_BLE_BATCH_SCAN_EVT evt,
|
||||
tBTA_DM_BLE_REF_VALUE ref_value,
|
||||
tBTA_STATUS status);
|
||||
|
||||
typedef void (tBTA_START_SCAN_CMPL_CBACK) (tBTA_STATUS status);
|
||||
typedef void (tBTA_START_STOP_SCAN_CMPL_CBACK) (tBTA_STATUS status);
|
||||
|
||||
typedef void (tBTA_START_STOP_ADV_CMPL_CBACK) (tBTA_STATUS status);
|
||||
|
||||
typedef void (tBTA_BLE_TRACK_ADV_CMPL_CBACK)(int action, tBTA_STATUS status,
|
||||
tBTA_DM_BLE_PF_AVBL_SPACE avbl_space,
|
||||
@ -1283,7 +1289,7 @@ typedef void (tBTA_DM_SWITCH_CBACK)(tBTA_DM_SWITCH_EVT event, tBTA_STATUS status
|
||||
|
||||
typedef UINT8 tBTA_DM_ROUTE_PATH;
|
||||
|
||||
|
||||
#if (SDP_INCLUDED == TRUE)
|
||||
/* Device Identification (DI) data structure
|
||||
*/
|
||||
/* Used to set the DI record */
|
||||
@ -1292,6 +1298,7 @@ typedef tSDP_DI_RECORD tBTA_DI_RECORD;
|
||||
typedef tSDP_DI_GET_RECORD tBTA_DI_GET_RECORD;
|
||||
/* SDP discovery database */
|
||||
typedef tSDP_DISCOVERY_DB tBTA_DISCOVERY_DB;
|
||||
#endif ///SDP_INCLUDED == TRUE
|
||||
|
||||
#ifndef BTA_DI_NUM_MAX
|
||||
#define BTA_DI_NUM_MAX 3
|
||||
@ -1444,9 +1451,9 @@ extern void BTA_DmSearchCancel(void);
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
#if (SDP_INCLUDED == TRUE)
|
||||
extern void BTA_DmDiscover(BD_ADDR bd_addr, tBTA_SERVICE_MASK services,
|
||||
tBTA_DM_SEARCH_CBACK *p_cback, BOOLEAN sdp_search);
|
||||
|
||||
// btla-specific ++
|
||||
/*******************************************************************************
|
||||
**
|
||||
@ -1461,7 +1468,7 @@ extern void BTA_DmDiscover(BD_ADDR bd_addr, tBTA_SERVICE_MASK services,
|
||||
*******************************************************************************/
|
||||
extern void BTA_DmDiscoverUUID(BD_ADDR bd_addr, tSDP_UUID *uuid,
|
||||
tBTA_DM_SEARCH_CBACK *p_cback, BOOLEAN sdp_search);
|
||||
|
||||
#endif ///SDP_INCLUDED == TRUE
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_DmGetCachedRemoteName
|
||||
@ -1617,7 +1624,7 @@ extern void BTA_GetEirService( UINT8 *p_eir, tBTA_SERVICE_MASK *p_services );
|
||||
*******************************************************************************/
|
||||
extern UINT16 BTA_DmGetConnectionState( BD_ADDR bd_addr );
|
||||
|
||||
|
||||
#if (SDP_INCLUDED == TRUE)
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_DmSetLocalDiRecord
|
||||
@ -1629,7 +1636,7 @@ extern UINT16 BTA_DmGetConnectionState( BD_ADDR bd_addr );
|
||||
*******************************************************************************/
|
||||
extern tBTA_STATUS BTA_DmSetLocalDiRecord( tBTA_DI_RECORD *p_device_info,
|
||||
UINT32 *p_handle );
|
||||
|
||||
#endif ///SDP_INCLUDED == TRUE
|
||||
/*******************************************************************************
|
||||
**
|
||||
**
|
||||
@ -2004,7 +2011,7 @@ extern void BTA_DmSetEncryption(BD_ADDR bd_addr, tBTA_TRANSPORT transport,
|
||||
*******************************************************************************/
|
||||
extern void BTA_DmBleObserve(BOOLEAN start, UINT8 duration,
|
||||
tBTA_DM_SEARCH_CBACK *p_results_cb,
|
||||
tBTA_START_SCAN_CMPL_CBACK *p_start_scan_cb);
|
||||
tBTA_START_STOP_SCAN_CMPL_CBACK *p_start_stop_scan_cb);
|
||||
|
||||
extern void BTA_DmBleStopAdvertising(void);
|
||||
|
||||
@ -2111,11 +2118,12 @@ extern void BTA_DmBleSetScanRspRaw (UINT8 *p_raw_scan_rsp, UINT32 raw_scan_rsp_l
|
||||
** Description This function starts or stops LE broadcasting.
|
||||
**
|
||||
** Parameters start: start or stop broadcast.
|
||||
** p_start_stop_adv_cb: stop broadcast completed event
|
||||
**
|
||||
** Returns None
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void BTA_DmBleBroadcast (BOOLEAN start);
|
||||
extern void BTA_DmBleBroadcast (BOOLEAN start, tBTA_START_STOP_ADV_CMPL_CBACK *p_start_stop_adv_cb);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
|
144
tools/sdk/include/bluedroid/bta_ar_api.h
Normal file
144
tools/sdk/include/bluedroid/bta_ar_api.h
Normal file
@ -0,0 +1,144 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2004-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* This is the public interface file for the simulatenous advanced
|
||||
* audio/video streaming (AV) source and sink of BTA, Broadcom's Bluetooth
|
||||
* application layer for mobile phones.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef BTA_AR_API_H
|
||||
#define BTA_AR_API_H
|
||||
|
||||
#include "avdt_api.h"
|
||||
#include "avct_api.h"
|
||||
#include "avrc_api.h"
|
||||
#include "sdp_api.h"
|
||||
#include "bta_av_api.h"
|
||||
#include "bta_sys.h"
|
||||
|
||||
#if (BTA_AR_INCLUDED == TRUE)
|
||||
|
||||
/*****************************************************************************
|
||||
** Constants and data types
|
||||
*****************************************************************************/
|
||||
/* This event signal to AR user that other profile is connected */
|
||||
#define BTA_AR_AVDT_CONN_EVT (AVDT_MAX_EVT + 1)
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_ar_init
|
||||
**
|
||||
** Description This function is called from bta_sys_init().
|
||||
** to initialize the control block
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_ar_init(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_ar_reg_avdt
|
||||
**
|
||||
** Description This function is called to register to AVDTP.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_ar_reg_avdt(tAVDT_REG *p_reg, tAVDT_CTRL_CBACK *p_cback, tBTA_SYS_ID sys_id);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_ar_dereg_avdt
|
||||
**
|
||||
** Description This function is called to de-register from AVDTP.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_ar_dereg_avdt(tBTA_SYS_ID sys_id);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_ar_avdt_conn
|
||||
**
|
||||
** Description This function is called to let ar know that some AVDTP profile
|
||||
** is connected for this sys_id.
|
||||
** If the other sys modules started a timer for PENDING_EVT,
|
||||
** the timer can be stopped now.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_ar_avdt_conn(tBTA_SYS_ID sys_id, BD_ADDR bd_addr);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_ar_reg_avct
|
||||
**
|
||||
** Description This function is called to register to AVCTP.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_ar_reg_avct(UINT16 mtu, UINT16 mtu_br, UINT8 sec_mask, tBTA_SYS_ID sys_id);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_ar_dereg_avct
|
||||
**
|
||||
** Description This function is called to deregister from AVCTP.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_ar_dereg_avct(tBTA_SYS_ID sys_id);
|
||||
|
||||
/******************************************************************************
|
||||
**
|
||||
** Function bta_ar_reg_avrc
|
||||
**
|
||||
** Description This function is called to register an SDP record for AVRCP.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
******************************************************************************/
|
||||
extern void bta_ar_reg_avrc(UINT16 service_uuid, char *p_service_name,
|
||||
char *p_provider_name, UINT16 categories, tBTA_SYS_ID sys_id);
|
||||
|
||||
/******************************************************************************
|
||||
**
|
||||
** Function bta_ar_dereg_avrc
|
||||
**
|
||||
** Description This function is called to de-register/delete an SDP record for AVRCP.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
******************************************************************************/
|
||||
extern void bta_ar_dereg_avrc(UINT16 service_uuid, tBTA_SYS_ID sys_id);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif ///BTA_AR_INCLUDED == TRUE
|
||||
|
||||
#endif /* BTA_AR_API_H */
|
812
tools/sdk/include/bluedroid/bta_av_api.h
Normal file
812
tools/sdk/include/bluedroid/bta_av_api.h
Normal file
@ -0,0 +1,812 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2004-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* This is the public interface file for the advanced audio/video streaming
|
||||
* (AV) subsystem of BTA, Broadcom's Bluetooth application layer for mobile
|
||||
* phones.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef BTA_AV_API_H
|
||||
#define BTA_AV_API_H
|
||||
|
||||
#include "avrc_api.h"
|
||||
#include "avdt_api.h"
|
||||
#include "a2d_api.h"
|
||||
#include "bta_api.h"
|
||||
|
||||
#if (BTA_AV_INCLUDED == TRUE)
|
||||
|
||||
/*****************************************************************************
|
||||
** Constants and data types
|
||||
*****************************************************************************/
|
||||
/* Set to TRUE if seperate authorization prompt desired for AVCTP besides A2DP authorization */
|
||||
/* Typically FALSE when AVRCP is used in conjunction with A2DP */
|
||||
#ifndef BTA_AV_WITH_AVCTP_AUTHORIZATION
|
||||
#define BTA_AV_WITH_AVCTP_AUTHORIZATION FALSE
|
||||
#endif
|
||||
|
||||
/* AV status values */
|
||||
#define BTA_AV_SUCCESS 0 /* successful operation */
|
||||
#define BTA_AV_FAIL 1 /* generic failure */
|
||||
#define BTA_AV_FAIL_SDP 2 /* service not found */
|
||||
#define BTA_AV_FAIL_STREAM 3 /* stream connection failed */
|
||||
#define BTA_AV_FAIL_RESOURCES 4 /* no resources */
|
||||
#define BTA_AV_FAIL_ROLE 5 /* failed due to role management related issues */
|
||||
#define BTA_AV_FAIL_GET_CAP 6 /* get capability failed due to no SEP availale on the peer */
|
||||
|
||||
typedef UINT8 tBTA_AV_STATUS;
|
||||
|
||||
/* AV features masks */
|
||||
#define BTA_AV_FEAT_RCTG 0x0001 /* remote control target */
|
||||
#define BTA_AV_FEAT_RCCT 0x0002 /* remote control controller */
|
||||
#define BTA_AV_FEAT_PROTECT 0x0004 /* streaming media contect protection */
|
||||
#define BTA_AV_FEAT_VENDOR 0x0008 /* remote control vendor dependent commands */
|
||||
#define BTA_AV_FEAT_REPORT 0x0020 /* use reporting service for VDP */
|
||||
#define BTA_AV_FEAT_METADATA 0x0040 /* remote control Metadata Transfer command/response */
|
||||
#define BTA_AV_FEAT_MULTI_AV 0x0080 /* use multi-av, if controller supports it */
|
||||
#define BTA_AV_FEAT_BROWSE 0x0010 /* use browsing channel */
|
||||
#define BTA_AV_FEAT_MASTER 0x0100 /* stream only as master role */
|
||||
#define BTA_AV_FEAT_ADV_CTRL 0x0200 /* remote control Advanced Control command/response */
|
||||
#define BTA_AV_FEAT_DELAY_RPT 0x0400 /* allow delay reporting */
|
||||
#define BTA_AV_FEAT_ACP_START 0x0800 /* start stream when 2nd SNK was accepted */
|
||||
|
||||
/* Internal features */
|
||||
#define BTA_AV_FEAT_NO_SCO_SSPD 0x8000 /* Do not suspend av streaming as to AG events(SCO or Call) */
|
||||
|
||||
typedef UINT16 tBTA_AV_FEAT;
|
||||
|
||||
/* AV channel values */
|
||||
#define BTA_AV_CHNL_MSK 0xC0
|
||||
#define BTA_AV_CHNL_AUDIO 0x40 /* audio channel */
|
||||
#define BTA_AV_CHNL_VIDEO 0x80 /* video channel */
|
||||
typedef UINT8 tBTA_AV_CHNL;
|
||||
|
||||
|
||||
#define BTA_AV_HNDL_MSK 0x3F
|
||||
typedef UINT8 tBTA_AV_HNDL;
|
||||
/* handle index to mask */
|
||||
#define BTA_AV_HNDL_TO_MSK(h) ((UINT8)(1 << (h)))
|
||||
|
||||
/* tBTA_AV_HNDL to mask */
|
||||
#define BTA_AV_HNDL_TYPE_TO_MSK(h) ((UINT8)(1 << (h&BTA_AV_HNDL_MSK)))
|
||||
|
||||
/* offset of codec type in codec info byte array */
|
||||
#define BTA_AV_CODEC_TYPE_IDX AVDT_CODEC_TYPE_INDEX /* 2 */
|
||||
|
||||
|
||||
|
||||
/* maximum number of streams created: 1 for audio, 1 for video */
|
||||
#ifndef BTA_AV_NUM_STRS
|
||||
#define BTA_AV_NUM_STRS 2
|
||||
#endif
|
||||
|
||||
#ifndef BTA_AV_MAX_SEPS
|
||||
#define BTA_AV_MAX_SEPS 2
|
||||
#endif
|
||||
|
||||
#ifndef BTA_AV_MAX_A2DP_MTU
|
||||
/*#define BTA_AV_MAX_A2DP_MTU 668 //224 (DM5) * 3 - 4(L2CAP header) */
|
||||
#define BTA_AV_MAX_A2DP_MTU 1008
|
||||
#endif
|
||||
|
||||
#ifndef BTA_AV_MAX_VDP_MTU
|
||||
#define BTA_AV_MAX_VDP_MTU 1008
|
||||
#endif
|
||||
|
||||
|
||||
/* codec type */
|
||||
#define BTA_AV_CODEC_SBC A2D_MEDIA_CT_SBC /* SBC media codec type */
|
||||
#define BTA_AV_CODEC_M12 A2D_MEDIA_CT_M12 /* MPEG-1, 2 Audio media codec type */
|
||||
#define BTA_AV_CODEC_M24 A2D_MEDIA_CT_M24 /* MPEG-2, 4 AAC media codec type */
|
||||
#define BTA_AV_CODEC_ATRAC A2D_MEDIA_CT_ATRAC /* ATRAC family media codec type */
|
||||
#define BTA_AV_CODEC_H263_P0 VDP_MEDIA_CT_H263_P0 /* H.263 baseline (profile 0) */
|
||||
#define BTA_AV_CODEC_MPEG4 VDP_MEDIA_CT_MPEG4 /* MPEG-4 Visual Simple Profile */
|
||||
#define BTA_AV_CODEC_H263_P3 VDP_MEDIA_CT_H263_P3 /* H.263 profile 3 */
|
||||
#define BTA_AV_CODEC_H263_P8 VDP_MEDIA_CT_H263_P8 /* H.263 profile 8 */
|
||||
#define BTA_AV_CODEC_VEND VDP_MEDIA_CT_VEND /* Non-VDP */
|
||||
|
||||
typedef UINT8 tBTA_AV_CODEC;
|
||||
|
||||
/* Company ID in BT assigned numbers */
|
||||
#define BTA_AV_BT_VENDOR_ID VDP_BT_VENDOR_ID /* Broadcom Corporation */
|
||||
|
||||
/* vendor specific codec ID */
|
||||
#define BTA_AV_CODEC_ID_H264 VDP_CODEC_ID_H264 /* Non-VDP codec ID - H.264 */
|
||||
#define BTA_AV_CODEC_ID_IMG VDP_CODEC_ID_IMG /* Non-VDP codec ID - images/slideshow */
|
||||
|
||||
/* operation id list for BTA_AvRemoteCmd */
|
||||
#define BTA_AV_RC_SELECT AVRC_ID_SELECT /* select */
|
||||
#define BTA_AV_RC_UP AVRC_ID_UP /* up */
|
||||
#define BTA_AV_RC_DOWN AVRC_ID_DOWN /* down */
|
||||
#define BTA_AV_RC_LEFT AVRC_ID_LEFT /* left */
|
||||
#define BTA_AV_RC_RIGHT AVRC_ID_RIGHT /* right */
|
||||
#define BTA_AV_RC_RIGHT_UP AVRC_ID_RIGHT_UP /* right-up */
|
||||
#define BTA_AV_RC_RIGHT_DOWN AVRC_ID_RIGHT_DOWN /* right-down */
|
||||
#define BTA_AV_RC_LEFT_UP AVRC_ID_LEFT_UP /* left-up */
|
||||
#define BTA_AV_RC_LEFT_DOWN AVRC_ID_LEFT_DOWN /* left-down */
|
||||
#define BTA_AV_RC_ROOT_MENU AVRC_ID_ROOT_MENU /* root menu */
|
||||
#define BTA_AV_RC_SETUP_MENU AVRC_ID_SETUP_MENU /* setup menu */
|
||||
#define BTA_AV_RC_CONT_MENU AVRC_ID_CONT_MENU /* contents menu */
|
||||
#define BTA_AV_RC_FAV_MENU AVRC_ID_FAV_MENU /* favorite menu */
|
||||
#define BTA_AV_RC_EXIT AVRC_ID_EXIT /* exit */
|
||||
#define BTA_AV_RC_0 AVRC_ID_0 /* 0 */
|
||||
#define BTA_AV_RC_1 AVRC_ID_1 /* 1 */
|
||||
#define BTA_AV_RC_2 AVRC_ID_2 /* 2 */
|
||||
#define BTA_AV_RC_3 AVRC_ID_3 /* 3 */
|
||||
#define BTA_AV_RC_4 AVRC_ID_4 /* 4 */
|
||||
#define BTA_AV_RC_5 AVRC_ID_5 /* 5 */
|
||||
#define BTA_AV_RC_6 AVRC_ID_6 /* 6 */
|
||||
#define BTA_AV_RC_7 AVRC_ID_7 /* 7 */
|
||||
#define BTA_AV_RC_8 AVRC_ID_8 /* 8 */
|
||||
#define BTA_AV_RC_9 AVRC_ID_9 /* 9 */
|
||||
#define BTA_AV_RC_DOT AVRC_ID_DOT /* dot */
|
||||
#define BTA_AV_RC_ENTER AVRC_ID_ENTER /* enter */
|
||||
#define BTA_AV_RC_CLEAR AVRC_ID_CLEAR /* clear */
|
||||
#define BTA_AV_RC_CHAN_UP AVRC_ID_CHAN_UP /* channel up */
|
||||
#define BTA_AV_RC_CHAN_DOWN AVRC_ID_CHAN_DOWN /* channel down */
|
||||
#define BTA_AV_RC_PREV_CHAN AVRC_ID_PREV_CHAN /* previous channel */
|
||||
#define BTA_AV_RC_SOUND_SEL AVRC_ID_SOUND_SEL /* sound select */
|
||||
#define BTA_AV_RC_INPUT_SEL AVRC_ID_INPUT_SEL /* input select */
|
||||
#define BTA_AV_RC_DISP_INFO AVRC_ID_DISP_INFO /* display information */
|
||||
#define BTA_AV_RC_HELP AVRC_ID_HELP /* help */
|
||||
#define BTA_AV_RC_PAGE_UP AVRC_ID_PAGE_UP /* page up */
|
||||
#define BTA_AV_RC_PAGE_DOWN AVRC_ID_PAGE_DOWN /* page down */
|
||||
#define BTA_AV_RC_POWER AVRC_ID_POWER /* power */
|
||||
#define BTA_AV_RC_VOL_UP AVRC_ID_VOL_UP /* volume up */
|
||||
#define BTA_AV_RC_VOL_DOWN AVRC_ID_VOL_DOWN /* volume down */
|
||||
#define BTA_AV_RC_MUTE AVRC_ID_MUTE /* mute */
|
||||
#define BTA_AV_RC_PLAY AVRC_ID_PLAY /* play */
|
||||
#define BTA_AV_RC_STOP AVRC_ID_STOP /* stop */
|
||||
#define BTA_AV_RC_PAUSE AVRC_ID_PAUSE /* pause */
|
||||
#define BTA_AV_RC_RECORD AVRC_ID_RECORD /* record */
|
||||
#define BTA_AV_RC_REWIND AVRC_ID_REWIND /* rewind */
|
||||
#define BTA_AV_RC_FAST_FOR AVRC_ID_FAST_FOR /* fast forward */
|
||||
#define BTA_AV_RC_EJECT AVRC_ID_EJECT /* eject */
|
||||
#define BTA_AV_RC_FORWARD AVRC_ID_FORWARD /* forward */
|
||||
#define BTA_AV_RC_BACKWARD AVRC_ID_BACKWARD /* backward */
|
||||
#define BTA_AV_RC_ANGLE AVRC_ID_ANGLE /* angle */
|
||||
#define BTA_AV_RC_SUBPICT AVRC_ID_SUBPICT /* subpicture */
|
||||
#define BTA_AV_RC_F1 AVRC_ID_F1 /* F1 */
|
||||
#define BTA_AV_RC_F2 AVRC_ID_F2 /* F2 */
|
||||
#define BTA_AV_RC_F3 AVRC_ID_F3 /* F3 */
|
||||
#define BTA_AV_RC_F4 AVRC_ID_F4 /* F4 */
|
||||
#define BTA_AV_RC_F5 AVRC_ID_F5 /* F5 */
|
||||
#define BTA_AV_VENDOR AVRC_ID_VENDOR /* vendor unique */
|
||||
|
||||
typedef UINT8 tBTA_AV_RC;
|
||||
|
||||
/* state flag for pass through command */
|
||||
#define BTA_AV_STATE_PRESS AVRC_STATE_PRESS /* key pressed */
|
||||
#define BTA_AV_STATE_RELEASE AVRC_STATE_RELEASE /* key released */
|
||||
|
||||
typedef UINT8 tBTA_AV_STATE;
|
||||
|
||||
/* command codes for BTA_AvVendorCmd */
|
||||
#define BTA_AV_CMD_CTRL AVRC_CMD_CTRL
|
||||
#define BTA_AV_CMD_STATUS AVRC_CMD_STATUS
|
||||
#define BTA_AV_CMD_SPEC_INQ AVRC_CMD_SPEC_INQ
|
||||
#define BTA_AV_CMD_NOTIF AVRC_CMD_NOTIF
|
||||
#define BTA_AV_CMD_GEN_INQ AVRC_CMD_GEN_INQ
|
||||
|
||||
typedef UINT8 tBTA_AV_CMD;
|
||||
|
||||
/* response codes for BTA_AvVendorRsp */
|
||||
#define BTA_AV_RSP_NOT_IMPL AVRC_RSP_NOT_IMPL
|
||||
#define BTA_AV_RSP_ACCEPT AVRC_RSP_ACCEPT
|
||||
#define BTA_AV_RSP_REJ AVRC_RSP_REJ
|
||||
#define BTA_AV_RSP_IN_TRANS AVRC_RSP_IN_TRANS
|
||||
#define BTA_AV_RSP_IMPL_STBL AVRC_RSP_IMPL_STBL
|
||||
#define BTA_AV_RSP_CHANGED AVRC_RSP_CHANGED
|
||||
#define BTA_AV_RSP_INTERIM AVRC_RSP_INTERIM
|
||||
|
||||
typedef UINT8 tBTA_AV_CODE;
|
||||
|
||||
/* error codes for BTA_AvProtectRsp */
|
||||
#define BTA_AV_ERR_NONE A2D_SUCCESS /* Success, no error */
|
||||
#define BTA_AV_ERR_BAD_STATE AVDT_ERR_BAD_STATE /* Message cannot be processed in this state */
|
||||
#define BTA_AV_ERR_RESOURCE AVDT_ERR_RESOURCE /* Insufficient resources */
|
||||
#define BTA_AV_ERR_BAD_CP_TYPE A2D_BAD_CP_TYPE /* The requested Content Protection Type is not supported */
|
||||
#define BTA_AV_ERR_BAD_CP_FORMAT A2D_BAD_CP_FORMAT /* The format of Content Protection Data is not correct */
|
||||
|
||||
typedef UINT8 tBTA_AV_ERR;
|
||||
|
||||
|
||||
/* AV callback events */
|
||||
#define BTA_AV_ENABLE_EVT 0 /* AV enabled */
|
||||
#define BTA_AV_REGISTER_EVT 1 /* registered to AVDT */
|
||||
#define BTA_AV_OPEN_EVT 2 /* connection opened */
|
||||
#define BTA_AV_CLOSE_EVT 3 /* connection closed */
|
||||
#define BTA_AV_START_EVT 4 /* stream data transfer started */
|
||||
#define BTA_AV_STOP_EVT 5 /* stream data transfer stopped */
|
||||
#define BTA_AV_PROTECT_REQ_EVT 6 /* content protection request */
|
||||
#define BTA_AV_PROTECT_RSP_EVT 7 /* content protection response */
|
||||
#define BTA_AV_RC_OPEN_EVT 8 /* remote control channel open */
|
||||
#define BTA_AV_RC_CLOSE_EVT 9 /* remote control channel closed */
|
||||
#define BTA_AV_REMOTE_CMD_EVT 10 /* remote control command */
|
||||
#define BTA_AV_REMOTE_RSP_EVT 11 /* remote control response */
|
||||
#define BTA_AV_VENDOR_CMD_EVT 12 /* vendor dependent remote control command */
|
||||
#define BTA_AV_VENDOR_RSP_EVT 13 /* vendor dependent remote control response */
|
||||
#define BTA_AV_RECONFIG_EVT 14 /* reconfigure response */
|
||||
#define BTA_AV_SUSPEND_EVT 15 /* suspend response */
|
||||
#define BTA_AV_PENDING_EVT 16 /* incoming connection pending:
|
||||
* signal channel is open and stream is not open
|
||||
* after BTA_AV_SIG_TIME_VAL ms */
|
||||
#define BTA_AV_META_MSG_EVT 17 /* metadata messages */
|
||||
#define BTA_AV_REJECT_EVT 18 /* incoming connection rejected */
|
||||
#define BTA_AV_RC_FEAT_EVT 19 /* remote control channel peer supported features update */
|
||||
#define BTA_AV_MEDIA_SINK_CFG_EVT 20 /* command to configure codec */
|
||||
#define BTA_AV_MEDIA_DATA_EVT 21 /* sending data to Media Task */
|
||||
/* Max BTA event */
|
||||
#define BTA_AV_MAX_EVT 22
|
||||
|
||||
|
||||
/* function types for call-out functions */
|
||||
typedef BOOLEAN (*tBTA_AV_CO_INIT) (UINT8 *p_codec_type, UINT8 *p_codec_info,
|
||||
UINT8 *p_num_protect, UINT8 *p_protect_info, UINT8 index);
|
||||
typedef void (*tBTA_AV_CO_DISC_RES) (tBTA_AV_HNDL hndl, UINT8 num_seps,
|
||||
UINT8 num_snk, UINT8 num_src, BD_ADDR addr, UINT16 uuid_local);
|
||||
typedef UINT8 (*tBTA_AV_CO_GETCFG) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type,
|
||||
UINT8 *p_codec_info, UINT8 *p_sep_info_idx, UINT8 seid,
|
||||
UINT8 *p_num_protect, UINT8 *p_protect_info);
|
||||
typedef void (*tBTA_AV_CO_SETCFG) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type,
|
||||
UINT8 *p_codec_info, UINT8 seid, BD_ADDR addr,
|
||||
UINT8 num_protect, UINT8 *p_protect_info,
|
||||
UINT8 t_local_sep, UINT8 avdt_handle);
|
||||
typedef void (*tBTA_AV_CO_OPEN) (tBTA_AV_HNDL hndl,
|
||||
tBTA_AV_CODEC codec_type, UINT8 *p_codec_info,
|
||||
UINT16 mtu);
|
||||
typedef void (*tBTA_AV_CO_CLOSE) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type, UINT16 mtu);
|
||||
typedef void (*tBTA_AV_CO_START) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type, UINT8 *p_codec_info, BOOLEAN *p_no_rtp_hdr);
|
||||
typedef void (*tBTA_AV_CO_STOP) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type);
|
||||
typedef void *(*tBTA_AV_CO_DATAPATH) (tBTA_AV_CODEC codec_type,
|
||||
UINT32 *p_len, UINT32 *p_timestamp);
|
||||
typedef void (*tBTA_AV_CO_DELAY) (tBTA_AV_HNDL hndl, UINT16 delay);
|
||||
|
||||
/* the call-out functions for one stream */
|
||||
typedef struct {
|
||||
tBTA_AV_CO_INIT init;
|
||||
tBTA_AV_CO_DISC_RES disc_res;
|
||||
tBTA_AV_CO_GETCFG getcfg;
|
||||
tBTA_AV_CO_SETCFG setcfg;
|
||||
tBTA_AV_CO_OPEN open;
|
||||
tBTA_AV_CO_CLOSE close;
|
||||
tBTA_AV_CO_START start;
|
||||
tBTA_AV_CO_STOP stop;
|
||||
tBTA_AV_CO_DATAPATH data;
|
||||
tBTA_AV_CO_DELAY delay;
|
||||
} tBTA_AV_CO_FUNCTS;
|
||||
|
||||
typedef UINT8 tBTA_AV_EVT;
|
||||
|
||||
/* Event associated with BTA_AV_ENABLE_EVT */
|
||||
typedef struct {
|
||||
tBTA_AV_FEAT features;
|
||||
} tBTA_AV_ENABLE;
|
||||
|
||||
/* Event associated with BTA_AV_REGISTER_EVT */
|
||||
typedef struct {
|
||||
tBTA_AV_CHNL chnl; /* audio/video */
|
||||
tBTA_AV_HNDL hndl; /* Handle associated with the stream. */
|
||||
UINT8 app_id; /* ID associated with call to BTA_AvRegister() */
|
||||
tBTA_AV_STATUS status;
|
||||
tBTA_AV_CO_FUNCTS *p_bta_av_cos;
|
||||
} tBTA_AV_REGISTER;
|
||||
|
||||
/* data associated with BTA_AV_OPEN_EVT */
|
||||
#define BTA_AV_EDR_2MBPS 0x01
|
||||
#define BTA_AV_EDR_3MBPS 0x02
|
||||
typedef UINT8 tBTA_AV_EDR;
|
||||
|
||||
typedef struct {
|
||||
tBTA_AV_CHNL chnl;
|
||||
tBTA_AV_HNDL hndl;
|
||||
BD_ADDR bd_addr;
|
||||
tBTA_AV_STATUS status;
|
||||
BOOLEAN starting;
|
||||
tBTA_AV_EDR edr; /* 0, if peer device does not support EDR */
|
||||
UINT8 sep; /* sep type of peer device */
|
||||
} tBTA_AV_OPEN;
|
||||
|
||||
/* data associated with BTA_AV_CLOSE_EVT */
|
||||
typedef struct {
|
||||
tBTA_AV_CHNL chnl;
|
||||
tBTA_AV_HNDL hndl;
|
||||
UINT8 disc_rsn; /* disconnection reason */
|
||||
} tBTA_AV_CLOSE;
|
||||
|
||||
/* data associated with BTA_AV_START_EVT */
|
||||
typedef struct {
|
||||
tBTA_AV_CHNL chnl;
|
||||
tBTA_AV_HNDL hndl;
|
||||
tBTA_AV_STATUS status;
|
||||
BOOLEAN initiator; /* TRUE, if local device initiates the START */
|
||||
BOOLEAN suspending;
|
||||
} tBTA_AV_START;
|
||||
|
||||
/* data associated with BTA_AV_SUSPEND_EVT */
|
||||
typedef struct {
|
||||
tBTA_AV_CHNL chnl;
|
||||
tBTA_AV_HNDL hndl;
|
||||
BOOLEAN initiator; /* TRUE, if local device initiates the SUSPEND */
|
||||
tBTA_AV_STATUS status;
|
||||
} tBTA_AV_SUSPEND;
|
||||
|
||||
/* data associated with BTA_AV_RECONFIG_EVT */
|
||||
typedef struct {
|
||||
tBTA_AV_CHNL chnl;
|
||||
tBTA_AV_HNDL hndl;
|
||||
tBTA_AV_STATUS status;
|
||||
} tBTA_AV_RECONFIG;
|
||||
|
||||
/* data associated with BTA_AV_PROTECT_REQ_EVT */
|
||||
typedef struct {
|
||||
tBTA_AV_CHNL chnl;
|
||||
tBTA_AV_HNDL hndl;
|
||||
UINT8 *p_data;
|
||||
UINT16 len;
|
||||
} tBTA_AV_PROTECT_REQ;
|
||||
|
||||
/* data associated with BTA_AV_PROTECT_RSP_EVT */
|
||||
typedef struct {
|
||||
tBTA_AV_CHNL chnl;
|
||||
tBTA_AV_HNDL hndl;
|
||||
UINT8 *p_data;
|
||||
UINT16 len;
|
||||
tBTA_AV_ERR err_code;
|
||||
} tBTA_AV_PROTECT_RSP;
|
||||
|
||||
/* data associated with BTA_AV_RC_OPEN_EVT */
|
||||
typedef struct {
|
||||
UINT8 rc_handle;
|
||||
tBTA_AV_FEAT peer_features;
|
||||
BD_ADDR peer_addr;
|
||||
tBTA_AV_STATUS status;
|
||||
} tBTA_AV_RC_OPEN;
|
||||
|
||||
/* data associated with BTA_AV_RC_CLOSE_EVT */
|
||||
typedef struct {
|
||||
UINT8 rc_handle;
|
||||
BD_ADDR peer_addr;
|
||||
} tBTA_AV_RC_CLOSE;
|
||||
|
||||
/* data associated with BTA_AV_RC_FEAT_EVT */
|
||||
typedef struct {
|
||||
UINT8 rc_handle;
|
||||
tBTA_AV_FEAT peer_features;
|
||||
} tBTA_AV_RC_FEAT;
|
||||
|
||||
/* data associated with BTA_AV_REMOTE_CMD_EVT */
|
||||
typedef struct {
|
||||
UINT8 rc_handle;
|
||||
tBTA_AV_RC rc_id;
|
||||
tBTA_AV_STATE key_state;
|
||||
UINT8 len;
|
||||
UINT8 *p_data;
|
||||
tAVRC_HDR hdr; /* Message header. */
|
||||
UINT8 label;
|
||||
} tBTA_AV_REMOTE_CMD;
|
||||
|
||||
/* data associated with BTA_AV_REMOTE_RSP_EVT */
|
||||
typedef struct {
|
||||
UINT8 rc_handle;
|
||||
tBTA_AV_RC rc_id;
|
||||
tBTA_AV_STATE key_state;
|
||||
UINT8 len;
|
||||
UINT8 *p_data;
|
||||
tBTA_AV_CODE rsp_code;
|
||||
UINT8 label;
|
||||
} tBTA_AV_REMOTE_RSP;
|
||||
|
||||
/* data associated with BTA_AV_VENDOR_CMD_EVT, BTA_AV_VENDOR_RSP_EVT */
|
||||
typedef struct {
|
||||
UINT8 rc_handle;
|
||||
UINT16 len; /* Max vendor dependent message is 512 */
|
||||
UINT8 label;
|
||||
tBTA_AV_CODE code;
|
||||
UINT32 company_id;
|
||||
UINT8 *p_data;
|
||||
} tBTA_AV_VENDOR;
|
||||
|
||||
/* data associated with BTA_AV_META_MSG_EVT */
|
||||
typedef struct {
|
||||
UINT8 rc_handle;
|
||||
UINT16 len;
|
||||
UINT8 label;
|
||||
tBTA_AV_CODE code;
|
||||
UINT32 company_id;
|
||||
UINT8 *p_data;
|
||||
tAVRC_MSG *p_msg;
|
||||
} tBTA_AV_META_MSG;
|
||||
|
||||
/* data associated with BTA_AV_PENDING_EVT */
|
||||
typedef struct {
|
||||
BD_ADDR bd_addr;
|
||||
} tBTA_AV_PEND;
|
||||
|
||||
/* data associated with BTA_AV_REJECT_EVT */
|
||||
typedef struct {
|
||||
BD_ADDR bd_addr;
|
||||
tBTA_AV_HNDL hndl; /* Handle associated with the stream that rejected the connection. */
|
||||
} tBTA_AV_REJECT;
|
||||
|
||||
|
||||
/* union of data associated with AV callback */
|
||||
typedef union {
|
||||
tBTA_AV_CHNL chnl;
|
||||
tBTA_AV_ENABLE enable;
|
||||
tBTA_AV_REGISTER registr;
|
||||
tBTA_AV_OPEN open;
|
||||
tBTA_AV_CLOSE close;
|
||||
tBTA_AV_START start;
|
||||
tBTA_AV_PROTECT_REQ protect_req;
|
||||
tBTA_AV_PROTECT_RSP protect_rsp;
|
||||
tBTA_AV_RC_OPEN rc_open;
|
||||
tBTA_AV_RC_CLOSE rc_close;
|
||||
tBTA_AV_REMOTE_CMD remote_cmd;
|
||||
tBTA_AV_REMOTE_RSP remote_rsp;
|
||||
tBTA_AV_VENDOR vendor_cmd;
|
||||
tBTA_AV_VENDOR vendor_rsp;
|
||||
tBTA_AV_RECONFIG reconfig;
|
||||
tBTA_AV_SUSPEND suspend;
|
||||
tBTA_AV_PEND pend;
|
||||
tBTA_AV_META_MSG meta_msg;
|
||||
tBTA_AV_REJECT reject;
|
||||
tBTA_AV_RC_FEAT rc_feat;
|
||||
} tBTA_AV;
|
||||
|
||||
/* union of data associated with AV Media callback */
|
||||
typedef union {
|
||||
BT_HDR *p_data;
|
||||
UINT8 *codec_info;
|
||||
} tBTA_AV_MEDIA;
|
||||
|
||||
|
||||
#define BTA_AVC_PACKET_LEN AVRC_PACKET_LEN
|
||||
#define BTA_VENDOR_DATA_OFFSET 6
|
||||
#define BTA_VENDOR_HEADER_LEN 4
|
||||
#define BTA_MAX_VENDOR_DEPENDENT_DATA_LEN (BTA_AVC_PACKET_LEN-BTA_VENDOR_DATA_OFFSET-BTA_VENDOR_HEADER_LEN)
|
||||
#define BTA_GROUP_NAVI_MSG_OP_DATA_LEN 5
|
||||
|
||||
#define BTA_ERROR_INVALID_CMD AVRC_STS_BAD_CMD
|
||||
#define BTA_ERROR_INVALID_PARAM AVRC_STS_BAD_PARAM
|
||||
#define BTA_ERROR_BAD_CONTENTS AVRC_STS_NOT_FOUND
|
||||
#define BTA_ERROR_INTERNAL AVRC_STS_INTERNAL_ERR
|
||||
|
||||
#define BTA_AV_META_SINGLE_PACKET AVRC_PKT_SINGLE
|
||||
|
||||
#define BTA_AV_CO_METADATA AVRC_CO_METADATA
|
||||
|
||||
/* AV callback */
|
||||
typedef void (tBTA_AV_CBACK)(tBTA_AV_EVT event, tBTA_AV *p_data);
|
||||
typedef void (tBTA_AV_DATA_CBACK)(tBTA_AV_EVT event, tBTA_AV_MEDIA *p_data);
|
||||
|
||||
/* type for stream state machine action functions */
|
||||
typedef void (*tBTA_AV_ACT)(void *p_cb, void *p_data);
|
||||
|
||||
/* type for registering VDP */
|
||||
typedef void (tBTA_AV_REG) (tAVDT_CS *p_cs, char *p_service_name, void *p_data);
|
||||
|
||||
/* AV configuration structure */
|
||||
typedef struct {
|
||||
UINT32 company_id; /* AVRCP Company ID */
|
||||
UINT16 avrc_mtu; /* AVRCP MTU at L2CAP for control channel */
|
||||
UINT16 avrc_br_mtu; /* AVRCP MTU at L2CAP for browsing channel */
|
||||
UINT16 avrc_ct_cat; /* AVRCP controller categories */
|
||||
UINT16 avrc_tg_cat; /* AVRCP target categories */
|
||||
UINT16 sig_mtu; /* AVDTP signaling channel MTU at L2CAP */
|
||||
UINT16 audio_mtu; /* AVDTP audio transport channel MTU at L2CAP */
|
||||
const UINT16 *p_audio_flush_to;/* AVDTP audio transport channel flush timeout */
|
||||
UINT16 audio_mqs; /* AVDTP audio channel max data queue size */
|
||||
UINT16 video_mtu; /* AVDTP video transport channel MTU at L2CAP */
|
||||
UINT16 video_flush_to; /* AVDTP video transport channel flush timeout */
|
||||
BOOLEAN avrc_group; /* TRUE, to accept AVRC 1.3 group nevigation command */
|
||||
UINT8 num_co_ids; /* company id count in p_meta_co_ids */
|
||||
UINT8 num_evt_ids; /* event id count in p_meta_evt_ids */
|
||||
tBTA_AV_CODE rc_pass_rsp; /* the default response code for pass through commands */
|
||||
const UINT32 *p_meta_co_ids;/* the metadata Get Capabilities response for company id */
|
||||
const UINT8 *p_meta_evt_ids;/* the the metadata Get Capabilities response for event id */
|
||||
const tBTA_AV_ACT *p_act_tbl;/* the action function table for VDP stream */
|
||||
tBTA_AV_REG *p_reg; /* action function to register VDP */
|
||||
char avrc_controller_name[BTA_SERVICE_NAME_LEN]; /* Default AVRCP controller name */
|
||||
char avrc_target_name[BTA_SERVICE_NAME_LEN]; /* Default AVRCP target name*/
|
||||
} tBTA_AV_CFG;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/*****************************************************************************
|
||||
** External Function Declarations
|
||||
*****************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvEnable
|
||||
**
|
||||
** Description Enable the advanced audio/video service. When the enable
|
||||
** operation is complete the callback function will be
|
||||
** called with a BTA_AV_ENABLE_EVT. This function must
|
||||
** be called before other function in the AV API are
|
||||
** called.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvEnable(tBTA_SEC sec_mask, tBTA_AV_FEAT features,
|
||||
tBTA_AV_CBACK *p_cback);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvDisable
|
||||
**
|
||||
** Description Disable the advanced audio/video service.
|
||||
**
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvDisable(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvRegister
|
||||
**
|
||||
** Description Register the audio or video service to stack. When the
|
||||
** operation is complete the callback function will be
|
||||
** called with a BTA_AV_REGISTER_EVT. This function must
|
||||
** be called before AVDT stream is open.
|
||||
**
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvRegister(tBTA_AV_CHNL chnl, const char *p_service_name,
|
||||
UINT8 app_id, tBTA_AV_DATA_CBACK *p_data_cback, tBTA_AV_CO_FUNCTS *bta_av_cos);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvDeregister
|
||||
**
|
||||
** Description Deregister the audio or video service
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvDeregister(tBTA_AV_HNDL hndl);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvOpen
|
||||
**
|
||||
** Description Opens an advanced audio/video connection to a peer device.
|
||||
** When connection is open callback function is called
|
||||
** with a BTA_AV_OPEN_EVT.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvOpen(BD_ADDR bd_addr, tBTA_AV_HNDL handle,
|
||||
BOOLEAN use_rc, tBTA_SEC sec_mask, UINT16 uuid);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvClose
|
||||
**
|
||||
** Description Close the current streams.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvClose(tBTA_AV_HNDL handle);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvDisconnect
|
||||
**
|
||||
** Description Close the connection to the address.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvDisconnect(BD_ADDR bd_addr);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvEnable_Sink
|
||||
**
|
||||
** Description Enable/Disable A2DP Sink.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvEnable_Sink(int enable);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvStart
|
||||
**
|
||||
** Description Start audio/video stream data transfer.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvStart(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvStop
|
||||
**
|
||||
** Description Stop audio/video stream data transfer.
|
||||
** If suspend is TRUE, this function sends AVDT suspend signal
|
||||
** to the connected peer(s).
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvStop(BOOLEAN suspend);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvReconfig
|
||||
**
|
||||
** Description Reconfigure the audio/video stream.
|
||||
** If suspend is TRUE, this function tries the suspend/reconfigure
|
||||
** procedure first.
|
||||
** If suspend is FALSE or when suspend/reconfigure fails,
|
||||
** this function closes and re-opens the AVDT connection.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvReconfig(tBTA_AV_HNDL hndl, BOOLEAN suspend, UINT8 sep_info_idx,
|
||||
UINT8 *p_codec_info, UINT8 num_protect, UINT8 *p_protect_info);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvProtectReq
|
||||
**
|
||||
** Description Send a content protection request. This function can only
|
||||
** be used if AV is enabled with feature BTA_AV_FEAT_PROTECT.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvProtectReq(tBTA_AV_HNDL hndl, UINT8 *p_data, UINT16 len);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvProtectRsp
|
||||
**
|
||||
** Description Send a content protection response. This function must
|
||||
** be called if a BTA_AV_PROTECT_REQ_EVT is received.
|
||||
** This function can only be used if AV is enabled with
|
||||
** feature BTA_AV_FEAT_PROTECT.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvProtectRsp(tBTA_AV_HNDL hndl, UINT8 error_code, UINT8 *p_data,
|
||||
UINT16 len);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvRemoteCmd
|
||||
**
|
||||
** Description Send a remote control command. This function can only
|
||||
** be used if AV is enabled with feature BTA_AV_FEAT_RCCT.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvRemoteCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_RC rc_id,
|
||||
tBTA_AV_STATE key_state);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvVendorCmd
|
||||
**
|
||||
** Description Send a vendor dependent remote control command. This
|
||||
** function can only be used if AV is enabled with feature
|
||||
** BTA_AV_FEAT_VENDOR.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvVendorCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE cmd_code,
|
||||
UINT8 *p_data, UINT16 len);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvVendorRsp
|
||||
**
|
||||
** Description Send a vendor dependent remote control response.
|
||||
** This function must be called if a BTA_AV_VENDOR_CMD_EVT
|
||||
** is received. This function can only be used if AV is
|
||||
** enabled with feature BTA_AV_FEAT_VENDOR.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvVendorRsp(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE rsp_code,
|
||||
UINT8 *p_data, UINT16 len, UINT32 company_id);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvOpenRc
|
||||
**
|
||||
** Description Open an AVRCP connection toward the device with the
|
||||
** specified handle
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvOpenRc(tBTA_AV_HNDL handle);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvCloseRc
|
||||
**
|
||||
** Description Close an AVRCP connection
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvCloseRc(UINT8 rc_handle);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvMetaRsp
|
||||
**
|
||||
** Description Send a Metadata command/response. The message contained
|
||||
** in p_pkt can be composed with AVRC utility functions.
|
||||
** This function can only be used if AV is enabled with feature
|
||||
** BTA_AV_FEAT_METADATA.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvMetaRsp(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE rsp_code,
|
||||
BT_HDR *p_pkt);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_AvMetaCmd
|
||||
**
|
||||
** Description Send a Metadata/Advanced Control command. The message contained
|
||||
** in p_pkt can be composed with AVRC utility functions.
|
||||
** This function can only be used if AV is enabled with feature
|
||||
** BTA_AV_FEAT_METADATA.
|
||||
** This message is sent only when the peer supports the TG role.
|
||||
*8 The only command makes sense right now is the absolute volume command.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void BTA_AvMetaCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_CMD cmd_code, BT_HDR *p_pkt);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif ///BTA_AV_INCLUDED == TRUE
|
||||
|
||||
#endif /* BTA_AV_API_H */
|
77
tools/sdk/include/bluedroid/bta_av_ci.h
Normal file
77
tools/sdk/include/bluedroid/bta_av_ci.h
Normal file
@ -0,0 +1,77 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2005-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* This is the interface file for advanced audio/video call-in functions.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef BTA_AV_CI_H
|
||||
#define BTA_AV_CI_H
|
||||
|
||||
#include "bta_av_api.h"
|
||||
|
||||
#if (BTA_AV_INCLUDED == TRUE)
|
||||
|
||||
/*****************************************************************************
|
||||
** Function Declarations
|
||||
*****************************************************************************/
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_ci_src_data_ready
|
||||
**
|
||||
** Description This function sends an event to the AV indicating that
|
||||
** the phone has audio stream data ready to send and AV
|
||||
** should call bta_av_co_audio_src_data_path() or
|
||||
** bta_av_co_video_src_data_path().
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_ci_src_data_ready(tBTA_AV_CHNL chnl);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_ci_setconfig
|
||||
**
|
||||
** Description This function must be called in response to function
|
||||
** bta_av_co_audio_setconfig() or bta_av_co_video_setconfig.
|
||||
** Parameter err_code is set to an AVDTP status value;
|
||||
** AVDT_SUCCESS if the codec configuration is ok,
|
||||
** otherwise error.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_ci_setconfig(tBTA_AV_HNDL hndl, UINT8 err_code,
|
||||
UINT8 category, UINT8 num_seid, UINT8 *p_seid,
|
||||
BOOLEAN recfg_needed, UINT8 avdt_handle);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif ///BTA_AV_INCLUDED == TRUE
|
||||
|
||||
#endif /* BTA_AV_CI_H */
|
393
tools/sdk/include/bluedroid/bta_av_co.h
Normal file
393
tools/sdk/include/bluedroid/bta_av_co.h
Normal file
@ -0,0 +1,393 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2003-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* This is the interface file for advanced audio/video call-out functions.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef BTA_AV_CO_H
|
||||
#define BTA_AV_CO_H
|
||||
|
||||
#include "l2c_api.h"
|
||||
#include "bta_av_api.h"
|
||||
|
||||
#if (BTA_AV_INCLUDED == TRUE)
|
||||
|
||||
/*****************************************************************************
|
||||
** Constants and data types
|
||||
*****************************************************************************/
|
||||
|
||||
/* TRUE to use SCMS-T content protection */
|
||||
#ifndef BTA_AV_CO_CP_SCMS_T
|
||||
#define BTA_AV_CO_CP_SCMS_T FALSE
|
||||
#endif
|
||||
|
||||
/* the content protection IDs assigned by BT SIG */
|
||||
#define BTA_AV_CP_SCMS_T_ID 0x0002
|
||||
#define BTA_AV_CP_DTCP_ID 0x0001
|
||||
|
||||
#define BTA_AV_CP_LOSC 2
|
||||
#define BTA_AV_CP_INFO_LEN 3
|
||||
|
||||
#define BTA_AV_CP_SCMS_COPY_MASK 3
|
||||
#define BTA_AV_CP_SCMS_COPY_FREE 2
|
||||
#define BTA_AV_CP_SCMS_COPY_ONCE 1
|
||||
#define BTA_AV_CP_SCMS_COPY_NEVER 0
|
||||
|
||||
#define BTA_AV_CO_DEFAULT_AUDIO_OFFSET AVDT_MEDIA_OFFSET
|
||||
|
||||
enum {
|
||||
BTA_AV_CO_ST_INIT,
|
||||
BTA_AV_CO_ST_IN,
|
||||
BTA_AV_CO_ST_OUT,
|
||||
BTA_AV_CO_ST_OPEN,
|
||||
BTA_AV_CO_ST_STREAM
|
||||
};
|
||||
|
||||
|
||||
/* data type for the Audio Codec Information*/
|
||||
typedef struct {
|
||||
UINT16 bit_rate; /* SBC encoder bit rate in kbps */
|
||||
UINT16 bit_rate_busy; /* SBC encoder bit rate in kbps */
|
||||
UINT16 bit_rate_swampd;/* SBC encoder bit rate in kbps */
|
||||
UINT8 busy_level; /* Busy level indicating the bit-rate to be used */
|
||||
UINT8 codec_info[AVDT_CODEC_SIZE];
|
||||
UINT8 codec_type; /* Codec type */
|
||||
} tBTA_AV_AUDIO_CODEC_INFO;
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_init
|
||||
**
|
||||
** Description This callout function is executed by AV when it is
|
||||
** started by calling BTA_AvEnable(). This function can be
|
||||
** used by the phone to initialize audio paths or for other
|
||||
** initialization purposes.
|
||||
**
|
||||
**
|
||||
** Returns Stream codec and content protection capabilities info.
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern BOOLEAN bta_av_co_audio_init(UINT8 *p_codec_type, UINT8 *p_codec_info,
|
||||
UINT8 *p_num_protect, UINT8 *p_protect_info, UINT8 index);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_disc_res
|
||||
**
|
||||
** Description This callout function is executed by AV to report the
|
||||
** number of stream end points (SEP) were found during the
|
||||
** AVDT stream discovery process.
|
||||
**
|
||||
**
|
||||
** Returns void.
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_audio_disc_res(tBTA_AV_HNDL hndl, UINT8 num_seps,
|
||||
UINT8 num_snk, UINT8 num_src, BD_ADDR addr, UINT16 uuid_local);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_video_disc_res
|
||||
**
|
||||
** Description This callout function is executed by AV to report the
|
||||
** number of stream end points (SEP) were found during the
|
||||
** AVDT stream discovery process.
|
||||
**
|
||||
**
|
||||
** Returns void.
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_video_disc_res(tBTA_AV_HNDL hndl, UINT8 num_seps,
|
||||
UINT8 num_snk, BD_ADDR addr);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_getconfig
|
||||
**
|
||||
** Description This callout function is executed by AV to retrieve the
|
||||
** desired codec and content protection configuration for the
|
||||
** audio stream.
|
||||
**
|
||||
**
|
||||
** Returns Stream codec and content protection configuration info.
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern UINT8 bta_av_co_audio_getconfig(tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type,
|
||||
UINT8 *p_codec_info, UINT8 *p_sep_info_idx, UINT8 seid,
|
||||
UINT8 *p_num_protect, UINT8 *p_protect_info);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_video_getconfig
|
||||
**
|
||||
** Description This callout function is executed by AV to retrieve the
|
||||
** desired codec and content protection configuration for the
|
||||
** video stream.
|
||||
**
|
||||
**
|
||||
** Returns Stream codec and content protection configuration info.
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern UINT8 bta_av_co_video_getconfig(tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type,
|
||||
UINT8 *p_codec_info, UINT8 *p_sep_info_idx, UINT8 seid,
|
||||
UINT8 *p_num_protect, UINT8 *p_protect_info);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_setconfig
|
||||
**
|
||||
** Description This callout function is executed by AV to set the
|
||||
** codec and content protection configuration of the audio stream.
|
||||
**
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_audio_setconfig(tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type,
|
||||
UINT8 *p_codec_info, UINT8 seid, BD_ADDR addr,
|
||||
UINT8 num_protect, UINT8 *p_protect_info, UINT8 t_local_sep, UINT8 avdt_handle);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_video_setconfig
|
||||
**
|
||||
** Description This callout function is executed by AV to set the
|
||||
** codec and content protection configuration of the video stream.
|
||||
**
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_video_setconfig(tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type,
|
||||
UINT8 *p_codec_info, UINT8 seid, BD_ADDR addr,
|
||||
UINT8 num_protect, UINT8 *p_protect_info);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_open
|
||||
**
|
||||
** Description This function is called by AV when the audio stream connection
|
||||
** is opened.
|
||||
** BTA-AV maintains the MTU of A2DP streams.
|
||||
** If this is the 2nd audio stream, mtu is the smaller of the 2
|
||||
** streams.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_audio_open(tBTA_AV_HNDL hndl,
|
||||
tBTA_AV_CODEC codec_type, UINT8 *p_codec_info,
|
||||
UINT16 mtu);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_video_open
|
||||
**
|
||||
** Description This function is called by AV when the video stream connection
|
||||
** is opened.
|
||||
**
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_video_open(tBTA_AV_HNDL hndl,
|
||||
tBTA_AV_CODEC codec_type, UINT8 *p_codec_info,
|
||||
UINT16 mtu);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_close
|
||||
**
|
||||
** Description This function is called by AV when the audio stream connection
|
||||
** is closed.
|
||||
** BTA-AV maintains the MTU of A2DP streams.
|
||||
** When one stream is closed and no other audio stream is open,
|
||||
** mtu is reported as 0.
|
||||
** Otherwise, the MTU remains open is reported.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_audio_close(tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type,
|
||||
UINT16 mtu);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_video_close
|
||||
**
|
||||
** Description This function is called by AV when the video stream connection
|
||||
** is closed.
|
||||
**
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_video_close(tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type,
|
||||
UINT16 mtu);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_start
|
||||
**
|
||||
** Description This function is called by AV when the audio streaming data
|
||||
** transfer is started.
|
||||
**
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_audio_start(tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type,
|
||||
UINT8 *p_codec_info, BOOLEAN *p_no_rtp_hdr);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_video_start
|
||||
**
|
||||
** Description This function is called by AV when the video streaming data
|
||||
** transfer is started.
|
||||
**
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_video_start(tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type,
|
||||
UINT8 *p_codec_info, BOOLEAN *p_no_rtp_hdr);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_stop
|
||||
**
|
||||
** Description This function is called by AV when the audio streaming data
|
||||
** transfer is stopped.
|
||||
**
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_audio_stop(tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_video_stop
|
||||
**
|
||||
** Description This function is called by AV when the video streaming data
|
||||
** transfer is stopped.
|
||||
**
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_video_stop(tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_src_data_path
|
||||
**
|
||||
** Description This function is called to get the next data buffer from
|
||||
** the audio codec
|
||||
**
|
||||
** Returns NULL if data is not ready.
|
||||
** Otherwise, a GKI buffer (BT_HDR*) containing the audio data.
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void *bta_av_co_audio_src_data_path(tBTA_AV_CODEC codec_type,
|
||||
UINT32 *p_len, UINT32 *p_timestamp);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_video_src_data_path
|
||||
**
|
||||
** Description This function is called to get the next data buffer from
|
||||
** the video codec.
|
||||
**
|
||||
** Returns NULL if data is not ready.
|
||||
** Otherwise, a video data buffer (UINT8*).
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void *bta_av_co_video_src_data_path(tBTA_AV_CODEC codec_type,
|
||||
UINT32 *p_len, UINT32 *p_timestamp);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_drop
|
||||
**
|
||||
** Description An Audio packet is dropped. .
|
||||
** It's very likely that the connected headset with this handle
|
||||
** is moved far away. The implementation may want to reduce
|
||||
** the encoder bit rate setting to reduce the packet size.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_audio_drop(tBTA_AV_HNDL hndl);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_video_report_conn
|
||||
**
|
||||
** Description This function is called by AV when the reporting channel is
|
||||
** opened (open=TRUE) or closed (open=FALSE).
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_video_report_conn (BOOLEAN open, UINT8 avdt_handle);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_video_report_rr
|
||||
**
|
||||
** Description This function is called by AV when a Receiver Report is
|
||||
** received
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_video_report_rr (UINT32 packet_lost);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_delay
|
||||
**
|
||||
** Description This function is called by AV when the audio stream connection
|
||||
** needs to send the initial delay report to the connected SRC.
|
||||
**
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_audio_delay(tBTA_AV_HNDL hndl, UINT16 delay);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_video_delay
|
||||
**
|
||||
** Description This function is called by AV when the video stream connection
|
||||
** needs to send the initial delay report to the connected SRC.
|
||||
**
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_co_video_delay(tBTA_AV_HNDL hndl, UINT16 delay);
|
||||
|
||||
#endif ///BTA_AV_INCLUDED == TRUE
|
||||
|
||||
#endif /* BTA_AV_CO_H */
|
223
tools/sdk/include/bluedroid/bta_av_sbc.h
Normal file
223
tools/sdk/include/bluedroid/bta_av_sbc.h
Normal file
@ -0,0 +1,223 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2004-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* This is the interface to utility functions for dealing with SBC data
|
||||
* frames and codec capabilities.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef BTA_AV_SBC_H
|
||||
#define BTA_AV_SBC_H
|
||||
|
||||
#if (BTA_AV_INCLUDED == TRUE)
|
||||
|
||||
/*****************************************************************************
|
||||
** constants
|
||||
*****************************************************************************/
|
||||
|
||||
/* SBC packet header size */
|
||||
#define BTA_AV_SBC_HDR_SIZE A2D_SBC_MPL_HDR_LEN
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_sbc_init_up_sample
|
||||
**
|
||||
** Description initialize the up sample
|
||||
**
|
||||
** src_sps: samples per second (source audio data)
|
||||
** dst_sps: samples per second (converted audio data)
|
||||
** bits: number of bits per pcm sample
|
||||
** n_channels: number of channels (i.e. mono(1), stereo(2)...)
|
||||
**
|
||||
** Returns none
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_sbc_init_up_sample (UINT32 src_sps, UINT32 dst_sps,
|
||||
UINT16 bits, UINT16 n_channels);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_sbc_up_sample
|
||||
**
|
||||
** Description Given the source (p_src) audio data and
|
||||
** source speed (src_sps, samples per second),
|
||||
** This function converts it to audio data in the desired format
|
||||
**
|
||||
** p_src: the data buffer that holds the source audio data
|
||||
** p_dst: the data buffer to hold the converted audio data
|
||||
** src_samples: The number of source samples (number of bytes)
|
||||
** dst_samples: The size of p_dst (number of bytes)
|
||||
**
|
||||
** Note: An AE reported an issue with this function.
|
||||
** When called with bta_av_sbc_up_sample(src, uint8_array_dst..)
|
||||
** the byte before uint8_array_dst may get overwritten.
|
||||
** Using uint16_array_dst avoids the problem.
|
||||
** This issue is related to endian-ness and is hard to resolve
|
||||
** in a generic manner.
|
||||
** **************** Please use uint16 array as dst.
|
||||
**
|
||||
** Returns The number of bytes used in p_dst
|
||||
** The number of bytes used in p_src (in *p_ret)
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern int bta_av_sbc_up_sample (void *p_src, void *p_dst,
|
||||
UINT32 src_samples, UINT32 dst_samples,
|
||||
UINT32 *p_ret);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_sbc_up_sample_16s (16bits-stereo)
|
||||
**
|
||||
** Description Given the source (p_src) audio data and
|
||||
** source speed (src_sps, samples per second),
|
||||
** This function converts it to audio data in the desired format
|
||||
**
|
||||
** p_src: the data buffer that holds the source audio data
|
||||
** p_dst: the data buffer to hold the converted audio data
|
||||
** src_samples: The number of source samples (in uint of 4 bytes)
|
||||
** dst_samples: The size of p_dst (in uint of 4 bytes)
|
||||
**
|
||||
** Returns The number of bytes used in p_dst
|
||||
** The number of bytes used in p_src (in *p_ret)
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern int bta_av_sbc_up_sample_16s (void *p_src, void *p_dst,
|
||||
UINT32 src_samples, UINT32 dst_samples,
|
||||
UINT32 *p_ret);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_sbc_up_sample_16m (16bits-mono)
|
||||
**
|
||||
** Description Given the source (p_src) audio data and
|
||||
** source speed (src_sps, samples per second),
|
||||
** This function converts it to audio data in the desired format
|
||||
**
|
||||
** p_src: the data buffer that holds the source audio data
|
||||
** p_dst: the data buffer to hold the converted audio data
|
||||
** src_samples: The number of source samples (in uint of 2 bytes)
|
||||
** dst_samples: The size of p_dst (in uint of 2 bytes)
|
||||
**
|
||||
** Returns The number of bytes used in p_dst
|
||||
** The number of bytes used in p_src (in *p_ret)
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern int bta_av_sbc_up_sample_16m (void *p_src, void *p_dst,
|
||||
UINT32 src_samples, UINT32 dst_samples,
|
||||
UINT32 *p_ret);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_sbc_up_sample_8s (8bits-stereo)
|
||||
**
|
||||
** Description Given the source (p_src) audio data and
|
||||
** source speed (src_sps, samples per second),
|
||||
** This function converts it to audio data in the desired format
|
||||
**
|
||||
** p_src: the data buffer that holds the source audio data
|
||||
** p_dst: the data buffer to hold the converted audio data
|
||||
** src_samples: The number of source samples (in uint of 2 bytes)
|
||||
** dst_samples: The size of p_dst (in uint of 2 bytes)
|
||||
**
|
||||
** Returns The number of bytes used in p_dst
|
||||
** The number of bytes used in p_src (in *p_ret)
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern int bta_av_sbc_up_sample_8s (void *p_src, void *p_dst,
|
||||
UINT32 src_samples, UINT32 dst_samples,
|
||||
UINT32 *p_ret);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_sbc_up_sample_8m (8bits-mono)
|
||||
**
|
||||
** Description Given the source (p_src) audio data and
|
||||
** source speed (src_sps, samples per second),
|
||||
** This function converts it to audio data in the desired format
|
||||
**
|
||||
** p_src: the data buffer that holds the source audio data
|
||||
** p_dst: the data buffer to hold the converted audio data
|
||||
** src_samples: The number of source samples (number of bytes)
|
||||
** dst_samples: The size of p_dst (number of bytes)
|
||||
**
|
||||
** Returns The number of bytes used in p_dst
|
||||
** The number of bytes used in p_src (in *p_ret)
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern int bta_av_sbc_up_sample_8m (void *p_src, void *p_dst,
|
||||
UINT32 src_samples, UINT32 dst_samples,
|
||||
UINT32 *p_ret);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_sbc_cfg_for_cap
|
||||
**
|
||||
** Description Determine the preferred SBC codec configuration for the
|
||||
** given codec capabilities. The function is passed the
|
||||
** preferred codec configuration and the peer codec
|
||||
** capabilities for the stream. The function attempts to
|
||||
** match the preferred capabilities with the configuration
|
||||
** as best it can. The resulting codec configuration is
|
||||
** returned in the same memory used for the capabilities.
|
||||
**
|
||||
** Returns 0 if ok, nonzero if error.
|
||||
** Codec configuration in p_cap.
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern UINT8 bta_av_sbc_cfg_for_cap(UINT8 *p_peer, tA2D_SBC_CIE *p_cap, tA2D_SBC_CIE *p_pref);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_sbc_cfg_in_cap
|
||||
**
|
||||
** Description This function checks whether an SBC codec configuration
|
||||
** is allowable for the given codec capabilities.
|
||||
**
|
||||
** Returns 0 if ok, nonzero if error.
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern UINT8 bta_av_sbc_cfg_in_cap(UINT8 *p_cfg, tA2D_SBC_CIE *p_cap);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_sbc_cfg_matches_cap
|
||||
**
|
||||
** Description This function checks whether an SBC codec configuration
|
||||
** matched with capabilities. Here we check subset.
|
||||
**
|
||||
** Returns 0 if ok, nonzero if error.
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern UINT8 bta_av_sbc_cfg_matches_cap(UINT8 *p_cfg, tA2D_SBC_CIE *p_cap);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_sbc_bld_hdr
|
||||
**
|
||||
** Description This function builds the packet header for MPF1.
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void bta_av_sbc_bld_hdr(BT_HDR *p_buf, UINT16 fr_per_pkt);
|
||||
|
||||
#endif ///BTA_AV_INCLUDED == TRUE
|
||||
|
||||
#endif /* BTA_AV_SBC_H */
|
||||
|
@ -270,4 +270,13 @@ extern void bta_dm_co_ble_io_req(BD_ADDR bd_addr, tBTA_IO_CAP *p_io_cap,
|
||||
tBTA_LE_KEY_TYPE *p_resp_key );
|
||||
// btla-specific --
|
||||
|
||||
extern void bta_dm_co_ble_set_io_cap(UINT8 ble_io_cap);
|
||||
|
||||
extern void bta_dm_co_ble_set_auth_req(UINT8 ble_auth_req);
|
||||
|
||||
extern void bta_dm_co_ble_set_init_key_req(UINT8 init_key);
|
||||
|
||||
extern void bta_dm_co_ble_set_rsp_key_req(UINT8 rsp_key);
|
||||
|
||||
extern void bta_dm_co_ble_set_max_key_size(UINT8 ble_key_size);
|
||||
#endif
|
||||
|
@ -984,7 +984,7 @@ extern tBTA_GATT_STATUS BTA_GATTC_DeregisterForNotifications (tBTA_GATTC_IF
|
||||
** Description This function is called to prepare write a characteristic value.
|
||||
**
|
||||
** Parameters conn_id - connection ID.
|
||||
** p_char_id - GATT characteritic ID of the service.
|
||||
** p_char_id - GATT characteritic ID of the service.
|
||||
** offset - offset of the write value.
|
||||
** len: length of the data to be written.
|
||||
** p_value - the value to be written.
|
||||
@ -1001,6 +1001,26 @@ extern void BTA_GATTC_PrepareWrite (UINT16 conn_id,
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_GATTC_PrepareWriteCharDescr
|
||||
**
|
||||
** Description This function is called to prepare write a characteristic descriptor value.
|
||||
**
|
||||
** Parameters conn_id - connection ID.
|
||||
** p_char_descr_id - GATT characteritic descriptor ID of the service.
|
||||
** offset - offset of the write value.
|
||||
** len: length of the data to be written.
|
||||
** p_value - the value to be written.
|
||||
**
|
||||
** Returns None
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void BTA_GATTC_PrepareWriteCharDescr (UINT16 conn_id,
|
||||
tBTA_GATTC_CHAR_DESCR_ID *p_char_descr_id,
|
||||
UINT16 offset,
|
||||
tBTA_GATT_UNFMT *p_data,
|
||||
tBTA_GATT_AUTH_REQ auth_req);
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTA_GATTC_ExecuteWrite
|
||||
**
|
||||
** Description This function is called to execute write a prepare write sequence.
|
||||
|
@ -320,7 +320,7 @@ typedef struct {
|
||||
} tBTA_GATTC_SERV;
|
||||
|
||||
#ifndef BTA_GATTC_NOTIF_REG_MAX
|
||||
#define BTA_GATTC_NOTIF_REG_MAX 15
|
||||
#define BTA_GATTC_NOTIF_REG_MAX 7//15
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
@ -398,8 +398,9 @@ typedef struct {
|
||||
|
||||
tBTA_GATTC_CLCB clcb[BTA_GATTC_CLCB_MAX];
|
||||
tBTA_GATTC_SERV known_server[BTA_GATTC_KNOWN_SR_MAX];
|
||||
|
||||
#if (SDP_INCLUDED == TRUE)
|
||||
tSDP_DISCOVERY_DB *p_sdp_db;
|
||||
#endif ///SDP_INCLUDED == TRUE
|
||||
UINT16 sdp_conn_id;
|
||||
} tBTA_GATTC_CB;
|
||||
|
||||
|
@ -20,6 +20,7 @@
|
||||
|
||||
#include "bta_api.h"
|
||||
#include "hidh_api.h"
|
||||
#if defined(BTA_HH_INCLUDED) && (BTA_HH_INCLUDED == TRUE)
|
||||
|
||||
#if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE)
|
||||
#include "gatt_api.h"
|
||||
@ -538,4 +539,7 @@ extern void bta_hh_le_hid_read_rpt_clt_cfg(BD_ADDR bd_addr, UINT8 rpt_id);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif ///defined(BTA_HH_INCLUDED) && (BTA_HH_INCLUDED == TRUE)
|
||||
|
||||
|
||||
#endif /* BTA_HH_API_H */
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "bta_api.h"
|
||||
#include "btm_api.h"
|
||||
|
||||
#if (SDP_INCLUDED == TRUE)
|
||||
/* status values */
|
||||
#define BTA_SDP_SUCCESS 0 /* Successful operation. */
|
||||
#define BTA_SDP_FAILURE 1 /* Generic failure. */
|
||||
@ -70,7 +71,9 @@ typedef void (tBTA_SDP_DM_CBACK)(tBTA_SDP_EVT event, tBTA_SDP *p_data, void *use
|
||||
/* MCE configuration structure */
|
||||
typedef struct {
|
||||
UINT16 sdp_db_size; /* The size of p_sdp_db */
|
||||
#if (SDP_INCLUDED == TRUE)
|
||||
tSDP_DISCOVERY_DB *p_sdp_db; /* The data buffer to keep SDP database */
|
||||
#endif ///SDP_INCLUDED == TRUE
|
||||
} tBTA_SDP_CFG;
|
||||
|
||||
#ifdef __cplusplus
|
||||
@ -139,4 +142,6 @@ extern tBTA_SDP_STATUS BTA_SdpRemoveRecordByUser(void *user_data);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif ///SDP_INCLUDED == TRUE
|
||||
|
||||
#endif /* BTA_SDP_API_H */
|
||||
|
30
tools/sdk/include/bluedroid/btc_alarm.h
Normal file
30
tools/sdk/include/bluedroid/btc_alarm.h
Normal file
@ -0,0 +1,30 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
#ifndef __BTC_ALARM_H__
|
||||
#define __BTC_ALARM_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include "alarm.h"
|
||||
|
||||
/* btc_alarm_args_t */
|
||||
typedef struct {
|
||||
osi_alarm_callback_t cb;
|
||||
void *cb_data;
|
||||
} btc_alarm_args_t;
|
||||
|
||||
void btc_alarm_handler(btc_msg_t *msg);
|
||||
|
||||
#endif /* __BTC_ALARM_H__ */
|
176
tools/sdk/include/bluedroid/btc_av.h
Normal file
176
tools/sdk/include/bluedroid/btc_av.h
Normal file
@ -0,0 +1,176 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Filename: btc_av.h
|
||||
*
|
||||
* Description: Main API header file for all BTC AV functions accessed
|
||||
* from internal stack.
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
#ifndef __BTC_AV_H__
|
||||
#define __BTC_AV_H__
|
||||
|
||||
#include "esp_a2dp_api.h"
|
||||
#include "btc_task.h"
|
||||
#include "btc_common.h"
|
||||
#include "btc_sm.h"
|
||||
#include "bta_av_api.h"
|
||||
|
||||
#if (BTA_AV_INCLUDED == TRUE)
|
||||
/*******************************************************************************
|
||||
** Type definitions for callback functions
|
||||
********************************************************************************/
|
||||
|
||||
typedef enum {
|
||||
BTC_AV_CONNECT_REQ_EVT = BTA_AV_MAX_EVT,
|
||||
BTC_AV_DISCONNECT_REQ_EVT,
|
||||
BTC_AV_START_STREAM_REQ_EVT,
|
||||
BTC_AV_STOP_STREAM_REQ_EVT,
|
||||
BTC_AV_SUSPEND_STREAM_REQ_EVT,
|
||||
BTC_AV_SINK_CONFIG_REQ_EVT,
|
||||
} btc_av_sm_event_t;
|
||||
|
||||
typedef enum {
|
||||
BTC_AV_SINK_API_INIT_EVT = 0,
|
||||
BTC_AV_SINK_API_DEINIT_EVT,
|
||||
BTC_AV_SINK_API_CONNECT_EVT,
|
||||
BTC_AV_SINK_API_DISCONNECT_EVT,
|
||||
BTC_AV_SINK_API_REG_DATA_CB_EVT,
|
||||
} btc_av_act_t;
|
||||
|
||||
/* btc_av_args_t */
|
||||
typedef union {
|
||||
// BTC_AV_SINK_CONFIG_REQ_EVT -- internal event
|
||||
esp_a2d_mcc_t mcc;
|
||||
// BTC_AV_SINK_API_CONNECT_EVT
|
||||
bt_bdaddr_t connect;
|
||||
// BTC_AV_SINK_API_REG_DATA_CB_EVT
|
||||
esp_a2d_data_cb_t data_cb;
|
||||
} btc_av_args_t;
|
||||
|
||||
/*******************************************************************************
|
||||
** BTC AV API
|
||||
********************************************************************************/
|
||||
|
||||
void btc_a2dp_call_handler(btc_msg_t *msg);
|
||||
|
||||
void btc_a2dp_cb_handler(btc_msg_t *msg);
|
||||
|
||||
void btc_a2dp_sink_reg_data_cb(esp_a2d_data_cb_t callback);
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_av_get_sm_handle
|
||||
**
|
||||
** Description Fetches current av SM handle
|
||||
**
|
||||
** Returns None
|
||||
**
|
||||
*******************************************************************************/
|
||||
|
||||
btc_sm_handle_t btc_av_get_sm_handle(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_av_stream_ready
|
||||
**
|
||||
** Description Checks whether AV is ready for starting a stream
|
||||
**
|
||||
** Returns None
|
||||
**
|
||||
*******************************************************************************/
|
||||
|
||||
BOOLEAN btc_av_stream_ready(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_av_stream_started_ready
|
||||
**
|
||||
** Description Checks whether AV ready for media start in streaming state
|
||||
**
|
||||
** Returns None
|
||||
**
|
||||
*******************************************************************************/
|
||||
|
||||
BOOLEAN btc_av_stream_started_ready(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_dispatch_sm_event
|
||||
**
|
||||
** Description Send event to AV statemachine
|
||||
**
|
||||
** Returns None
|
||||
**
|
||||
*******************************************************************************/
|
||||
|
||||
/* used to pass events to AV statemachine from other tasks */
|
||||
void btc_dispatch_sm_event(btc_av_sm_event_t event, void *p_data, int len);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_av_init
|
||||
**
|
||||
** Description Initializes btc AV if not already done
|
||||
**
|
||||
** Returns bt_status_t
|
||||
**
|
||||
*******************************************************************************/
|
||||
|
||||
bt_status_t btc_av_init(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_av_is_connected
|
||||
**
|
||||
** Description Checks if av has a connected sink
|
||||
**
|
||||
** Returns BOOLEAN
|
||||
**
|
||||
*******************************************************************************/
|
||||
|
||||
BOOLEAN btc_av_is_connected(void);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_av_is_peer_edr
|
||||
**
|
||||
** Description Check if the connected a2dp device supports
|
||||
** EDR or not. Only when connected this function
|
||||
** will accurately provide a true capability of
|
||||
** remote peer. If not connected it will always be false.
|
||||
**
|
||||
** Returns TRUE if remote device is capable of EDR
|
||||
**
|
||||
*******************************************************************************/
|
||||
|
||||
BOOLEAN btc_av_is_peer_edr(void);
|
||||
|
||||
/******************************************************************************
|
||||
**
|
||||
** Function btc_av_clear_remote_suspend_flag
|
||||
**
|
||||
** Description Clears remote suspended flag
|
||||
**
|
||||
** Returns Void
|
||||
********************************************************************************/
|
||||
void btc_av_clear_remote_suspend_flag(void);
|
||||
|
||||
#endif ///BTA_AV_INCLUDED == TRUE
|
||||
|
||||
#endif /* __BTC_AV_H__ */
|
203
tools/sdk/include/bluedroid/btc_av_api.h
Normal file
203
tools/sdk/include/bluedroid/btc_av_api.h
Normal file
@ -0,0 +1,203 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
**
|
||||
** Name: btc_av_api.h
|
||||
**
|
||||
** Description: This is the public interface file for the advanced
|
||||
** audio/video streaming (AV) subsystem of BTC.
|
||||
**
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __BTC_AV_API_H__
|
||||
#define __BTC_AV_API_H__
|
||||
|
||||
#include "bt_target.h"
|
||||
#include "bta_av_api.h"
|
||||
|
||||
#include "btc_media.h"
|
||||
#include "a2d_api.h"
|
||||
#include "a2d_sbc.h"
|
||||
|
||||
#if (BTC_AV_INCLUDED == TRUE)
|
||||
/*****************************************************************************
|
||||
** Constants and data types
|
||||
*****************************************************************************/
|
||||
|
||||
/* Codec type */
|
||||
#define BTC_AV_CODEC_NONE 0xFF
|
||||
#define BTC_AV_CODEC_SBC A2D_MEDIA_CT_SBC /* SBC media codec type */
|
||||
|
||||
#define BTC_AV_CODEC_PCM 0x5 /* Raw PCM */
|
||||
|
||||
typedef UINT8 tBTC_AV_CODEC_ID;
|
||||
|
||||
/* AV features masks */
|
||||
#define BTC_AV_FEAT_RCTG BTA_AV_FEAT_RCTG /* remote control target */
|
||||
#define BTC_AV_FEAT_RCCT BTA_AV_FEAT_RCCT /* remote control controller */
|
||||
#define BTC_AV_FEAT_METADATA BTA_AV_FEAT_METADATA /* remote control Metadata Transfer command/response */
|
||||
|
||||
typedef UINT16 tBTC_AV_FEAT;
|
||||
|
||||
/* AV channel values */
|
||||
#define BTC_AV_CHNL_MSK BTA_AV_CHNL_MSK
|
||||
#define BTC_AV_CHNL_AUDIO BTA_AV_CHNL_AUDIO /* audio channel */
|
||||
#define BTC_AV_CHNL_VIDEO BTA_AV_CHNL_VIDEO /* video channel */
|
||||
typedef UINT8 tBTC_AV_CHNL;
|
||||
|
||||
typedef UINT8 tBTC_AV_HNDL;
|
||||
|
||||
/* Operation id list for BTC_AvRemoteCmd */
|
||||
#define BTC_AV_ID_SELECT 0x00 /* select */
|
||||
#define BTC_AV_ID_UP 0x01 /* up */
|
||||
#define BTC_AV_ID_DOWN 0x02 /* down */
|
||||
#define BTC_AV_ID_LEFT 0x03 /* left */
|
||||
#define BTC_AV_ID_RIGHT 0x04 /* right */
|
||||
#define BTC_AV_ID_RIGHT_UP 0x05 /* right-up */
|
||||
#define BTC_AV_ID_RIGHT_DOWN 0x06 /* right-down */
|
||||
#define BTC_AV_ID_LEFT_UP 0x07 /* left-up */
|
||||
#define BTC_AV_ID_LEFT_DOWN 0x08 /* left-down */
|
||||
#define BTC_AV_ID_ROOT_MENU 0x09 /* root menu */
|
||||
#define BTC_AV_ID_SETUP_MENU 0x0A /* setup menu */
|
||||
#define BTC_AV_ID_CONT_MENU 0x0B /* contents menu */
|
||||
#define BTC_AV_ID_FAV_MENU 0x0C /* favorite menu */
|
||||
#define BTC_AV_ID_EXIT 0x0D /* exit */
|
||||
#define BTC_AV_ID_0 0x20 /* 0 */
|
||||
#define BTC_AV_ID_1 0x21 /* 1 */
|
||||
#define BTC_AV_ID_2 0x22 /* 2 */
|
||||
#define BTC_AV_ID_3 0x23 /* 3 */
|
||||
#define BTC_AV_ID_4 0x24 /* 4 */
|
||||
#define BTC_AV_ID_5 0x25 /* 5 */
|
||||
#define BTC_AV_ID_6 0x26 /* 6 */
|
||||
#define BTC_AV_ID_7 0x27 /* 7 */
|
||||
#define BTC_AV_ID_8 0x28 /* 8 */
|
||||
#define BTC_AV_ID_9 0x29 /* 9 */
|
||||
#define BTC_AV_ID_DOT 0x2A /* dot */
|
||||
#define BTC_AV_ID_ENTER 0x2B /* enter */
|
||||
#define BTC_AV_ID_CLEAR 0x2C /* clear */
|
||||
#define BTC_AV_ID_CHAN_UP 0x30 /* channel up */
|
||||
#define BTC_AV_ID_CHAN_DOWN 0x31 /* channel down */
|
||||
#define BTC_AV_ID_PREV_CHAN 0x32 /* previous channel */
|
||||
#define BTC_AV_ID_SOUND_SEL 0x33 /* sound select */
|
||||
#define BTC_AV_ID_INPUT_SEL 0x34 /* input select */
|
||||
#define BTC_AV_ID_DISP_INFO 0x35 /* display information */
|
||||
#define BTC_AV_ID_HELP 0x36 /* help */
|
||||
#define BTC_AV_ID_PAGE_UP 0x37 /* page up */
|
||||
#define BTC_AV_ID_PAGE_DOWN 0x38 /* page down */
|
||||
#define BTC_AV_ID_POWER 0x40 /* power */
|
||||
#define BTC_AV_ID_VOL_UP 0x41 /* volume up */
|
||||
#define BTC_AV_ID_VOL_DOWN 0x42 /* volume down */
|
||||
#define BTC_AV_ID_MUTE 0x43 /* mute */
|
||||
#define BTC_AV_ID_PLAY 0x44 /* play */
|
||||
#define BTC_AV_ID_STOP 0x45 /* stop */
|
||||
#define BTC_AV_ID_PAUSE 0x46 /* pause */
|
||||
#define BTC_AV_ID_RECORD 0x47 /* record */
|
||||
#define BTC_AV_ID_REWIND 0x48 /* rewind */
|
||||
#define BTC_AV_ID_FAST_FOR 0x49 /* fast forward */
|
||||
#define BTC_AV_ID_EJECT 0x4A /* eject */
|
||||
#define BTC_AV_ID_FORWARD 0x4B /* forward */
|
||||
#define BTC_AV_ID_BACKWARD 0x4C /* backward */
|
||||
#define BTC_AV_ID_ANGLE 0x50 /* angle */
|
||||
#define BTC_AV_ID_SUBPICT 0x51 /* subpicture */
|
||||
#define BTC_AV_ID_F1 0x71 /* F1 */
|
||||
#define BTC_AV_ID_F2 0x72 /* F2 */
|
||||
#define BTC_AV_ID_F3 0x73 /* F3 */
|
||||
#define BTC_AV_ID_F4 0x74 /* F4 */
|
||||
#define BTC_AV_ID_F5 0x75 /* F5 */
|
||||
#define BTC_AV_ID_VENDOR 0x7E /* vendor unique */
|
||||
#define BTC_AV_KEYPRESSED_RELEASE 0x80
|
||||
|
||||
typedef UINT8 tBTC_AV_RC;
|
||||
|
||||
/* State flag for pass through command */
|
||||
#define BTC_AV_STATE_PRESS 0 /* key pressed */
|
||||
#define BTC_AV_STATE_RELEASE 1 /* key released */
|
||||
|
||||
typedef UINT8 tBTC_AV_STATE;
|
||||
|
||||
typedef UINT8 tBTC_AV_RC_HNDL;
|
||||
|
||||
/* Command codes for BTC_AvVendorCmd */
|
||||
#define BTC_AV_CMD_CTRL 0
|
||||
#define BTC_AV_CMD_STATUS 1
|
||||
#define BTC_AV_CMD_SPEC_INQ 2
|
||||
#define BTC_AV_CMD_NOTIF 3
|
||||
#define BTC_AV_CMD_GEN_INQ 4
|
||||
|
||||
typedef UINT8 tBTC_AV_CMD;
|
||||
|
||||
/* AV callback events */
|
||||
#define BTC_AV_OPEN_EVT 0 /* connection opened */
|
||||
#define BTC_AV_CLOSE_EVT 1 /* connection closed */
|
||||
#define BTC_AV_START_EVT 2 /* stream data transfer started */
|
||||
#define BTC_AV_STOP_EVT 3 /* stream data transfer stopped */
|
||||
#define BTC_AV_RC_OPEN_EVT 4 /* remote control channel open */
|
||||
#define BTC_AV_RC_CLOSE_EVT 5 /* remote control channel closed */
|
||||
#define BTC_AV_REMOTE_CMD_EVT 6 /* remote control command */
|
||||
#define BTC_AV_REMOTE_RSP_EVT 7 /* remote control response */
|
||||
#define BTC_AV_META_MSG_EVT 8 /* metadata messages */
|
||||
|
||||
typedef UINT8 tBTC_AV_EVT;
|
||||
|
||||
#define BTC_AV_FEEDING_ASYNCHRONOUS 0 /* asynchronous feeding, use tx av timer */
|
||||
#define BTC_AV_FEEDING_SYNCHRONOUS 1 /* synchronous feeding, no av tx timer */
|
||||
|
||||
#define BTC_AV_MAX_SYNCHRONOUS_LATENCY 80 /* max latency in ms for BTC_AV_FEEDING_SYNCHRONOUS */
|
||||
#define BTC_AV_MIN_SYNCHRONOUS_LATENCY 4 /* min latency in ms for BTC_AV_FEEDING_SYNCHRONOUS */
|
||||
|
||||
typedef UINT8 tBTC_AV_FEEDING_MODE;
|
||||
|
||||
#define BTC_AV_CHANNEL_MODE_MONO A2D_SBC_IE_CH_MD_MONO
|
||||
#define BTC_AV_CHANNEL_MODE_STEREO A2D_SBC_IE_CH_MD_STEREO
|
||||
#define BTC_AV_CHANNEL_MODE_JOINT A2D_SBC_IE_CH_MD_JOINT
|
||||
#define BTC_AV_CHANNEL_MODE_DUAL A2D_SBC_IE_CH_MD_DUAL
|
||||
|
||||
typedef UINT8 tBTC_AV_CHANNEL_MODE;
|
||||
|
||||
/**
|
||||
* Structure used to configure the AV codec capabilities/config
|
||||
*/
|
||||
typedef struct {
|
||||
tBTC_AV_CODEC_ID id; /* Codec ID (in terms of BTC) */
|
||||
UINT8 info[AVDT_CODEC_SIZE]; /* Codec info (can be config or capabilities) */
|
||||
} tBTC_AV_CODEC_INFO;
|
||||
|
||||
/**
|
||||
* Structure used to configure the AV media feeding
|
||||
*/
|
||||
typedef struct {
|
||||
UINT16 sampling_freq; /* 44100, 48000 etc */
|
||||
UINT16 num_channel; /* 1 for mono or 2 stereo */
|
||||
UINT8 bit_per_sample; /* Number of bits per sample (8, 16) */
|
||||
} tBTC_AV_MEDIA_FEED_CFG_PCM;
|
||||
|
||||
typedef union {
|
||||
tBTC_AV_MEDIA_FEED_CFG_PCM pcm; /* Raw PCM feeding format */
|
||||
} tBTC_AV_MEDIA_FEED_CFG;
|
||||
|
||||
typedef struct {
|
||||
tBTC_AV_CODEC_ID format; /* Media codec identifier */
|
||||
tBTC_AV_MEDIA_FEED_CFG cfg; /* Media codec configuration */
|
||||
} tBTC_AV_MEDIA_FEEDINGS;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif ///BTC_AV_INCLUDED == TRUE
|
||||
|
||||
#endif /* __BTC_AV_API_H__ */
|
172
tools/sdk/include/bluedroid/btc_av_co.h
Normal file
172
tools/sdk/include/bluedroid/btc_av_co.h
Normal file
@ -0,0 +1,172 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef __BTC_AV_CO_H__
|
||||
#define __BTC_AV_CO_H__
|
||||
|
||||
#include "btc_media.h"
|
||||
|
||||
#if (BTA_AV_INCLUDED == TRUE)
|
||||
/*******************************************************************************
|
||||
** Constants & Macros
|
||||
********************************************************************************/
|
||||
|
||||
enum {
|
||||
BTC_SV_AV_AA_SBC_INDEX = 0,
|
||||
BTC_SV_AV_AA_SBC_SINK_INDEX,
|
||||
BTC_SV_AV_AA_SEP_INDEX /* Last index */
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Functions
|
||||
********************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_cp_is_active
|
||||
**
|
||||
** Description Get the current configuration of content protection
|
||||
**
|
||||
** Returns TRUE if the current streaming has CP, FALSE otherwise
|
||||
**
|
||||
*******************************************************************************/
|
||||
BOOLEAN bta_av_co_cp_is_active(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_cp_get_flag
|
||||
**
|
||||
** Description Get content protection flag
|
||||
** BTA_AV_CP_SCMS_COPY_NEVER
|
||||
** BTA_AV_CP_SCMS_COPY_ONCE
|
||||
** BTA_AV_CP_SCMS_COPY_FREE
|
||||
**
|
||||
** Returns The current flag value
|
||||
**
|
||||
*******************************************************************************/
|
||||
UINT8 bta_av_co_cp_get_flag(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_cp_set_flag
|
||||
**
|
||||
** Description Set content protection flag
|
||||
** BTA_AV_CP_SCMS_COPY_NEVER
|
||||
** BTA_AV_CP_SCMS_COPY_ONCE
|
||||
** BTA_AV_CP_SCMS_COPY_FREE
|
||||
**
|
||||
** Returns TRUE if setting the SCMS flag is supported else FALSE
|
||||
**
|
||||
*******************************************************************************/
|
||||
BOOLEAN bta_av_co_cp_set_flag(UINT8 cp_flag);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_codec_reset
|
||||
**
|
||||
** Description Reset the current codec configuration
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
void bta_av_co_audio_codec_reset(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_codec_supported
|
||||
**
|
||||
** Description Check if all opened connections are compatible with a codec
|
||||
** configuration
|
||||
**
|
||||
** Returns TRUE if all opened devices support this codec, FALSE otherwise
|
||||
**
|
||||
*******************************************************************************/
|
||||
BOOLEAN bta_av_co_audio_codec_supported(tBTC_STATUS *p_status);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_set_codec
|
||||
**
|
||||
** Description Set the current codec configuration from the feeding type.
|
||||
** This function is starting to modify the configuration, it
|
||||
** should be protected.
|
||||
**
|
||||
** Returns TRUE if successful, FALSE otherwise
|
||||
**
|
||||
*******************************************************************************/
|
||||
BOOLEAN bta_av_co_audio_set_codec(const tBTC_AV_MEDIA_FEEDINGS *p_feeding, tBTC_STATUS *p_status);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_get_sbc_config
|
||||
**
|
||||
** Description Retrieves the SBC codec configuration. If the codec in use
|
||||
** is not SBC, return the default SBC codec configuration.
|
||||
**
|
||||
** Returns TRUE if codec is SBC, FALSE otherwise
|
||||
**
|
||||
*******************************************************************************/
|
||||
BOOLEAN bta_av_co_audio_get_sbc_config(tA2D_SBC_CIE *p_sbc_config, UINT16 *p_minmtu);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_audio_discard_config
|
||||
**
|
||||
** Description Discard the codec configuration of a connection
|
||||
**
|
||||
** Returns Nothing
|
||||
**
|
||||
*******************************************************************************/
|
||||
void bta_av_co_audio_discard_config(tBTA_AV_HNDL hndl);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_init
|
||||
**
|
||||
** Description Initialization
|
||||
**
|
||||
** Returns Nothing
|
||||
**
|
||||
*******************************************************************************/
|
||||
void bta_av_co_init(void);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_peer_cp_supported
|
||||
**
|
||||
** Description Checks if the peer supports CP
|
||||
**
|
||||
** Returns TRUE if the peer supports CP
|
||||
**
|
||||
*******************************************************************************/
|
||||
BOOLEAN bta_av_co_peer_cp_supported(tBTA_AV_HNDL hndl);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_av_co_get_remote_bitpool_pref
|
||||
**
|
||||
** Description Check if remote side did a setconfig within the limits
|
||||
** of our exported bitpool range. If set we will set the
|
||||
** remote preference.
|
||||
**
|
||||
** Returns TRUE if config set, FALSE otherwize
|
||||
**
|
||||
*******************************************************************************/
|
||||
BOOLEAN bta_av_co_get_remote_bitpool_pref(UINT8 *min, UINT8 *max);
|
||||
|
||||
#endif ///BTA_AV_INCLUDED == TRUE
|
||||
|
||||
#endif
|
77
tools/sdk/include/bluedroid/btc_avrc.h
Normal file
77
tools/sdk/include/bluedroid/btc_avrc.h
Normal file
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* Copyright (C) 2012 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef __BTC_AVRC_H__
|
||||
#define __BTC_AVRC_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "bt_defs.h"
|
||||
#include "bt_types.h"
|
||||
#include "bta_av_api.h"
|
||||
|
||||
#if (BTC_AV_INCLUDED == TRUE)
|
||||
#ifndef BTC_AVRC_TGT_INCLUDED
|
||||
#define BTC_AVRC_TGT_INCLUDED FALSE
|
||||
#endif
|
||||
|
||||
/* Macros */
|
||||
typedef enum {
|
||||
BTRC_FEAT_NONE = 0x00, /* AVRCP 1.0 */
|
||||
BTRC_FEAT_METADATA = 0x01, /* AVRCP 1.3 */
|
||||
BTRC_FEAT_ABSOLUTE_VOLUME = 0x02, /* Supports TG role and volume sync */
|
||||
BTRC_FEAT_BROWSE = 0x04, /* AVRCP 1.4 and up, with Browsing support */
|
||||
} btrc_remote_features_t;
|
||||
|
||||
typedef enum {
|
||||
BTC_AVRC_CTRL_API_INIT_EVT = 0,
|
||||
BTC_AVRC_CTRL_API_DEINIT_EVT,
|
||||
BTC_AVRC_CTRL_API_SND_PTCMD_EVT
|
||||
} btc_avrc_act_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t tl; /* transaction label */
|
||||
uint8_t key_code;
|
||||
uint8_t key_state;
|
||||
} pt_cmd_t;
|
||||
|
||||
/* btc_avrc_args_t */
|
||||
typedef union {
|
||||
// BTC_AVRC_CTRL_API_SND_PT_CMD_EVT
|
||||
struct {
|
||||
uint8_t tl;
|
||||
uint8_t key_code;
|
||||
uint8_t key_state;
|
||||
} pt_cmd;
|
||||
} btc_avrc_args_t;
|
||||
|
||||
/** BT-RC Controller callback structure. */
|
||||
typedef void (* btrc_passthrough_rsp_callback) (int id, int key_state);
|
||||
|
||||
typedef void (* btrc_connection_state_callback) (bool state, bt_bdaddr_t *bd_addr);
|
||||
|
||||
void btc_rc_handler(tBTA_AV_EVT event, tBTA_AV *p_data);
|
||||
|
||||
BOOLEAN btc_rc_get_connected_peer(BD_ADDR peer_addr);
|
||||
|
||||
/*******************************************************************************
|
||||
** BTC AVRC API
|
||||
********************************************************************************/
|
||||
void btc_avrc_call_handler(btc_msg_t *msg);
|
||||
|
||||
#endif ///BTC_AV_INCLUDED == TRUE
|
||||
|
||||
#endif /* __BTC_AVRC_H__ */
|
124
tools/sdk/include/bluedroid/btc_ble_storage.h
Normal file
124
tools/sdk/include/bluedroid/btc_ble_storage.h
Normal file
@ -0,0 +1,124 @@
|
||||
// Copyright (C) 2014 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "bt_types.h"
|
||||
#include "bt_target.h"
|
||||
|
||||
#if (SMP_INCLUDED == TRUE)
|
||||
#define BTC_LE_LOCAL_KEY_IR (1<<0)
|
||||
#define BTC_LE_LOCAL_KEY_IRK (1<<1)
|
||||
#define BTC_LE_LOCAL_KEY_DHK (1<<2)
|
||||
#define BTC_LE_LOCAL_KEY_ER (1<<3)
|
||||
|
||||
/************************************************************************************
|
||||
** Local type definitions
|
||||
************************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t num_devices;
|
||||
bt_bdaddr_t devices[BTM_SEC_MAX_DEVICE_RECORDS];
|
||||
} btc_bonded_devices_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
bool is_penc_key_rcvd;
|
||||
tBTM_LE_PENC_KEYS penc_key; /* received peer encryption key */
|
||||
bool is_pcsrk_key_rcvd;
|
||||
tBTM_LE_PCSRK_KEYS pcsrk_key; /* received peer device SRK */
|
||||
bool is_pid_key_rcvd;
|
||||
tBTM_LE_PID_KEYS pid_key; /* peer device ID key */
|
||||
bool is_lenc_key_rcvd;
|
||||
tBTM_LE_LENC_KEYS lenc_key; /* local encryption reproduction keys LTK = = d1(ER,DIV,0)*/
|
||||
bool is_lcsrk_key_rcvd;
|
||||
tBTM_LE_LCSRK_KEYS lcsrk_key; /* local device CSRK = d1(ER,DIV,1)*/
|
||||
bool is_lidk_key_rcvd; /* local identity key received */
|
||||
} btc_dm_ble_cb_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
bt_bdaddr_t static_bdaddr;
|
||||
BD_ADDR bd_addr;
|
||||
btc_dm_ble_cb_t ble;
|
||||
} btc_dm_pairing_cb_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t ir[BT_OCTET16_LEN];
|
||||
uint8_t irk[BT_OCTET16_LEN];
|
||||
uint8_t dhk[BT_OCTET16_LEN];
|
||||
}btc_dm_local_key_id_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
bool is_er_rcvd;
|
||||
uint8_t er[BT_OCTET16_LEN];
|
||||
bool is_id_keys_rcvd;
|
||||
btc_dm_local_key_id_t id_keys; /* ID kyes */
|
||||
}btc_dm_local_key_cb_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BT_OCTET16 sp_c;
|
||||
BT_OCTET16 sp_r;
|
||||
BD_ADDR oob_bdaddr; /* peer bdaddr*/
|
||||
} btc_dm_oob_cb_t;
|
||||
|
||||
|
||||
extern btc_dm_pairing_cb_t pairing_cb;
|
||||
extern btc_dm_local_key_cb_t ble_local_key_cb;
|
||||
|
||||
bt_status_t btc_storage_load_bonded_ble_devices(void);
|
||||
|
||||
bt_status_t btc_in_fetch_bonded_ble_devices(int add);
|
||||
|
||||
void btc_dm_remove_ble_bonding_keys(void);
|
||||
|
||||
bt_status_t btc_storage_add_ble_bonding_key( bt_bdaddr_t *remote_bd_addr,
|
||||
char *key,
|
||||
uint8_t key_type,
|
||||
uint8_t key_length);
|
||||
|
||||
void btc_save_ble_bonding_keys(void);
|
||||
|
||||
bt_status_t btc_in_fetch_bonded_ble_device(const char *remote_bd_addr, int add,
|
||||
btc_bonded_devices_t *p_bonded_devices);
|
||||
|
||||
bt_status_t btc_storage_get_ble_bonding_key(bt_bdaddr_t *remote_bd_addr,
|
||||
uint8_t key_type,
|
||||
char *key_value,
|
||||
int key_length);
|
||||
|
||||
bt_status_t btc_storage_add_ble_local_key(char *key,
|
||||
uint8_t key_type,
|
||||
uint8_t key_length);
|
||||
|
||||
bt_status_t btc_storage_remove_ble_bonding_keys(bt_bdaddr_t *remote_bd_addr);
|
||||
|
||||
bt_status_t btc_storage_remove_ble_local_keys(void);
|
||||
|
||||
bt_status_t btc_storage_get_ble_local_key(uint8_t key_type,
|
||||
char *key_value,
|
||||
int key_len);
|
||||
|
||||
bt_status_t btc_storage_get_remote_addr_type(bt_bdaddr_t *remote_bd_addr,
|
||||
int *addr_type);
|
||||
|
||||
bt_status_t btc_storage_set_remote_addr_type(bt_bdaddr_t *remote_bd_addr,
|
||||
uint8_t addr_type);
|
||||
|
||||
void btc_dm_load_ble_local_keys(void);
|
||||
|
||||
void btc_dm_get_ble_local_keys(tBTA_DM_BLE_LOCAL_KEY_MASK *p_key_mask, BT_OCTET16 er,
|
||||
tBTA_BLE_LOCAL_ID_KEYS *p_id_keys);
|
||||
#endif ///SMP_INCLUDED == TRUE
|
35
tools/sdk/include/bluedroid/btc_common.h
Normal file
35
tools/sdk/include/bluedroid/btc_common.h
Normal file
@ -0,0 +1,35 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
#ifndef __BTC_COMMON_H__
|
||||
#define __BTC_COMMON_H__
|
||||
|
||||
#include "bt_trace.h"
|
||||
#include "bt_types.h"
|
||||
#include "osi.h"
|
||||
|
||||
#define BTC_ASSERTC(cond, msg, val) if (!(cond)) { LOG_ERROR( \
|
||||
"### ASSERT : %s line %d %s (%d) ###", __FILE__, __LINE__, msg, val);}
|
||||
|
||||
#define BTC_HAL_CBACK(P_CB, P_CBACK, ...)\
|
||||
if (P_CB && P_CB->P_CBACK) { \
|
||||
LOG_INFO("HAL %s->%s", #P_CB, #P_CBACK); \
|
||||
P_CB->P_CBACK(__VA_ARGS__); \
|
||||
} \
|
||||
else { \
|
||||
BTC_ASSERTC(0, "Callback is NULL", 0); \
|
||||
}
|
||||
|
||||
#endif /* __BTC_COMMON_H__ */
|
54
tools/sdk/include/bluedroid/btc_config.h
Normal file
54
tools/sdk/include/bluedroid/btc_config.h
Normal file
@ -0,0 +1,54 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef __BTC_CONFIG_H__
|
||||
#define __BTC_CONFIG_H__
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "bt_types.h"
|
||||
|
||||
typedef struct btc_config_section_iter_t btc_config_section_iter_t;
|
||||
|
||||
bool btc_config_init(void);
|
||||
bool btc_config_shut_down(void);
|
||||
bool btc_config_clean_up(void);
|
||||
|
||||
bool btc_config_has_section(const char *section);
|
||||
bool btc_config_exist(const char *section, const char *key);
|
||||
bool btc_config_get_int(const char *section, const char *key, int *value);
|
||||
bool btc_config_set_int(const char *section, const char *key, int value);
|
||||
bool btc_config_get_str(const char *section, const char *key, char *value, int *size_bytes);
|
||||
bool btc_config_set_str(const char *section, const char *key, const char *value);
|
||||
bool btc_config_get_bin(const char *section, const char *key, uint8_t *value, size_t *length);
|
||||
bool btc_config_set_bin(const char *section, const char *key, const uint8_t *value, size_t length);
|
||||
bool btc_config_remove(const char *section, const char *key);
|
||||
|
||||
size_t btc_config_get_bin_length(const char *section, const char *key);
|
||||
|
||||
const btc_config_section_iter_t *btc_config_section_begin(void);
|
||||
const btc_config_section_iter_t *btc_config_section_end(void);
|
||||
const btc_config_section_iter_t *btc_config_section_next(const btc_config_section_iter_t *section);
|
||||
const char *btc_config_section_name(const btc_config_section_iter_t *section);
|
||||
|
||||
void btc_config_save(void);
|
||||
void btc_config_flush(void);
|
||||
int btc_config_clear(void);
|
||||
|
||||
// TODO(zachoverflow): Eww...we need to move these out. These are peer specific, not config general.
|
||||
bool btc_get_address_type(const BD_ADDR bd_addr, int *p_addr_type);
|
||||
bool btc_get_device_type(const BD_ADDR bd_addr, int *p_device_type);
|
||||
|
||||
#endif
|
38
tools/sdk/include/bluedroid/btc_dev.h
Normal file
38
tools/sdk/include/bluedroid/btc_dev.h
Normal file
@ -0,0 +1,38 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef __BTC_DEV_H__
|
||||
#define __BTC_DEV_H__
|
||||
|
||||
#include "esp_bt_defs.h"
|
||||
#include "esp_bt_device.h"
|
||||
#include "btc_task.h"
|
||||
|
||||
typedef enum {
|
||||
BTC_DEV_ACT_SET_DEVICE_NAME
|
||||
} btc_dev_act_t;
|
||||
|
||||
/* btc_dev_args_t */
|
||||
typedef union {
|
||||
// BTC_BT_GAP_ACT_SET_DEV_NAME
|
||||
struct set_bt_dev_name_args {
|
||||
#define ESP_DEV_DEVICE_NAME_MAX (32)
|
||||
char device_name[ESP_DEV_DEVICE_NAME_MAX + 1];
|
||||
} set_dev_name;
|
||||
} btc_dev_args_t;
|
||||
|
||||
void btc_dev_call_handler(btc_msg_t *msg);
|
||||
|
||||
#endif /* __BTC_DEV_H__ */
|
||||
|
40
tools/sdk/include/bluedroid/btc_dm.h
Normal file
40
tools/sdk/include/bluedroid/btc_dm.h
Normal file
@ -0,0 +1,40 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef __BTC_DM_H__
|
||||
#define __BTC_DM_H__
|
||||
|
||||
#include "btc_task.h"
|
||||
#include "esp_bt_defs.h"
|
||||
#include "bta_api.h"
|
||||
|
||||
typedef enum {
|
||||
BTC_DM_SEC_ACT
|
||||
} btc_dm_sec_act_t;
|
||||
|
||||
/* btc_dm_args_t */
|
||||
typedef union {
|
||||
//BTC_DM_SEC_ACT
|
||||
tBTA_DM_SEC sec;
|
||||
} btc_dm_sec_args_t;
|
||||
|
||||
// void btc_dm_call_handler(btc_msg_t *msg);
|
||||
void btc_dm_sec_evt(tBTA_DM_SEC_EVT event, tBTA_DM_SEC *data);
|
||||
void btc_dm_sec_cb_handler(btc_msg_t *msg);
|
||||
void btc_dm_sec_arg_deep_copy(btc_msg_t *msg, void *dst, void *src);
|
||||
|
||||
bt_status_t btc_dm_enable_service(tBTA_SERVICE_ID service_id);
|
||||
bt_status_t btc_dm_disable_service(tBTA_SERVICE_ID service_id);
|
||||
|
||||
#endif /* __BTC_DM_H__ */
|
@ -34,6 +34,11 @@ typedef enum {
|
||||
BTC_GAP_BLE_ACT_SET_DEV_NAME,
|
||||
BTC_GAP_BLE_ACT_CFG_ADV_DATA_RAW,
|
||||
BTC_GAP_BLE_ACT_CFG_SCAN_RSP_DATA_RAW,
|
||||
BTC_GAP_BLE_SET_ENCRYPTION_EVT,
|
||||
BTC_GAP_BLE_SET_SECURITY_PARAM_EVT,
|
||||
BTC_GAP_BLE_SECURITY_RSP_EVT,
|
||||
BTC_GAP_BLE_PASSKEY_REPLY_EVT,
|
||||
BTC_GAP_BLE_CONFIRM_REPLY_EVT,
|
||||
} btc_gap_ble_act_t;
|
||||
|
||||
/* btc_ble_gap_args_t */
|
||||
@ -72,12 +77,7 @@ typedef union {
|
||||
//BTC_GAP_BLE_ACT_CONFIG_LOCAL_PRIVACY,
|
||||
struct cfg_local_privacy_args {
|
||||
bool privacy_enable;
|
||||
} cfg_local_privacy;
|
||||
//BTC_GAP_BLE_ACT_SET_DEV_NAME,
|
||||
struct set_dev_name_args {
|
||||
#define ESP_GAP_DEVICE_NAME_MAX (32)
|
||||
char device_name[ESP_GAP_DEVICE_NAME_MAX + 1];
|
||||
} set_dev_name;
|
||||
} cfg_local_privacy;
|
||||
//BTC_GAP_BLE_ACT_CFG_ADV_DATA_RAW,
|
||||
struct config_adv_data_raw_args {
|
||||
uint8_t *raw_adv;
|
||||
@ -88,6 +88,33 @@ typedef union {
|
||||
uint8_t *raw_scan_rsp;
|
||||
uint32_t raw_scan_rsp_len;
|
||||
} cfg_scan_rsp_data_raw;
|
||||
|
||||
struct set_encryption_args {
|
||||
esp_bd_addr_t bd_addr;
|
||||
esp_ble_sec_act_t sec_act;
|
||||
} set_encryption;
|
||||
|
||||
struct set_security_param_args {
|
||||
esp_ble_sm_param_t param_type;
|
||||
uint8_t len;
|
||||
uint8_t *value;
|
||||
} set_security_param;
|
||||
|
||||
struct enc_rsp_args {
|
||||
esp_bd_addr_t bd_addr;
|
||||
bool accept;
|
||||
} sec_rsp;
|
||||
|
||||
struct enc_passkey_reply_args {
|
||||
esp_bd_addr_t bd_addr;
|
||||
bool accept;
|
||||
uint32_t passkey;
|
||||
} enc_passkey_replay;
|
||||
|
||||
struct enc_comfirm_reply_args {
|
||||
esp_bd_addr_t bd_addr;
|
||||
bool accept;
|
||||
} enc_comfirm_replay;
|
||||
} btc_ble_gap_args_t;
|
||||
|
||||
void btc_gap_ble_call_handler(btc_msg_t *msg);
|
||||
|
@ -15,8 +15,24 @@
|
||||
#ifndef __BTC_GAP_BT_H__
|
||||
#define __BTC_GAP_BT_H__
|
||||
|
||||
#include "esp_bt_defs.h"
|
||||
#include "esp_gap_bt_api.h"
|
||||
#include "btc_task.h"
|
||||
|
||||
typedef enum {
|
||||
BTC_GAP_BT_ACT_SET_SCAN_MODE = 0,
|
||||
} btc_gap_bt_act_t;
|
||||
|
||||
/* btc_bt_gap_args_t */
|
||||
typedef union {
|
||||
// BTC_BT_GAP_ACT_SET_SCAN_MODE,
|
||||
struct set_bt_scan_mode_args {
|
||||
esp_bt_scan_mode_t mode;
|
||||
} set_scan_mode;
|
||||
} btc_gap_bt_args_t;
|
||||
|
||||
void btc_gap_bt_call_handler(btc_msg_t *msg);
|
||||
|
||||
#define /* __BTC_GAP_BT_H__ */
|
||||
void btc_gap_bt_arg_deep_copy(btc_msg_t *msg, void *p_dest, void *p_src);
|
||||
|
||||
#endif /* __BTC_GAP_BT_H__ */
|
||||
|
@ -38,6 +38,7 @@ typedef enum {
|
||||
BTC_GATTC_ACT_WRITE_CHAR,
|
||||
BTC_GATTC_ACT_WRITE_CHAR_DESCR,
|
||||
BTC_GATTC_ACT_PREPARE_WRITE,
|
||||
BTC_GATTC_ACT_PREPARE_WRITE_CHAR_DESCR,
|
||||
BTC_GATTC_ACT_EXECUTE_WRITE,
|
||||
BTC_GATTC_ACT_REG_FOR_NOTIFY,
|
||||
BTC_GATTC_ACT_UNREG_FOR_NOTIFY
|
||||
@ -155,6 +156,17 @@ typedef union {
|
||||
uint8_t *value;
|
||||
esp_gatt_auth_req_t auth_req;
|
||||
} prep_write;
|
||||
//BTC_GATTC_ACT_PREPARE_WRITE_CHAR_DESCR,
|
||||
struct prep_write_descr_arg {
|
||||
uint16_t conn_id;
|
||||
esp_gatt_srvc_id_t service_id;
|
||||
esp_gatt_id_t char_id;
|
||||
esp_gatt_id_t descr_id;
|
||||
uint16_t offset;
|
||||
uint16_t value_len;
|
||||
uint8_t *value;
|
||||
esp_gatt_auth_req_t auth_req;
|
||||
} prep_write_descr;
|
||||
//BTC_GATTC_ACT_EXECUTE_WRITE,
|
||||
struct exec_write_arg {
|
||||
uint16_t conn_id;
|
||||
|
@ -123,7 +123,8 @@ typedef union {
|
||||
} send_rsp;
|
||||
|
||||
//BTC_GATTS_SET_ATTR_VALUE
|
||||
struct set_attr_val_args{
|
||||
struct set_attr_val_args {
|
||||
uint16_t handle;
|
||||
uint16_t length;
|
||||
uint8_t *value;
|
||||
} set_attr_val;
|
||||
|
268
tools/sdk/include/bluedroid/btc_media.h
Normal file
268
tools/sdk/include/bluedroid/btc_media.h
Normal file
@ -0,0 +1,268 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Filename: btc_media.h
|
||||
*
|
||||
* Description: This is the audio module for the BTC system.
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
#ifndef __BTC_MEDIA_H__
|
||||
#define __BTC_MEDIA_H__
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "bta_api.h"
|
||||
#include "gki.h"
|
||||
#include "btc_av_api.h"
|
||||
|
||||
#if (BTA_AV_INCLUDED == TRUE)
|
||||
|
||||
/*******************************************************************************
|
||||
** Constants
|
||||
*******************************************************************************/
|
||||
#define BTC_SUCCESS (0)
|
||||
/**
|
||||
* AV (Audio Video source) Errors
|
||||
*/
|
||||
#define BTC_ERROR_SRV_AV_NOT_ENABLED 700 /* AV is not enabled */
|
||||
#define BTC_ERROR_SRV_AV_FEEDING_NOT_SUPPORTED 701 /* Requested Feeding not supported */
|
||||
#define BTC_ERROR_SRV_AV_BUSY 702 /* Another operation ongoing */
|
||||
#define BTC_ERROR_SRV_AV_NOT_OPENED 703 /* No AV link opened */
|
||||
#define BTC_ERROR_SRV_AV_NOT_STARTED 704 /* AV is not started */
|
||||
#define BTC_ERROR_SRV_AV_CP_NOT_SUPPORTED 705 /* Content protection is not supported by all headsets */
|
||||
|
||||
/* Transcoding definition for TxTranscoding and RxTranscoding */
|
||||
#define BTC_MEDIA_TRSCD_OFF 0
|
||||
#define BTC_MEDIA_TRSCD_PCM_2_SBC 1 /* Tx */
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Data types
|
||||
*******************************************************************************/
|
||||
|
||||
typedef int tBTC_STATUS;
|
||||
|
||||
/* tBTC_MEDIA_INIT_AUDIO msg structure */
|
||||
typedef struct {
|
||||
BT_HDR hdr;
|
||||
UINT16 SamplingFreq; /* 16k, 32k, 44.1k or 48k*/
|
||||
UINT8 ChannelMode; /* mono, dual, stereo or joint stereo*/
|
||||
UINT8 NumOfSubBands; /* 4 or 8 */
|
||||
UINT8 NumOfBlocks; /* 4, 8, 12 or 16*/
|
||||
UINT8 AllocationMethod; /* loudness or SNR*/
|
||||
UINT16 MtuSize; /* peer mtu size */
|
||||
} tBTC_MEDIA_INIT_AUDIO;
|
||||
|
||||
#if (BTA_AV_INCLUDED == TRUE)
|
||||
/* tBTC_MEDIA_UPDATE_AUDIO msg structure */
|
||||
typedef struct {
|
||||
BT_HDR hdr;
|
||||
UINT16 MinMtuSize; /* Minimum peer mtu size */
|
||||
UINT8 MaxBitPool; /* Maximum peer bitpool */
|
||||
UINT8 MinBitPool; /* Minimum peer bitpool */
|
||||
} tBTC_MEDIA_UPDATE_AUDIO;
|
||||
|
||||
/* tBTC_MEDIA_INIT_AUDIO_FEEDING msg structure */
|
||||
typedef struct {
|
||||
BT_HDR hdr;
|
||||
tBTC_AV_FEEDING_MODE feeding_mode;
|
||||
tBTC_AV_MEDIA_FEEDINGS feeding;
|
||||
} tBTC_MEDIA_INIT_AUDIO_FEEDING;
|
||||
|
||||
typedef struct {
|
||||
BT_HDR hdr;
|
||||
UINT8 codec_info[AVDT_CODEC_SIZE];
|
||||
} tBTC_MEDIA_SINK_CFG_UPDATE;
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
** Public functions
|
||||
*******************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_av_task
|
||||
**
|
||||
** Description
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void btc_media_task(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_media_task_enc_init_req
|
||||
**
|
||||
** Description Request to initialize the media task encoder
|
||||
**
|
||||
** Returns TRUE is success
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern BOOLEAN btc_media_task_enc_init_req(tBTC_MEDIA_INIT_AUDIO *p_msg);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_media_task_enc_update_req
|
||||
**
|
||||
** Description Request to update the media task encoder
|
||||
**
|
||||
** Returns TRUE is success
|
||||
**
|
||||
*******************************************************************************/
|
||||
#if (BTA_AV_INCLUDED == TRUE)
|
||||
extern BOOLEAN btc_media_task_enc_update_req(tBTC_MEDIA_UPDATE_AUDIO *p_msg);
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_media_task_start_aa_req
|
||||
**
|
||||
** Description Request to start audio encoding task
|
||||
**
|
||||
** Returns TRUE is success
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern BOOLEAN btc_media_task_start_aa_req(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_media_task_stop_aa_req
|
||||
**
|
||||
** Description Request to stop audio encoding task
|
||||
**
|
||||
** Returns TRUE is success
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern BOOLEAN btc_media_task_stop_aa_req(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_media_task_aa_rx_flush_req
|
||||
**
|
||||
** Description Request to flush audio decoding pipe
|
||||
**
|
||||
** Returns TRUE is success
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern BOOLEAN btc_media_task_aa_rx_flush_req(void);
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_media_task_aa_tx_flush_req
|
||||
**
|
||||
** Description Request to flush audio encoding pipe
|
||||
**
|
||||
** Returns TRUE is success
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern BOOLEAN btc_media_task_aa_tx_flush_req(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_media_aa_readbuf
|
||||
**
|
||||
** Description Read an audio GKI buffer from the BTC media TX queue
|
||||
**
|
||||
** Returns pointer on a GKI aa buffer ready to send
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern BT_HDR *btc_media_aa_readbuf(void);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_media_sink_enque_buf
|
||||
**
|
||||
** Description This function is called by the av_co to fill A2DP Sink Queue
|
||||
**
|
||||
**
|
||||
** Returns size of the queue
|
||||
*******************************************************************************/
|
||||
UINT8 btc_media_sink_enque_buf(BT_HDR *p_buf);
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_media_aa_writebuf
|
||||
**
|
||||
** Description Enqueue a Advance Audio media GKI buffer to be processed by btc media task.
|
||||
**
|
||||
** Returns TRUE is success
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void btc_media_aa_writebuf(BT_HDR *pBuf, UINT32 timestamp, UINT16 seq_num);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_media_av_writebuf
|
||||
**
|
||||
** Description Enqueue a video media GKI buffer to be processed by btc media task.
|
||||
**
|
||||
** Returns TRUE is success
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern BOOLEAN btc_media_av_writebuf(UINT8 *p_media, UINT32 media_len,
|
||||
UINT32 timestamp, UINT16 seq_num);
|
||||
|
||||
#if (BTA_AV_INCLUDED == TRUE)
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_media_task_audio_feeding_init_req
|
||||
**
|
||||
** Description Request to initialize audio feeding
|
||||
**
|
||||
** Returns TRUE is success
|
||||
**
|
||||
*******************************************************************************/
|
||||
|
||||
extern BOOLEAN btc_media_task_audio_feeding_init_req(tBTC_MEDIA_INIT_AUDIO_FEEDING *p_msg);
|
||||
#endif
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function dump_codec_info
|
||||
**
|
||||
** Description Decode and display codec_info (for debug)
|
||||
**
|
||||
** Returns void
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void dump_codec_info(unsigned char *p_codec);
|
||||
|
||||
/**
|
||||
* Local adaptation helper functions between btc and media task
|
||||
*/
|
||||
|
||||
bool btc_a2dp_start_media_task(void);
|
||||
void btc_a2dp_stop_media_task(void);
|
||||
|
||||
void btc_a2dp_on_init(void);
|
||||
void btc_a2dp_setup_codec(void);
|
||||
void btc_a2dp_on_idle(void);
|
||||
BOOLEAN btc_a2dp_on_started(tBTA_AV_START *p_av, BOOLEAN pending_start);
|
||||
void btc_a2dp_on_stop_req(void);
|
||||
void btc_a2dp_on_stopped(tBTA_AV_SUSPEND *p_av);
|
||||
void btc_a2dp_on_suspend(void);
|
||||
void btc_a2dp_on_suspended(tBTA_AV_SUSPEND *p_av);
|
||||
void btc_a2dp_set_rx_flush(BOOLEAN enable);
|
||||
void btc_media_check_iop_exceptions(UINT8 *peer_bda);
|
||||
void btc_reset_decoder(UINT8 *p_av);
|
||||
|
||||
int btc_a2dp_get_track_frequency(UINT8 frequency);
|
||||
int btc_a2dp_get_track_channel_count(UINT8 channeltype);
|
||||
void btc_a2dp_set_peer_sep(UINT8 sep);
|
||||
#endif ///BTA_AV_INCLUDED == TRUE
|
||||
#endif
|
55
tools/sdk/include/bluedroid/btc_profile_queue.h
Normal file
55
tools/sdk/include/bluedroid/btc_profile_queue.h
Normal file
@ -0,0 +1,55 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Filename: btc_profile_queue.h
|
||||
*
|
||||
* Description: Bluetooth remote device connection queuing
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
#ifndef __BTC_PROFILE_QUEUE_H__
|
||||
#define __BTC_PROFILE_QUEUE_H__
|
||||
|
||||
#include "bt_defs.h"
|
||||
#include "btc_task.h"
|
||||
|
||||
typedef enum {
|
||||
BTC_PRF_QUE_CONNECT = 0,
|
||||
BTC_PRF_QUE_ADVANCE
|
||||
} btc_prf_que_act_t;
|
||||
|
||||
typedef bt_status_t (*btc_connect_cb_t) (bt_bdaddr_t *bda, uint16_t uuid);
|
||||
|
||||
typedef struct connect_node_t {
|
||||
bt_bdaddr_t bda;
|
||||
uint16_t uuid;
|
||||
bool busy;
|
||||
btc_connect_cb_t connect_cb;
|
||||
} connect_node_t;
|
||||
|
||||
/* btc_prf_que_args_t */
|
||||
typedef union {
|
||||
// BTC_PRF_QUE_CONNECT
|
||||
connect_node_t connect_node;
|
||||
} btc_prf_que_args_t;
|
||||
|
||||
bt_status_t btc_queue_connect(uint16_t uuid, const bt_bdaddr_t *bda, btc_connect_cb_t connect_cb);
|
||||
void btc_queue_advance(void);
|
||||
bt_status_t btc_queue_connect_next(void);
|
||||
void btc_queue_release(void);
|
||||
|
||||
void btc_profile_queue_handler(btc_msg_t *msg);
|
||||
#endif /* __BTC_PROFILE_QUEUE_H__ */
|
@ -1,129 +0,0 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef __ESP_SDP_API_H__
|
||||
#define __ESP_SDP_API_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include "esp_err.h"
|
||||
#include "esp_bt_common.h"
|
||||
#include "bta_sdp_api.h"
|
||||
#include "bt_sdp.h"
|
||||
|
||||
#define BT_SDP_STAT_SUCCESS BTA_SDP_SUCCESS
|
||||
#define BT_SDP_STAT_FAILURE BTA_SDP_FAILURE
|
||||
#define BT_SDP_STAT_BUSY BTA_SDP_BUSY
|
||||
|
||||
#define BT_SDP_ENABLE_EVT BTA_SDP_ENABLE_EVT
|
||||
#define BT_SDP_SEARCH_EVT BTA_SDP_SEARCH_EVT
|
||||
#define BT_SDP_SEARCH_COMP_EVT BTA_SDP_SEARCH_COMP_EVT
|
||||
#define BT_SDP_CREATE_RECORD_USER_EVT BTA_SDP_CREATE_RECORD_USER_EVT
|
||||
#define BT_SDP_REMOVE_RECORD_USER_EVT BTA_SDP_REMOVE_RECORD_USER_EVT
|
||||
#define BT_SDP_MAX_EVT BTA_SDP_MAX_EVT
|
||||
|
||||
#define BT_SDP_MAX_RECORDS BTA_SDP_MAX_RECORDS
|
||||
|
||||
typedef tBTA_SDP_STATUS bt_sdp_status_t;
|
||||
|
||||
typedef tBTA_SDP_EVT bt_sdp_evt_t;
|
||||
|
||||
typedef bluetooth_sdp_record bt_sdp_record_t;
|
||||
|
||||
/* tBTA_SEARCH_COMP, bta_sdp_api.h */
|
||||
typedef struct {
|
||||
bt_sdp_status_t status;
|
||||
esp_bd_addr_t remote_addr;
|
||||
esp_bt_uuid_t uuid;
|
||||
int record_count;
|
||||
bt_sdp_record_t records[BT_SDP_MAX_RECORDS];
|
||||
} bt_sdp_search_comp_t;
|
||||
|
||||
/* tBTA_SDP, bta_sdp_api.h */
|
||||
typedef union {
|
||||
bt_sdp_status_t status;
|
||||
bt_sdp_search_comp_t sdp_search_comp;
|
||||
} bt_sdp_t;
|
||||
|
||||
typedef void (bt_sdp_cb_t)(bt_sdp_evt_t event, bt_sdp_t *p_data, void *user_data);
|
||||
|
||||
esp_err_t esp_bt_sdp_enable(bt_sdp_cb_t *cback);
|
||||
|
||||
esp_err_t esp_bt_sdp_search(esp_bd_addr_t bd_addr, esp_bt_uuid_t *uuid);
|
||||
|
||||
esp_err_t esp_bt_sdp_create_record_by_user(void *user_data);
|
||||
|
||||
esp_err_t esp_bt_sdp_remove_record_by_user(void *user_data);
|
||||
|
||||
|
||||
/**********************************************************************************************/
|
||||
/**********************************************************************************************/
|
||||
/* API into SDP for local service database updates
|
||||
* these APIs are indended to be called in callback function in the context of stack task,
|
||||
* to handle BT_SDP_CREATE_RECORD_USER_EVT and BT_SDP_REMOVE_RECORD_USER_EVT
|
||||
*/
|
||||
|
||||
/* This structure is used to add protocol lists and find protocol elements */
|
||||
#define ESP_BT_SDP_MAX_PROTOCOL_PARAMS SDP_MAX_PROTOCOL_PARAMS // bt_target.h
|
||||
typedef struct {
|
||||
uint16_t protocol_uuid;
|
||||
uint16_t num_params;
|
||||
uint16_t params[ESP_BT_SDP_MAX_PROTOCOL_PARAMS];
|
||||
} sdp_proto_elem_t; // tSDP_PROTOCOL_ELEM, sdp_api.h
|
||||
|
||||
#define ESP_BT_SDP_MAX_LIST_ELEMS SDP_MAX_LIST_ELEMS // sdp_api.h
|
||||
typedef struct {
|
||||
uint16_t num_elems;
|
||||
sdp_proto_elem_t list_elem[ESP_BT_SDP_MAX_LIST_ELEMS];
|
||||
} sdp_proto_list_elem_t; // tSDP_PROTO_LIST_ELEM, sdp_api.h
|
||||
|
||||
|
||||
uint32_t esp_bt_sdp_create_record(void);
|
||||
|
||||
bool esp_bt_sdp_delete_record(uint32_t handle);
|
||||
|
||||
int32_t esp_bt_sdp_read_record(uint32_t handle, uint8_t *data, int32_t *data_len);
|
||||
|
||||
bool esp_bt_sdp_add_attribute (uint32_t handle, uint16_t attr_id,
|
||||
uint8_t attr_type, uint32_t attr_len,
|
||||
uint8_t *p_val);
|
||||
|
||||
bool esp_bt_sdp_add_sequence (uint32_t handle, uint16_t attr_id,
|
||||
uint16_t num_elem, uint8_t type[],
|
||||
uint8_t len[], uint8_t *p_val[]);
|
||||
|
||||
bool esp_bt_sdp_add_uuid_sequence (uint32_t handle, uint16_t attr_id,
|
||||
uint16_t num_uuids, uint16_t *p_uuids);
|
||||
|
||||
|
||||
bool esp_bt_sdp_add_protocol_list (uint32_t handle, uint16_t num_elem,
|
||||
sdp_proto_elem_t *p_elem_list);
|
||||
|
||||
bool esp_bt_sdp_add_addition_protocol_lists(uint32_t handle, uint16_t num_elem,
|
||||
sdp_proto_list_elem_t *p_proto_list);
|
||||
|
||||
bool esp_bt_sdp_add_profile_dscp_list (uint32_t handle,
|
||||
uint16_t profile_uuid,
|
||||
uint16_t version);
|
||||
|
||||
bool esp_bt_sdp_add_lang_base_attr_id_list(uint32_t handle,
|
||||
uint16_t lang, uint16_t char_enc,
|
||||
uint16_t base_id);
|
||||
|
||||
bool esp_bt_sdp_add_service_class_id_list(uint32_t handle,
|
||||
uint16_t num_services,
|
||||
uint16_t *p_service_uuids);
|
||||
|
||||
bool esp_bt_sdp_delete_attribute(uint32_t handle, uint16_t attr_id);
|
||||
|
||||
#endif /* __ESP_SDP_API_H__ */
|
115
tools/sdk/include/bluedroid/btc_sm.h
Normal file
115
tools/sdk/include/bluedroid/btc_sm.h
Normal file
@ -0,0 +1,115 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* Filename: btc_sm.h
|
||||
*
|
||||
* Description: Generic BTC state machine API
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef __BTC_SM_H__
|
||||
#define __BTC_SM_H__
|
||||
|
||||
/*****************************************************************************
|
||||
** Constants & Macros
|
||||
******************************************************************************/
|
||||
|
||||
/* Generic Enter/Exit state machine events */
|
||||
#define BTC_SM_ENTER_EVT 0xFFFF
|
||||
#define BTC_SM_EXIT_EVT 0xFFFE
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
** Type definitions and return values
|
||||
******************************************************************************/
|
||||
typedef UINT32 btc_sm_state_t;
|
||||
typedef UINT32 btc_sm_event_t;
|
||||
typedef void *btc_sm_handle_t;
|
||||
typedef BOOLEAN (* btc_sm_handler_t)(btc_sm_event_t event, void *data);
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
** Functions
|
||||
**
|
||||
** NOTE: THESE APIs SHOULD BE INVOKED ONLY IN THE BTC CONTEXT
|
||||
**
|
||||
******************************************************************************/
|
||||
|
||||
/*****************************************************************************
|
||||
**
|
||||
** Function btc_sm_init
|
||||
**
|
||||
** Description Initializes the state machine with the state handlers
|
||||
** The caller should ensure that the table and the corresponding
|
||||
** states match. The location that 'p_handlers' points to shall
|
||||
** be available until the btc_sm_shutdown API is invoked.
|
||||
**
|
||||
** Returns Returns a pointer to the initialized state machine handle.
|
||||
**
|
||||
******************************************************************************/
|
||||
btc_sm_handle_t btc_sm_init(const btc_sm_handler_t *p_handlers,
|
||||
btc_sm_state_t initial_state);
|
||||
|
||||
/*****************************************************************************
|
||||
**
|
||||
** Function btc_sm_shutdown
|
||||
**
|
||||
** Description Tears down the state machine
|
||||
**
|
||||
** Returns None
|
||||
**
|
||||
******************************************************************************/
|
||||
void btc_sm_shutdown(btc_sm_handle_t handle);
|
||||
|
||||
/*****************************************************************************
|
||||
**
|
||||
** Function btc_sm_get_state
|
||||
**
|
||||
** Description Fetches the current state of the state machine
|
||||
**
|
||||
** Returns Current state
|
||||
**
|
||||
******************************************************************************/
|
||||
btc_sm_state_t btc_sm_get_state(btc_sm_handle_t handle);
|
||||
|
||||
/*****************************************************************************
|
||||
**
|
||||
** Function btc_sm_dispatch
|
||||
**
|
||||
** Description Dispatches the 'event' along with 'data' to the current state handler
|
||||
**
|
||||
** Returns Returns BT_STATUS_OK on success, BT_STATUS_FAIL otherwise
|
||||
**
|
||||
******************************************************************************/
|
||||
bt_status_t btc_sm_dispatch(btc_sm_handle_t handle, btc_sm_event_t event,
|
||||
void *data);
|
||||
|
||||
/*****************************************************************************
|
||||
**
|
||||
** Function btc_sm_change_state
|
||||
**
|
||||
** Description Make a transition to the new 'state'. The 'BTC_SM_EXIT_EVT'
|
||||
** shall be invoked before exiting the current state. The
|
||||
** 'BTC_SM_ENTER_EVT' shall be invoked before entering the new state
|
||||
**
|
||||
**
|
||||
** Returns Returns BT_STATUS_OK on success, BT_STATUS_FAIL otherwise
|
||||
**
|
||||
******************************************************************************/
|
||||
bt_status_t btc_sm_change_state(btc_sm_handle_t handle, btc_sm_state_t state);
|
||||
|
||||
#endif /* __BTC_SM_H__ */
|
62
tools/sdk/include/bluedroid/btc_storage.h
Normal file
62
tools/sdk/include/bluedroid/btc_storage.h
Normal file
@ -0,0 +1,62 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef __BTC_STORAGE_H__
|
||||
#define __BTC_STORAGE_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include "bt_defs.h"
|
||||
#include "bt_types.h"
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_storage_add_bonded_device
|
||||
**
|
||||
** Description BTC storage API - Adds the newly bonded device to NVRAM
|
||||
** along with the link-key, Key type and Pin key length
|
||||
**
|
||||
** Returns BT_STATUS_SUCCESS if the store was successful,
|
||||
** BT_STATUS_FAIL otherwise
|
||||
**
|
||||
*******************************************************************************/
|
||||
bt_status_t btc_storage_add_bonded_device(bt_bdaddr_t *remote_bd_addr,
|
||||
LINK_KEY link_key,
|
||||
uint8_t key_type,
|
||||
uint8_t pin_length);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_storage_remove_bonded_device
|
||||
**
|
||||
** Description BTC storage API - Deletes the bonded device from NVRAM
|
||||
**
|
||||
** Returns BT_STATUS_SUCCESS if the deletion was successful,
|
||||
** BT_STATUS_FAIL otherwise
|
||||
**
|
||||
*******************************************************************************/
|
||||
bt_status_t btc_storage_remove_bonded_device(bt_bdaddr_t *remote_bd_addr);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function btc_storage_remove_bonded_device
|
||||
**
|
||||
** Description BTC storage API - Deletes the bonded device from NVRAM
|
||||
**
|
||||
** Returns BT_STATUS_SUCCESS if the deletion was successful,
|
||||
** BT_STATUS_FAIL otherwise
|
||||
**
|
||||
*******************************************************************************/
|
||||
bt_status_t btc_storage_load_bonded_devices(void);
|
||||
|
||||
#endif /* BTC_STORAGE_H */
|
@ -16,6 +16,7 @@
|
||||
#define __BTC_TASK_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include "bt_target.h"
|
||||
#include "bt_defs.h"
|
||||
#include "thread.h"
|
||||
|
||||
@ -35,16 +36,23 @@ typedef enum {
|
||||
|
||||
typedef enum {
|
||||
BTC_PID_MAIN_INIT = 0,
|
||||
BTC_PID_DEV,
|
||||
BTC_PID_GATTS,
|
||||
#if (GATTC_INCLUDED == TRUE)
|
||||
BTC_PID_GATTC,
|
||||
#endif ///GATTC_INCLUDED == TRUE
|
||||
BTC_PID_GAP_BLE,
|
||||
BTC_PID_GAP_BT,
|
||||
BTC_PID_SDP,
|
||||
BTC_PID_BLE_HID,
|
||||
BTC_PID_BT_HID,
|
||||
BTC_PID_SPP,
|
||||
BTC_PID_SPPLIKE,
|
||||
BTC_PID_BLUFI,
|
||||
BTC_PID_DM_SEC,
|
||||
BTC_PID_ALARM,
|
||||
#if CONFIG_CLASSIC_BT_ENABLED
|
||||
BTC_PID_GAP_BT,
|
||||
BTC_PID_PRF_QUE,
|
||||
BTC_PID_A2DP,
|
||||
BTC_PID_AVRC,
|
||||
#endif /* CONFIG_CLASSIC_BT_ENABLED */
|
||||
BTC_PID_NUM,
|
||||
} btc_pid_t; //btc profile id
|
||||
|
||||
|
47
tools/sdk/include/bluedroid/btc_util.h
Normal file
47
tools/sdk/include/bluedroid/btc_util.h
Normal file
@ -0,0 +1,47 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef __BTC_UTIL_H__
|
||||
#define __BTC_UTIL_H__
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "bt_types.h"
|
||||
#include "bt_defs.h"
|
||||
|
||||
/*******************************************************************************
|
||||
** Constants & Macros
|
||||
********************************************************************************/
|
||||
#define CASE_RETURN_STR(const) case const: return #const;
|
||||
|
||||
/*******************************************************************************
|
||||
** Type definitions for callback functions
|
||||
********************************************************************************/
|
||||
typedef char bdstr_t[18];
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Functions
|
||||
********************************************************************************/
|
||||
const char *dump_rc_event(UINT8 event);
|
||||
const char *dump_rc_notification_event_id(UINT8 event_id);
|
||||
const char *dump_rc_pdu(UINT8 pdu);
|
||||
|
||||
UINT32 devclass2uint(DEV_CLASS dev_class);
|
||||
void uint2devclass(UINT32 dev, DEV_CLASS dev_class);
|
||||
void uuid16_to_uuid128(uint16_t uuid16, bt_uuid_t *uuid128);
|
||||
|
||||
void uuid_to_string_legacy(bt_uuid_t *p_uuid, char *str);
|
||||
void string_to_uuid(char *str, bt_uuid_t *p_uuid);
|
||||
|
||||
#endif /* __BTC_UTIL_H__ */
|
0
tools/sdk/include/bluedroid/bte_appl.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/bte_appl.h
Executable file → Normal file
@ -1383,6 +1383,11 @@ typedef UINT8 tBTM_IO_CAP;
|
||||
#define BTM_AUTH_BONDS 6 /* the general/dedicated bonding bits */
|
||||
#define BTM_AUTH_YN_BIT 1 /* this is the Yes or No bit */
|
||||
|
||||
#define BTM_BLE_ENC_KEY_MASK (1 << 0)
|
||||
#define BTM_BLE_ID_KEY_MASK (1 << 1)
|
||||
#define BTM_BLE_CSR_KEY_MASK (1 << 2)
|
||||
#define BTM_BLE_LINK_KEY_MASK (1 << 3)
|
||||
|
||||
#define BTM_BLE_INITIATOR_KEY_SIZE 15
|
||||
#define BTM_BLE_RESPONDER_KEY_SIZE 15
|
||||
#define BTM_BLE_MAX_KEY_SIZE 16
|
||||
@ -1526,6 +1531,7 @@ typedef void (tBTM_BOND_CANCEL_CMPL_CALLBACK) (tBTM_STATUS result);
|
||||
|
||||
/* LE related event and data structure
|
||||
*/
|
||||
#if (SMP_INCLUDED == TRUE)
|
||||
#define BTM_LE_IO_REQ_EVT SMP_IO_CAP_REQ_EVT /* received IO_CAPABILITY_REQUEST event */
|
||||
#define BTM_LE_SEC_REQUEST_EVT SMP_SEC_REQUEST_EVT /* security request event */
|
||||
#define BTM_LE_KEY_NOTIF_EVT SMP_PASSKEY_NOTIF_EVT /* received USER_PASSKEY_NOTIFY event */
|
||||
@ -1541,8 +1547,10 @@ typedef void (tBTM_BOND_CANCEL_CMPL_CALLBACK) (tBTM_STATUS result);
|
||||
#define BTM_LE_COMPLT_EVT SMP_COMPLT_EVT /* SMP complete event */
|
||||
#define BTM_LE_LAST_FROM_SMP BTM_LE_BR_KEYS_REQ_EVT
|
||||
#define BTM_LE_KEY_EVT BTM_LE_LAST_FROM_SMP + 1 /* KEY update event */
|
||||
#endif ///SMP_INCLUDED == TRUE
|
||||
typedef UINT8 tBTM_LE_EVT;
|
||||
|
||||
#if (BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE)
|
||||
#define BTM_LE_KEY_NONE 0
|
||||
#define BTM_LE_KEY_PENC SMP_SEC_KEY_TYPE_ENC /* encryption information of peer device */
|
||||
#define BTM_LE_KEY_PID SMP_SEC_KEY_TYPE_ID /* identity key of the peer device */
|
||||
@ -1552,12 +1560,15 @@ typedef UINT8 tBTM_LE_EVT;
|
||||
#define BTM_LE_KEY_LENC (SMP_SEC_KEY_TYPE_ENC << 4) /* master role security information:div */
|
||||
#define BTM_LE_KEY_LID (SMP_SEC_KEY_TYPE_ID << 4) /* master device ID key */
|
||||
#define BTM_LE_KEY_LCSRK (SMP_SEC_KEY_TYPE_CSRK << 4) /* local CSRK has been deliver to peer */
|
||||
#endif ///BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE
|
||||
typedef UINT8 tBTM_LE_KEY_TYPE;
|
||||
|
||||
#if (SMP_INCLUDED == TRUE)
|
||||
#define BTM_LE_AUTH_REQ_NO_BOND SMP_AUTH_NO_BOND /* 0 */
|
||||
#define BTM_LE_AUTH_REQ_BOND SMP_AUTH_GEN_BOND /* 1 << 0 */
|
||||
#define BTM_LE_AUTH_REQ_MITM SMP_AUTH_YN_BIT /* 1 << 2 */
|
||||
#endif ///SMP_INCLUDED == TRUE
|
||||
typedef UINT8 tBTM_LE_AUTH_REQ;
|
||||
#if (SMP_INCLUDED == TRUE)
|
||||
#define BTM_LE_SC_SUPPORT_BIT SMP_SC_SUPPORT_BIT /* (1 << 3) */
|
||||
#define BTM_LE_KP_SUPPORT_BIT SMP_KP_SUPPORT_BIT /* (1 << 4) */
|
||||
|
||||
@ -1571,6 +1582,7 @@ typedef UINT8 tBTM_LE_AUTH_REQ;
|
||||
#define BTM_LE_SEC_NONE SMP_SEC_NONE
|
||||
#define BTM_LE_SEC_UNAUTHENTICATE SMP_SEC_UNAUTHENTICATE /* 1 */
|
||||
#define BTM_LE_SEC_AUTHENTICATED SMP_SEC_AUTHENTICATED /* 4 */
|
||||
#endif ///SMP_INCLUDED == TRUE
|
||||
typedef UINT8 tBTM_LE_SEC;
|
||||
|
||||
|
||||
@ -2020,6 +2032,7 @@ tBTM_STATUS BTM_VendorSpecificCommand(UINT16 opcode,
|
||||
**
|
||||
*******************************************************************************/
|
||||
//extern
|
||||
#if (CLASSIC_BT_INCLUDED == TRUE)
|
||||
UINT8 BTM_AllocateSCN(void);
|
||||
|
||||
// btla-specific ++
|
||||
@ -2048,6 +2061,7 @@ BOOLEAN BTM_TryAllocateSCN(UINT8 scn);
|
||||
*******************************************************************************/
|
||||
//extern
|
||||
BOOLEAN BTM_FreeSCN(UINT8 scn);
|
||||
#endif ///CLASSIC_BT_INCLUDED == TRUE
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@ -3677,6 +3691,17 @@ UINT8 *BTM_ReadOobData(UINT8 *p_data, UINT8 eir_tag, UINT8 *p_len);
|
||||
//extern
|
||||
char *BTM_SecReadDevName (BD_ADDR bd_addr);
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function BTM_SecClearSecurityFlags
|
||||
**
|
||||
** Description Reset the security flags (mark as not-paired) for a given
|
||||
** remove device.
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void BTM_SecClearSecurityFlags (BD_ADDR bd_addr);
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
** POWER MANAGEMENT FUNCTIONS
|
||||
|
@ -759,7 +759,9 @@ typedef struct {
|
||||
** ACL Management
|
||||
****************************************************/
|
||||
tACL_CONN acl_db[MAX_L2CAP_LINKS];
|
||||
#if (CLASSIC_BT_INCLUDED == TRUE)
|
||||
UINT8 btm_scn[BTM_MAX_SCN]; /* current SCNs: TRUE if SCN is in use */
|
||||
#endif ///CLASSIC_BT_INCLUDED == TRUE
|
||||
UINT16 btm_def_link_policy;
|
||||
UINT16 btm_def_link_super_tout;
|
||||
|
||||
@ -815,9 +817,11 @@ typedef struct {
|
||||
tBTM_APPL_INFO api;
|
||||
|
||||
#define BTM_SEC_MAX_RMT_NAME_CALLBACKS 2
|
||||
tBTM_RMT_NAME_CALLBACK *p_rmt_name_callback[BTM_SEC_MAX_RMT_NAME_CALLBACKS];
|
||||
|
||||
tBTM_RMT_NAME_CALLBACK *p_rmt_name_callback[BTM_SEC_MAX_RMT_NAME_CALLBACKS];
|
||||
#if (SMP_INCLUDED == TRUE)
|
||||
tBTM_SEC_DEV_REC *p_collided_dev_rec;
|
||||
#endif ///SMP_INCLUDED == TRUE
|
||||
TIMER_LIST_ENT sec_collision_tle;
|
||||
UINT32 collision_start_time;
|
||||
UINT32 max_collision_delay;
|
||||
@ -828,6 +832,7 @@ typedef struct {
|
||||
BOOLEAN security_mode_changed; /* mode changed during bonding */
|
||||
BOOLEAN pin_type_changed; /* pin type changed during bonding */
|
||||
BOOLEAN sec_req_pending; /* TRUE if a request is pending */
|
||||
#if (SMP_INCLUDED == TRUE)
|
||||
// btla-specific ++
|
||||
#ifdef PORCHE_PAIRING_CONFLICT
|
||||
UINT8 pin_code_len_saved; /* for legacy devices */
|
||||
@ -843,6 +848,7 @@ typedef struct {
|
||||
UINT16 disc_handle; /* for legacy devices */
|
||||
UINT8 disc_reason; /* for legacy devices */
|
||||
tBTM_SEC_SERV_REC sec_serv_rec[BTM_SEC_MAX_SERVICE_RECORDS];
|
||||
#endif ///SMP_INCLUDED == TRUE
|
||||
tBTM_SEC_DEV_REC sec_dev_rec[BTM_SEC_MAX_DEVICE_RECORDS];
|
||||
tBTM_SEC_SERV_REC *p_out_serv;
|
||||
tBTM_MKEY_CALLBACK *mkey_cback;
|
||||
@ -859,7 +865,6 @@ typedef struct {
|
||||
BOOLEAN paging;
|
||||
BOOLEAN discing;
|
||||
BUFFER_Q sec_pending_q; /* pending sequrity requests in tBTM_SEC_QUEUE_ENTRY format */
|
||||
|
||||
#if (!defined(BT_TRACE_VERBOSE) || (BT_TRACE_VERBOSE == FALSE))
|
||||
char state_temp_buffer[BTM_STATE_BUFFER_SIZE];
|
||||
#endif
|
||||
|
0
tools/sdk/include/bluedroid/buffer.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/buffer.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/buffer_allocator.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/buffer_allocator.h
Executable file → Normal file
144
tools/sdk/include/bluedroid/config.h
Normal file
144
tools/sdk/include/bluedroid/config.h
Normal file
@ -0,0 +1,144 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef __CONFIG_H__
|
||||
#define __CONFIG_H__
|
||||
|
||||
// This module implements a configuration parser. Clients can query the
|
||||
// contents of a configuration file through the interface provided here.
|
||||
// The current implementation is read-only; mutations are only kept in
|
||||
// memory. This parser supports the INI file format.
|
||||
|
||||
// Implementation notes:
|
||||
// - Key/value pairs that are not within a section are assumed to be under
|
||||
// the |CONFIG_DEFAULT_SECTION| section.
|
||||
// - Multiple sections with the same name will be merged as if they were in
|
||||
// a single section.
|
||||
// - Empty sections with no key/value pairs will be treated as if they do
|
||||
// not exist. In other words, |config_has_section| will return false for
|
||||
// empty sections.
|
||||
// - Duplicate keys in a section will overwrite previous values.
|
||||
// - All strings are case sensitive.
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
// The default section name to use if a key/value pair is not defined within
|
||||
// a section.
|
||||
#define CONFIG_DEFAULT_SECTION "Global"
|
||||
|
||||
typedef struct config_t config_t;
|
||||
typedef struct config_section_node_t config_section_node_t;
|
||||
|
||||
// Creates a new config object with no entries (i.e. not backed by a file).
|
||||
// This function returns a config object or NULL on error. Clients must call
|
||||
// |config_free| on the returned handle when it is no longer required.
|
||||
config_t *config_new_empty(void);
|
||||
|
||||
// Loads the specified file and returns a handle to the config file. If there
|
||||
// was a problem loading the file or allocating memory, this function returns
|
||||
// NULL. Clients must call |config_free| on the returned handle when it is no
|
||||
// longer required. |filename| must not be NULL and must point to a readable
|
||||
// file on the filesystem.
|
||||
config_t *config_new(const char *filename);
|
||||
|
||||
// Frees resources associated with the config file. No further operations may
|
||||
// be performed on the |config| object after calling this function. |config|
|
||||
// may be NULL.
|
||||
void config_free(config_t *config);
|
||||
|
||||
// Returns true if the config file contains a section named |section|. If
|
||||
// the section has no key/value pairs in it, this function will return false.
|
||||
// |config| and |section| must not be NULL.
|
||||
bool config_has_section(const config_t *config, const char *section);
|
||||
|
||||
// Returns true if the config file has a key named |key| under |section|.
|
||||
// Returns false otherwise. |config|, |section|, and |key| must not be NULL.
|
||||
bool config_has_key(const config_t *config, const char *section, const char *key);
|
||||
|
||||
// Returns the integral value for a given |key| in |section|. If |section|
|
||||
// or |key| do not exist, or the value cannot be fully converted to an integer,
|
||||
// this function returns |def_value|. |config|, |section|, and |key| must not
|
||||
// be NULL.
|
||||
int config_get_int(const config_t *config, const char *section, const char *key, int def_value);
|
||||
|
||||
// Returns the boolean value for a given |key| in |section|. If |section|
|
||||
// or |key| do not exist, or the value cannot be converted to a boolean, this
|
||||
// function returns |def_value|. |config|, |section|, and |key| must not be NULL.
|
||||
bool config_get_bool(const config_t *config, const char *section, const char *key, bool def_value);
|
||||
|
||||
// Returns the string value for a given |key| in |section|. If |section| or
|
||||
// |key| do not exist, this function returns |def_value|. The returned string
|
||||
// is owned by the config module and must not be freed. |config|, |section|,
|
||||
// and |key| must not be NULL. |def_value| may be NULL.
|
||||
const char *config_get_string(const config_t *config, const char *section, const char *key, const char *def_value);
|
||||
|
||||
// Sets an integral value for the |key| in |section|. If |key| or |section| do
|
||||
// not already exist, this function creates them. |config|, |section|, and |key|
|
||||
// must not be NULL.
|
||||
void config_set_int(config_t *config, const char *section, const char *key, int value);
|
||||
|
||||
// Sets a boolean value for the |key| in |section|. If |key| or |section| do
|
||||
// not already exist, this function creates them. |config|, |section|, and |key|
|
||||
// must not be NULL.
|
||||
void config_set_bool(config_t *config, const char *section, const char *key, bool value);
|
||||
|
||||
// Sets a string value for the |key| in |section|. If |key| or |section| do
|
||||
// not already exist, this function creates them. |config|, |section|, |key|, and
|
||||
// |value| must not be NULL.
|
||||
void config_set_string(config_t *config, const char *section, const char *key, const char *value, bool insert_back);
|
||||
|
||||
// Removes |section| from the |config| (and, as a result, all keys in the section).
|
||||
// Returns true if |section| was found and removed from |config|, false otherwise.
|
||||
// Neither |config| nor |section| may be NULL.
|
||||
bool config_remove_section(config_t *config, const char *section);
|
||||
|
||||
// Removes one specific |key| residing in |section| of the |config|. Returns true
|
||||
// if the section and key were found and the key was removed, false otherwise.
|
||||
// None of |config|, |section|, or |key| may be NULL.
|
||||
bool config_remove_key(config_t *config, const char *section, const char *key);
|
||||
|
||||
// Returns an iterator to the first section in the config file. If there are no
|
||||
// sections, the iterator will equal the return value of |config_section_end|.
|
||||
// The returned pointer must be treated as an opaque handle and must not be freed.
|
||||
// The iterator is invalidated on any config mutating operation. |config| may not
|
||||
// be NULL.
|
||||
const config_section_node_t *config_section_begin(const config_t *config);
|
||||
|
||||
// Returns an iterator to one past the last section in the config file. It does not
|
||||
// represent a valid section, but can be used to determine if all sections have been
|
||||
// iterated over. The returned pointer must be treated as an opaque handle and must
|
||||
// not be freed and must not be iterated on (must not call |config_section_next| on
|
||||
// it). |config| may not be NULL.
|
||||
const config_section_node_t *config_section_end(const config_t *config);
|
||||
|
||||
// Moves |iter| to the next section. If there are no more sections, |iter| will
|
||||
// equal the value of |config_section_end|. |iter| may not be NULL and must be
|
||||
// a pointer returned by either |config_section_begin| or |config_section_next|.
|
||||
const config_section_node_t *config_section_next(const config_section_node_t *iter);
|
||||
|
||||
// Returns the name of the section referred to by |iter|. The returned pointer is
|
||||
// owned by the config module and must not be freed by the caller. The pointer will
|
||||
// remain valid until |config_free| is called. |iter| may not be NULL and must not
|
||||
// equal the value returned by |config_section_end|.
|
||||
const char *config_section_name(const config_section_node_t *iter);
|
||||
|
||||
// Saves |config| to a file given by |filename|. Note that this could be a destructive
|
||||
// operation: if |filename| already exists, it will be overwritten. The config
|
||||
// module does not preserve comments or formatting so if a config file was opened
|
||||
// with |config_new| and subsequently overwritten with |config_save|, all comments
|
||||
// and special formatting in the original file will be lost. Neither |config| nor
|
||||
// |filename| may be NULL.
|
||||
bool config_save(const config_t *config, const char *filename);
|
||||
|
||||
#endif /* #ifndef __CONFIG_H__ */
|
59
tools/sdk/include/bluedroid/dyn_mem.h
Executable file → Normal file
59
tools/sdk/include/bluedroid/dyn_mem.h
Executable file → Normal file
@ -18,6 +18,62 @@
|
||||
#ifndef DYN_MEM_H
|
||||
#define DYN_MEM_H
|
||||
|
||||
#include "sdkconfig.h"
|
||||
#if CONFIG_CLASSIC_BT_ENABLED
|
||||
|
||||
#define SDP_DYNAMIC_MEMORY FALSE
|
||||
#define RFC_DYNAMIC_MEMORY FALSE
|
||||
#define TCS_DYNAMIC_MEMORY FALSE
|
||||
#define BNEP_DYNAMIC_MEMORY FALSE
|
||||
#define AVDT_DYNAMIC_MEMORY FALSE
|
||||
#define AVCT_DYNAMIC_MEMORY FALSE
|
||||
#define MCA_DYNAMIC_MEMORY FALSE
|
||||
#define A2D_DYNAMIC_MEMORY FALSE
|
||||
#define VDP_DYNAMIC_MEMORY FALSE
|
||||
#define AVRC_DYNAMIC_MEMORY FALSE
|
||||
#define BIP_DYNAMIC_MEMORY FALSE
|
||||
#define BPP_DYNAMIC_MEMORY FALSE
|
||||
#define CTP_DYNAMIC_MEMORY FALSE
|
||||
#define FTP_DYNAMIC_MEMORY FALSE
|
||||
#define HCRP_DYNAMIC_MEMORY FALSE
|
||||
#define HFP_DYNAMIC_MEMORY FALSE
|
||||
#define HID_DYNAMIC_MEMORY FALSE
|
||||
#define HSP2_DYNAMIC_MEMORY FALSE
|
||||
#define ICP_DYNAMIC_MEMORY FALSE
|
||||
#define OPP_DYNAMIC_MEMORY FALSE
|
||||
#define PAN_DYNAMIC_MEMORY FALSE
|
||||
#define SPP_DYNAMIC_MEMORY FALSE
|
||||
#define SLIP_DYNAMIC_MEMORY FALSE
|
||||
#define LLCP_DYNAMIC_MEMORY FALSE
|
||||
|
||||
#else /* #if CONFIG_CLASSIC_BT_ENABLED */
|
||||
|
||||
#define SDP_DYNAMIC_MEMORY TRUE
|
||||
#define RFC_DYNAMIC_MEMORY TRUE
|
||||
#define TCS_DYNAMIC_MEMORY TRUE
|
||||
#define BNEP_DYNAMIC_MEMORY TRUE
|
||||
#define AVDT_DYNAMIC_MEMORY TRUE
|
||||
#define AVCT_DYNAMIC_MEMORY TRUE
|
||||
#define MCA_DYNAMIC_MEMORY TRUE
|
||||
#define A2D_DYNAMIC_MEMORY TRUE
|
||||
#define VDP_DYNAMIC_MEMORY TRUE
|
||||
#define AVRC_DYNAMIC_MEMORY TRUE
|
||||
#define BIP_DYNAMIC_MEMORY TRUE
|
||||
#define BPP_DYNAMIC_MEMORY TRUE
|
||||
#define CTP_DYNAMIC_MEMORY TRUE
|
||||
#define FTP_DYNAMIC_MEMORY TRUE
|
||||
#define HCRP_DYNAMIC_MEMORY TRUE
|
||||
#define HFP_DYNAMIC_MEMORY TRUE
|
||||
#define HID_DYNAMIC_MEMORY TRUE
|
||||
#define HSP2_DYNAMIC_MEMORY TRUE
|
||||
#define ICP_DYNAMIC_MEMORY TRUE
|
||||
#define OPP_DYNAMIC_MEMORY TRUE
|
||||
#define PAN_DYNAMIC_MEMORY TRUE
|
||||
#define SPP_DYNAMIC_MEMORY TRUE
|
||||
#define SLIP_DYNAMIC_MEMORY TRUE
|
||||
#define LLCP_DYNAMIC_MEMORY TRUE
|
||||
|
||||
#endif /* #if CONFIG_CLASSIC_BT_ENABLED */
|
||||
/****************************************************************************
|
||||
** Define memory usage for each CORE component (if not defined in bdroid_buildcfg.h)
|
||||
** The default for each component is to use static memory allocations.
|
||||
@ -31,8 +87,7 @@
|
||||
#endif
|
||||
|
||||
#ifndef SDP_DYNAMIC_MEMORY
|
||||
//#define SDP_DYNAMIC_MEMORY FALSE
|
||||
#define SDP_DYNAMIC_MEMORY TRUE
|
||||
#define SDP_DYNAMIC_MEMORY FALSE
|
||||
#endif
|
||||
|
||||
#ifndef L2C_DYNAMIC_MEMORY
|
||||
|
216
tools/sdk/include/bluedroid/esp_a2dp_api.h
Normal file
216
tools/sdk/include/bluedroid/esp_a2dp_api.h
Normal file
@ -0,0 +1,216 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef __ESP_A2DP_API_H__
|
||||
#define __ESP_A2DP_API_H__
|
||||
|
||||
#include "esp_err.h"
|
||||
#include "esp_bt_defs.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/// Media codec types supported by A2DP
|
||||
#define ESP_A2D_MCT_SBC (0) /*!< SBC */
|
||||
#define ESP_A2D_MCT_M12 (0x01) /*!< MPEG-1, 2 Audio */
|
||||
#define ESP_A2D_MCT_M24 (0x02) /*!< MPEG-2, 4 AAC */
|
||||
#define ESP_A2D_MCT_ATRAC (0x04) /*!< ATRAC family */
|
||||
#define ESP_A2D_MCT_NON_A2DP (0xff)
|
||||
|
||||
typedef uint8_t esp_a2d_mct_t;
|
||||
|
||||
/// A2DP media codec capabilities union
|
||||
typedef struct {
|
||||
esp_a2d_mct_t type; /*!< A2DP media codec type */
|
||||
#define ESP_A2D_CIE_LEN_SBC (4)
|
||||
#define ESP_A2D_CIE_LEN_M12 (4)
|
||||
#define ESP_A2D_CIE_LEN_M24 (6)
|
||||
#define ESP_A2D_CIE_LEN_ATRAC (7)
|
||||
union {
|
||||
uint8_t sbc[ESP_A2D_CIE_LEN_SBC];
|
||||
uint8_t m12[ESP_A2D_CIE_LEN_M12];
|
||||
uint8_t m24[ESP_A2D_CIE_LEN_M24];
|
||||
uint8_t atrac[ESP_A2D_CIE_LEN_ATRAC];
|
||||
} cie; /*!< A2DP codec information element */
|
||||
} __attribute__((packed)) esp_a2d_mcc_t;
|
||||
|
||||
/// Bluetooth A2DP connection states
|
||||
typedef enum {
|
||||
ESP_A2D_CONNECTION_STATE_DISCONNECTED = 0, /*!< connection released */
|
||||
ESP_A2D_CONNECTION_STATE_CONNECTING, /*!< connecting remote device */
|
||||
ESP_A2D_CONNECTION_STATE_CONNECTED, /*!< connection established */
|
||||
ESP_A2D_CONNECTION_STATE_DISCONNECTING /*!< disconnecting remote device */
|
||||
} esp_a2d_connection_state_t;
|
||||
|
||||
/// Bluetooth A2DP disconnection reason
|
||||
typedef enum {
|
||||
ESP_A2D_DISC_RSN_NORMAL = 0, /*!< Finished disconnection that is initiated by local or remote device */
|
||||
ESP_A2D_DISC_RSN_ABNORMAL /*!< Abnormal disconnection caused by signal loss */
|
||||
} esp_a2d_disc_rsn_t;
|
||||
|
||||
/// Bluetooth A2DP datapath states
|
||||
typedef enum {
|
||||
ESP_A2D_AUDIO_STATE_REMOTE_SUSPEND = 0, /*!< audio stream datapath suspended by remote device */
|
||||
ESP_A2D_AUDIO_STATE_STOPPED, /*!< audio stream datapath stopped */
|
||||
ESP_A2D_AUDIO_STATE_STARTED, /*!< audio stream datapath started */
|
||||
} esp_a2d_audio_state_t;
|
||||
|
||||
/// A2DP callback events
|
||||
typedef enum {
|
||||
ESP_A2D_CONNECTION_STATE_EVT = 0, /*!< connection state changed event */
|
||||
ESP_A2D_AUDIO_STATE_EVT = 1, /*!< audio stream transmission state changed event */
|
||||
ESP_A2D_AUDIO_CFG_EVT = 2 /*!< audio codec is configured */
|
||||
} esp_a2d_cb_event_t;
|
||||
|
||||
/// A2DP state callback parameters
|
||||
typedef union {
|
||||
/**
|
||||
* @brief ESP_A2D_CONNECTION_STATE_EVT
|
||||
*/
|
||||
struct a2d_conn_stat_param {
|
||||
esp_a2d_connection_state_t state; /*!< one of values from esp_a2d_connection_state_t */
|
||||
esp_bd_addr_t remote_bda; /*!< remote bluetooth device address */
|
||||
esp_a2d_disc_rsn_t disc_rsn; /*!< reason of disconnection for "DISCONNECTED" */
|
||||
} conn_stat; /*!< A2DP connection status */
|
||||
|
||||
/**
|
||||
* @brief ESP_A2D_AUDIO_STATE_EVT
|
||||
*/
|
||||
struct a2d_audio_stat_param {
|
||||
esp_a2d_audio_state_t state; /*!< one of the values from esp_a2d_audio_state_t */
|
||||
esp_bd_addr_t remote_bda; /*!< remote bluetooth device address */
|
||||
} audio_stat; /*!< audio stream playing state */
|
||||
|
||||
/**
|
||||
* @brief ESP_A2D_AUDIO_CFG_EVT
|
||||
*/
|
||||
struct a2d_audio_cfg_param {
|
||||
esp_bd_addr_t remote_bda; /*!< remote bluetooth device address */
|
||||
esp_a2d_mcc_t mcc; /*!< A2DP media codec capability information */
|
||||
} audio_cfg; /*!< media codec configuration infomation */
|
||||
} esp_a2d_cb_param_t;
|
||||
|
||||
/**
|
||||
* @brief A2DP profile callback function type
|
||||
* @param event : Event type
|
||||
* @param param : Pointer to callback parameter
|
||||
*/
|
||||
typedef void (* esp_a2d_cb_t)(esp_a2d_cb_event_t event, esp_a2d_cb_param_t *param);
|
||||
|
||||
/**
|
||||
* @brief A2DP profile data callback function
|
||||
*
|
||||
* @param[in] buf : data received from A2DP source device and is PCM format decoder from SBC decoder;
|
||||
* buf references to a static memory block and can be overwritten by upcoming data
|
||||
*
|
||||
* @param[in] len : size(in bytes) in buf
|
||||
*
|
||||
*/
|
||||
typedef void (* esp_a2d_data_cb_t)(const uint8_t *buf, uint32_t len);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Register application callback function to A2DP module. This function should be called
|
||||
* only after esp_bluedroid_enable() completes successfully
|
||||
*
|
||||
* @param[in] callback: A2DP sink event callback function
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK: success
|
||||
* - ESP_INVALID_STATE: if bluetooth stack is not yet enabled
|
||||
* - ESP_FAIL: if callback is a NULL function pointer
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_a2d_register_callback(esp_a2d_cb_t callback);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Register A2DP sink data output function; For now the output is PCM data stream decoded
|
||||
* from SBC format. This function should be called only after esp_bluedroid_enable()
|
||||
* completes successfully
|
||||
*
|
||||
* @param[in] callback: A2DP data callback function
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK: success
|
||||
* - ESP_INVALID_STATE: if bluetooth stack is not yet enabled
|
||||
* - ESP_FAIL: if callback is a NULL function pointer
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_a2d_register_data_callback(esp_a2d_data_cb_t callback);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Initialize the bluetooth A2DP sink module. This function should be called
|
||||
* after esp_bluedroid_enable() completes successfully
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK: if the initialization request is sent successfully
|
||||
* - ESP_INVALID_STATE: if bluetooth stack is not yet enabled
|
||||
* - ESP_FAIL: others
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_a2d_sink_init(void);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief De-initialize for A2DP sink module. This function
|
||||
* should be called only after esp_bluedroid_enable() completes successfully
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK: success
|
||||
* - ESP_INVALID_STATE: if bluetooth stack is not yet enabled
|
||||
* - ESP_FAIL: others
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_a2d_sink_deinit(void);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Connect the remote bluetooth device bluetooth, must after esp_a2d_sink_init()
|
||||
*
|
||||
* @param[in] remote_bda: remote bluetooth device address
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK: connect request is sent to lower layer
|
||||
* - ESP_INVALID_STATE: if bluetooth stack is not yet enabled
|
||||
* - ESP_FAIL: others
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_a2d_sink_connect(esp_bd_addr_t remote_bda);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Disconnect the remote bluetooth device
|
||||
*
|
||||
* @param[in] remote_bda: remote bluetooth device address
|
||||
* @return
|
||||
* - ESP_OK: disconnect request is sent to lower layer
|
||||
* - ESP_INVALID_STATE: if bluetooth stack is not yet enabled
|
||||
* - ESP_FAIL: others
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_a2d_sink_disconnect(esp_bd_addr_t remote_bda);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* __ESP_A2DP_API_H__ */
|
153
tools/sdk/include/bluedroid/esp_avrc_api.h
Normal file
153
tools/sdk/include/bluedroid/esp_avrc_api.h
Normal file
@ -0,0 +1,153 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef __ESP_AVRC_API_H__
|
||||
#define __ESP_AVRC_API_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "esp_err.h"
|
||||
#include "esp_bt_defs.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/// AVRC feature bit mask
|
||||
typedef enum {
|
||||
ESP_AVRC_FEAT_RCTG = 0x0001, /*!< remote control target */
|
||||
ESP_AVRC_FEAT_RCCT = 0x0002, /*!< remote control controller */
|
||||
ESP_AVRC_FEAT_VENDOR = 0x0008, /*!< remote control vendor dependent commands */
|
||||
ESP_AVRC_FEAT_BROWSE = 0x0010, /*!< use browsing channel */
|
||||
ESP_AVRC_FEAT_META_DATA = 0x0040, /*!< remote control metadata transfer command/response */
|
||||
ESP_AVRC_FEAT_ADV_CTRL = 0x0200, /*!< remote control advanced control commmand/response */
|
||||
} esp_avrc_features_t;
|
||||
|
||||
/// AVRC passthrough command code
|
||||
typedef enum {
|
||||
ESP_AVRC_PT_CMD_PLAY = 0x44, /*!< play */
|
||||
ESP_AVRC_PT_CMD_STOP = 0x45, /*!< stop */
|
||||
ESP_AVRC_PT_CMD_PAUSE = 0x46, /*!< pause */
|
||||
ESP_AVRC_PT_CMD_FORWARD = 0x4B, /*!< forward */
|
||||
ESP_AVRC_PT_CMD_BACKWARD = 0x4C /*!< backward */
|
||||
} esp_avrc_pt_cmd_t;
|
||||
|
||||
/// AVRC passthrough command state
|
||||
typedef enum {
|
||||
ESP_AVRC_PT_CMD_STATE_PRESSED = 0, /*!< key pressed */
|
||||
ESP_AVRC_PT_CMD_STATE_RELEASED = 1 /*!< key released */
|
||||
} esp_avrc_pt_cmd_state_t;
|
||||
|
||||
/// AVRC Controller callback events
|
||||
typedef enum {
|
||||
ESP_AVRC_CT_CONNECTION_STATE_EVT = 0, /*!< connection state changed event */
|
||||
ESP_AVRC_CT_PASSTHROUGH_RSP_EVT = 1, /*!< passthrough response event */
|
||||
ESP_AVRC_CT_MAX_EVT
|
||||
} esp_avrc_ct_cb_event_t;
|
||||
|
||||
/// AVRC controller callback parameters
|
||||
typedef union {
|
||||
/**
|
||||
* @brief ESP_AVRC_CT_CONNECTION_STATE_EVT
|
||||
*/
|
||||
struct avrc_ct_conn_stat_param {
|
||||
bool connected; /*!< whether AVRC connection is set up */
|
||||
uint32_t feat_mask; /*!< AVRC feature mask of remote device */
|
||||
esp_bd_addr_t remote_bda; /*!< remote bluetooth device address */
|
||||
} conn_stat; /*!< AVRC connection status */
|
||||
|
||||
/**
|
||||
* @brief ESP_AVRC_CT_PASSTHROUGH_RSP_EVT
|
||||
*/
|
||||
struct avrc_ct_psth_rsp_param {
|
||||
uint8_t tl; /*!< transaction label, 0 to 15 */
|
||||
uint8_t key_code; /*!< passthrough command code */
|
||||
uint8_t key_state; /*!< 0 for PRESSED, 1 for RELEASED */
|
||||
} psth_rsp; /*!< passthrough command response */
|
||||
} esp_avrc_ct_cb_param_t;
|
||||
|
||||
|
||||
/**
|
||||
* @brief AVRCP controller callback function type
|
||||
* @param event : Event type
|
||||
* @param param : Pointer to callback parameter union
|
||||
*/
|
||||
typedef void (* esp_avrc_ct_cb_t)(esp_avrc_ct_cb_event_t event, esp_avrc_ct_cb_param_t *param);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Register application callbacks to AVRCP module; for now only AVRCP Controller
|
||||
* role is supported. This function should be called after esp_bluedroid_enable()
|
||||
* completes successfully
|
||||
*
|
||||
* @param[in] callback: AVRCP controller callback function
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK: success
|
||||
* - ESP_INVALID_STATE: if bluetooth stack is not yet enabled
|
||||
* - ESP_FAIL: others
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_avrc_ct_register_callback(esp_avrc_ct_cb_t callback);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Initialize the bluetooth AVRCP controller module, This function should be called
|
||||
* after esp_bluedroid_enable() completes successfully
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK: success
|
||||
* - ESP_INVALID_STATE: if bluetooth stack is not yet enabled
|
||||
* - ESP_FAIL: others
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_avrc_ct_init(void);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief De-initialize AVRCP controller module. This function should be called after
|
||||
* after esp_bluedroid_enable() completes successfully
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK: success
|
||||
* - ESP_INVALID_STATE: if bluetooth stack is not yet enabled
|
||||
* - ESP_FAIL: others
|
||||
*/
|
||||
esp_err_t esp_avrc_ct_deinit(void);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Send passthrough command to AVRCP target, This function should be called after
|
||||
* ESP_AVRC_CT_CONNECTION_STATE_EVT is received and AVRCP connection is established
|
||||
*
|
||||
* @param[in] tl : transaction label, 0 to 15, consecutive commands should use different values.
|
||||
* @param[in] key_code : passthrough command code, e.g. ESP_AVRC_PT_CMD_PLAY, ESP_AVRC_PT_CMD_STOP, etc.
|
||||
* @param[in] key_state : passthrough command key state, ESP_AVRC_PT_CMD_STATE_PRESSED or
|
||||
* ESP_AVRC_PT_CMD_STATE_PRESSED
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK: success
|
||||
* - ESP_INVALID_STATE: if bluetooth stack is not yet enabled
|
||||
* - ESP_FAIL: others
|
||||
*/
|
||||
esp_err_t esp_avrc_ct_send_passthrough_cmd(uint8_t tl, uint8_t key_code, uint8_t key_state);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ESP_AVRC_API_H__ */
|
@ -49,6 +49,7 @@ typedef enum {
|
||||
ESP_BLUFI_EVENT_RECV_SERVER_CERT, /*<! When Phone send Server certificate to ESP32, this event happen */
|
||||
ESP_BLUFI_EVENT_RECV_CLIENT_PRIV_KEY, /*<! When Phone send Client Private key to ESP32, this event happen */
|
||||
ESP_BLUFI_EVENT_RECV_SERVER_PRIV_KEY, /*<! When Phone send Server Private key to ESP32, this event happen */
|
||||
ESP_BLUFI_EVENT_RECV_SLAVE_DISCONNECT_BLE, /*<! When Phone send Disconnect key to ESP32, this event happen */
|
||||
} esp_blufi_cb_event_t;
|
||||
|
||||
/// BLUFI config status
|
||||
@ -122,6 +123,8 @@ typedef union {
|
||||
*/
|
||||
struct blufi_connect_evt_param {
|
||||
esp_bd_addr_t remote_bda; /*!< Blufi Remote bluetooth device address */
|
||||
uint8_t server_if; /*!< server interface */
|
||||
uint16_t conn_id; /*!< Connection id */
|
||||
} connect; /*!< Blufi callback param of ESP_BLUFI_EVENT_CONNECT */
|
||||
|
||||
/**
|
||||
@ -353,6 +356,18 @@ esp_err_t esp_blufi_send_wifi_conn_report(wifi_mode_t opmode, esp_blufi_sta_conn
|
||||
*/
|
||||
uint16_t esp_blufi_get_version(void);
|
||||
|
||||
/**
|
||||
* @brief Close a connection a remote device.
|
||||
*
|
||||
* @param[in] gatts_if: GATT server access interface
|
||||
* @param[in] conn_id: connection ID to be closed.
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK : success
|
||||
* - other : failed
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_blufi_close(esp_gatt_if_t gatts_if, uint16_t conn_id);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -32,6 +32,16 @@ typedef enum {
|
||||
ESP_BT_STATUS_WRONG_MODE = 5,
|
||||
} esp_bt_status_t;
|
||||
|
||||
|
||||
/*Define the bt octet 16 bit size*/
|
||||
#define ESP_BT_OCTET16_LEN 16
|
||||
typedef uint8_t esp_bt_octet16_t[ESP_BT_OCTET16_LEN]; /* octet array: size 16 */
|
||||
|
||||
#define ESP_BT_OCTET8_LEN 8
|
||||
typedef uint8_t esp_bt_octet8_t[ESP_BT_OCTET8_LEN]; /* octet array: size 8 */
|
||||
|
||||
typedef uint8_t esp_link_key[ESP_BT_OCTET16_LEN]; /* Link Key */
|
||||
|
||||
/// Default GATT interface id
|
||||
#define ESP_DEFAULT_GATT_IF 0xff
|
||||
|
||||
@ -67,22 +77,6 @@ typedef enum {
|
||||
/// Bluetooth device address
|
||||
typedef uint8_t esp_bd_addr_t[ESP_BD_ADDR_LEN];
|
||||
|
||||
/// Own BD address source of the device
|
||||
typedef enum {
|
||||
/// Public Address
|
||||
BD_ADDR_PUBLIC,
|
||||
/// Provided random address
|
||||
BD_ADDR_PROVIDED_RND,
|
||||
/// Provided static random address
|
||||
BD_ADDR_GEN_STATIC_RND,
|
||||
/// Generated resolvable private random address
|
||||
BD_ADDR_GEN_RSLV,
|
||||
/// Generated non-resolvable private random address
|
||||
BD_ADDR_GEN_NON_RSLV,
|
||||
/// Provided Reconnection address
|
||||
BD_ADDR_PROVIDED_RECON,
|
||||
} esp_bd_addr_type_t;
|
||||
|
||||
/// BLE device address type
|
||||
typedef enum {
|
||||
BLE_ADDR_TYPE_PUBLIC = 0x00,
|
||||
@ -91,6 +85,15 @@ typedef enum {
|
||||
BLE_ADDR_TYPE_RPA_RANDOM = 0x03,
|
||||
} esp_ble_addr_type_t;
|
||||
|
||||
/// Used to exchange the encrytyption key in the init key & response key
|
||||
#define ESP_BLE_ENC_KEY_MASK (1 << 0)
|
||||
/// Used to exchange the IRK key in the init key & response key
|
||||
#define ESP_BLE_ID_KEY_MASK (1 << 1)
|
||||
/// Used to exchange the CSRK key in the init key & response key
|
||||
#define ESP_BLE_CSR_KEY_MASK (1 << 2)
|
||||
/// Used to exchange the link key(this key just used in the BLE & BR/EDR coexist mode) in the init key & response key
|
||||
#define ESP_BLE_LINK_KEY_MASK (1 << 3)
|
||||
|
||||
/// Minimum of the application id
|
||||
#define ESP_APP_ID_MIN 0x0000
|
||||
/// Maximum of the application id
|
||||
|
@ -17,6 +17,8 @@
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include "esp_err.h"
|
||||
#include "esp_bt_defs.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -30,6 +32,21 @@ extern "C" {
|
||||
*/
|
||||
const uint8_t *esp_bt_dev_get_address(void);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Set bluetooth device name. This function should be called after esp_bluedroid_enable()
|
||||
* completes successfully
|
||||
*
|
||||
* @param[in] name : device name to be set
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK : Succeed
|
||||
* - ESP_ERR_INVALID_ARG : if name is NULL pointer or empty, or string length out of limit
|
||||
* - ESP_INVALID_STATE : if bluetooth stack is not yet enabled
|
||||
* - ESP_FAIL : others
|
||||
*/
|
||||
esp_err_t esp_bt_dev_set_device_name(const char *name);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -38,6 +38,34 @@ extern "C" {
|
||||
* @}
|
||||
*/
|
||||
|
||||
#define ESP_LE_KEY_NONE 0
|
||||
#define ESP_LE_KEY_PENC (1 << 0) /*!< encryption key, encryption information of peer device */
|
||||
#define ESP_LE_KEY_PID (1 << 1) /*!< identity key of the peer device */
|
||||
#define ESP_LE_KEY_PCSRK (1 << 2) /*!< peer SRK */
|
||||
#define ESP_LE_KEY_PLK (1 << 3) /*!< Link key*/
|
||||
#define ESP_LE_KEY_LLK (ESP_LE_KEY_PLK << 4)
|
||||
#define ESP_LE_KEY_LENC (ESP_LE_KEY_PENC << 4) /*!< master role security information:div */
|
||||
#define ESP_LE_KEY_LID (ESP_LE_KEY_PID << 4) /*!< master device ID key */
|
||||
#define ESP_LE_KEY_LCSRK (ESP_LE_KEY_PCSRK << 4) /*!< local CSRK has been deliver to peer */
|
||||
typedef uint8_t esp_ble_key_type_t;
|
||||
|
||||
#define ESP_LE_AUTH_NO_BOND 0x00 /*!< 0*/
|
||||
#define ESP_LE_AUTH_BOND 0x01 /*!< 1 << 0 */
|
||||
#define ESP_LE_AUTH_REQ_MITM (1 << 2) /*!< 1 << 2 */
|
||||
#define ESP_LE_AUTH_REQ_SC_ONLY (1 << 3) /*!< 1 << 3 */
|
||||
#define ESP_LE_AUTH_REQ_SC_BOND (ESP_LE_AUTH_BOND | ESP_LE_AUTH_REQ_SC_ONLY) /*!< 1001 */
|
||||
#define ESP_LE_AUTH_REQ_SC_MITM (ESP_LE_AUTH_REQ_MITM | ESP_LE_AUTH_REQ_SC_ONLY) /*!< 1100 */
|
||||
#define ESP_LE_AUTH_REQ_SC_MITM_BOND (ESP_LE_AUTH_REQ_MITM | ESP_LE_AUTH_REQ_SC_ONLY | ESP_LE_AUTH_BOND) /*!< 1101 */
|
||||
typedef uint8_t esp_ble_auth_req_t; /*!< combination of the above bit pattern */
|
||||
|
||||
#define ESP_IO_CAP_OUT 0 /*!< DisplayOnly */
|
||||
#define ESP_IO_CAP_IO 1 /*!< DisplayYesNo */
|
||||
#define ESP_IO_CAP_IN 2 /*!< KeyboardOnly */
|
||||
#define ESP_IO_CAP_NONE 3 /*!< NoInputNoOutput */
|
||||
#define ESP_IO_CAP_KBDISP 4 /*!< Keyboard display */
|
||||
typedef uint8_t esp_ble_io_cap_t; /*!< combination of the io capability */
|
||||
|
||||
|
||||
/// GAP BLE callback event type
|
||||
typedef enum {
|
||||
ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT = 0, /*!< When advertising data set complete, the event comes */
|
||||
@ -48,6 +76,17 @@ typedef enum {
|
||||
ESP_GAP_BLE_SCAN_RSP_DATA_RAW_SET_COMPLETE_EVT, /*!< When raw advertising data set complete, the event comes */
|
||||
ESP_GAP_BLE_ADV_START_COMPLETE_EVT, /*!< When start advertising complete, the event comes */
|
||||
ESP_GAP_BLE_SCAN_START_COMPLETE_EVT, /*!< When start scan complete, the event comes */
|
||||
ESP_GAP_BLE_AUTH_CMPL_EVT, /* Authentication complete indication. */
|
||||
ESP_GAP_BLE_KEY_EVT, /* BLE key event for peer device keys */
|
||||
ESP_GAP_BLE_SEC_REQ_EVT, /* BLE security request */
|
||||
ESP_GAP_BLE_PASSKEY_NOTIF_EVT, /* passkey notification event */
|
||||
ESP_GAP_BLE_PASSKEY_REQ_EVT, /* passkey request event */
|
||||
ESP_GAP_BLE_OOB_REQ_EVT, /* OOB request event */
|
||||
ESP_GAP_BLE_LOCAL_IR_EVT, /* BLE local IR event */
|
||||
ESP_GAP_BLE_LOCAL_ER_EVT, /* BLE local ER event */
|
||||
ESP_GAP_BLE_NC_REQ_EVT, /* Numeric Comparison request event */
|
||||
ESP_GAP_BLE_ADV_STOP_COMPLETE_EVT, /*!< When stop adv complete, the event comes */
|
||||
ESP_GAP_BLE_SCAN_STOP_COMPLETE_EVT, /*!< When stop scan complete, the event comes */
|
||||
} esp_gap_ble_cb_event_t;
|
||||
|
||||
/// Advertising data maximum length
|
||||
@ -113,6 +152,23 @@ typedef enum {
|
||||
///Enumeration end value for advertising filter policy value check
|
||||
} esp_ble_adv_filter_t;
|
||||
|
||||
|
||||
typedef enum {
|
||||
ESP_BLE_SEC_NONE,
|
||||
ESP_BLE_SEC_ENCRYPT,
|
||||
ESP_BLE_SEC_ENCRYPT_NO_MITM,
|
||||
ESP_BLE_SEC_ENCRYPT_MITM,
|
||||
}esp_ble_sec_act_t;
|
||||
|
||||
typedef enum {
|
||||
ESP_BLE_SM_PASSKEY,
|
||||
ESP_BLE_SM_AUTHEN_REQ_MODE,
|
||||
ESP_BLE_SM_IOCAP_MODE,
|
||||
ESP_BLE_SM_SET_INIT_KEY,
|
||||
ESP_BLE_SM_SET_RSP_KEK,
|
||||
ESP_BLE_SM_MAX_KEY_SIZE,
|
||||
} esp_ble_sm_param_t;
|
||||
|
||||
/// Advertising parameters
|
||||
typedef struct {
|
||||
uint16_t adv_int_min; /*!< Minimum advertising interval for
|
||||
@ -148,22 +204,6 @@ typedef struct {
|
||||
uint8_t flag; /*!< Advertising flag of discovery mode, see BLE_ADV_DATA_FLAG detail */
|
||||
} esp_ble_adv_data_t;
|
||||
|
||||
/// Own BD address source of the device
|
||||
typedef enum {
|
||||
/// Public Address
|
||||
ESP_PUBLIC_ADDR,
|
||||
/// Provided random address
|
||||
ESP_PROVIDED_RND_ADDR,
|
||||
/// Provided static random address
|
||||
ESP_GEN_STATIC_RND_ADDR,
|
||||
/// Generated resolvable private random address
|
||||
ESP_GEN_RSLV_ADDR,
|
||||
/// Generated non-resolvable private random address
|
||||
ESP_GEN_NON_RSLV_ADDR,
|
||||
/// Provided Reconnection address
|
||||
ESP_PROVIDED_RECON_ADDR,
|
||||
} esp_ble_own_addr_src_t;
|
||||
|
||||
/// Ble scan type
|
||||
typedef enum {
|
||||
BLE_SCAN_TYPE_PASSIVE = 0x0, /*!< Passive scan */
|
||||
@ -215,6 +255,137 @@ typedef struct {
|
||||
Time Range: 100 msec to 32 seconds */
|
||||
} esp_ble_conn_update_params_t;
|
||||
|
||||
/**
|
||||
* @brief BLE encryption keys
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
esp_bt_octet16_t ltk; /*!< The long term key*/
|
||||
esp_bt_octet8_t rand; /*!< The random number*/
|
||||
uint16_t ediv; /*!< The ediv value*/
|
||||
uint8_t sec_level; /*!< The security level of the security link*/
|
||||
uint8_t key_size; /*!< The key size(7~16) of the security link*/
|
||||
}esp_ble_penc_keys_t; /*!< The key type*/
|
||||
|
||||
/**
|
||||
* @brief BLE CSRK keys
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t counter; /*!< The counter */
|
||||
esp_bt_octet16_t csrk; /*!< The csrk key */
|
||||
uint8_t sec_level; /*!< The security level */
|
||||
}esp_ble_pcsrk_keys_t; /*!< The pcsrk key type */
|
||||
|
||||
/**
|
||||
* @brief BLE pid keys
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
esp_bt_octet16_t irk; /*!< The irk value */
|
||||
esp_ble_addr_type_t addr_type; /*!< The address type */
|
||||
esp_bd_addr_t static_addr; /*!< The static address */
|
||||
}esp_ble_pid_keys_t; /*!< The pid key type */
|
||||
|
||||
/**
|
||||
* @brief BLE Encryption reproduction keys
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
esp_bt_octet16_t ltk; /*!< The long term key */
|
||||
uint16_t div; /*!< The div value */
|
||||
uint8_t key_size; /*!< The key size of the security link */
|
||||
uint8_t sec_level; /*!< The security level of the security link */
|
||||
}esp_ble_lenc_keys_t; /*!< The key type */
|
||||
|
||||
/**
|
||||
* @brief BLE SRK keys
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t counter; /*!< The counter value */
|
||||
uint16_t div; /*!< The div value */
|
||||
uint8_t sec_level; /*!< The security level of the security link */
|
||||
esp_bt_octet16_t csrk; /*!< The csrk key value */
|
||||
}esp_ble_lcsrk_keys; /*!< The csrk key type */
|
||||
|
||||
/**
|
||||
* @brief Structure associated with ESP_KEY_NOTIF_EVT
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
esp_bd_addr_t bd_addr; /*!< peer address */
|
||||
uint32_t passkey; /*!< the numeric value for comparison. If just_works, do not show this number to UI */
|
||||
} esp_ble_sec_key_notif_t; /*!< BLE key notify type*/
|
||||
|
||||
/**
|
||||
* @brief Structure of the security request
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
esp_bd_addr_t bd_addr; /*!< peer address */
|
||||
}esp_ble_sec_req_t; /*!< BLE security request type*/
|
||||
|
||||
/**
|
||||
* @brief union type of the security key value
|
||||
*/
|
||||
typedef union
|
||||
{
|
||||
esp_ble_penc_keys_t penc_key; /*!< received peer encryption key */
|
||||
esp_ble_pcsrk_keys_t pcsrk_key; /*!< received peer device SRK */
|
||||
esp_ble_pid_keys_t pid_key; /*!< peer device ID key */
|
||||
esp_ble_lenc_keys_t lenc_key; /*!< local encryption reproduction keys LTK = = d1(ER,DIV,0)*/
|
||||
esp_ble_lcsrk_keys lcsrk_key; /*!< local device CSRK = d1(ER,DIV,1)*/
|
||||
}esp_ble_key_value_t; /*!< ble key value type*/
|
||||
|
||||
|
||||
/**
|
||||
* @brief union type of the security key value
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
esp_bd_addr_t bd_addr; /*!< peer address */
|
||||
esp_ble_key_type_t key_type; /*!< key type of the security link */
|
||||
esp_ble_key_value_t p_key_value; /*!< the pointer to the key value */
|
||||
}esp_ble_key_t; /*!< the union to the ble key value type*/
|
||||
|
||||
/**
|
||||
* @brief structure type of the ble local id keys value
|
||||
*/
|
||||
typedef struct {
|
||||
esp_bt_octet16_t ir; /*!< the 16 bits of the ir value */
|
||||
esp_bt_octet16_t irk; /*!< the 16 bits of the ir key value */
|
||||
esp_bt_octet16_t dhk; /*!< the 16 bits of the dh key value */
|
||||
}esp_ble_local_id_keys_t; /*!< the structure of the ble local id keys value type*/
|
||||
|
||||
|
||||
/**
|
||||
* @brief Structure associated with ESP_AUTH_CMPL_EVT
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
esp_bd_addr_t bd_addr; /*!< BD address peer device. */
|
||||
bool key_present; /*!< Valid link key value in key element */
|
||||
esp_link_key key; /*!< Link key associated with peer device. */
|
||||
uint8_t key_type; /*!< The type of Link Key */
|
||||
bool success; /*!< TRUE of authentication succeeded, FALSE if failed. */
|
||||
uint8_t fail_reason; /*!< The HCI reason/error code for when success=FALSE */
|
||||
esp_ble_addr_type_t addr_type; /*!< Peer device address type */
|
||||
esp_bt_dev_type_t dev_type; /*!< Device type */
|
||||
}esp_ble_auth_cmpl_t; /*!< The ble authentication complite cb type */
|
||||
|
||||
/**
|
||||
* @brief union associated with ble security
|
||||
*/
|
||||
typedef union
|
||||
{
|
||||
esp_ble_sec_key_notif_t key_notif; /*!< passkey notification */
|
||||
esp_ble_sec_req_t ble_req; /*!< BLE SMP related request */
|
||||
esp_ble_key_t ble_key; /*!< BLE SMP keys used when pairing */
|
||||
esp_ble_local_id_keys_t ble_id_keys; /*!< BLE IR event */
|
||||
esp_ble_auth_cmpl_t auth_cmpl; /*!< Authentication complete indication. */
|
||||
}esp_ble_sec_t; /*!< Ble secutity type */
|
||||
|
||||
/// Sub Event of ESP_GAP_BLE_SCAN_RESULT_EVT
|
||||
typedef enum {
|
||||
ESP_GAP_SEARCH_INQ_RES_EVT = 0, /*!< Inquiry result for a peer device. */
|
||||
@ -300,6 +471,20 @@ typedef union {
|
||||
struct ble_scan_start_cmpl_evt_param {
|
||||
esp_bt_status_t status; /*!< Indicate scan start operation success status */
|
||||
} scan_start_cmpl; /*!< Event parameter of ESP_GAP_BLE_SCAN_START_COMPLETE_EVT */
|
||||
|
||||
esp_ble_sec_t ble_security; /*!< ble gap security union type */
|
||||
/**
|
||||
* @brief ESP_GAP_BLE_SCAN_STOP_COMPLETE_EVT
|
||||
*/
|
||||
struct ble_scan_stop_cmpl_evt_param {
|
||||
esp_bt_status_t status; /*!< Indicate scan stop operation success status */
|
||||
} scan_stop_cmpl; /*!< Event parameter of ESP_GAP_BLE_SCAN_STOP_COMPLETE_EVT */
|
||||
/**
|
||||
* @brief ESP_GAP_BLE_ADV_STOP_COMPLETE_EVT
|
||||
*/
|
||||
struct ble_adv_stop_cmpl_evt_param {
|
||||
esp_bt_status_t status; /*!< Indicate adv stop operation success status */
|
||||
} adv_stop_cmpl; /*!< Event parameter of ESP_GAP_BLE_ADV_STOP_COMPLETE_EVT */
|
||||
} esp_ble_gap_cb_param_t;
|
||||
|
||||
/**
|
||||
@ -505,6 +690,76 @@ esp_err_t esp_ble_gap_config_adv_data_raw(uint8_t *raw_data, uint32_t raw_data_l
|
||||
*/
|
||||
esp_err_t esp_ble_gap_config_scan_rsp_data_raw(uint8_t *raw_data, uint32_t raw_data_len);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Set a GAP security parameter value. Overrides the default value.
|
||||
*
|
||||
* @param[in] param_type :L the type of the param which to be set
|
||||
* @param[in] value : the param value
|
||||
* @param[out] len : the length of the param value
|
||||
*
|
||||
* @return - ESP_OK : success
|
||||
* - other : failed
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_ble_gap_set_security_param(esp_ble_sm_param_t param_type,
|
||||
void *value, uint8_t len);
|
||||
|
||||
/**
|
||||
* @brief Grant security request access.
|
||||
*
|
||||
* @param[in] bd_addr : BD address of the peer
|
||||
* @param[in] accept : accept the security request or not
|
||||
*
|
||||
* @return - ESP_OK : success
|
||||
* - other : failed
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_ble_gap_security_rsp(esp_bd_addr_t bd_addr, bool accept);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Set a gap parameter value. Use this function to change
|
||||
* the default GAP parameter values.
|
||||
*
|
||||
* @param[in] bd_addr : the address of the peer device need to encryption
|
||||
* @param[in] sec_act : This is the security action to indicate
|
||||
* what kind of BLE security level is required for
|
||||
* the BLE link if the BLE is supported
|
||||
*
|
||||
* @return - ESP_OK : success
|
||||
* - other : failed
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_ble_set_encryption(esp_bd_addr_t bd_addr, esp_ble_sec_act_t sec_act);
|
||||
|
||||
/**
|
||||
* @brief Reply the key value to the peer device in the lagecy connection stage.
|
||||
*
|
||||
* @param[in] bd_addr : BD address of the peer
|
||||
* @param[in] accept : passkey entry sucessful or declined.
|
||||
* @param[in] passkey : passkey value, must be a 6 digit number,
|
||||
* can be lead by 0.
|
||||
*
|
||||
* @return - ESP_OK : success
|
||||
* - other : failed
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_ble_passkey_reply(esp_bd_addr_t bd_addr, bool accept, uint32_t passkey);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Reply the comfirm value to the peer device in the lagecy connection stage.
|
||||
*
|
||||
* @param[in] bd_addr : BD address of the peer device
|
||||
* @param[in] accept : numbers to compare are the same or different.
|
||||
*
|
||||
* @return - ESP_OK : success
|
||||
* - other : failed
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_ble_confirm_reply(esp_bd_addr_t bd_addr, bool accept);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
52
tools/sdk/include/bluedroid/esp_gap_bt_api.h
Normal file
52
tools/sdk/include/bluedroid/esp_gap_bt_api.h
Normal file
@ -0,0 +1,52 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef __ESP_GAP_BT_API_H__
|
||||
#define __ESP_GAP_BT_API_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include "esp_err.h"
|
||||
#include "esp_bt_defs.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/// Discoverability and Connectability mode
|
||||
typedef enum {
|
||||
ESP_BT_SCAN_MODE_NONE = 0, /*!< Neither discoverable nor connectable */
|
||||
ESP_BT_SCAN_MODE_CONNECTABLE, /*!< Connectable but not discoverable */
|
||||
ESP_BT_SCAN_MODE_CONNECTABLE_DISCOVERABLE /*!< both discoverable and connectaable */
|
||||
} esp_bt_scan_mode_t;
|
||||
|
||||
/**
|
||||
* @brief Set discoverability and connectability mode for legacy bluetooth. This function should
|
||||
* be called after esp_bluedroid_enable() completes successfully
|
||||
*
|
||||
* @param[in] mode : one of the enums of bt_scan_mode_t
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK : Succeed
|
||||
* - ESP_ERR_INVALID_ARG: if argument invalid
|
||||
* - ESP_INVALID_STATE: if bluetooth stack is not yet enabled
|
||||
* - ESP_FAIL: others
|
||||
*/
|
||||
esp_err_t esp_bt_gap_set_scan_mode(esp_bt_scan_mode_t mode);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ESP_GAP_BT_API_H__ */
|
@ -297,13 +297,17 @@ typedef enum {
|
||||
|
||||
|
||||
/**
|
||||
* @brief attribute auto respose flag
|
||||
* @brief attribute auto response flag
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
#define ESP_GATT_RSP_BY_APP 0
|
||||
#define ESP_GATT_AUTO_RSP 1
|
||||
uint8_t auto_rsp; /*!< need the app response to the client if need_rsp set to 1*/
|
||||
/**
|
||||
* @brief if auto_rsp set to ESP_GATT_RSP_BY_APP, means the response of Write/Read operation will by replied by application.
|
||||
if auto_rsp set to ESP_GATT_AUTO_RSP, means the response of Write/Read operation will be replied by GATT stack automatically.
|
||||
*/
|
||||
uint8_t auto_rsp;
|
||||
} esp_attr_control_t;
|
||||
|
||||
|
||||
@ -312,8 +316,8 @@ typedef struct
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
esp_attr_control_t attr_control; /*!< The attribue control type*/
|
||||
esp_attr_desc_t att_desc; /*!< The attribue type*/
|
||||
esp_attr_control_t attr_control; /*!< The attribute control type*/
|
||||
esp_attr_desc_t att_desc; /*!< The attribute type*/
|
||||
} esp_gatts_attr_db_t;
|
||||
|
||||
|
||||
|
@ -510,15 +510,15 @@ esp_err_t esp_ble_gattc_write_char( esp_gatt_if_t gattc_if,
|
||||
* - other: failed
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_ble_gattc_write_char_descr (esp_gatt_if_t gattc_if,
|
||||
uint16_t conn_id,
|
||||
esp_gatt_srvc_id_t *srvc_id,
|
||||
esp_gatt_id_t *char_id,
|
||||
esp_gatt_id_t *descr_id,
|
||||
uint16_t value_len,
|
||||
uint8_t *value,
|
||||
esp_gatt_write_type_t write_type,
|
||||
esp_gatt_auth_req_t auth_req);
|
||||
esp_err_t esp_ble_gattc_write_char_descr (esp_gatt_if_t gattc_if,
|
||||
uint16_t conn_id,
|
||||
esp_gatt_srvc_id_t *srvc_id,
|
||||
esp_gatt_id_t *char_id,
|
||||
esp_gatt_id_t *descr_id,
|
||||
uint16_t value_len,
|
||||
uint8_t *value,
|
||||
esp_gatt_write_type_t write_type,
|
||||
esp_gatt_auth_req_t auth_req);
|
||||
|
||||
|
||||
/**
|
||||
@ -548,6 +548,35 @@ esp_err_t esp_ble_gattc_prepare_write(esp_gatt_if_t gattc_if,
|
||||
esp_gatt_auth_req_t auth_req);
|
||||
|
||||
|
||||
/**
|
||||
* @brief This function is called to prepare write a characteristic descriptor value.
|
||||
*
|
||||
* @param[in] gattc_if: Gatt client access interface.
|
||||
* @param[in] conn_id : connection ID.
|
||||
* @param[in] srvc_id : service ID.
|
||||
* @param[in] char_id : GATT characteristic ID of the service.
|
||||
* @param[in] descr_id : characteristic descriptor ID to write.
|
||||
* @param[in] offset : offset of the write value.
|
||||
* @param[in] value_len: length of the value to be written.
|
||||
* @param[in] value : the value to be written.
|
||||
* @param[in] auth_req : authentication request.
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK: success
|
||||
* - other: failed
|
||||
*
|
||||
*/
|
||||
esp_err_t esp_ble_gattc_prepare_write_char_descr(esp_gatt_if_t gattc_if,
|
||||
uint16_t conn_id,
|
||||
esp_gatt_srvc_id_t *srvc_id,
|
||||
esp_gatt_id_t *char_id,
|
||||
esp_gatt_id_t *descr_id,
|
||||
uint16_t offset,
|
||||
uint16_t value_len,
|
||||
uint8_t *value,
|
||||
esp_gatt_auth_req_t auth_req);
|
||||
|
||||
|
||||
/**
|
||||
* @brief This function is called to execute write a prepare write sequence.
|
||||
*
|
||||
|
79
tools/sdk/include/bluedroid/esp_sec_api.h
Normal file
79
tools/sdk/include/bluedroid/esp_sec_api.h
Normal file
@ -0,0 +1,79 @@
|
||||
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#ifndef __ESP_SEC_API_H__
|
||||
#define __ESP_SEC_API_H__
|
||||
|
||||
#include "bt_types.h"
|
||||
|
||||
#define APP_SEC_IRK_FLAG (0)
|
||||
#define RAND_NB_LEN 0x08
|
||||
#define SEC_KEY_LEN 0x10
|
||||
|
||||
/*
|
||||
* STRUCTURES DEFINITIONS
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
/// Generic Security key structure
|
||||
typedef struct {
|
||||
/// Key value MSB -> LSB
|
||||
UINT8 key[SEC_KEY_LEN];
|
||||
} smp_sec_key;
|
||||
|
||||
///Random number structure
|
||||
typedef struct {
|
||||
///8-byte array for random number
|
||||
UINT8 nb[RAND_NB_LEN];
|
||||
} rand_nb;
|
||||
|
||||
typedef struct {
|
||||
// LTK
|
||||
smp_sec_key ltk;
|
||||
// Random Number
|
||||
rand_nb rand_nb;
|
||||
// EDIV
|
||||
UINT16 ediv;
|
||||
// LTK key size
|
||||
UINT8 key_size;
|
||||
|
||||
// Last paired peer address type
|
||||
UINT8 peer_addr_type;
|
||||
// Last paired peer address
|
||||
BD_ADDR peer_addr;
|
||||
|
||||
// authentication level
|
||||
UINT8 auth;
|
||||
|
||||
} tAPP_SEC_ENV;
|
||||
|
||||
extern tAPP_SEC_ENV app_sec_env;
|
||||
|
||||
/*
|
||||
* GLOBAL FUNCTIONS DECLARATIONS
|
||||
****************************************************************************************
|
||||
*/
|
||||
|
||||
void app_ble_sec_init(void);
|
||||
|
||||
void app_ble_sec_pairing_cmp_evt_send(UINT8);
|
||||
|
||||
UINT32 app_ble_sec_gen_tk(void);
|
||||
|
||||
void app_ble_sec_gen_ltk(UINT8 key_size);
|
||||
|
||||
void app_ble_security_start(void);
|
||||
|
||||
#endif /* __ESP_SEC_API_H__ */
|
0
tools/sdk/include/bluedroid/fixed_queue.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/fixed_queue.h
Executable file → Normal file
@ -49,4 +49,6 @@ void future_ready(future_t *future, void *value);
|
||||
// Frees the future before return. |future| may not be NULL.
|
||||
void *future_await(future_t *async_result);
|
||||
|
||||
//Free the future if this "future" is not used
|
||||
void future_free(future_t *future);
|
||||
#endif /* __FUTURE_H__ */
|
||||
|
@ -127,15 +127,15 @@ typedef struct {
|
||||
tGAP_INFO blk[GAP_MAX_BLOCKS];
|
||||
tBTM_CMPL_CB *btm_cback[GAP_MAX_BLOCKS];
|
||||
UINT8 trace_level;
|
||||
tGAP_FINDADDR_CB findaddr_cb; /* Contains the control block for finding a device addr */
|
||||
tBTM_INQ_INFO *cur_inqptr;
|
||||
//tGAP_FINDADDR_CB findaddr_cb; /* Contains the control block for finding a device addr */
|
||||
//tBTM_INQ_INFO *cur_inqptr;
|
||||
|
||||
#if GAP_CONN_INCLUDED == TRUE
|
||||
tGAP_CONN conn;
|
||||
#endif
|
||||
|
||||
/* LE GAP attribute database */
|
||||
#if BLE_INCLUDED == TRUE
|
||||
#if BLE_INCLUDED == TRUE && GATTS_INCLUDED == TRUE
|
||||
tGAP_ATTR gatt_attr[GAP_MAX_CHAR_NUM];
|
||||
tGAP_CLCB clcb[GAP_MAX_CL]; /* connection link*/
|
||||
tGATT_IF gatt_if;
|
||||
@ -147,7 +147,7 @@ extern tGAP_CB gap_cb;
|
||||
#if (GAP_CONN_INCLUDED == TRUE)
|
||||
extern void gap_conn_init(void);
|
||||
#endif
|
||||
#if (BLE_INCLUDED == TRUE)
|
||||
#if (BLE_INCLUDED == TRUE && GATTS_INCLUDED == TRUE)
|
||||
extern void gap_attr_db_init(void);
|
||||
#endif
|
||||
|
||||
|
@ -326,6 +326,10 @@ typedef struct{
|
||||
uint8_t auto_rsp;
|
||||
}tGATTS_ATTR_CONTROL;
|
||||
|
||||
/* Mask for gatt server attribute */
|
||||
#define GATT_ATTR_VALUE_ALLOCATED 0x01
|
||||
typedef UINT8 tGATT_ATTR_MASK;
|
||||
|
||||
/* Union of the event data which is used in the server respond API to carry the server response information
|
||||
*/
|
||||
typedef union {
|
||||
|
@ -185,6 +185,7 @@ typedef struct {
|
||||
tGATT_ATTR_UUID_TYPE uuid_type;
|
||||
tGATT_PERM permission;
|
||||
tGATTS_ATTR_CONTROL control;
|
||||
tGATT_ATTR_MASK mask;
|
||||
UINT16 handle;
|
||||
UINT16 uuid;
|
||||
} tGATT_ATTR16;
|
||||
@ -197,6 +198,7 @@ typedef struct {
|
||||
tGATT_ATTR_UUID_TYPE uuid_type;
|
||||
tGATT_PERM permission;
|
||||
tGATTS_ATTR_CONTROL control;
|
||||
tGATT_ATTR_MASK mask;
|
||||
UINT16 handle;
|
||||
UINT32 uuid;
|
||||
} tGATT_ATTR32;
|
||||
@ -210,6 +212,7 @@ typedef struct {
|
||||
tGATT_ATTR_UUID_TYPE uuid_type;
|
||||
tGATT_PERM permission;
|
||||
tGATTS_ATTR_CONTROL control;
|
||||
tGATT_ATTR_MASK mask;
|
||||
UINT16 handle;
|
||||
UINT8 uuid[LEN_UUID_128];
|
||||
} tGATT_ATTR128;
|
||||
@ -382,7 +385,9 @@ typedef struct {
|
||||
|
||||
/* server needs */
|
||||
/* server response data */
|
||||
#if (GATTS_INCLUDED == TRUE)
|
||||
tGATT_SR_CMD sr_cmd;
|
||||
#endif ///GATTS_INCLUDED == TRUE
|
||||
UINT16 indicate_handle;
|
||||
BUFFER_Q pending_ind_q;
|
||||
|
||||
@ -499,11 +504,12 @@ typedef struct {
|
||||
UINT16 next_handle; /* next available handle */
|
||||
tGATT_SVC_CHG gattp_attr; /* GATT profile attribute service change */
|
||||
tGATT_IF gatt_if;
|
||||
#if (GATTS_INCLUDED == TRUE)
|
||||
tGATT_HDL_LIST_INFO hdl_list_info;
|
||||
tGATT_HDL_LIST_ELEM hdl_list[GATT_MAX_SR_PROFILES];
|
||||
tGATT_SRV_LIST_INFO srv_list_info;
|
||||
tGATT_SRV_LIST_ELEM srv_list[GATT_MAX_SR_PROFILES];
|
||||
|
||||
#endif ///GATTS_INCLUDED == TRUE
|
||||
BUFFER_Q srv_chg_clt_q; /* service change clients queue */
|
||||
BUFFER_Q pending_new_srv_start_q; /* pending new service start queue */
|
||||
tGATT_REG cl_rcb[GATT_MAX_APPS];
|
||||
@ -518,8 +524,9 @@ typedef struct {
|
||||
UINT8 err_status;
|
||||
UINT16 handle;
|
||||
#endif
|
||||
|
||||
#if (GATTS_INCLUDED == TRUE)
|
||||
tGATT_PROFILE_CLCB profile_clcb[GATT_MAX_APPS];
|
||||
#endif ///GATTS_INCLUDED == TRUE
|
||||
UINT16 handle_of_h_r; /* Handle of the handles reused characteristic value */
|
||||
|
||||
tGATT_APPL_INFO cb_info;
|
||||
@ -586,7 +593,9 @@ extern tGATT_STATUS attp_send_msg_to_l2cap(tGATT_TCB *p_tcb, BT_HDR *p_toL2CAP);
|
||||
|
||||
/* utility functions */
|
||||
extern UINT8 *gatt_dbg_op_name(UINT8 op_code);
|
||||
#if (SDP_INCLUDED == TRUE)
|
||||
extern UINT32 gatt_add_sdp_record (tBT_UUID *p_uuid, UINT16 start_hdl, UINT16 end_hdl);
|
||||
#endif ///SDP_INCLUDED == TRUE
|
||||
extern BOOLEAN gatt_parse_uuid_from_cmd(tBT_UUID *p_uuid, UINT16 len, UINT8 **p_data);
|
||||
extern UINT8 gatt_build_uuid_to_stream(UINT8 **p_dst, tBT_UUID uuid);
|
||||
extern BOOLEAN gatt_uuid_compare(tBT_UUID src, tBT_UUID tar);
|
||||
@ -621,6 +630,7 @@ extern tGATT_HDL_LIST_ELEM *gatt_find_hdl_buffer_by_handle(UINT16 handle);
|
||||
extern tGATT_HDL_LIST_ELEM *gatt_find_hdl_buffer_by_attr_handle(UINT16 attr_handle);
|
||||
extern tGATT_HDL_LIST_ELEM *gatt_alloc_hdl_buffer(void);
|
||||
extern void gatt_free_hdl_buffer(tGATT_HDL_LIST_ELEM *p);
|
||||
extern void gatt_free_attr_value_buffer(tGATT_HDL_LIST_ELEM *p);
|
||||
extern BOOLEAN gatt_is_last_attribute(tGATT_SRV_LIST_INFO *p_list, tGATT_SRV_LIST_ELEM *p_start, tBT_UUID value);
|
||||
extern void gatt_update_last_pri_srv_info(tGATT_SRV_LIST_INFO *p_list);
|
||||
extern BOOLEAN gatt_add_a_srv_to_list(tGATT_SRV_LIST_INFO *p_list, tGATT_SRV_LIST_ELEM *p_new);
|
||||
|
0
tools/sdk/include/bluedroid/gki_target.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/gki_target.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/hash_functions.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/hash_functions.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/hci_internals.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/hci_internals.h
Executable file → Normal file
69
tools/sdk/include/bluedroid/hid_conn.h
Normal file
69
tools/sdk/include/bluedroid/hid_conn.h
Normal file
@ -0,0 +1,69 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2002-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* This file contains HID connection internal definitions
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef HID_CONN_H
|
||||
#define HID_CONN_H
|
||||
|
||||
#if (HID_HOST_INCLUDED == TRUE)
|
||||
/* Define the HID Connection Block
|
||||
*/
|
||||
typedef struct hid_conn {
|
||||
#define HID_CONN_STATE_UNUSED (0)
|
||||
#define HID_CONN_STATE_CONNECTING_CTRL (1)
|
||||
#define HID_CONN_STATE_CONNECTING_INTR (2)
|
||||
#define HID_CONN_STATE_CONFIG (3)
|
||||
#define HID_CONN_STATE_CONNECTED (4)
|
||||
#define HID_CONN_STATE_DISCONNECTING (5)
|
||||
#define HID_CONN_STATE_SECURITY (6)
|
||||
|
||||
UINT8 conn_state;
|
||||
|
||||
#define HID_CONN_FLAGS_IS_ORIG (0x01)
|
||||
#define HID_CONN_FLAGS_HIS_CTRL_CFG_DONE (0x02)
|
||||
#define HID_CONN_FLAGS_MY_CTRL_CFG_DONE (0x04)
|
||||
#define HID_CONN_FLAGS_HIS_INTR_CFG_DONE (0x08)
|
||||
#define HID_CONN_FLAGS_MY_INTR_CFG_DONE (0x10)
|
||||
#define HID_CONN_FLAGS_ALL_CONFIGURED (0x1E) /* All the config done */
|
||||
#define HID_CONN_FLAGS_CONGESTED (0x20)
|
||||
#define HID_CONN_FLAGS_INACTIVE (0x40)
|
||||
|
||||
UINT8 conn_flags;
|
||||
|
||||
UINT8 ctrl_id;
|
||||
UINT16 ctrl_cid;
|
||||
UINT16 intr_cid;
|
||||
UINT16 rem_mtu_size;
|
||||
UINT16 disc_reason; /* Reason for disconnecting (for HID_HDEV_EVT_CLOSE) */
|
||||
TIMER_LIST_ENT timer_entry;
|
||||
|
||||
} tHID_CONN;
|
||||
|
||||
#define HID_SEC_CHN 1
|
||||
#define HID_NOSEC_CHN 2
|
||||
|
||||
#define HIDD_SEC_CHN 3
|
||||
#define HIDD_NOSEC_CHN 4
|
||||
|
||||
#endif ///HID_HOST_INCLUDED == TRUE
|
||||
#endif
|
@ -24,8 +24,12 @@
|
||||
|
||||
#ifndef HIDDEFS_H
|
||||
#define HIDDEFS_H
|
||||
#include "bt_target.h"
|
||||
#if (HID_HOST_INCLUDED == TRUE)
|
||||
|
||||
#if (SDP_INCLUDED == TRUE)
|
||||
#include "sdp_api.h"
|
||||
#endif ///SDP_INCLUDED == TRUE
|
||||
/*
|
||||
** tHID_STATUS: HID result codes, returned by HID and device and host functions.
|
||||
*/
|
||||
@ -149,8 +153,11 @@ typedef struct sdp_info {
|
||||
|
||||
tHID_DEV_DSCP_INFO dscp_info; /* Descriptor list and Report list to be set in the SDP record.
|
||||
This parameter is used if HID_DEV_USE_GLB_SDP_REC is set to FALSE.*/
|
||||
#if(SDP_INCLUDED == TRUE)
|
||||
tSDP_DISC_REC *p_sdp_layer_rec;
|
||||
#endif ///SDP_INCLUDED == TRUE
|
||||
} tHID_DEV_SDP_INFO;
|
||||
|
||||
#endif ///HID_HOST_INCLUDED == TRUE
|
||||
#endif
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "hiddefs.h"
|
||||
#include "sdp_api.h"
|
||||
|
||||
#if (HID_HOST_INCLUDED == TRUE)
|
||||
/*****************************************************************************
|
||||
** Constants
|
||||
*****************************************************************************/
|
||||
@ -232,4 +233,6 @@ extern UINT8 HID_HostSetTraceLevel (UINT8 new_level);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif ///HID_HOST_INCLUDED == TRUE
|
||||
|
||||
#endif /* HIDH_API_H */
|
||||
|
95
tools/sdk/include/bluedroid/hidh_int.h
Normal file
95
tools/sdk/include/bluedroid/hidh_int.h
Normal file
@ -0,0 +1,95 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2002-2012 Broadcom Corporation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* This file contains HID HOST internal definitions
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef HIDH_INT_H
|
||||
#define HIDH_INT_H
|
||||
|
||||
#include "hidh_api.h"
|
||||
#include "hid_conn.h"
|
||||
#include "l2c_api.h"
|
||||
|
||||
#if (HID_HOST_INCLUDED == TRUE)
|
||||
|
||||
enum {
|
||||
HID_DEV_NO_CONN,
|
||||
HID_DEV_CONNECTED
|
||||
};
|
||||
|
||||
typedef struct per_device_ctb {
|
||||
BOOLEAN in_use;
|
||||
BD_ADDR addr; /* BD-Addr of the host device */
|
||||
UINT16 attr_mask; /* 0x01- virtual_cable; 0x02- normally_connectable; 0x03- reconn_initiate;
|
||||
0x04- sdp_disable; */
|
||||
UINT8 state; /* Device state if in HOST-KNOWN mode */
|
||||
UINT8 conn_substate;
|
||||
UINT8 conn_tries; /* Remembers to the number of connection attempts while CONNECTING */
|
||||
|
||||
tHID_CONN conn; /* L2CAP channel info */
|
||||
} tHID_HOST_DEV_CTB;
|
||||
|
||||
typedef struct host_ctb {
|
||||
tHID_HOST_DEV_CTB devices[HID_HOST_MAX_DEVICES];
|
||||
tHID_HOST_DEV_CALLBACK *callback; /* Application callbacks */
|
||||
tL2CAP_CFG_INFO l2cap_cfg;
|
||||
|
||||
#define MAX_SERVICE_DB_SIZE 4000
|
||||
|
||||
BOOLEAN sdp_busy;
|
||||
tHID_HOST_SDP_CALLBACK *sdp_cback;
|
||||
tSDP_DISCOVERY_DB *p_sdp_db;
|
||||
tHID_DEV_SDP_INFO sdp_rec;
|
||||
BOOLEAN reg_flag;
|
||||
UINT8 trace_level;
|
||||
} tHID_HOST_CTB;
|
||||
|
||||
extern tHID_STATUS hidh_conn_snd_data(UINT8 dhandle, UINT8 trans_type, UINT8 param, \
|
||||
UINT16 data, UINT8 rpt_id, BT_HDR *buf);
|
||||
extern tHID_STATUS hidh_conn_reg (void);
|
||||
extern void hidh_conn_dereg( void );
|
||||
extern tHID_STATUS hidh_conn_disconnect (UINT8 dhandle);
|
||||
extern tHID_STATUS hidh_conn_initiate (UINT8 dhandle);
|
||||
extern void hidh_proc_repage_timeout (TIMER_LIST_ENT *p_tle);
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/******************************************************************************
|
||||
** Main Control Block
|
||||
*******************************************************************************/
|
||||
#if HID_DYNAMIC_MEMORY == FALSE
|
||||
extern tHID_HOST_CTB hh_cb;
|
||||
#else
|
||||
extern tHID_HOST_CTB *hidh_cb_ptr;
|
||||
#define hh_cb (*hidh_cb_ptr)
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif ///HID_HOST_INCLUDED == TRUE
|
||||
|
||||
#endif
|
@ -21,6 +21,7 @@
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "bt_defs.h"
|
||||
#include "bt_target.h"
|
||||
|
||||
typedef enum {
|
||||
// Disable secure connections
|
||||
|
@ -331,6 +331,7 @@ extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#if (CLASSIC_BT_INCLUDED == TRUE)
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function L2CA_Register
|
||||
@ -483,6 +484,8 @@ extern BOOLEAN L2CA_DisconnectReq (UINT16 cid);
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern BOOLEAN L2CA_DisconnectRsp (UINT16 cid);
|
||||
#endif ///CLASSIC_BT_INCLUDED == TRUE
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@ -497,6 +500,8 @@ extern BOOLEAN L2CA_DisconnectRsp (UINT16 cid);
|
||||
*******************************************************************************/
|
||||
extern UINT8 L2CA_DataWrite (UINT16 cid, BT_HDR *p_data);
|
||||
|
||||
#if (CLASSIC_BT_INCLUDED == TRUE)
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function L2CA_Ping
|
||||
@ -519,6 +524,8 @@ extern BOOLEAN L2CA_Ping (BD_ADDR p_bd_addr, tL2CA_ECHO_RSP_CB *p_cb);
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern BOOLEAN L2CA_Echo (BD_ADDR p_bd_addr, BT_HDR *p_data, tL2CA_ECHO_DATA_CB *p_callback);
|
||||
#endif ///CLASSIC_BT_INCLUDED == TRUE
|
||||
|
||||
|
||||
// Given a local channel identifier, |lcid|, this function returns the bound remote
|
||||
// channel identifier, |rcid|, and the ACL link handle, |handle|. If |lcid| is not
|
||||
@ -544,6 +551,7 @@ bool L2CA_GetIdentifiers(uint16_t lcid, uint16_t *rcid, uint16_t *handle);
|
||||
extern BOOLEAN L2CA_SetIdleTimeout (UINT16 cid, UINT16 timeout,
|
||||
BOOLEAN is_global);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function L2CA_SetIdleTimeoutByBdAddr
|
||||
@ -566,6 +574,7 @@ extern BOOLEAN L2CA_SetIdleTimeout (UINT16 cid, UINT16 timeout,
|
||||
extern BOOLEAN L2CA_SetIdleTimeoutByBdAddr(BD_ADDR bd_addr, UINT16 timeout,
|
||||
tBT_TRANSPORT transport);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function L2CA_SetTraceLevel
|
||||
@ -578,6 +587,7 @@ extern BOOLEAN L2CA_SetIdleTimeoutByBdAddr(BD_ADDR bd_addr, UINT16 timeout,
|
||||
*******************************************************************************/
|
||||
extern UINT8 L2CA_SetTraceLevel (UINT8 trace_level);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function L2CA_SetDesireRole
|
||||
@ -595,7 +605,7 @@ extern UINT8 L2CA_SetTraceLevel (UINT8 trace_level);
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern UINT8 L2CA_SetDesireRole (UINT8 new_role);
|
||||
|
||||
#if (CLASSIC_BT_INCLUDED == TRUE)
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function L2CA_LocalLoopbackReq
|
||||
@ -722,6 +732,7 @@ typedef void (tL2CA_RESERVE_CMPL_CBACK) (void);
|
||||
** ACL link.
|
||||
*******************************************************************************/
|
||||
extern BOOLEAN L2CA_SetFlushTimeout (BD_ADDR bd_addr, UINT16 flush_tout);
|
||||
#endif ///CLASSIC_BT_INCLUDED == TRUE
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@ -780,6 +791,8 @@ extern BOOLEAN L2CA_GetPeerFeatures (BD_ADDR bd_addr, UINT32 *p_ext_feat, UINT8
|
||||
*******************************************************************************/
|
||||
extern BOOLEAN L2CA_GetBDAddrbyHandle (UINT16 handle, BD_ADDR bd_addr);
|
||||
|
||||
#if (CLASSIC_BT_INCLUDED == TRUE)
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function L2CA_GetChnlFcrMode
|
||||
@ -792,6 +805,7 @@ extern BOOLEAN L2CA_GetBDAddrbyHandle (UINT16 handle, BD_ADDR bd_addr);
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern UINT8 L2CA_GetChnlFcrMode (UINT16 lcid);
|
||||
#endif ///CLASSIC_BT_INCLUDED == TRUE
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@ -1044,6 +1058,7 @@ extern BOOLEAN L2CA_SetFixedChannelTout (BD_ADDR rem_bda, UINT16 fixed_cid, UINT
|
||||
|
||||
#endif /* (L2CAP_NUM_FIXED_CHNLS > 0) */
|
||||
|
||||
#if (CLASSIC_BT_INCLUDED == TRUE)
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function L2CA_GetCurrentConfig
|
||||
@ -1060,6 +1075,8 @@ extern BOOLEAN L2CA_SetFixedChannelTout (BD_ADDR rem_bda, UINT16 fixed_cid, UINT
|
||||
extern BOOLEAN L2CA_GetCurrentConfig (UINT16 lcid,
|
||||
tL2CAP_CFG_INFO **pp_our_cfg, tL2CAP_CH_CFG_BITS *p_our_cfg_bits,
|
||||
tL2CAP_CFG_INFO **pp_peer_cfg, tL2CAP_CH_CFG_BITS *p_peer_cfg_bits);
|
||||
#endif ///CLASSIC_BT_INCLUDED == TRUE
|
||||
|
||||
|
||||
#if (BLE_INCLUDED == TRUE)
|
||||
/*******************************************************************************
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#ifndef _L2CAP_CLIENT_H_
|
||||
#define _L2CAP_CLIENT_H_
|
||||
#if (defined(L2CAP_CLIENT_INCLUDED) && L2CAP_CLIENT_INCLUDED == TRUE)
|
||||
|
||||
//#include <hardware/bluetooth.h>
|
||||
#include <stdbool.h>
|
||||
@ -74,4 +75,6 @@ bool l2cap_client_is_connected(const l2cap_client_t *client);
|
||||
// |client| nor |packet| may be NULL.
|
||||
bool l2cap_client_write(l2cap_client_t *client, buffer_t *packet);
|
||||
|
||||
#endif ///(defined(L2CAP_CLIENT_INCLUDED) && L2CAP_CLIENT_INCLUDED == TRUE)
|
||||
|
||||
#endif /*_L2CAP_CLIENT_H_*/
|
||||
|
0
tools/sdk/include/bluedroid/list.h
Executable file → Normal file
0
tools/sdk/include/bluedroid/list.h
Executable file → Normal file
86
tools/sdk/include/bluedroid/oi_assert.h
Normal file
86
tools/sdk/include/bluedroid/oi_assert.h
Normal file
@ -0,0 +1,86 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
* Copyright 2002 - 2004 Open Interface North America, Inc. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _OI_ASSERT_H
|
||||
#define _OI_ASSERT_H
|
||||
/** @file
|
||||
This file provides macros and functions for compile-time and run-time assertions.
|
||||
|
||||
When the OI_DEBUG preprocessor value is defined, the macro OI_ASSERT is compiled into
|
||||
the program, providing for a runtime assertion failure check.
|
||||
C_ASSERT is a macro that can be used to perform compile time checks.
|
||||
*/
|
||||
/**********************************************************************************
|
||||
$Revision: #1 $
|
||||
***********************************************************************************/
|
||||
|
||||
|
||||
/** \addtogroup Debugging Debugging APIs */
|
||||
/**@{*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef OI_DEBUG
|
||||
|
||||
/** The macro OI_ASSERT takes a condition argument. If the asserted condition
|
||||
does not evaluate to true, the OI_ASSERT macro calls the host-dependent function,
|
||||
OI_AssertFail(), which reports the failure and generates a runtime error.
|
||||
*/
|
||||
void OI_AssertFail(char *file, int line, char *reason);
|
||||
|
||||
|
||||
#define OI_ASSERT(condition) \
|
||||
{ if (!(condition)) OI_AssertFail(__FILE__, __LINE__, #condition); }
|
||||
|
||||
#define OI_ASSERT_FAIL(msg) \
|
||||
{ OI_AssertFail(__FILE__, __LINE__, msg); }
|
||||
|
||||
#else
|
||||
|
||||
|
||||
#define OI_ASSERT(condition)
|
||||
#define OI_ASSERT_FAIL(msg)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
C_ASSERT() can be used to perform many compile-time assertions: type sizes, field offsets, etc.
|
||||
An assertion failure results in compile time error C2118: negative subscript.
|
||||
Unfortunately, this elegant macro doesn't work with GCC, so it's all commented out
|
||||
for now. Perhaps later.....
|
||||
*/
|
||||
|
||||
#ifndef C_ASSERT
|
||||
// #define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
|
||||
// #define C_ASSERT(e)
|
||||
#endif
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/**@}*/
|
||||
|
||||
#endif /* _OI_ASSERT_H */
|
||||
|
123
tools/sdk/include/bluedroid/oi_bitstream.h
Normal file
123
tools/sdk/include/bluedroid/oi_bitstream.h
Normal file
@ -0,0 +1,123 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
* Copyright 2003 - 2004 Open Interface North America, Inc. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _OI_BITSTREAM_H
|
||||
#define _OI_BITSTREAM_H
|
||||
|
||||
/**********************************************************************************
|
||||
$Revision: #1 $
|
||||
***********************************************************************************/
|
||||
|
||||
|
||||
/**
|
||||
@file
|
||||
Function prototypes and macro definitions for manipulating input and output
|
||||
bitstreams.
|
||||
|
||||
@ingroup codec_internal
|
||||
*/
|
||||
|
||||
/**
|
||||
@addtogroup codec_internal
|
||||
@{
|
||||
*/
|
||||
|
||||
#include "oi_codec_sbc_private.h"
|
||||
#include "oi_stddefs.h"
|
||||
|
||||
INLINE void OI_BITSTREAM_ReadInit(OI_BITSTREAM *bs, const OI_BYTE *buffer);
|
||||
|
||||
INLINE void OI_BITSTREAM_WriteInit(OI_BITSTREAM *bs, OI_BYTE *buffer);
|
||||
|
||||
INLINE OI_UINT32 OI_BITSTREAM_ReadUINT(OI_BITSTREAM *bs, OI_UINT bits);
|
||||
|
||||
INLINE OI_UINT8 OI_BITSTREAM_ReadUINT4Aligned(OI_BITSTREAM *bs);
|
||||
|
||||
INLINE OI_UINT8 OI_BITSTREAM_ReadUINT8Aligned(OI_BITSTREAM *bs);
|
||||
|
||||
INLINE void OI_BITSTREAM_WriteUINT(OI_BITSTREAM *bs,
|
||||
OI_UINT16 value,
|
||||
OI_UINT bits);
|
||||
|
||||
/*
|
||||
* Use knowledge that the bitstream is aligned to optimize the write of a byte
|
||||
*/
|
||||
PRIVATE void OI_BITSTREAM_WriteUINT8Aligned(OI_BITSTREAM *bs,
|
||||
OI_UINT8 datum);
|
||||
|
||||
/*
|
||||
* Use knowledge that the bitstream is aligned to optimize the write pair of nibbles
|
||||
*/
|
||||
PRIVATE void OI_BITSTREAM_Write2xUINT4Aligned(OI_BITSTREAM *bs,
|
||||
OI_UINT8 datum1,
|
||||
OI_UINT8 datum2);
|
||||
|
||||
/** Internally the bitstream looks ahead in the stream. When
|
||||
* OI_SBC_ReadScalefactors() goes to temporarily break the abstraction, it will
|
||||
* need to know where the "logical" pointer is in the stream.
|
||||
*/
|
||||
#define OI_BITSTREAM_GetWritePtr(bs) ((bs)->ptr.w - 3)
|
||||
#define OI_BITSTREAM_GetReadPtr(bs) ((bs)->ptr.r - 3)
|
||||
|
||||
/** This is declared here as a macro because decoder.c breaks the bitsream
|
||||
* encapsulation for efficiency reasons.
|
||||
*/
|
||||
#define OI_BITSTREAM_READUINT(result, bits, ptr, value, bitPtr) \
|
||||
do { \
|
||||
OI_ASSERT((bits) <= 16); \
|
||||
OI_ASSERT((bitPtr) < 16); \
|
||||
OI_ASSERT((bitPtr) >= 8); \
|
||||
\
|
||||
result = (value) << (bitPtr); \
|
||||
result >>= 32 - (bits); \
|
||||
\
|
||||
bitPtr += (bits); \
|
||||
while (bitPtr >= 16) { \
|
||||
value = ((value) << 8) | *ptr++; \
|
||||
bitPtr -= 8; \
|
||||
} \
|
||||
OI_ASSERT((bits == 0) || (result < (1u << (bits)))); \
|
||||
} while (0)
|
||||
|
||||
|
||||
#define OI_BITSTREAM_WRITEUINT(ptr, value, bitPtr, datum, bits) \
|
||||
do {\
|
||||
bitPtr -= bits;\
|
||||
value |= datum << bitPtr;\
|
||||
\
|
||||
while (bitPtr <= 16) {\
|
||||
bitPtr += 8;\
|
||||
*ptr++ = (OI_UINT8)(value >> 24);\
|
||||
value <<= 8;\
|
||||
}\
|
||||
} while (0)
|
||||
|
||||
#define OI_BITSTREAM_WRITEFLUSH(ptr, value, bitPtr) \
|
||||
do {\
|
||||
while (bitPtr < 32) {\
|
||||
bitPtr += 8;\
|
||||
*ptr++ = (OI_UINT8)(value >> 24);\
|
||||
value <<= 8;\
|
||||
}\
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
@}
|
||||
*/
|
||||
|
||||
#endif /* _OI_BITSTREAM_H */
|
229
tools/sdk/include/bluedroid/oi_bt_spec.h
Normal file
229
tools/sdk/include/bluedroid/oi_bt_spec.h
Normal file
@ -0,0 +1,229 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
* Copyright 2002 - 2004 Open Interface North America, Inc. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _OI_BT_SPEC_H
|
||||
#define _OI_BT_SPEC_H
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* This file contains common definitions from the Bluetooth specification.
|
||||
*
|
||||
*/
|
||||
|
||||
/**********************************************************************************
|
||||
$Revision: #1 $
|
||||
***********************************************************************************/
|
||||
|
||||
#include "oi_stddefs.h"
|
||||
|
||||
/** \addtogroup Misc Miscellaneous APIs */
|
||||
/**@{*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** The maximum number of active slaves in a piconet. */
|
||||
#define OI_BT_MAX_ACTIVE_SLAVES 7
|
||||
|
||||
/** the number of bytes in a Bluetooth device address (BD_ADDR) */
|
||||
#define OI_BD_ADDR_BYTE_SIZE 6
|
||||
|
||||
/**
|
||||
* 48-bit Bluetooth device address
|
||||
*
|
||||
* Because 48-bit integers may not be supported on all platforms, the
|
||||
* address is defined as an array of bytes. This array is big-endian,
|
||||
* meaning that
|
||||
* - array[0] contains bits 47-40,
|
||||
* - array[1] contains bits 39-32,
|
||||
* - array[2] contains bits 31-24,
|
||||
* - array[3] contains bits 23-16,
|
||||
* - array[4] contains bits 15-8, and
|
||||
* - array[5] contains bits 7-0.
|
||||
*/
|
||||
typedef struct {
|
||||
OI_UINT8 addr[OI_BD_ADDR_BYTE_SIZE] ; /**< Bluetooth device address represented as an array of 8-bit values */
|
||||
} OI_BD_ADDR ;
|
||||
|
||||
/**
|
||||
* @name Data types for working with UUIDs
|
||||
* UUIDs are 16 bytes (128 bits).
|
||||
*
|
||||
* To avoid having to pass around 128-bit values all the time, 32-bit and 16-bit
|
||||
* UUIDs are defined, along with a mapping from the shorter versions to the full
|
||||
* version.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* 16-bit representation of a 128-bit UUID
|
||||
*/
|
||||
typedef OI_UINT16 OI_UUID16;
|
||||
|
||||
/**
|
||||
* 32-bit representation of a 128-bit UUID
|
||||
*/
|
||||
typedef OI_UINT32 OI_UUID32;
|
||||
|
||||
/**
|
||||
* number of bytes in a 128 bit UUID
|
||||
*/
|
||||
#define OI_BT_UUID128_SIZE 16
|
||||
|
||||
/**
|
||||
* number of bytes in IPv6 style addresses
|
||||
*/
|
||||
#define OI_BT_IPV6ADDR_SIZE 16
|
||||
|
||||
/**
|
||||
* type definition for a 128-bit UUID
|
||||
*
|
||||
* To simplify conversion between 128-bit UUIDs and 16-bit and 32-bit UUIDs,
|
||||
* the most significant 32 bits are stored with the same endian-ness as is
|
||||
* native on the target (local) device. The remainder of the 128-bit UUID is
|
||||
* stored as bytes in big-endian order.
|
||||
*/
|
||||
typedef struct {
|
||||
OI_UINT32 ms32bits; /**< most significant 32 bits of 128-bit UUID */
|
||||
OI_UINT8 base[OI_BT_UUID128_SIZE - sizeof(OI_UINT32)]; /**< remainder of 128-bit UUID, array of 8-bit values */
|
||||
} OI_UUID128;
|
||||
|
||||
/** @} */
|
||||
|
||||
/** number of bytes in a link key */
|
||||
#define OI_BT_LINK_KEY_SIZE 16
|
||||
|
||||
/**
|
||||
* type definition for a baseband link key
|
||||
*
|
||||
* Because 128-bit integers may not be supported on all platforms, we define
|
||||
* link keys as an array of bytes. Unlike the Bluetooth device address,
|
||||
* the link key is stored in little-endian order, meaning that
|
||||
* - array[0] contains bits 0 - 7,
|
||||
* - array[1] contains bits 8 - 15,
|
||||
* - array[2] contains bits 16 - 23,
|
||||
* - array[3] contains bits 24 - 31,
|
||||
* - array[4] contains bits 32 - 39,
|
||||
* - array[5] contains bits 40 - 47,
|
||||
* - array[6] contains bits 48 - 55,
|
||||
* - array[7] contains bits 56 - 63,
|
||||
* - array[8] contains bits 64 - 71,
|
||||
* - array[9] contains bits 72 - 79,
|
||||
* - array[10] contains bits 80 - 87,
|
||||
* - array[11] contains bits 88 - 95,
|
||||
* - array[12] contains bits 96 - 103,
|
||||
* - array[13] contains bits 104- 111,
|
||||
* - array[14] contains bits 112- 119, and
|
||||
* - array[15] contains bits 120- 127.
|
||||
*/
|
||||
typedef struct {
|
||||
OI_UINT8 key[OI_BT_LINK_KEY_SIZE] ; /**< link key represented as an array of 8-bit values */
|
||||
} OI_LINK_KEY ;
|
||||
|
||||
|
||||
/** Out-of-band data size - C and R values are 16-bytes each */
|
||||
#define OI_BT_OOB_NUM_BYTES 16
|
||||
|
||||
typedef struct {
|
||||
OI_UINT8 value[OI_BT_OOB_NUM_BYTES] ; /**< same struct used for C and R values */
|
||||
} OI_OOB_DATA ;
|
||||
|
||||
|
||||
/**
|
||||
* link key types
|
||||
*/
|
||||
typedef enum {
|
||||
OI_LINK_KEY_TYPE_COMBO = 0, /**< combination key */
|
||||
OI_LINK_KEY_TYPE_LOCAL_UNIT = 1, /**< local unit key */
|
||||
OI_LINK_KEY_TYPE_REMOTE_UNIT = 2, /**< remote unit key */
|
||||
OI_LINK_KEY_TYPE_DEBUG_COMBO = 3, /**< debug combination key */
|
||||
OI_LINK_KEY_TYPE_UNAUTHENTICATED = 4, /**< Unauthenticated */
|
||||
OI_LINK_KEY_TYPE_AUTHENTICATED = 5, /**< Authenticated */
|
||||
OI_LINK_KEY_TYPE_CHANGED_COMBO = 6 /**< Changed */
|
||||
|
||||
} OI_BT_LINK_KEY_TYPE ;
|
||||
|
||||
|
||||
/** amount of space allocated for a PIN (personal indentification number) in bytes */
|
||||
#define OI_BT_PIN_CODE_SIZE 16
|
||||
|
||||
/** data type for a PIN (PINs are treated as strings, so endianness does not apply.) */
|
||||
typedef struct {
|
||||
OI_UINT8 pin[OI_BT_PIN_CODE_SIZE] ; /**< PIN represented as an array of 8-bit values */
|
||||
} OI_PIN_CODE ;
|
||||
|
||||
/** maximum number of SCO connections per device, which is 3 as of version 2.0+EDR
|
||||
of the Bluetooth specification (see sec 4.3 of vol 2 part B) */
|
||||
#define OI_BT_MAX_SCO_CONNECTIONS 3
|
||||
|
||||
/** data type for clock offset */
|
||||
typedef OI_UINT16 OI_BT_CLOCK_OFFSET ;
|
||||
|
||||
/** data type for a LM handle */
|
||||
typedef OI_UINT16 OI_HCI_LM_HANDLE;
|
||||
|
||||
/** opaque data type for a SCO or ACL connection handle */
|
||||
typedef struct _OI_HCI_CONNECTION *OI_HCI_CONNECTION_HANDLE;
|
||||
|
||||
/** data type for HCI Error Code, as defined in oi_hcispec.h */
|
||||
typedef OI_UINT8 OI_HCI_ERROR_CODE ;
|
||||
|
||||
/**
|
||||
* The Bluetooth device type is indicated by a 24-bit bitfield, represented as a
|
||||
* 32-bit number in the stack. The bit layout and values for device class are specified
|
||||
* in the file oi_bt_assigned_nos.h and in the Bluetooth "Assigned Numbers" specification
|
||||
* at http://www.bluetooth.org/assigned-numbers/.
|
||||
*/
|
||||
typedef OI_UINT32 OI_BT_DEVICE_CLASS ;
|
||||
|
||||
#define OI_BT_DEV_CLASS_FORMAT_MASK 0x000003 /**< Bits 0-1 contain format type. */
|
||||
#define OI_BT_DEV_CLASS_MINOR_DEVICE_MASK 0x0000FC /**< Bits 2-7 contain minor device class value. */
|
||||
#define OI_BT_DEV_CLASS_MAJOR_DEVICE_MASK 0x001F00 /**< Bits 8-12 contain major device class value. */
|
||||
#define OI_BT_DEV_CLASS_MAJOR_SERVICE_MASK 0xFFE000 /**< Bits 13-23 contain major service class value. */
|
||||
|
||||
/** There is currently only one device class format defined, type 00. */
|
||||
#define OI_BT_DEV_CLASS_FORMAT_TYPE 00
|
||||
|
||||
/** Bit 13 in device class indicates limited discoverability mode (GAP v2.0+EDR, section 4.1.2.2) */
|
||||
#define OI_BT_DEV_CLASS_LIMITED_DISCO_BIT BIT13
|
||||
|
||||
/** macro to test validity of the Device Class Format */
|
||||
#define OI_BT_VALID_DEVICE_CLASS_FORMAT(class) (OI_BT_DEV_CLASS_FORMAT_TYPE == ((class) & OI_BT_DEV_CLASS_FORMAT_MASK))
|
||||
|
||||
/** the time between baseband clock ticks, currently 625 microseconds (one slot) */
|
||||
#define OI_BT_TICK 625
|
||||
/** some macros to convert to/from baseband clock ticks - use no floating point! */
|
||||
#define OI_SECONDS_TO_BT_TICKS(secs) ((secs)*1600)
|
||||
#define OI_BT_TICKS_TO_SECONDS(ticks) ((ticks)/1600)
|
||||
#define OI_MSECS_TO_BT_TICKS(msecs) (((msecs)*8)/5)
|
||||
#define OI_BT_TICKS_TO_MSECS(ticks) (((ticks)*5)/8)
|
||||
|
||||
/** EIR byte order */
|
||||
#define OI_EIR_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/**@}*/
|
||||
|
||||
/*****************************************************************************/
|
||||
#endif /* _OI_BT_SPEC_H */
|
484
tools/sdk/include/bluedroid/oi_codec_sbc.h
Normal file
484
tools/sdk/include/bluedroid/oi_codec_sbc.h
Normal file
@ -0,0 +1,484 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
* Copyright 2003 - 2004 Open Interface North America, Inc. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/**********************************************************************************
|
||||
$Revision: #1 $
|
||||
***********************************************************************************/
|
||||
|
||||
#ifndef _OI_CODEC_SBC_CORE_H
|
||||
#define _OI_CODEC_SBC_CORE_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
@file
|
||||
Declarations of codec functions, data types, and macros.
|
||||
|
||||
@ingroup codec_lib
|
||||
*/
|
||||
|
||||
/**
|
||||
@addtogroup codec_lib
|
||||
@{
|
||||
*/
|
||||
|
||||
/* Non-BM3 users of of the codec must include oi_codec_sbc_bm3defs.h prior to
|
||||
* including this file, or else these includes will fail because the BM3 SDK is
|
||||
* not in the include path */
|
||||
#ifndef _OI_CODEC_SBC_BM3DEFS_H
|
||||
#include "oi_stddefs.h"
|
||||
#include "oi_status.h"
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define SBC_MAX_CHANNELS 2
|
||||
#define SBC_MAX_BANDS 8
|
||||
#define SBC_MAX_BLOCKS 16
|
||||
#define SBC_MIN_BITPOOL 2 /**< Minimum size of the bit allocation pool used to encode the stream */
|
||||
#define SBC_MAX_BITPOOL 250 /**< Maximum size of the bit allocation pool used to encode the stream */
|
||||
#define SBC_MAX_ONE_CHANNEL_BPS 320000
|
||||
#define SBC_MAX_TWO_CHANNEL_BPS 512000
|
||||
|
||||
|
||||
#define SBC_WBS_BITRATE 62000
|
||||
#define SBC_WBS_BITPOOL 27
|
||||
#define SBC_WBS_NROF_BLOCKS 16
|
||||
#define SBC_WBS_FRAME_LEN 62
|
||||
#define SBC_WBS_SAMPLES_PER_FRAME 128
|
||||
|
||||
|
||||
#define SBC_HEADER_LEN 4
|
||||
#define SBC_MAX_FRAME_LEN (SBC_HEADER_LEN + \
|
||||
((SBC_MAX_BANDS * SBC_MAX_CHANNELS / 2) + \
|
||||
(SBC_MAX_BANDS + SBC_MAX_BLOCKS * SBC_MAX_BITPOOL + 7)/8))
|
||||
#define SBC_MAX_SAMPLES_PER_FRAME (SBC_MAX_BANDS * SBC_MAX_BLOCKS)
|
||||
|
||||
#define SBC_MAX_SCALEFACTOR_BYTES ((4*(SBC_MAX_CHANNELS * SBC_MAX_BANDS) + 7)/8)
|
||||
|
||||
#define OI_SBC_SYNCWORD 0x9c
|
||||
#define OI_SBC_ENHANCED_SYNCWORD 0x9d
|
||||
|
||||
/**@name Sampling frequencies */
|
||||
/**@{*/
|
||||
#define SBC_FREQ_16000 0 /**< The sampling frequency is 16 kHz. One possible value for the @a frequency parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
#define SBC_FREQ_32000 1 /**< The sampling frequency is 32 kHz. One possible value for the @a frequency parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
#define SBC_FREQ_44100 2 /**< The sampling frequency is 44.1 kHz. One possible value for the @a frequency parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
#define SBC_FREQ_48000 3 /**< The sampling frequency is 48 kHz. One possible value for the @a frequency parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
/**@}*/
|
||||
|
||||
/**@name Channel modes */
|
||||
/**@{*/
|
||||
#define SBC_MONO 0 /**< The mode of the encoded channel is mono. One possible value for the @a mode parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
#define SBC_DUAL_CHANNEL 1 /**< The mode of the encoded channel is dual-channel. One possible value for the @a mode parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
#define SBC_STEREO 2 /**< The mode of the encoded channel is stereo. One possible value for the @a mode parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
#define SBC_JOINT_STEREO 3 /**< The mode of the encoded channel is joint stereo. One possible value for the @a mode parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
/**@}*/
|
||||
|
||||
/**@name Subbands */
|
||||
/**@{*/
|
||||
#define SBC_SUBBANDS_4 0 /**< The encoded stream has 4 subbands. One possible value for the @a subbands parameter of OI_CODEC_SBC_EncoderConfigure()*/
|
||||
#define SBC_SUBBANDS_8 1 /**< The encoded stream has 8 subbands. One possible value for the @a subbands parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
/**@}*/
|
||||
|
||||
/**@name Block lengths */
|
||||
/**@{*/
|
||||
#define SBC_BLOCKS_4 0 /**< A block size of 4 blocks was used to encode the stream. One possible value for the @a blocks parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
#define SBC_BLOCKS_8 1 /**< A block size of 8 blocks was used to encode the stream is. One possible value for the @a blocks parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
#define SBC_BLOCKS_12 2 /**< A block size of 12 blocks was used to encode the stream. One possible value for the @a blocks parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
#define SBC_BLOCKS_16 3 /**< A block size of 16 blocks was used to encode the stream. One possible value for the @a blocks parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
/**@}*/
|
||||
|
||||
/**@name Bit allocation methods */
|
||||
/**@{*/
|
||||
#define SBC_LOUDNESS 0 /**< The bit allocation method. One possible value for the @a loudness parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
#define SBC_SNR 1 /**< The bit allocation method. One possible value for the @a loudness parameter of OI_CODEC_SBC_EncoderConfigure() */
|
||||
/**@}*/
|
||||
|
||||
/**
|
||||
@}
|
||||
|
||||
@addtogroup codec_internal
|
||||
@{
|
||||
*/
|
||||
|
||||
typedef OI_INT16 SBC_BUFFER_T;
|
||||
|
||||
|
||||
/** Used internally. */
|
||||
typedef struct {
|
||||
OI_UINT16 frequency; /**< The sampling frequency. Input parameter. */
|
||||
OI_UINT8 freqIndex;
|
||||
|
||||
OI_UINT8 nrof_blocks; /**< The block size used to encode the stream. Input parameter. */
|
||||
OI_UINT8 blocks;
|
||||
|
||||
|
||||
OI_UINT8 nrof_subbands; /**< The number of subbands of the encoded stream. Input parameter. */
|
||||
OI_UINT8 subbands;
|
||||
|
||||
OI_UINT8 mode; /**< The mode of the encoded channel. Input parameter. */
|
||||
OI_UINT8 nrof_channels; /**< The number of channels of the encoded stream. */
|
||||
|
||||
OI_UINT8 alloc; /**< The bit allocation method. Input parameter. */
|
||||
OI_UINT8 bitpool; /**< Size of the bit allocation pool used to encode the stream. Input parameter. */
|
||||
OI_UINT8 crc; /**< Parity check byte used for error detection. */
|
||||
OI_UINT8 join; /**< Whether joint stereo has been used. */
|
||||
OI_UINT8 enhanced;
|
||||
OI_UINT8 min_bitpool; /**< This value is only used when encoding. SBC_MAX_BITPOOL if variable
|
||||
bitpools are disallowed, otherwise the minimum bitpool size that will
|
||||
be used by the bit allocator. */
|
||||
|
||||
OI_UINT8 cachedInfo; /**< Information about the previous frame */
|
||||
} OI_CODEC_SBC_FRAME_INFO;
|
||||
|
||||
/** Used internally. */
|
||||
typedef struct {
|
||||
const OI_CHAR *codecInfo;
|
||||
OI_CODEC_SBC_FRAME_INFO frameInfo;
|
||||
OI_INT8 scale_factor[SBC_MAX_CHANNELS * SBC_MAX_BANDS];
|
||||
OI_UINT32 frameCount;
|
||||
OI_INT32 *subdata;
|
||||
|
||||
SBC_BUFFER_T *filterBuffer[SBC_MAX_CHANNELS];
|
||||
OI_INT32 filterBufferLen;
|
||||
OI_UINT filterBufferOffset;
|
||||
|
||||
union {
|
||||
OI_UINT8 uint8[SBC_MAX_CHANNELS * SBC_MAX_BANDS];
|
||||
OI_UINT32 uint32[SBC_MAX_CHANNELS * SBC_MAX_BANDS / 4];
|
||||
} bits;
|
||||
OI_UINT8 maxBitneed; /**< Running maximum bitneed */
|
||||
OI_BYTE formatByte;
|
||||
OI_UINT8 pcmStride;
|
||||
OI_UINT8 maxChannels;
|
||||
} OI_CODEC_SBC_COMMON_CONTEXT;
|
||||
|
||||
|
||||
/*
|
||||
* A smaller value reduces RAM usage at the expense of increased CPU usage. Values in the range
|
||||
* 27..50 are recommended, beyond 50 there is a diminishing return on reduced CPU usage.
|
||||
*/
|
||||
#define SBC_CODEC_MIN_FILTER_BUFFERS 16
|
||||
#define SBC_CODEC_FAST_FILTER_BUFFERS 27
|
||||
|
||||
/* Expands to the number of OI_UINT32s needed to ensure enough memory to encode
|
||||
* or decode streams of numChannels channels, using numBuffers buffers.
|
||||
* Example:
|
||||
* OI_UINT32 decoderData[CODEC_DATA_WORDS(SBC_MAX_CHANNELS, SBC_DECODER_FAST_SYNTHESIS_BUFFERS)];
|
||||
* */
|
||||
#define CODEC_DATA_WORDS(numChannels, numBuffers) \
|
||||
((\
|
||||
(sizeof(OI_INT32) * SBC_MAX_BLOCKS * numChannels * SBC_MAX_BANDS) \
|
||||
+ (sizeof(SBC_BUFFER_T) * SBC_MAX_CHANNELS * SBC_MAX_BANDS * numBuffers) \
|
||||
+ (sizeof (OI_UINT32) - 1) \
|
||||
) / sizeof(OI_UINT32))
|
||||
|
||||
/** Opaque parameter to decoding functions; maintains decoder context. */
|
||||
typedef struct {
|
||||
OI_CODEC_SBC_COMMON_CONTEXT common;
|
||||
OI_UINT8 limitFrameFormat; /* Boolean, set by OI_CODEC_SBC_DecoderLimit() */
|
||||
OI_UINT8 restrictSubbands;
|
||||
OI_UINT8 enhancedEnabled;
|
||||
OI_UINT8 bufferedBlocks;
|
||||
} OI_CODEC_SBC_DECODER_CONTEXT;
|
||||
|
||||
typedef struct {
|
||||
OI_UINT32 data[CODEC_DATA_WORDS(1, SBC_CODEC_FAST_FILTER_BUFFERS)];
|
||||
} OI_CODEC_SBC_CODEC_DATA_MONO;
|
||||
|
||||
typedef struct {
|
||||
OI_UINT32 data[CODEC_DATA_WORDS(2, SBC_CODEC_FAST_FILTER_BUFFERS)];
|
||||
} OI_CODEC_SBC_CODEC_DATA_STEREO;
|
||||
|
||||
/**
|
||||
@}
|
||||
|
||||
@addtogroup codec_lib
|
||||
@{
|
||||
*/
|
||||
|
||||
/**
|
||||
* This function resets the decoder. The context must be reset when
|
||||
* changing streams, or if the following stream parameters change:
|
||||
* number of subbands, stereo mode, or frequency.
|
||||
*
|
||||
* @param context Pointer to the decoder context structure to be reset.
|
||||
*
|
||||
* @param enhanced If true, enhanced SBC operation is enabled. If enabled,
|
||||
* the codec will recognize the alternative syncword for
|
||||
* decoding an enhanced SBC stream. Enhancements should not
|
||||
* be enabled unless the stream is known to be generated
|
||||
* by an enhanced encoder, or there is a small possibility
|
||||
* for decoding glitches if synchronization were to be lost.
|
||||
*/
|
||||
OI_STATUS OI_CODEC_SBC_DecoderReset(OI_CODEC_SBC_DECODER_CONTEXT *context,
|
||||
OI_UINT32 *decoderData,
|
||||
OI_UINT32 decoderDataBytes,
|
||||
OI_UINT8 maxChannels,
|
||||
OI_UINT8 pcmStride,
|
||||
OI_BOOL enhanced);
|
||||
|
||||
/**
|
||||
* This function restricts the kind of SBC frames that the Decoder will
|
||||
* process. Its use is optional. If used, it must be called after
|
||||
* calling OI_CODEC_SBC_DecoderReset(). After it is called, any calls
|
||||
* to OI_CODEC_SBC_DecodeFrame() with SBC frames that do not conform
|
||||
* to the Subband and Enhanced SBC setting will be rejected with an
|
||||
* OI_STATUS_INVALID_PARAMETERS return.
|
||||
*
|
||||
* @param context Pointer to the decoder context structure to be limited.
|
||||
*
|
||||
* @param enhanced If true, all frames passed to the decoder must be
|
||||
* Enhanced SBC frames. If false, all frames must be
|
||||
* standard SBC frames.
|
||||
*
|
||||
* @param subbands May be set to SBC_SUBBANDS_4 or SBC_SUBBANDS_8. All
|
||||
* frames passed to the decoder must be encoded with
|
||||
* the requested number of subbands.
|
||||
*
|
||||
*/
|
||||
OI_STATUS OI_CODEC_SBC_DecoderLimit(OI_CODEC_SBC_DECODER_CONTEXT *context,
|
||||
OI_BOOL enhanced,
|
||||
OI_UINT8 subbands);
|
||||
|
||||
/**
|
||||
* This function sets the decoder parameters for a raw decode where the decoder parameters are not
|
||||
* available in the sbc data stream. OI_CODEC_SBC_DecoderReset must be called
|
||||
* prior to calling this function.
|
||||
*
|
||||
* @param context Decoder context structure. This must be the context must be
|
||||
* used each time a frame is decoded.
|
||||
*
|
||||
* @param enhanced Set to TRUE to enable Qualcomm proprietary
|
||||
* quality enhancements.
|
||||
*
|
||||
* @param frequency One of SBC_FREQ_16000, SBC_FREQ_32000, SBC_FREQ_44100,
|
||||
* SBC_FREQ_48000
|
||||
*
|
||||
* @param mode One of SBC_MONO, SBC_DUAL_CHANNEL, SBC_STEREO,
|
||||
* SBC_JOINT_STEREO
|
||||
*
|
||||
* @param subbands One of SBC_SUBBANDS_4, SBC_SUBBANDS_8
|
||||
*
|
||||
* @param blocks One of SBC_BLOCKS_4, SBC_BLOCKS_8, SBC_BLOCKS_12,
|
||||
* SBC_BLOCKS_16
|
||||
*
|
||||
* @param alloc One of SBC_LOUDNESS, SBC_SNR
|
||||
*
|
||||
* @param maxBitpool The maximum bitpool size for this context
|
||||
*/
|
||||
OI_STATUS OI_CODEC_SBC_DecoderConfigureRaw(OI_CODEC_SBC_DECODER_CONTEXT *context,
|
||||
OI_BOOL enhanced,
|
||||
OI_UINT8 frequency,
|
||||
OI_UINT8 mode,
|
||||
OI_UINT8 subbands,
|
||||
OI_UINT8 blocks,
|
||||
OI_UINT8 alloc,
|
||||
OI_UINT8 maxBitpool);
|
||||
|
||||
/**
|
||||
* Decode one SBC frame. The frame has no header bytes. The context must have been previously
|
||||
* initialized by calling OI_CODEC_SBC_DecoderConfigureRaw().
|
||||
*
|
||||
* @param context Pointer to a decoder context structure. The same context
|
||||
* must be used each time when decoding from the same stream.
|
||||
*
|
||||
* @param bitpool The actual bitpool size for this frame. Must be <= the maxbitpool specified
|
||||
* in the call to OI_CODEC_SBC_DecoderConfigureRaw(),
|
||||
*
|
||||
* @param frameData Address of a pointer to the SBC data to decode. This
|
||||
* value will be updated to point to the next frame after
|
||||
* successful decoding.
|
||||
*
|
||||
* @param frameBytes Pointer to a UINT32 containing the number of available
|
||||
* bytes of frame data. This value will be updated to reflect
|
||||
* the number of bytes remaining after a decoding operation.
|
||||
*
|
||||
* @param pcmData Address of an array of OI_INT16 pairs, which will be
|
||||
* populated with the decoded audio data. This address
|
||||
* is not updated.
|
||||
*
|
||||
* @param pcmBytes Pointer to a UINT32 in/out parameter. On input, it
|
||||
* should contain the number of bytes available for pcm
|
||||
* data. On output, it will contain the number of bytes
|
||||
* written. Note that this differs from the semantics of
|
||||
* frameBytes.
|
||||
*/
|
||||
OI_STATUS OI_CODEC_SBC_DecodeRaw(OI_CODEC_SBC_DECODER_CONTEXT *context,
|
||||
OI_UINT8 bitpool,
|
||||
const OI_BYTE **frameData,
|
||||
OI_UINT32 *frameBytes,
|
||||
OI_INT16 *pcmData,
|
||||
OI_UINT32 *pcmBytes);
|
||||
|
||||
/**
|
||||
* Decode one SBC frame.
|
||||
*
|
||||
* @param context Pointer to a decoder context structure. The same context
|
||||
* must be used each time when decoding from the same stream.
|
||||
*
|
||||
* @param frameData Address of a pointer to the SBC data to decode. This
|
||||
* value will be updated to point to the next frame after
|
||||
* successful decoding.
|
||||
*
|
||||
* @param frameBytes Pointer to a UINT32 containing the number of available
|
||||
* bytes of frame data. This value will be updated to reflect
|
||||
* the number of bytes remaining after a decoding operation.
|
||||
*
|
||||
* @param pcmData Address of an array of OI_INT16 pairs, which will be
|
||||
* populated with the decoded audio data. This address
|
||||
* is not updated.
|
||||
*
|
||||
* @param pcmBytes Pointer to a UINT32 in/out parameter. On input, it
|
||||
* should contain the number of bytes available for pcm
|
||||
* data. On output, it will contain the number of bytes
|
||||
* written. Note that this differs from the semantics of
|
||||
* frameBytes.
|
||||
*/
|
||||
OI_STATUS OI_CODEC_SBC_DecodeFrame(OI_CODEC_SBC_DECODER_CONTEXT *context,
|
||||
const OI_BYTE **frameData,
|
||||
OI_UINT32 *frameBytes,
|
||||
OI_INT16 *pcmData,
|
||||
OI_UINT32 *pcmBytes);
|
||||
|
||||
/**
|
||||
* Calculate the number of SBC frames but don't decode. CRC's are not checked,
|
||||
* but the Sync word is found prior to count calculation.
|
||||
*
|
||||
* @param frameData Pointer to the SBC data.
|
||||
*
|
||||
* @param frameBytes Number of bytes avaiable in the frameData buffer
|
||||
*
|
||||
*/
|
||||
OI_UINT8 OI_CODEC_SBC_FrameCount(OI_BYTE *frameData,
|
||||
OI_UINT32 frameBytes);
|
||||
|
||||
/**
|
||||
* Analyze an SBC frame but don't do the decode.
|
||||
*
|
||||
* @param context Pointer to a decoder context structure. The same context
|
||||
* must be used each time when decoding from the same stream.
|
||||
*
|
||||
* @param frameData Address of a pointer to the SBC data to decode. This
|
||||
* value will be updated to point to the next frame after
|
||||
* successful decoding.
|
||||
*
|
||||
* @param frameBytes Pointer to a UINT32 containing the number of available
|
||||
* bytes of frame data. This value will be updated to reflect
|
||||
* the number of bytes remaining after a decoding operation.
|
||||
*
|
||||
*/
|
||||
OI_STATUS OI_CODEC_SBC_SkipFrame(OI_CODEC_SBC_DECODER_CONTEXT *context,
|
||||
const OI_BYTE **frameData,
|
||||
OI_UINT32 *frameBytes);
|
||||
|
||||
/* Common functions */
|
||||
|
||||
/**
|
||||
Calculate the frame length.
|
||||
|
||||
@param frame The frame whose length to calculate
|
||||
|
||||
@return the length of an individual encoded frame in
|
||||
bytes
|
||||
*/
|
||||
OI_UINT16 OI_CODEC_SBC_CalculateFramelen(OI_CODEC_SBC_FRAME_INFO *frame);
|
||||
|
||||
|
||||
/**
|
||||
* Calculate the maximum bitpool size that fits within a given frame length.
|
||||
*
|
||||
* @param frame The frame to calculate the bitpool size for
|
||||
* @param frameLen The frame length to fit the bitpool to
|
||||
*
|
||||
* @return the maximum bitpool that will fit in the specified frame length
|
||||
*/
|
||||
OI_UINT16 OI_CODEC_SBC_CalculateBitpool(OI_CODEC_SBC_FRAME_INFO *frame,
|
||||
OI_UINT16 frameLen);
|
||||
|
||||
/**
|
||||
Calculate the bit rate.
|
||||
|
||||
@param frame The frame whose bit rate to calculate
|
||||
|
||||
@return the approximate bit rate in bits per second,
|
||||
assuming that stream parameters are constant
|
||||
*/
|
||||
OI_UINT32 OI_CODEC_SBC_CalculateBitrate(OI_CODEC_SBC_FRAME_INFO *frame);
|
||||
|
||||
/**
|
||||
Calculate decoded audio data length for one frame.
|
||||
|
||||
@param frame The frame whose audio data length to calculate
|
||||
|
||||
@return length of decoded audio data for a
|
||||
single frame, in bytes
|
||||
*/
|
||||
OI_UINT16 OI_CODEC_SBC_CalculatePcmBytes(OI_CODEC_SBC_COMMON_CONTEXT *common);
|
||||
|
||||
/**
|
||||
* Get the codec version text.
|
||||
*
|
||||
* @return pointer to text string containing codec version text
|
||||
*
|
||||
*/
|
||||
OI_CHAR *OI_CODEC_Version(void);
|
||||
|
||||
|
||||
/**
|
||||
@}
|
||||
|
||||
@addtogroup codec_internal
|
||||
@{
|
||||
*/
|
||||
|
||||
extern const OI_CHAR *const OI_CODEC_SBC_FreqText[];
|
||||
extern const OI_CHAR *const OI_CODEC_SBC_ModeText[];
|
||||
extern const OI_CHAR *const OI_CODEC_SBC_SubbandsText[];
|
||||
extern const OI_CHAR *const OI_CODEC_SBC_BlocksText[];
|
||||
extern const OI_CHAR *const OI_CODEC_SBC_AllocText[];
|
||||
|
||||
/**
|
||||
@}
|
||||
|
||||
@addtogroup codec_lib
|
||||
@{
|
||||
*/
|
||||
|
||||
#ifdef OI_DEBUG
|
||||
void OI_CODEC_SBC_DumpConfig(OI_CODEC_SBC_FRAME_INFO *frameInfo);
|
||||
#else
|
||||
#define OI_CODEC_SBC_DumpConfig(f)
|
||||
#endif
|
||||
|
||||
/**
|
||||
@}
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _OI_CODEC_SBC_CORE_H */
|
||||
|
||||
|
229
tools/sdk/include/bluedroid/oi_codec_sbc_private.h
Normal file
229
tools/sdk/include/bluedroid/oi_codec_sbc_private.h
Normal file
@ -0,0 +1,229 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
* Copyright 2003 - 2004 Open Interface North America, Inc. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _OI_CODEC_SBC_PRIVATE_H
|
||||
#define _OI_CODEC_SBC_PRIVATE_H
|
||||
|
||||
/**********************************************************************************
|
||||
$Revision: #1 $
|
||||
***********************************************************************************/
|
||||
|
||||
/**
|
||||
@file
|
||||
Function prototypes and macro definitions used internally by the codec.
|
||||
|
||||
@ingroup codec_internal
|
||||
*/
|
||||
|
||||
/**
|
||||
@addtogroup codec_internal
|
||||
@{
|
||||
*/
|
||||
|
||||
#ifdef USE_RESTRICT_KEYWORD
|
||||
#define RESTRICT restrict
|
||||
#else
|
||||
#define RESTRICT
|
||||
#endif
|
||||
|
||||
#ifdef CODEC_DEBUG
|
||||
#include <stdio.h>
|
||||
#define ERROR(x) do { printf x; printf("\n"); } while (0)
|
||||
#else
|
||||
#define ERROR(x)
|
||||
#endif
|
||||
|
||||
#ifdef TRACE_EXECUTION
|
||||
#define TRACE(x) do { printf x; printf("\n"); } while (0)
|
||||
#else
|
||||
#define TRACE(x)
|
||||
#endif
|
||||
|
||||
#ifndef PRIVATE
|
||||
#define PRIVATE
|
||||
#endif
|
||||
|
||||
#ifndef INLINE
|
||||
#define INLINE
|
||||
#endif
|
||||
|
||||
#include "oi_assert.h"
|
||||
#include "oi_codec_sbc.h"
|
||||
|
||||
#ifndef OI_SBC_SYNCWORD
|
||||
#define OI_SBC_SYNCWORD 0x9c
|
||||
#endif
|
||||
|
||||
#ifndef DIVIDE
|
||||
#define DIVIDE(a, b) ((a) / (b))
|
||||
#endif
|
||||
|
||||
typedef union {
|
||||
OI_UINT8 uint8[SBC_MAX_BANDS];
|
||||
OI_UINT32 uint32[SBC_MAX_BANDS / 4];
|
||||
} BITNEED_UNION1;
|
||||
|
||||
typedef union {
|
||||
OI_UINT8 uint8[2 * SBC_MAX_BANDS];
|
||||
OI_UINT32 uint32[2 * SBC_MAX_BANDS / 4];
|
||||
} BITNEED_UNION2;
|
||||
|
||||
static const OI_UINT16 freq_values[] = { 16000, 32000, 44100, 48000 };
|
||||
static const OI_UINT8 block_values[] = { 4, 8, 12, 16 };
|
||||
static const OI_UINT8 channel_values[] = { 1, 2, 2, 2 };
|
||||
static const OI_UINT8 band_values[] = { 4, 8 };
|
||||
|
||||
|
||||
#define TEST_MODE_SENTINEL "OINA"
|
||||
#define TEST_MODE_SENTINEL_LENGTH 4
|
||||
|
||||
/** Used internally. */
|
||||
typedef struct {
|
||||
union {
|
||||
const OI_UINT8 *r;
|
||||
OI_UINT8 *w;
|
||||
} ptr;
|
||||
OI_UINT32 value;
|
||||
OI_UINT bitPtr;
|
||||
} OI_BITSTREAM;
|
||||
|
||||
|
||||
#define VALID_INT16(x) (((x) >= OI_INT16_MIN) && ((x) <= OI_INT16_MAX))
|
||||
#define VALID_INT32(x) (((x) >= OI_INT32_MIN) && ((x) <= OI_INT32_MAX))
|
||||
|
||||
#define DCTII_8_SHIFT_IN 0
|
||||
#define DCTII_8_SHIFT_OUT 16-DCTII_8_SHIFT_IN
|
||||
|
||||
#define DCTII_8_SHIFT_0 (DCTII_8_SHIFT_OUT)
|
||||
#define DCTII_8_SHIFT_1 (DCTII_8_SHIFT_OUT)
|
||||
#define DCTII_8_SHIFT_2 (DCTII_8_SHIFT_OUT)
|
||||
#define DCTII_8_SHIFT_3 (DCTII_8_SHIFT_OUT)
|
||||
#define DCTII_8_SHIFT_4 (DCTII_8_SHIFT_OUT)
|
||||
#define DCTII_8_SHIFT_5 (DCTII_8_SHIFT_OUT)
|
||||
#define DCTII_8_SHIFT_6 (DCTII_8_SHIFT_OUT-1)
|
||||
#define DCTII_8_SHIFT_7 (DCTII_8_SHIFT_OUT-2)
|
||||
|
||||
#define DCT_SHIFT 15
|
||||
|
||||
#define DCTIII_4_SHIFT_IN 2
|
||||
#define DCTIII_4_SHIFT_OUT 15
|
||||
|
||||
#define DCTIII_8_SHIFT_IN 3
|
||||
#define DCTIII_8_SHIFT_OUT 14
|
||||
|
||||
OI_UINT computeBitneed(OI_CODEC_SBC_COMMON_CONTEXT *common,
|
||||
OI_UINT8 *bitneeds,
|
||||
OI_UINT ch,
|
||||
OI_UINT *preferredBitpool);
|
||||
|
||||
void oneChannelBitAllocation(OI_CODEC_SBC_COMMON_CONTEXT *common,
|
||||
BITNEED_UNION1 *bitneeds,
|
||||
OI_UINT ch,
|
||||
OI_UINT bitcount);
|
||||
|
||||
|
||||
OI_INT adjustToFitBitpool(const OI_UINT bitpool,
|
||||
OI_UINT32 *bitneeds,
|
||||
const OI_UINT subbands,
|
||||
OI_UINT bitcount,
|
||||
OI_UINT *excess);
|
||||
|
||||
INLINE OI_INT allocAdjustedBits(OI_UINT8 *dest,
|
||||
OI_INT bits,
|
||||
OI_INT excess);
|
||||
|
||||
INLINE OI_INT allocExcessBits(OI_UINT8 *dest,
|
||||
OI_INT excess);
|
||||
|
||||
PRIVATE OI_UINT32 internal_CalculateBitrate(OI_CODEC_SBC_FRAME_INFO *frame);
|
||||
|
||||
PRIVATE OI_UINT16 internal_CalculateFramelen(OI_CODEC_SBC_FRAME_INFO *frame);
|
||||
|
||||
void monoBitAllocation(OI_CODEC_SBC_COMMON_CONTEXT *common);
|
||||
|
||||
typedef void (*BIT_ALLOC)(OI_CODEC_SBC_COMMON_CONTEXT *common);
|
||||
|
||||
PRIVATE OI_STATUS internal_DecodeRaw(OI_CODEC_SBC_DECODER_CONTEXT *context,
|
||||
OI_UINT8 bitpool,
|
||||
const OI_BYTE **frameData,
|
||||
OI_UINT32 *frameBytes,
|
||||
OI_INT16 *pcmData,
|
||||
OI_UINT32 *pcmBytes);
|
||||
|
||||
INLINE OI_STATUS internal_DecoderReset(OI_CODEC_SBC_DECODER_CONTEXT *context,
|
||||
OI_UINT32 *decoderData,
|
||||
OI_UINT32 decoderDataBytes,
|
||||
OI_BYTE maxChannels,
|
||||
OI_BYTE pcmStride,
|
||||
OI_BOOL enhanced);
|
||||
|
||||
INLINE OI_UINT16 OI_SBC_CalculateFrameAndHeaderlen(OI_CODEC_SBC_FRAME_INFO *frame, OI_UINT *headerLen_);
|
||||
|
||||
PRIVATE OI_UINT32 OI_SBC_MaxBitpool(OI_CODEC_SBC_FRAME_INFO *frame);
|
||||
|
||||
PRIVATE void OI_SBC_ComputeBitAllocation(OI_CODEC_SBC_COMMON_CONTEXT *frame);
|
||||
PRIVATE OI_UINT8 OI_SBC_CalculateChecksum(OI_CODEC_SBC_FRAME_INFO *frame, OI_BYTE const *data);
|
||||
|
||||
/* Transform functions */
|
||||
PRIVATE void shift_buffer(SBC_BUFFER_T *dest, SBC_BUFFER_T *src, OI_UINT wordCount);
|
||||
PRIVATE void cosineModulateSynth4(SBC_BUFFER_T *RESTRICT out, OI_INT32 const *RESTRICT in);
|
||||
PRIVATE void SynthWindow40_int32_int32_symmetry_with_sum(OI_INT16 *pcm, SBC_BUFFER_T buffer[80], OI_UINT strideShift);
|
||||
|
||||
INLINE void dct3_4(OI_INT32 *RESTRICT out, OI_INT32 const *RESTRICT in);
|
||||
PRIVATE void analyze4_generated(SBC_BUFFER_T analysisBuffer[RESTRICT 40],
|
||||
OI_INT16 *pcm,
|
||||
OI_UINT strideShift,
|
||||
OI_INT32 subband[4]);
|
||||
|
||||
INLINE void dct3_8(OI_INT32 *RESTRICT out, OI_INT32 const *RESTRICT in);
|
||||
|
||||
PRIVATE void analyze8_generated(SBC_BUFFER_T analysisBuffer[RESTRICT 80],
|
||||
OI_INT16 *pcm,
|
||||
OI_UINT strideShift,
|
||||
OI_INT32 subband[8]);
|
||||
|
||||
#ifdef SBC_ENHANCED
|
||||
PRIVATE void analyze8_enhanced_generated(SBC_BUFFER_T analysisBuffer[RESTRICT 112],
|
||||
OI_INT16 *pcm,
|
||||
OI_UINT strideShift,
|
||||
OI_INT32 subband[8]);
|
||||
#endif
|
||||
|
||||
/* Decoder functions */
|
||||
|
||||
INLINE void OI_SBC_ReadHeader(OI_CODEC_SBC_COMMON_CONTEXT *common, const OI_BYTE *data);
|
||||
PRIVATE void OI_SBC_ReadScalefactors(OI_CODEC_SBC_COMMON_CONTEXT *common, const OI_BYTE *b, OI_BITSTREAM *bs);
|
||||
PRIVATE void OI_SBC_ReadSamples(OI_CODEC_SBC_DECODER_CONTEXT *common, OI_BITSTREAM *ob);
|
||||
PRIVATE void OI_SBC_ReadSamplesJoint(OI_CODEC_SBC_DECODER_CONTEXT *common, OI_BITSTREAM *global_bs);
|
||||
PRIVATE void OI_SBC_SynthFrame(OI_CODEC_SBC_DECODER_CONTEXT *context, OI_INT16 *pcm, OI_UINT start_block, OI_UINT nrof_blocks);
|
||||
INLINE OI_INT32 OI_SBC_Dequant(OI_UINT32 raw, OI_UINT scale_factor, OI_UINT bits);
|
||||
PRIVATE OI_BOOL OI_SBC_ExamineCommandPacket(OI_CODEC_SBC_DECODER_CONTEXT *context, const OI_BYTE *data, OI_UINT32 len);
|
||||
PRIVATE void OI_SBC_GenerateTestSignal(OI_INT16 pcmData[][2], OI_UINT32 sampleCount);
|
||||
|
||||
PRIVATE void OI_SBC_ExpandFrameFields(OI_CODEC_SBC_FRAME_INFO *frame);
|
||||
PRIVATE OI_STATUS OI_CODEC_SBC_Alloc(OI_CODEC_SBC_COMMON_CONTEXT *common,
|
||||
OI_UINT32 *codecDataAligned,
|
||||
OI_UINT32 codecDataBytes,
|
||||
OI_UINT8 maxChannels,
|
||||
OI_UINT8 pcmStride);
|
||||
/**
|
||||
@}
|
||||
*/
|
||||
|
||||
#endif /* _OI_CODEC_SBC_PRIVATE_H */
|
||||
|
43
tools/sdk/include/bluedroid/oi_common.h
Normal file
43
tools/sdk/include/bluedroid/oi_common.h
Normal file
@ -0,0 +1,43 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
* Copyright 2002 - 2004 Open Interface North America, Inc. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _OI_COMMON_H
|
||||
#define _OI_COMMON_H
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* This file is used to group commonly used BLUEmagic 3.0 software
|
||||
* header files.
|
||||
*
|
||||
* This file should be included in application source code along with the header
|
||||
* files for the specific modules of the protocol stack being used.
|
||||
*/
|
||||
|
||||
/**********************************************************************************
|
||||
$Revision: #1 $
|
||||
***********************************************************************************/
|
||||
|
||||
#include "oi_bt_spec.h"
|
||||
#include "oi_stddefs.h"
|
||||
#include "oi_status.h"
|
||||
#include "oi_time.h"
|
||||
#include "oi_osinterface.h"
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
#endif /* _OI_COMMON_H */
|
505
tools/sdk/include/bluedroid/oi_cpu_dep.h
Normal file
505
tools/sdk/include/bluedroid/oi_cpu_dep.h
Normal file
@ -0,0 +1,505 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
* Copyright 2002 - 2004 Open Interface North America, Inc. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _OI_CPU_DEP_H
|
||||
#define _OI_CPU_DEP_H
|
||||
/**
|
||||
* @file
|
||||
* This file contains definitions for characteristics of the target CPU and
|
||||
* compiler, including primitive data types and endianness.
|
||||
*
|
||||
* This file defines the byte order and primitive data types for various
|
||||
* CPU families. The preprocessor symbol 'CPU' must be defined to be an
|
||||
* appropriate value or this header will generate a compile-time error.
|
||||
*
|
||||
* @note The documentation for this header file uses the x86 family of processors
|
||||
* as an illustrative example for CPU/compiler-dependent data type definitions.
|
||||
* Go to the source code of this header file to see the details of primitive type
|
||||
* definitions for each platform.
|
||||
*
|
||||
* Additional information is available in the @ref data_types_docpage section.
|
||||
*/
|
||||
|
||||
/**********************************************************************************
|
||||
$Revision: #1 $
|
||||
***********************************************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** \addtogroup Misc Miscellaneous APIs */
|
||||
/**@{*/
|
||||
|
||||
/** @name Definitions indicating family of target OI_CPU_TYPE
|
||||
* @{
|
||||
*/
|
||||
|
||||
#define OI_CPU_X86 1 /**< x86 processor family */
|
||||
#define OI_CPU_ARM 2 /**< ARM processor family.
|
||||
@deprecated Use #OI_CPU_ARM7_LEND or
|
||||
#OI_CPU_ARM7_BEND. */
|
||||
#define OI_CPU_ARC 3 /**< ARC processor family.
|
||||
@deprecated Use #OI_CPU_ARC_LEND or
|
||||
#OI_CPU_ARC_BEND. */
|
||||
#define OI_CPU_SH3 4 /**< Hitachi SH-3 processor family */
|
||||
#define OI_CPU_H8 5 /**< Hitachi H8 processor family */
|
||||
#define OI_CPU_MIPS 6 /**< MIPS processor family */
|
||||
#define OI_CPU_SPARC 7 /**< SPARC processor family */
|
||||
#define OI_CPU_M68000 8 /**< Motorola M68000 processor family */
|
||||
#define OI_CPU_PPC 9 /**< PowerPC (PPC) processor family */
|
||||
#define OI_CPU_SH4_7750 10 /**< Hitachi SH7750 series in SH-4 processor family */
|
||||
#define OI_CPU_SH2 11 /**< Hitachi SH-2 processor family */
|
||||
#define OI_CPU_ARM7_LEND 12 /**< ARM7, little-endian */
|
||||
#define OI_CPU_ARM7_BEND 13 /**< ARM7, big-endian */
|
||||
#define OI_CPU_GDM1202 14 /**< GCT GDM1202 */
|
||||
#define OI_CPU_ARC_LEND 15 /**< ARC processor family, little-endian */
|
||||
#define OI_CPU_ARC_BEND 16 /**< ARC processor family, big-endian */
|
||||
#define OI_CPU_M30833F 17 /**< Mitsubishi M308 processor family */
|
||||
#define OI_CPU_CR16C 18 /**< National Semiconductor 16 bit processor family */
|
||||
#define OI_CPU_M64111 19 /**< Renesas M64111 processor (M32R family) */
|
||||
#define OI_CPU_ARMV5_LEND 20 //*< ARM5, little-endian */
|
||||
|
||||
#define OI_CPU_TYPE 12
|
||||
|
||||
#ifndef OI_CPU_TYPE
|
||||
#error "OI_CPU_TYPE type not defined"
|
||||
#endif
|
||||
|
||||
/**@}*/
|
||||
|
||||
|
||||
/** @name Definitions indicating byte-wise endianness of target CPU
|
||||
* @{
|
||||
*/
|
||||
|
||||
#define OI_BIG_ENDIAN_BYTE_ORDER 0 /**< Multiple-byte values are stored in memory beginning with the most significant byte at the lowest address. */
|
||||
#define OI_LITTLE_ENDIAN_BYTE_ORDER 1 /**< Multiple-byte values are stored in memory beginning with the least significant byte at the lowest address. */
|
||||
|
||||
/**@}*/
|
||||
|
||||
|
||||
/** @name CPU/compiler-independent primitive data type definitions
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef int OI_BOOL; /**< Boolean values use native integer data type for target CPU. */
|
||||
typedef int OI_INT; /**< Integer values use native integer data type for target CPU. */
|
||||
typedef unsigned int OI_UINT; /**< Unsigned integer values use native unsigned integer data type for target CPU. */
|
||||
typedef unsigned char OI_BYTE; /**< Raw bytes type uses native character data type for target CPU. */
|
||||
|
||||
/**@}*/
|
||||
|
||||
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_X86
|
||||
|
||||
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER /**< x86 platform byte ordering is little-endian */
|
||||
|
||||
/** @name CPU/compiler-dependent primitive data type definitions for x86 processor family
|
||||
* @{
|
||||
*/
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for x86 processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for x86 processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for x86 processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for x86 processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for x86 processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for x86 processor. */
|
||||
|
||||
typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_ARM
|
||||
/* This CPU type is deprecated (removed from use). Instead, use OI_CPU_ARM7_LEND or OI_CPU_ARM7_BEND for
|
||||
little-endian or big-endian configurations of the ARM7, respectively. */
|
||||
#error OI_CPU_ARM is deprecated
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_ARC
|
||||
/* This CPU type is deprecated (removed from use). Instead, use OI_CPU_ARC_LEND or OI_CPU_ARC_BEND for
|
||||
little-endian or big-endian configurations of the ARC, respectively. */
|
||||
#error OI_CPU_ARC is deprecated
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_SH3
|
||||
/* The Hitachi SH C compiler defines _LIT or _BIG, depending on the endianness
|
||||
specified to the compiler on the command line. */
|
||||
#if defined(_LIT)
|
||||
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER /**< If _LIT is defined, SH-3 platform byte ordering is little-endian. */
|
||||
#elif defined(_BIG)
|
||||
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< If _BIG is defined, SH-3 platform byte ordering is big-endian. */
|
||||
#else
|
||||
#error SH compiler endianness undefined
|
||||
#endif
|
||||
|
||||
/** @name CPU/compiler-dependent primitive data type definitions for SH-3 processor family
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH-3 processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH-3 processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH-3 processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH-3 processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH-3 processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH-3 processor. */
|
||||
|
||||
typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
|
||||
#endif
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_SH2
|
||||
|
||||
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< SH-2 platform byte ordering is big-endian. */
|
||||
|
||||
/** @name CPU/compiler-dependent primitive data type definitions for SH-2 processor family
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH-2 processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH-2 processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH-2 processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH-2 processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH-2 processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH-2 processor. */
|
||||
|
||||
typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
|
||||
#endif
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_H8
|
||||
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
|
||||
#error basic types not defined
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_MIPS
|
||||
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
|
||||
/** @name CPU/compiler-dependent primitive data type definitions for MIPS processor family
|
||||
* @{
|
||||
*/
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */
|
||||
|
||||
typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_SPARC
|
||||
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
|
||||
#error basic types not defined
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_M68000
|
||||
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< M68000 platform byte ordering is big-endian. */
|
||||
|
||||
/** @name CPU/compiler-dependent primitive data type definitions for M68000 processor family
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M68000 processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M68000 processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M68000 processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M68000 processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M68000 processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M68000 processor. */
|
||||
|
||||
typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_PPC
|
||||
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
|
||||
|
||||
|
||||
/** @name CPU/compiler-dependent primitive data type definitions for PPC 8XX processor family
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for PPC8XX processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for PPC8XX processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for PPC8XX processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for PPC8XX processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for PPC8XX processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for PPC8XX processor. */
|
||||
|
||||
typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_SH4_7750
|
||||
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER /**< SH7750 platform byte ordering is big-endian. */
|
||||
|
||||
/** @name CPU/compiler-dependent primitive data type definitions for SH7750 processor series of the SH-4 processor family
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for SH7750 SH-4 processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for SH7750 SH-4 processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for SH7750 SH-4 processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for SH7750 SH-4 processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for SH7750 SH-4 processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for SH7750 SH-4 processor. */
|
||||
|
||||
typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_ARM7_LEND
|
||||
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
|
||||
|
||||
/** @name little-endian CPU/compiler-dependent primitive data type definitions for the ARM7 processor family
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */
|
||||
|
||||
typedef void *OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_ARM7_BEND
|
||||
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
|
||||
/** @name big-endian CPU/compiler-dependent primitive data type definitions for the ARM7 processor family
|
||||
* @{
|
||||
*/
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */
|
||||
|
||||
typedef void *OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_GDM1202
|
||||
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
|
||||
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer. */
|
||||
|
||||
typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_ARC_LEND
|
||||
|
||||
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
|
||||
|
||||
/** @name CPU/compiler-dependent primitive data type definitions for ARC processor family
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARC processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARC processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARC processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARC processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARC processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARC processor. */
|
||||
|
||||
typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_ARC_BEND
|
||||
|
||||
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
|
||||
|
||||
/** @name CPU/compiler-dependent primitive data type definitions for ARC processor family
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARC processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARC processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARC processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARC processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARC processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARC processor. */
|
||||
|
||||
typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_M30833F
|
||||
|
||||
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
|
||||
|
||||
/** @name CPU/compiler-dependent primitive data type definitions for Mitsubishi M308 processor family
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M308 processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M308 processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M308 processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M308 processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M308 processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M308 processor. */
|
||||
|
||||
typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_CR16C
|
||||
|
||||
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
|
||||
|
||||
/** @name CPU/compiler-dependent primitive data type definitions for National Semicnductor processor family
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for CR16C processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for CR16C processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for CR16C processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for CR16C processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for CR16C processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for CR16C processor. */
|
||||
|
||||
typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_M64111
|
||||
|
||||
#define OI_CPU_BYTE_ORDER OI_BIG_ENDIAN_BYTE_ORDER
|
||||
|
||||
/** @name CPU/compiler-dependent primitive data type definitions for Renesas M32R processor family
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for M64111 processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for M64111 processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for M64111 processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for M64111 processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for M64111 processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for M64111 processor. */
|
||||
|
||||
typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
#if OI_CPU_TYPE==OI_CPU_ARMV5_LEND
|
||||
#define OI_CPU_BYTE_ORDER OI_LITTLE_ENDIAN_BYTE_ORDER
|
||||
|
||||
/** @name little-endian CPU/compiler-dependent primitive data type definitions for the ARM7 processor family
|
||||
* @{
|
||||
*/
|
||||
|
||||
typedef signed char OI_INT8; /**< 8-bit signed integer values use native signed character data type for ARM7 processor. */
|
||||
typedef signed short OI_INT16; /**< 16-bit signed integer values use native signed short integer data type for ARM7 processor. */
|
||||
typedef signed long OI_INT32; /**< 32-bit signed integer values use native signed long integer data type for ARM7 processor. */
|
||||
typedef unsigned char OI_UINT8; /**< 8-bit unsigned integer values use native unsigned character data type for ARM7 processor. */
|
||||
typedef unsigned short OI_UINT16; /**< 16-bit unsigned integer values use native unsigned short integer data type for ARM7 processor. */
|
||||
typedef unsigned long OI_UINT32; /**< 32-bit unsigned integer values use native unsigned long integer data type for ARM7 processor. */
|
||||
|
||||
typedef OI_UINT32 OI_ELEMENT_UNION; /**< Type for first element of a union to support all data types up to pointer width. */
|
||||
|
||||
/**@}*/
|
||||
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
|
||||
|
||||
#ifndef OI_CPU_BYTE_ORDER
|
||||
#error "Byte order (endian-ness) not defined"
|
||||
#endif
|
||||
|
||||
|
||||
/**@}*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/*********************************************************************************/
|
||||
#endif /* _OI_CPU_DEP_H */
|
171
tools/sdk/include/bluedroid/oi_modules.h
Normal file
171
tools/sdk/include/bluedroid/oi_modules.h
Normal file
@ -0,0 +1,171 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Copyright (C) 2014 The Android Open Source Project
|
||||
* Copyright 2002 - 2004 Open Interface North America, Inc. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at:
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
******************************************************************************/
|
||||
#ifndef _OI_MODULES_H
|
||||
#define _OI_MODULES_H
|
||||
/**
|
||||
* @file
|
||||
*
|
||||
* Enumeration type defining the inidivual stack components.
|
||||
*
|
||||
*/
|
||||
|
||||
/**********************************************************************************
|
||||
$Revision: #1 $
|
||||
***********************************************************************************/
|
||||
|
||||
|
||||
/** \addtogroup Misc Miscellaneous APIs */
|
||||
/**@{*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* This enumeration lists constants for referencing the components of
|
||||
* the BLUEmagic 3.0 protocol stack, profiles, and other functionalities.
|
||||
*
|
||||
* In order to distinguish types of modules, items are grouped with markers to
|
||||
* delineate start and end of the groups
|
||||
*
|
||||
* The module type is used for various purposes:
|
||||
* identification in debug print statements
|
||||
* access to initialization flags
|
||||
* access to the configuration table
|
||||
*/
|
||||
|
||||
typedef enum {
|
||||
/* profiles and protocols --> Updates to oi_debug.c and oi_config_table.c */
|
||||
|
||||
/* XX --> Keep Enum values up-to-date! */
|
||||
OI_MODULE_AT, /**< 00 AT command processing */
|
||||
OI_MODULE_A2DP, /**< 01 Advanced Audio Distribution Profile */
|
||||
OI_MODULE_AVCTP, /**< 02 Audio-Visual Control Transport Profile */
|
||||
OI_MODULE_AVDTP, /**< 03 Audio-Visual Distribution Protocol */
|
||||
OI_MODULE_AVRCP, /**< 04 Audio-Visual Remote Control Profile */
|
||||
OI_MODULE_BIP_CLI, /**< 05 Basic Imaging Profile protocol client */
|
||||
OI_MODULE_BIP_SRV, /**< 06 Basic Imaging Profile protocol server */
|
||||
OI_MODULE_BNEP, /**< 07 Bluetooth Network Encapsulation Protocol */
|
||||
OI_MODULE_BPP_SENDER, /**< 08 Basic Printing Profile */
|
||||
OI_MODULE_BPP_PRINTER, /**< 09 Basic Printing Profile */
|
||||
OI_MODULE_CTP, /**< 10 Cordless Telephony Profile */
|
||||
OI_MODULE_DUN, /**< 11 Dial-Up Networking Profile */
|
||||
OI_MODULE_FAX, /**< 12 Fax Profile */
|
||||
OI_MODULE_FTP_CLI, /**< 13 File Transfer Profile protocol client */
|
||||
OI_MODULE_FTP_SRV, /**< 14 File Transfer Profile protocol server */
|
||||
OI_MODULE_HANDSFREE, /**< 15 Hands-Free Profile */
|
||||
OI_MODULE_HANDSFREE_AG, /**< 16 Hands-Free Profile */
|
||||
OI_MODULE_HCRP_CLI, /**< 17 Hardcopy Cable Replacement Profile */
|
||||
OI_MODULE_HCRP_SRV, /**< 18 Hardcopy Cable Replacement Profile */
|
||||
OI_MODULE_HEADSET, /**< 19 Headset Profile */
|
||||
OI_MODULE_HEADSET_AG, /**< 20 Headset Profile */
|
||||
OI_MODULE_HID, /**< 21 Human Interface Device profile */
|
||||
OI_MODULE_INTERCOM, /**< 22 Intercom Profile */
|
||||
OI_MODULE_OBEX_CLI, /**< 23 OBEX protocol client, Generic Object Exchange Profile */
|
||||
OI_MODULE_OBEX_SRV, /**< 24 OBEX protocol server, Generic Object Exchange Profile */
|
||||
OI_MODULE_OPP_CLI, /**< 25 Object Push Profile protocol client */
|
||||
OI_MODULE_OPP_SRV, /**< 26 Object Push Profile protocol server */
|
||||
OI_MODULE_PAN, /**< 27 PAN profile */
|
||||
OI_MODULE_PBAP_CLI, /**< 28 Phonebook Access Profile client */
|
||||
OI_MODULE_PBAP_SRV, /**< 29 Phonebook Access Profile server */
|
||||
OI_MODULE_SAP_CLI, /**< 30 SIM Access Profile */
|
||||
OI_MODULE_SAP_SRV, /**< 31 SIM Access Profile */
|
||||
OI_MODULE_SPP, /**< 32 Serial Port Profile */
|
||||
OI_MODULE_SYNC_CLI, /**< 33 Synchronization Profile */
|
||||
OI_MODULE_SYNC_SRV, /**< 34 Synchronization Profile */
|
||||
OI_MODULE_SYNC_CMD_CLI, /**< 35 Synchronization Profile */
|
||||
OI_MODULE_SYNC_CMD_SRV, /**< 36 Synchronization Profile */
|
||||
OI_MODULE_SYNCML, /**< 37 SyncML Profile */
|
||||
OI_MODULE_TCS, /**< 38 TCS Binary */
|
||||
OI_MODULE_VDP, /**< 39 Video Distribution Profile */
|
||||
|
||||
/* corestack components --> Updates to oi_debug.c and oi_config_table.c */
|
||||
|
||||
OI_MODULE_COMMON_CONFIG, /**< 40 Common configuration, module has no meaning other than for config struct */
|
||||
OI_MODULE_CMDCHAIN, /**< 41 Command chaining utility */
|
||||
OI_MODULE_DISPATCH, /**< 42 Dispatcher */
|
||||
OI_MODULE_DATAELEM, /**< 43 Data Elements, marshaller */
|
||||
OI_MODULE_DEVMGR, /**< 44 Device Manager */
|
||||
OI_MODULE_DEVMGR_MODES, /**< 45 Device Manager connectability/discoverability modes */
|
||||
OI_MODULE_HCI, /**< 46 Host Controller Interface command layer */
|
||||
OI_MODULE_L2CAP, /**< 47 L2CAP */
|
||||
OI_MODULE_MEMMGR, /**< 48 modules that do memory management */
|
||||
OI_MODULE_POLICYMGR, /**< 49 Policy Manager */
|
||||
OI_MODULE_RFCOMM, /**< 50 RFCOMM */
|
||||
OI_MODULE_RFCOMM_SD, /**< 51 RFCOMM Service discovery */
|
||||
OI_MODULE_SDP_CLI, /**< 52 Service Discovery Protocol client */
|
||||
OI_MODULE_SDP_SRV, /**< 53 Service Discovery Protocol server */
|
||||
OI_MODULE_SDPDB, /**< 54 Service Discovery Protocol database */
|
||||
OI_MODULE_SECMGR, /**< 55 Security Manager */
|
||||
OI_MODULE_SNIFFLOG, /**< 56 sniff log */
|
||||
OI_MODULE_SUPPORT, /**< 57 support functions, including CThru Dispatcher, time functions, and stack initialization */
|
||||
OI_MODULE_TRANSPORT, /**< 58 transport layer between HCI command layer and driver */
|
||||
OI_MODULE_TEST, /**< 59 used to debug output from internal test programs */
|
||||
OI_MODULE_XML, /**< 60 XML/CSS parser */
|
||||
|
||||
OI_MODULE_DI, /**< 61 Device Identification Profile */
|
||||
|
||||
// bhapi components --> Updates to oi_debug.c
|
||||
|
||||
OI_MODULE_BHAPI, /**< 62 BLUEmagic Host API generic */
|
||||
OI_MODULE_BHCLI, /**< 63 BLUEmagic Host API client side */
|
||||
OI_MODULE_BHSRV, /**< 64 BLUEmagic Host API server side */
|
||||
OI_MODULE_MSGQ, /**< 65 module that handles message queuing */
|
||||
OI_MODULE_BHAPI_TRANSPORT, /**< 66 module that handles message queuing */
|
||||
OI_MODULE_BLST_SRV, /**< 67 module that provides server side BHAPI Lightweight Serial Transport */
|
||||
OI_MODULE_BLST_CLI, /**< 68 module that provides client side BHAPI Lightweight Serial Transport */
|
||||
|
||||
// OEM files --> Updates to oi_debug.c
|
||||
OI_MODULE_OEM, /**< 69 Application Memory allocation */
|
||||
|
||||
// Application glue --> Updates to oi_debug.c
|
||||
OI_MODULE_APP, /**< 70 Application Memory allocation */
|
||||
|
||||
/* various pieces of code depend on these last 2 elements occuring in a specific order:
|
||||
OI_MODULE_ALL must be the 2nd to last element
|
||||
OI_MODULE_UNKNOWN must be the last element
|
||||
*/
|
||||
OI_MODULE_ALL, /**< 71 special value identifying all modules - used for control of debug print statements */
|
||||
OI_MODULE_UNKNOWN /**< 72 special value - used for debug print statements */
|
||||
} OI_MODULE;
|
||||
|
||||
/**
|
||||
* This constant is the number of actual modules in the list. ALL and UNKNOWN are
|
||||
* special values that are not actually modules.
|
||||
* Used for debug print and memmgr profiling
|
||||
*/
|
||||
#define OI_NUM_MODULES OI_MODULE_ALL
|
||||
|
||||
|
||||
/**
|
||||
* This constant is the number of profile and core components. It is used to size
|
||||
* the initialization and configuration tables.
|
||||
*/
|
||||
#define OI_NUM_STACK_MODULES OI_MODULE_BHAPI
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
/**@}*/
|
||||
|
||||
#endif /* _OI_MODULES_H */
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user