Permalink
Browse files

Merge branch 'develop'

  • Loading branch information...
milamikica committed Dec 7, 2018
2 parents 2f98d3c + 472a1e5 commit e034024d16933df0720cab3582d625294e26c667
Showing with 10,827 additions and 1,735 deletions.
  1. +10 −8 3rd-party/yxml/yxml.c
  2. +31 −1 CHANGELOG.md
  3. +1 −1 README.md
  4. +2 −0 chipset/cc256x/Makefile.inc
  5. +458 −0 chipset/em9301/0000000_META_hci_patches_v7.c
  6. +2 −1 doc/manual/docs/how_to.md
  7. +33 −9 example/Makefile.inc
  8. +10 −10 example/a2dp_sink_demo.c
  9. +41 −16 example/avrcp_browsing_client.c
  10. +1 −1 example/hid_host_demo.c
  11. +2 −2 example/hid_keyboard_demo.c
  12. +1 −2 example/hid_mouse_demo.c
  13. +202 −0 example/nordic_spp_le_counter.c
  14. +4 −0 example/nordic_spp_le_counter.gatt
  15. +320 −0 example/nordic_spp_le_streamer.c
  16. +4 −0 example/nordic_spp_le_streamer.gatt
  17. +6 −8 example/panu_demo.c
  18. +127 −20 example/pbap_client_demo.c
  19. +7 −11 example/sco_demo_util.c
  20. +6 −8 example/sdp_bnep_query.c
  21. +18 −8 example/sdp_rfcomm_query.c
  22. +89 −0 example/sine_player.c
  23. +59 −28 example/sm_pairing_central.c
  24. +8 −10 example/sm_pairing_peripheral.c
  25. +212 −0 example/ublox_spp_le_counter.c
  26. +5 −0 example/ublox_spp_le_counter.gatt
  27. +1 −0 platform/corefoundation/btstack_run_loop_corefoundation.m
  28. +1 −0 platform/daemon/binding/python/.gitignore
  29. +12 −0 platform/daemon/binding/python/Makefile
  30. +3 −0 platform/daemon/binding/python/btstack/.gitignore
  31. 0 platform/daemon/binding/python/btstack/__init__.py
  32. +65 −0 platform/daemon/binding/python/btstack/btstack_client.py
  33. +35 −0 platform/daemon/binding/python/btstack/btstack_server.py
  34. +211 −0 platform/daemon/binding/python/btstack/btstack_types.py
  35. +37 −0 platform/daemon/binding/python/test.py
  36. +3 −1 platform/daemon/example/l2cap_server.c
  37. +3 −1 platform/daemon/example/l2cap_throughput.c
  38. +2 −0 platform/daemon/src/daemon.c
  39. +1 −0 platform/daemon/src/rfcomm_service_db_memory.c
  40. +8 −5 platform/daemon/src/socket_connection.c
  41. +34 −9 platform/libusb/hci_transport_h2_libusb.c
  42. +3 −1 platform/posix/btstack_tlv_posix.c
  43. +5 −1 platform/posix/le_device_db_fs.c
  44. +1 −0 port/esp32/components/btstack/include/btstack_config.h
  45. +8 −0 port/libusb/.gitignore
  46. +82 −0 port/libusb/CMakeLists.txt
  47. +1 −0 port/posix-h4-atwilc3000/btstack_config.h
  48. +1 −1 port/posix-h4/Makefile
  49. +36 −0 port/posix-h4/README.md
  50. +1 −0 port/posix-h4/btstack_config.h
  51. +1 −0 port/posix-h5-bcm/btstack_config.h
  52. +1 −0 port/posix-h5/btstack_config.h
  53. +1 −0 port/raspi/btstack_config.h
  54. +1 −1 port/stm32-l053r8-em9304/cubemx-l053r8-em9304/Makefile
  55. +14 −13 src/Makefile.inc
  56. +5 −5 src/ble/Makefile.inc
  57. +0 −2 src/ble/ancs_client.c
  58. +16 −9 src/ble/att_db.c
  59. +5 −3 src/ble/att_db.h
  60. +1 −2 src/ble/att_db_util.c
  61. +8 −6 src/ble/att_server.c
  62. +27 −20 src/ble/att_server.h
  63. +6 −2 src/ble/gatt-service/Makefile.inc
  64. +14 −0 src/ble/gatt-service/cycling_power_service.gatt
  65. +1,301 −0 src/ble/gatt-service/cycling_power_service_server.c
  66. +224 −0 src/ble/gatt-service/cycling_power_service_server.h
  67. +11 −0 src/ble/gatt-service/cycling_speed_and_cadence_service.gatt
  68. +386 −0 src/ble/gatt-service/cycling_speed_and_cadence_service_server.c
  69. +114 −0 src/ble/gatt-service/cycling_speed_and_cadence_service_server.h
  70. +159 −159 src/ble/gatt-service/heart_rate_service_server.c
  71. +25 −46 src/ble/gatt-service/hids_device.c
  72. +7 −0 src/ble/gatt-service/nordic_spp_service.gatt
  73. +155 −0 src/ble/gatt-service/nordic_spp_service_server.c
  74. +85 −0 src/ble/gatt-service/nordic_spp_service_server.h
  75. +9 −0 src/ble/gatt-service/ublox_spp_service.gatt
  76. +274 −0 src/ble/gatt-service/ublox_spp_service_server.c
  77. +87 −0 src/ble/gatt-service/ublox_spp_service_server.h
  78. +0 −3 src/ble/gatt_client.c
  79. +0 −1 src/ble/le_device_db_memory.c
  80. +0 −1 src/ble/le_device_db_tlv.c
  81. +159 −40 src/ble/sm.c
  82. +4 −2 src/ble/sm.h
  83. +40 −4 src/bluetooth.h
  84. +6 −0 src/btstack.h
  85. +147 −0 src/btstack_base64_decoder.c
  86. +80 −0 src/btstack_base64_decoder.h
  87. +80 −11 src/btstack_crypto.c
  88. +5 −3 src/btstack_crypto.h
  89. +24 −0 src/btstack_defines.h
  90. +82 −26 src/btstack_event.h
  91. +115 −49 src/btstack_hid_parser.c
  92. +89 −9 src/btstack_hid_parser.h
  93. +181 −36 src/btstack_memory.c
  94. +24 −8 src/btstack_util.c
  95. +1 −0 src/btstack_util.h
  96. +32 −31 src/classic/Makefile.inc
  97. +45 −8 src/classic/avdtp.c
  98. +7 −8 src/classic/avrcp.c
  99. +10 −18 src/classic/avrcp_browsing_controller.c
  100. +0 −1 src/classic/avrcp_browsing_target.c
  101. +0 −4 src/classic/bnep.c
  102. +65 −55 src/classic/btstack_cvsd_plc.c
  103. +15 −6 src/classic/btstack_cvsd_plc.h
  104. +53 −41 src/classic/goep_client.c
  105. +30 −0 src/classic/goep_client.h
  106. +0 −2 src/classic/hfp.c
  107. +178 −170 src/classic/hfp_ag.c
  108. +85 −83 src/classic/hfp_hf.c
  109. +321 −57 src/classic/hid_device.c
  110. +19 −11 src/classic/hid_device.h
  111. +3 −3 src/classic/obex_iterator.h
  112. +400 −151 src/classic/pbap_client.c
  113. +111 −2 src/classic/pbap_client.h
  114. +1 −7 src/classic/rfcomm.c
  115. +30 −0 src/gap.h
  116. +81 −7 src/hci.c
  117. +16 −0 src/hci.h
  118. +8 −1 src/hci_cmd.c
  119. +2 −1 src/hci_cmd.h
  120. +10 −5 src/hci_dump.c
  121. +69 −35 src/l2cap.c
  122. +3 −0 src/l2cap.h
  123. +1 −0 test/base64/.gitignore
  124. +27 −0 test/base64/Makefile
  125. +56 −0 test/base64/base64_decoder_test.c
  126. +6 −0 test/crypto/.gitignore
  127. +55 −0 test/crypto/Makefile
  128. +451 −0 test/crypto/aes_ccm.c
  129. +14 −0 test/crypto/aes_ccm.h
  130. +64 −0 test/crypto/aes_ccm_test.c
  131. 0 test/{security_manager → crypto}/aes_cmac.c
  132. 0 test/{security_manager → crypto}/aes_cmac.h
  133. 0 test/{security_manager → crypto}/aes_cmac_test.c
  134. 0 test/{security_manager → crypto}/aestest.c
  135. 0 test/{security_manager → crypto}/ecc_micro_ecc.c
  136. +63 −0 test/crypto/mock.c
  137. +178 −40 test/hfp/cvsd_plc_test.c
  138. +5 −4 test/hfp/hfp_ag_client_test.c
  139. +1 −0 test/hid_parser/.gitignore
  140. +18 −0 test/hid_parser/hid_parser_test.c
  141. +5 −1 test/pts/.gitignore
  142. +34 −12 test/pts/Makefile
  143. +13 −8 test/pts/avrcp_controller_test.c
  144. +860 −0 test/pts/csc_client_test.c
  145. +155 −0 test/pts/csc_server_test.c
  146. +5 −0 test/pts/csc_server_test.gatt
  147. +502 −0 test/pts/cycling_power_server_test.c
  148. +5 −0 test/pts/cycling_power_server_test.gatt
  149. +0 −2 test/pts/gatt_profiles.c
  150. +101 −48 test/pts/hid_device_test.c
  151. +1 −1 test/pts/hid_host_test.c
  152. +0 −3 test/pts/hog_demo_test.c
  153. +0 −235 test/pts/hog_demo_test.h
  154. +0 −4 test/security_manager/.gitignore
  155. +2 −19 test/security_manager/Makefile
  156. +11 −10 tool/btstack_event_generator.py
  157. +20 −3 tool/btstack_memory_generator.py
  158. +18 −9 tool/btstack_parser.py
  159. +2 −2 tool/create_makefile_inc.py
  160. +2 −3 tool/java_binding.py
  161. +371 −0 tool/python_generator.py
