diff --git a/README.md b/README.md index 1a461e94f..26114bd40 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ It has been qualified with the the Bluetooth SIG for GAP, IOP, HFP, HSP, SPP, PA GATT, SM of the Bluetooth 4.2 LE Central and Peripheral roles (QD ID 25340). ## Documentation -- [HTML](http://bluekitchen-gmbh.com/btstack) -- [PDF](http://bluekitchen-gmbh.com/btstack.pdf) +- [HTML](http://bluekitchen-gmbh.com/btstack/develop/) +- [PDF](http://bluekitchen-gmbh.com/btstack_develop.pdf) ## Supported Protocols * L2CAP @@ -55,24 +55,24 @@ Coming next: HID, HOGP, A2DP, and more. #### Embedded Platforms: Status | Platform -------------- | ------ -![buildstatus](http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-ez430-rf2560-develop) | [EZ430-RF256x Bluetooth Evaluation Tool for MSP430](http://www.ti.com/tool/ez430-rf256x) -![buildstatus](http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-msp-exp430f5438-cc2564b-develop) | [MSP430F5438 Experimenter Board for MSP430](http://www.ti.com/tool/msp-exp430f5438) with [Bluetooth CC2564 Module Evaluation Board](http://www.ti.com/tool/cc2564modnem) -![buildstatus](http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-msp430f5229lp-cc2564b-develop) | [MSP-EXP430F5529LP LaunchPad](http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html#tabs) with [Bluetooth CC2564 Module Evaluation Board](http://www.ti.com/tool/cc2564modnem) and [EM Adapter BoosterPack](http://www.ti.com/tool/boost-ccemadapter) with additional 32768Hz quartz oscillator -![buildstatus](http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-stm32-f103rb-nucleo-develop) | [STM32 Nucleo development board NUCLEO-F103RB](http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF259875) with [Bluetooth CC2564 Module Evaluation Board](http://www.ti.com/tool/cc2564modnem) and [EM Adapter BoosterPack](http://www.ti.com/tool/boost-ccemadapter) with additional 32768Hz quartz oscillator -![buildstatus](http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-pic32-harmony-develop) | [Microchip's PIC32 Bluetooth Audio Development Kit](http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=DV320032) -![buildstatus](http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-wiced-develop) | [RedBear Duo](https://github.com/redbear/WICED-SDK) with Broadcom BCM43438 A1 +[](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-ez430-rf2560-develop) | [EZ430-RF256x Bluetooth Evaluation Tool for MSP430](http://www.ti.com/tool/ez430-rf256x) +[](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-msp-exp430f5438-cc2564b-develop) | [MSP430F5438 Experimenter Board for MSP430](http://www.ti.com/tool/msp-exp430f5438) with [Bluetooth CC2564 Module Evaluation Board](http://www.ti.com/tool/cc2564modnem) +[](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-msp430f5229lp-cc2564b-develop) | [MSP-EXP430F5529LP LaunchPad](http://www.ti.com/ww/en/launchpad/launchpads-msp430-msp-exp430f5529lp.html#tabs) with [Bluetooth CC2564 Module Evaluation Board](http://www.ti.com/tool/cc2564modnem) and [EM Adapter BoosterPack](http://www.ti.com/tool/boost-ccemadapter) with additional 32768Hz quartz oscillator +[](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-stm32-f103rb-nucleo-develop) | [STM32 Nucleo development board NUCLEO-F103RB](http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF259875) with [Bluetooth CC2564 Module Evaluation Board](http://www.ti.com/tool/cc2564modnem) and [EM Adapter BoosterPack](http://www.ti.com/tool/boost-ccemadapter) with additional 32768Hz quartz oscillator +[](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-pic32-harmony-develop) | [Microchip's PIC32 Bluetooth Audio Development Kit](http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=DV320032) +[](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-wiced-develop) | [RedBear Duo](https://github.com/redbear/WICED-SDK) with Broadcom BCM43438 A1 #### Other Platforms: Status | Platform -------------- | ------ -![buildstatus](http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-posix-h4-develop)| posix: Unix-based system talking to Bluetooth module via serial port -![buildstatus](http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-libusb-develop)| libusb: Unix-based system talking via USB Bluetooth dongle -![buildstatus](http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-daemon-develop)| daemon: TCP and Unix domain named socket client-server architecture supporting multiple clients -![buildstatus](http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=java-develop)| java: Java wrapper for daemon -![buildstatus](http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-ios-develop)| iOS: daemon for iOS jailbreak devices, C client-server API -![buildstatus](http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-mtk-develop)| mtk: daemon for rooted Android devices, based on Mediatek MT65xx processor, Java and C client-server API -![buildstatus](http://buildbot.bluekitchen-gmbh.com/btstack/badge.png?builder=port-wiced-develop) | wiced: Broadcom platforms that support the WICED SDK +[](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-posix-h4-develop) | posix: Unix-based system talking to Bluetooth module via serial port +[](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-libusb-develop) | libusb: Unix-based system talking via USB Bluetooth dongle +[](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-daemon-develop) | daemon: TCP and Unix domain named socket client-server architecture supporting multiple clients +[](https://buildbot.bluekitchen-gmbh.com/btstack/builders/java-develop) | java: Java wrapper for daemon +[](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-ios-develop) | iOS: daemon for iOS jailbreak devices, C client-server API +[](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-mtk-develop) | mtk: daemon for rooted Android devices, based on Mediatek MT65xx processor, Java and C client-server API +[](https://buildbot.bluekitchen-gmbh.com/btstack/builders/port-wiced-develop) | wiced: Broadcom platforms that support the WICED SDK ## Supported Chipsets Chipsets | Status diff --git a/src/ble/gatt-service/device_information_service.gatt b/src/ble/gatt-service/device_information_service.gatt new file mode 100644 index 000000000..1f62b6047 --- /dev/null +++ b/src/ble/gatt-service/device_information_service.gatt @@ -0,0 +1,14 @@ +// Specification Type org.bluetooth.service.device_information +// https://www.bluetooth.com/api/gatt/xmlfile?xmlFileName=org.bluetooth.service.device_information.xml + +// Device Information 180A +PRIMARY_SERVICE, ORG_BLUETOOTH_SERVICE_DEVICE_INFORMATION +CHARACTERISTIC, ORG_BLUETOOTH_CHARACTERISTIC_MANUFACTURER_NAME_STRING, DYNAMIC | READ, +CHARACTERISTIC, ORG_BLUETOOTH_CHARACTERISTIC_MODEL_NUMBER_STRING, DYNAMIC | READ, +CHARACTERISTIC, ORG_BLUETOOTH_CHARACTERISTIC_SERIAL_NUMBER_STRING, DYNAMIC | READ, +CHARACTERISTIC, ORG_BLUETOOTH_CHARACTERISTIC_HARDWARE_REVISION_STRING, DYNAMIC | READ, +CHARACTERISTIC, ORG_BLUETOOTH_CHARACTERISTIC_FIRMWARE_REVISION_STRING, DYNAMIC | READ, +CHARACTERISTIC, ORG_BLUETOOTH_CHARACTERISTIC_SOFTWARE_REVISION_STRING, DYNAMIC | READ, +CHARACTERISTIC, ORG_BLUETOOTH_CHARACTERISTIC_SYSTEM_ID, DYNAMIC | READ, +CHARACTERISTIC, ORG_BLUETOOTH_CHARACTERISTIC_IEEE_11073_20601_REGULATORY_CERTIFICATION_DATA_LIST, DYNAMIC | READ, +CHARACTERISTIC, ORG_BLUETOOTH_CHARACTERISTIC_PNP_ID, DYNAMIC | READ, diff --git a/src/ble/gatt-service/device_information_service_server.c b/src/ble/gatt-service/device_information_service_server.c new file mode 100644 index 000000000..cb782ed27 --- /dev/null +++ b/src/ble/gatt-service/device_information_service_server.c @@ -0,0 +1,227 @@ +/* + * Copyright (C) 2014 BlueKitchen GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holders nor the names of + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * 4. Any redistribution, use, or modification is done solely for + * personal benefit and not for any commercial purpose or for + * monetary gain. + * + * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS + * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * Please inquire about commercial licensing options at + * contact@bluekitchen-gmbh.com + * + */ + +/** + * Implementation of the Device Information Service Server + * + * To use with your application, add '#import > 32; + little_endian_store_16(device_information_system_id, 5, organizationally_unique_identifier); + device_information_system_id[7] = organizationally_unique_identifier >> 16; +} + +/** + * @brief Set IEEE 11073-20601 regulatory certification data list + * @note: format duint16. duint16 is two uint16 values concatenated together. + * @param ieee_regulatory_certification + */ +void device_information_service_server_set_ieee_regulatory_certification(uint16_t value_a, uint16_t value_b){ + device_information_fields[IEEE_REGULATORY_CERTIFICATION].data = device_information_ieee_regulatory_certification; + device_information_fields[IEEE_REGULATORY_CERTIFICATION].len = 4; + + little_endian_store_16(device_information_ieee_regulatory_certification, 0, value_a); + little_endian_store_16(device_information_ieee_regulatory_certification, 2, value_b); +} + +/** + * @brief Set PNP ID + * @param vendor_source_id + * @param vendor_id + * @param product_id + */ +void device_information_service_server_set_pnp_id(uint8_t vendor_source_id, uint16_t vendor_id, uint16_t product_id, uint16_t product_version){ + device_information_fields[PNP_ID].data = device_information_pnp_id; + device_information_fields[PNP_ID].len = 7; + + device_information_pnp_id[0] = vendor_source_id; + little_endian_store_16(device_information_pnp_id, 1, vendor_source_id); + little_endian_store_16(device_information_pnp_id, 3, vendor_id); + little_endian_store_16(device_information_pnp_id, 5, product_id); +} diff --git a/src/ble/gatt-service/device_information_service_server.h b/src/ble/gatt-service/device_information_service_server.h new file mode 100644 index 000000000..23c88c88d --- /dev/null +++ b/src/ble/gatt-service/device_information_service_server.h @@ -0,0 +1,130 @@ +/* + * Copyright (C) 2014 BlueKitchen GmbH + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holders nor the names of + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * 4. Any redistribution, use, or modification is done solely for + * personal benefit and not for any commercial purpose or for + * monetary gain. + * + * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS + * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF + * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * Please inquire about commercial licensing options at + * contact@bluekitchen-gmbh.com + * + */ +#ifndef __DEVICE_INFORMATION_SERVICE_SERVER_H +#define __DEVICE_INFORMATION_SERVICE_SERVER_H + +#include + +#if defined __cplusplus +extern "C" { +#endif + +/* API_START */ + +/** + * Implementation of the Device Information Service Server + * + * To use with your application, add '#import