@@ -225,12 +225,13 @@ static void yxml_popstack(yxml_t *x) {

static inline yxml_ret_t yxml_elemstart (yxml_t *x, unsigned ch) { return yxml_pushstack(x, &x->elem, ch); }
static inline yxml_ret_t yxml_elemname (yxml_t *x, unsigned ch) { return yxml_pushstackc(x, ch); }
static inline yxml_ret_t yxml_elemnameend(yxml_t *x, unsigned ch) { return YXML_ELEMSTART; }
static inline yxml_ret_t yxml_elemnameend(yxml_t *x, unsigned ch) { (void) x; (void) ch; return YXML_ELEMSTART; }


/* Also used in yxml_elemcloseend(), since this function just removes the last
* element from the stack and returns ELEMEND. */
static yxml_ret_t yxml_selfclose(yxml_t *x, unsigned ch) {
(void) ch;
yxml_popstack(x);
if(x->stacklen) {
x->elem = (char *)x->stack+x->stacklen-1;
@@ -261,20 +262,21 @@ static inline yxml_ret_t yxml_elemcloseend(yxml_t *x, unsigned ch) {

static inline yxml_ret_t yxml_attrstart (yxml_t *x, unsigned ch) { return yxml_pushstack(x, &x->attr, ch); }
static inline yxml_ret_t yxml_attrname (yxml_t *x, unsigned ch) { return yxml_pushstackc(x, ch); }
static inline yxml_ret_t yxml_attrnameend(yxml_t *x, unsigned ch) { return YXML_ATTRSTART; }
static inline yxml_ret_t yxml_attrvalend (yxml_t *x, unsigned ch) { yxml_popstack(x); return YXML_ATTREND; }
static inline yxml_ret_t yxml_attrnameend(yxml_t *x, unsigned ch) { (void) x; (void) ch; return YXML_ATTRSTART; }
static inline yxml_ret_t yxml_attrvalend (yxml_t *x, unsigned ch) { (void) ch; yxml_popstack(x); return YXML_ATTREND; }


static inline yxml_ret_t yxml_pistart (yxml_t *x, unsigned ch) { return yxml_pushstack(x, &x->pi, ch); }
static inline yxml_ret_t yxml_piname (yxml_t *x, unsigned ch) { return yxml_pushstackc(x, ch); }
static inline yxml_ret_t yxml_piabort (yxml_t *x, unsigned ch) { yxml_popstack(x); return YXML_OK; }
static inline yxml_ret_t yxml_pinameend(yxml_t *x, unsigned ch) {
static inline yxml_ret_t yxml_piabort (yxml_t *x, unsigned ch) { (void) x; (void) ch; yxml_popstack(x); return YXML_OK; }
static inline yxml_ret_t yxml_pinameend(yxml_t *x, unsigned ch) { (void) ch;
return (x->pi[0]|32) == 'x' && (x->pi[1]|32) == 'm' && (x->pi[2]|32) == 'l' && !x->pi[3] ? YXML_ESYN : YXML_PISTART;
}
static inline yxml_ret_t yxml_pivalend (yxml_t *x, unsigned ch) { yxml_popstack(x); x->pi = (char *)x->stack; return YXML_PIEND; }
static inline yxml_ret_t yxml_pivalend (yxml_t *x, unsigned ch) { (void) ch; yxml_popstack(x); x->pi = (char *)x->stack; return YXML_PIEND; }


static inline yxml_ret_t yxml_refstart(yxml_t *x, unsigned ch) {
(void) ch;
memset(x->data, 0, sizeof(x->data));
x->reflen = 0;
return YXML_OK;
@@ -320,8 +322,8 @@ static yxml_ret_t yxml_refend(yxml_t *x, yxml_ret_t ret) {
}


static inline yxml_ret_t yxml_refcontent(yxml_t *x, unsigned ch) { return yxml_refend(x, YXML_CONTENT); }
static inline yxml_ret_t yxml_refattrval(yxml_t *x, unsigned ch) { return yxml_refend(x, YXML_ATTRVAL); }
static inline yxml_ret_t yxml_refcontent(yxml_t *x, unsigned ch) { (void) ch; return yxml_refend(x, YXML_CONTENT); }
static inline yxml_ret_t yxml_refattrval(yxml_t *x, unsigned ch) { (void) ch; return yxml_refend(x, YXML_ATTRVAL); }


void yxml_init(yxml_t *x, void *stack, size_t stacksize) {
@@ -6,14 +6,44 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

## [Unreleased]

### Added
- SM: generate and store ER / IR keys in TLV, unless manually set by application

### Fixed
- SM: fix internal buffer overrun during random address generation

## Changes November 2018

### Added
- GAP: gap_le_connection_interval provides connection interval for conn handle
- Nordic SPP Service Server: GATT service that emulates a serial port over BLE based on Nordic Semiconductor documentation.
- uBlox SPP Service Server: GATT service that emulates a serial port over BLE based on uBlox documentation.
- SM: ENABLE_LE_CENTRAL_AUTO_ENCRYPTION triggers automatic encryption on connect to bonded devices
- SM: generate and store ER / IR keys in TLV, unless manually set by application

### Fixed
- SM: prevent random address updates if gap_random_address_set was used
- SM: fix internal buffer overrun that can cause storing of bonding information to fail
- SM: ignore Slave Security Request after sending own Pairing Request
- L2CAP: fix use after free on disconnect if ERTM is enabled
- HFP: Handle multiple commands/responses in single RFCOMM packet
- Memory Pools: clear all buffers before use

## Changes October 2018

### Added
- SDP Server: queue incoming connections when already connected instead of rejecting them
- GAP: Support enter/exit sniff mode via gap_sniff_mode_enter/exit. gap_set_default_link_policy_settings is needed to enable sniff mode in general.
- HIDS Device: GATT service that exposes HID reports intended for HID Devices, like keyboard and mouse.

### Fixed
- HCI: fix bug in gap_inquiry_stop that triggered additional GAP_EVENT_INQUIRY_COMPLETE instead of stopping the inquiry
- L2CAP: fix issue with outgoing connection before read remote supported complete when other channels exist
- L2CAP ERTM: allow SDU of szie MPS in first packet that contains L2CAP SDU Length
- L2CAP ERTM: fix memory corruption triggered if local_mtu > mps
- L2CAP ERTM: fix memory corruption triggered if local_mtu > mps
- L2CAP ERTM: fix outgoing fragment management
- HFP: decline incoming RFCOMM connection after outgoing connection was started
- AVRCP: fix crash on disconnect of connection established by remote

## Changes September 2018

@@ -12,7 +12,7 @@ If a RTOS is already provided, BTstack can be integrated and run as a single thr
On larger systems, BTstack provides a server that connects to a Bluetooth module.
Multiple applications can communicate with this server over different inter-process communication methods. As sockets are used for client/server communication, it's easy to interact via higher-level level languages, e.g. there's already a Java binding for use in desktop environments.

BTstack supports the Central and the Peripheral Role of Bluetooth 4.2 Low Energy specification incl. LE Secure Connections, LE Data Channels, and LE Data Length Extension. It can be configured to run as either single-mode stack or a dual-mode stack.
BTstack supports the Central and the Peripheral Role of Bluetooth 5 Low Energy specification incl. LE Secure Connections, LE Data Channels, and LE Data Length Extension. It can be configured to run as either single-mode stack or a dual-mode stack.

BTstack is free for non-commercial use. However, for commercial use, <a href="mailto:contact@bluekitchen-gmbh.com">tell us</a> a bit about your project to get a quote.

@@ -234,7 +234,9 @@ all-scripts: \
bluetooth_init_cc2560B_1.5_BT_Spec_4.1.c \
bluetooth_init_cc2564B_1.5_BT_Spec_4.1.c \
bluetooth_init_cc2560C_1.0.c \
bluetooth_init_cc2560C_1.1.c \
bluetooth_init_cc2564C_1.0.c \
bluetooth_init_cc2564C_1.1.c \
TIInit_11.8.32.c \
TIInit_12.10.28.c \
TIInit_12.8.32.c \
Oops, something went wrong.

0 comments on commit e034024

Please sign in to comment.