vos/ambiq-hal-sys/ambiq-sparkfun-sdk/ambiq_ble/profile_appl/amota/gatt_db.c
2022-10-23 23:45:43 -07:00

1882 lines
42 KiB
C

//*****************************************************************************
//
// gatt_db.c
//! @file GATT Database.
//!
//! @brief.
//
//*****************************************************************************
//*****************************************************************************
//
// Copyright (c) 2020, Ambiq Micro
// All rights reserved.
//
// 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 holder nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// Third party software included in this distribution is subject to the
// additional license terms as defined in the /docs/licenses directory.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 THE COPYRIGHT HOLDER 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.
//
// This is part of revision 2.4.2 of the AmbiqSuite Development Package.
//
//*****************************************************************************
/**
* \file gatt_db.c
* GATT Databse.
*/
/**
* GATT DATABASE QUICK REFERENCE TABLE:
* Abbreviations used for Permission:
* Rd = Read
* WwR = Write Without Response
* Wr = Write
* Swr = Signed Write
* Ntf = Notification
* Ind = Indication
*
* Handle | ATT_Type | Permission | ATT_VALUE
* ========+====================+==================+=====================
* 0x0001 | 0x2800 | Rd | 0x1800
* --------+--------------------+------------------+---------------------
* 0x0002 | 0x2803 | Rd | 0x02, 0x0003, 0x2A00
* --------+--------------------+------------------+---------------------
* 0x0003 | 0x2A00 | Rd | MindtreeHeartRateBelt
* --------+--------------------+------------------+---------------------
* 0x0004 | 0x2803 | Rd | 0x02, 0x0005, 0x2A01
* --------+--------------------+------------------+---------------------
* 0x0005 | 0x2A01 | Rd | 833.0
* ========+====================+==================+=====================
* 0x0006 | 0x2800 | Rd | 0x1801
* --------+--------------------+------------------+---------------------
* 0x0007 | 0x2803 | Rd | 0x20, 0x0008, 0x2A05
* --------+--------------------+------------------+---------------------
* 0x0008 | 0x2A05 | Ind | N/A
* --------+--------------------+------------------+---------------------
* 0x0009 | 0x2902 | Rd, Wr | 0x0000
* ========+====================+==================+=====================
* 0x000A | 0x2800 | Rd | 0x180F
* --------+--------------------+------------------+---------------------
* 0x000B | 0x2803 | Rd | 0x12, 0x000C, 0x2A19
* --------+--------------------+------------------+---------------------
* 0x000C | 0x2A19 | Rd, Ntf | 100.0
* --------+--------------------+------------------+---------------------
* 0x000D | 0x2902 | Rd, Wr | 0x0000
* --------+--------------------+------------------+---------------------
* 0x000E | 0x2904 | Rd | VALUE
* ========+====================+==================+=====================
* 0x000F | 0x2800 | Rd | 0x180A
* --------+--------------------+------------------+---------------------
* 0x0010 | 0x2803 | Rd | 0x02, 0x0011, 0x2A29
* --------+--------------------+------------------+---------------------
* 0x0011 | 0x2A29 | Rd | Mindtree Limited.
* --------+--------------------+------------------+---------------------
* 0x0012 | 0x2803 | Rd | 0x02, 0x0013, 0x2A24
* --------+--------------------+------------------+---------------------
* 0x0013 | 0x2A24 | Rd | HRS-1.0.0
* --------+--------------------+------------------+---------------------
* 0x0014 | 0x2803 | Rd | 0x02, 0x0015, 0x2A25
* --------+--------------------+------------------+---------------------
* 0x0015 | 0x2A25 | Rd | 1.0.0
* --------+--------------------+------------------+---------------------
* 0x0016 | 0x2803 | Rd | 0x02, 0x0017, 0x2A26
* --------+--------------------+------------------+---------------------
* 0x0017 | 0x2A26 | Rd | 1.0.0
* --------+--------------------+------------------+---------------------
* 0x0018 | 0x2803 | Rd | 0x02, 0x0019, 0x2A27
* --------+--------------------+------------------+---------------------
* 0x0019 | 0x2A27 | Rd | 1.0.0
* --------+--------------------+------------------+---------------------
* 0x001A | 0x2803 | Rd | 0x02, 0x001B, 0x2A28
* --------+--------------------+------------------+---------------------
* 0x001B | 0x2A28 | Rd | 1.0.0
* --------+--------------------+------------------+---------------------
* 0x001C | 0x2803 | Rd | 0x02, 0x001D, 0x2A23
* --------+--------------------+------------------+---------------------
* 0x001D | 0x2A23 | Rd | 11223344.0
* --------+--------------------+------------------+---------------------
* 0x001E | 0x2803 | Rd | 0x02, 0x001F, 0x2A2A
* --------+--------------------+------------------+---------------------
* 0x001F | 0x2A2A | Rd | 0.0
* --------+--------------------+------------------+---------------------
* 0x0020 | 0x2803 | Rd | 0x02, 0x0021, 0x2A50
* --------+--------------------+------------------+---------------------
* 0x0021 | 0x2A50 | Rd | 0
* ========+====================+==================+=====================
* 0x0022 | 0x2800 | Rd | 00002760-08C2-11E1-9073-0E8AC72E1001 AMOTA service
* --------+--------------------+------------------+---------------------
* 0x0023 | 0x2803 | Rd | 0x04, 0x0024, 00002760-08C2-11E1-9073-0E8AC72E0001 AMOTA Rx
* --------+--------------------+------------------+---------------------
* 0x0024 | 0x0001 | Wwr | N/A
* --------+--------------------+------------------+---------------------
* 0x0025 | 0x2803 | Rd | 0x10, 0x0026, 00002760-08C2-11E1-9073-0E8AC72E0002 AMOTA Tx
* --------+--------------------+------------------+---------------------
* 0x0026 | 0x0002 | Ntf | N/A
* --------+--------------------+------------------+---------------------
* 0x0027 | 0x2902 | Rd, Wr | 0x0000
*/
/* --------------------------------------------- Header File Inclusion */
#include "BT_gatt_db_api.h"
#include "gatt_db.h"
#include "gatt_defines.h"
#if ((defined AMOTAS) && (defined GATT_DB))
/* ----------------------------------------- Global Variables */
#ifndef GATT_DB_HAVE_STATIC_CONFIGURATION
DECL_CONST UCHAR gatt_service_count = GATT_SERVICE_COUNT;
DECL_CONST UCHAR gatt_characteristic_count = GATT_CHARACTERISTIC_COUNT;
DECL_CONST UCHAR gatt_db_max_type_count = GATT_DB_MAX_TYPE_COUNT;
DECL_CONST UCHAR gatt_db_peer_val_arr_size = GATT_DB_PEER_VALUE_ARRAY_SIZE;
#ifdef STORAGE_RETENTION_SUPPORT
DECL_CONST UINT16 gatt_value_array_size = GATT_VALUE_ARRAY_SIZE;
DECL_CONST UINT16 gatt_db_max_peer_config = GATT_DB_MAX_PEER_CONFIGURATION;
#endif /* STORAGE_RETENTION_SUPPORT */
#endif /* GATT_DB_HAVE_STATIC_CONFIGURATION */
DECL_CONST UCHAR gatt_const_uuid_arr[GATT_UUID_ARRAY_SIZE] =
{
/* 0 - Primary Service UUID */
0x00, 0x28,
/* 2 - Secondary Service UUID */
0x01, 0x28,
/* 4 - Include UUID */
0x02, 0x28,
/* 6 - Characteristic UUID */
0x03, 0x28,
/* 8 - Characteristic Extended Properties UUID */
0x00, 0x29,
/* 10 - Characteristic User Description UUID */
0x01, 0x29,
/* 12 - Client Configuration UUID */
0x02, 0x29,
/* 14 - Server Configuration UUID */
0x03, 0x29,
/* 16 - Characteristic Format UUID */
0x04, 0x29,
/* 18 - Characteristic Aggregate Format UUID */
0x05, 0x29,
/* 20 - GAP Service UUID */
0x00, 0x18,
/* 22 - DeviceName Characteristic UUID */
0x00, 0x2A,
/* 24 - Appearance Characteristic UUID */
0x01, 0x2A,
/* 26 - GATT Service UUID */
0x01, 0x18,
/* 28 - Service Changed Characteristic UUID */
0x05, 0x2A,
/* 30 - Battery Service UUID */
0x0F, 0x18,
/* 32 - BatteryLevel Characteristic UUID */
0x19, 0x2A,
/* 34 - DeviceInformation Service UUID */
0x0A, 0x18,
/* 36 - ManufacturerName Characteristic UUID */
0x29, 0x2A,
/* 38 - ModelNumber Characteristic UUID */
0x24, 0x2A,
/* 40 - SerialNumber Characteristic UUID */
0x25, 0x2A,
/* 42 - FirmwareRevision Characteristic UUID */
0x26, 0x2A,
/* 44 - HardwareRevision Characteristic UUID */
0x27, 0x2A,
/* 46 - SoftwareRevision Characteristic UUID */
0x28, 0x2A,
/* 48 - SystemId Characteristic UUID */
0x23, 0x2A,
/* 50 - RegCertDataList Characteristic UUID */
0x2A, 0x2A,
/* 52 - PnPID Characteristic UUID */
0x50, 0x2A,
/* 54 - AMOTA Service UUID */
0x01, 0x10, 0x2E, 0xC7, 0x8A, 0x0E, 0x73, 0x90, 0xE1, 0x11, 0xC2, 0x08, 0x60, 0x27, 0x00, 0x00,
/* 70 - AMOTA Rx UUID */
0x01, 0x00, 0x2E, 0xC7, 0x8A, 0x0E, 0x73, 0x90, 0xE1, 0x11, 0xC2, 0x08, 0x60, 0x27, 0x00, 0x00,
/* 86 - AMOTA Tx UUID */
0x02, 0x00, 0x2E, 0xC7, 0x8A, 0x0E, 0x73, 0x90, 0xE1, 0x11, 0xC2, 0x08, 0x60, 0x27, 0x00, 0x00,
};
UCHAR gatt_value_arr[GATT_VALUE_ARRAY_SIZE] =
{
/* 0 - BatteryLevel(3); Default: 100.0 */
0x64,
};
DECL_CONST UCHAR gatt_const_value_arr[GATT_CONST_VALUE_ARRAY_SIZE] =
{
/* 0 - DeviceName(0); Property: 0x02, Value Handle: 0x0003, UUID: 0x2A00 */
0x02, 0x03, 0x00, 0x00, 0x2A,
/* 5 - DeviceName(0); Default: MindtreeHeartRateBelt */
0x4D, 0x69, 0x6E, 0x64, 0x74, 0x72, 0x65, 0x65, 0x48, 0x65, 0x61, 0x72,
0x74, 0x52, 0x61, 0x74, 0x65, 0x42, 0x65, 0x6C, 0x74,
/* 26 - Appearance(1); Property: 0x02, Value Handle: 0x0005, UUID: 0x2A01 */
0x02, 0x05, 0x00, 0x01, 0x2A,
/* 31 - Appearance(1); Default: 833.0 */
0x03, 0x41,
/* 33 - Service Changed(2); Property: 0x20, Value Handle: 0x0008, UUID: 0x2A05 */
0x20, 0x08, 0x00, 0x05, 0x2A,
/* 38 - BatteryLevel(3); Property: 0x12, Value Handle: 0x000C, UUID: 0x2A19 */
0x12, 0x0C, 0x00, 0x19, 0x2A,
/* 43 - Presentation Fromat for BatteryLevel */
/**
* Characteristic Presentation Format for BatteryLevel
* - Format (1 octet)
* - Exponent (1 octet)
* - Unit (2 octet)
* - Name Space (1 octet)
* - Description (2 octet)
*/
0x04, 0x00, 0xAD, 0x27, 0x01, 0x00, 0x00,
/* 50 - ManufacturerName(4); Property: 0x02, Value Handle: 0x0011, UUID: 0x2A29 */
0x02, 0x11, 0x00, 0x29, 0x2A,
/* 55 - ManufacturerName(4); Default: Mindtree Limited. */
0x4D, 0x69, 0x6E, 0x64, 0x74, 0x72, 0x65, 0x65, 0x20, 0x4C, 0x69, 0x6D,
0x69, 0x74, 0x65, 0x64, 0x2E,
/* 72 - ModelNumber(5); Property: 0x02, Value Handle: 0x0013, UUID: 0x2A24 */
0x02, 0x13, 0x00, 0x24, 0x2A,
/* 77 - ModelNumber(5); Default: HRS-1.0.0 */
0x48, 0x52, 0x53, 0x2D, 0x31, 0x2E, 0x30, 0x2E, 0x30,
/* 86 - SerialNumber(6); Property: 0x02, Value Handle: 0x0015, UUID: 0x2A25 */
0x02, 0x15, 0x00, 0x25, 0x2A,
/* 91 - SerialNumber(6); Default: 1.0.0 */
0x31, 0x2E, 0x30, 0x2E, 0x30,
/* 96 - FirmwareRevision(7); Property: 0x02, Value Handle: 0x0017, UUID: 0x2A26 */
0x02, 0x17, 0x00, 0x26, 0x2A,
/* 101 - FirmwareRevision(7); Default: 1.0.0 */
0x31, 0x2E, 0x30, 0x2E, 0x30,
/* 106 - HardwareRevision(8); Property: 0x02, Value Handle: 0x0019, UUID: 0x2A27 */
0x02, 0x19, 0x00, 0x27, 0x2A,
/* 111 - HardwareRevision(8); Default: 1.0.0 */
0x31, 0x2E, 0x30, 0x2E, 0x30,
/* 116 - SoftwareRevision(9); Property: 0x02, Value Handle: 0x001B, UUID: 0x2A28 */
0x02, 0x1B, 0x00, 0x28, 0x2A,
/* 121 - SoftwareRevision(9); Default: 1.0.0 */
0x31, 0x2E, 0x30, 0x2E, 0x30,
/* 126 - SystemId(10); Property: 0x02, Value Handle: 0x001D, UUID: 0x2A23 */
0x02, 0x1D, 0x00, 0x23, 0x2A,
/* 131 - SystemId(10); Default: 11223344.0 */
0x31, 0x31, 0x32, 0x32, 0x33, 0x33, 0x34, 0x34,
/* 139 - RegCertDataList(11); Property: 0x02, Value Handle: 0x001F, UUID: 0x2A2A */
0x02, 0x1F, 0x00, 0x2A, 0x2A,
/* 144 - RegCertDataList(11); Default: 0.0 */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 176 - PnPID(12); Property: 0x02, Value Handle: 0x0021, UUID: 0x2A50 */
0x02, 0x21, 0x00, 0x50, 0x2A,
/* 181 - PnPID(12); Default: 0 */
0x01, 0x6A, 0x00, 0x4D, 0x01, 0x00, 0x01,
/* 188 - AMOTA Rx(13); Property: 0x04, Value Handle: 0x0024, UUID: 0x00002760-08C2-11E1-9073-0E8AC72E0001 */
0x04, 0x24, 0x00, 0x01, 0x00, 0x2E, 0xC7, 0x8A, 0x0E, 0x73, 0x90, 0xE1, 0x11, 0xC2, 0x08, 0x60, 0x27, 0x00, 0x00,
/* 207 - AMOTA Tx(14); Property: 0x10, Value Handle: 0x0026, UUID: 0x00002760-08C2-11E1-9073-0E8AC72E0002 */
0x10, 0x26, 0x00, 0x02, 0x00, 0x2E, 0xC7, 0x8A, 0x0E, 0x73, 0x90, 0xE1, 0x11, 0xC2, 0x08, 0x60, 0x27, 0x00, 0x00,
};
UCHAR gatt_db_peer_specific_val_arr[GATT_DB_MAX_PEER_CONFIGURATION];
DECL_CONST UCHAR gatt_db_const_peer_specific_val_arr[GATT_DB_PEER_VALUE_ARRAY_SIZE] =
{
/* 0 - Client Configuration for Service Changed */
/* Client Instance 0 */
0x00, 0x00,
/* 2 - Client Configuration for BatteryLevel */
/* Client Instance 0 */
0x00, 0x00,
/* 4 - Client Configuration for AMOTA Tx */
/* Client Instance 0 */
0x00, 0x00,
};
DECL_CONST GATT_ATTR_TYPE gatt_type_table[GATT_DB_MAX_TYPE_COUNT] =
{
{
/* UUID Offset */
0,
/* First Occurence for Type */
1,
/* Last Occurence for Type */
34,
},
{
/* UUID Offset */
6,
/* First Occurence for Type */
2,
/* Last Occurence for Type */
37,
},
{
/* UUID Offset */
12,
/* First Occurence for Type */
9,
/* Last Occurence for Type */
39,
},
{
/* UUID Offset */
16,
/* First Occurence for Type */
14,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
20,
/* First Occurence for Type */
1,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
22,
/* First Occurence for Type */
3,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
24,
/* First Occurence for Type */
5,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
26,
/* First Occurence for Type */
6,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
28,
/* First Occurence for Type */
8,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
30,
/* First Occurence for Type */
10,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
32,
/* First Occurence for Type */
12,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
34,
/* First Occurence for Type */
15,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
36,
/* First Occurence for Type */
17,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
38,
/* First Occurence for Type */
19,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
40,
/* First Occurence for Type */
21,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
42,
/* First Occurence for Type */
23,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
44,
/* First Occurence for Type */
25,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
46,
/* First Occurence for Type */
27,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
48,
/* First Occurence for Type */
29,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
50,
/* First Occurence for Type */
31,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
52,
/* First Occurence for Type */
33,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
54,
/* First Occurence for Type */
34,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
70,
/* First Occurence for Type */
36,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
{
/* UUID Offset */
86,
/* First Occurence for Type */
38,
/* Last Occurence for Type */
ATT_INVALID_ATTR_HANDLE_VAL,
},
};
DECL_CONST GATT_DB_DESC_DATA gatt_db_attr_table[GATT_DB_MAX_ATTRIBUTES] =
{
/* Dummy */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
ATT_INVALID_ATTR_HANDLE_VAL,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
ATT_INVALID_ATTR_HANDLE_VAL,
/* Value */
NULL,
},
/* Handle - 0x0001 */
/* 0 - GAP - Service Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
2,
/* Next Attribute Type Index */
6,
/* UUID Offset */
0,
/* Value */
(UCHAR *)(gatt_const_uuid_arr + 20),
},
/* Handle - 0x0002 */
/* 0 - DeviceName - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
4,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 0),
},
/* Handle - 0x0003 */
/* 0 - DeviceName - Characteristic Value */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
21,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
22,
/* Value */
(UCHAR *)(gatt_const_value_arr + 5),
},
/* Handle - 0x0004 */
/* 1 - Appearance - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
7,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 26),
},
/* Handle - 0x0005 */
/* 1 - Appearance - Characteristic Value */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
2,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
24,
/* Value */
(UCHAR *)(gatt_const_value_arr + 31),
},
/* Handle - 0x0006 */
/* 1 - GATT - Service Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
2,
/* Next Attribute Type Index */
10,
/* UUID Offset */
0,
/* Value */
(UCHAR *)(gatt_const_uuid_arr + 26),
},
/* Handle - 0x0007 */
/* 2 - Service Changed - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
11,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 33),
},
/* Handle - 0x0008 */
/* 2 - Service Changed - Characteristic Value */
{
/* Property */
GATT_DB_CHAR_INDICATE_PROPERTY,
/* Auxillary Property */
GATT_DB_NO_AUXILLARY_PROPERTY,
/* Value Length */
0,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
28,
/* Value */
NULL,
},
/* Handle - 0x0009 */
/* 2 - Service Changed - CCD */
{
/* Property */
GATT_DB_READ |
GATT_DB_WRITE,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY |
GATT_DB_PEER_SPECIFIC_VAL_PROPERTY,
/* Value Length */
2,
/* Next Attribute Type Index */
13,
/* UUID Offset */
12,
/* Value */
gatt_db_peer_specific_val_arr + 0,
},
/* Handle - 0x000A */
/* 2 - Battery - Service Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
2,
/* Next Attribute Type Index */
15,
/* UUID Offset */
0,
/* Value */
(UCHAR *)(gatt_const_uuid_arr + 30),
},
/* Handle - 0x000B */
/* 3 - BatteryLevel - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
16,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 38),
},
/* Handle - 0x000C */
/* 3 - BatteryLevel - Characteristic Value */
{
/* Property */
GATT_DB_READ |
GATT_DB_CHAR_NOTIFY_PROPERTY,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
1,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
32,
/* Value */
gatt_value_arr + 0,
},
/* Handle - 0x000D */
/* 3 - BatteryLevel - CCD */
{
/* Property */
GATT_DB_READ |
GATT_DB_WRITE,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY |
GATT_DB_PEER_SPECIFIC_VAL_PROPERTY,
/* Value Length */
2,
/* Next Attribute Type Index */
39,
/* UUID Offset */
12,
/* Value */
gatt_db_peer_specific_val_arr + 2,
},
/* Handle - 0x000E */
/* Characteristic 3 - BatteryLevel - Presentation Format */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
7,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
16,
/* Value */
(UCHAR *)(gatt_const_value_arr + 43),
},
/* Handle - 0x000F */
/* 3 - DeviceInformation - Service Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
2,
/* Next Attribute Type Index */
34,
/* UUID Offset */
0,
/* Value */
(UCHAR *)(gatt_const_uuid_arr + 34),
},
/* Handle - 0x0010 */
/* 4 - ManufacturerName - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
18,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 50),
},
/* Handle - 0x0011 */
/* 4 - ManufacturerName - Characteristic Value */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
17,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
36,
/* Value */
(UCHAR *)(gatt_const_value_arr + 55),
},
/* Handle - 0x0012 */
/* 5 - ModelNumber - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
20,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 72),
},
/* Handle - 0x0013 */
/* 5 - ModelNumber - Characteristic Value */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
9,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
38,
/* Value */
(UCHAR *)(gatt_const_value_arr + 77),
},
/* Handle - 0x0014 */
/* 6 - SerialNumber - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
22,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 86),
},
/* Handle - 0x0015 */
/* 6 - SerialNumber - Characteristic Value */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
40,
/* Value */
(UCHAR *)(gatt_const_value_arr + 91),
},
/* Handle - 0x0016 */
/* 7 - FirmwareRevision - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
24,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 96),
},
/* Handle - 0x0017 */
/* 7 - FirmwareRevision - Characteristic Value */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
42,
/* Value */
(UCHAR *)(gatt_const_value_arr + 101),
},
/* Handle - 0x0018 */
/* 8 - HardwareRevision - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
26,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 106),
},
/* Handle - 0x0019 */
/* 8 - HardwareRevision - Characteristic Value */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
44,
/* Value */
(UCHAR *)(gatt_const_value_arr + 111),
},
/* Handle - 0x001A */
/* 9 - SoftwareRevision - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
28,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 116),
},
/* Handle - 0x001B */
/* 9 - SoftwareRevision - Characteristic Value */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
46,
/* Value */
(UCHAR *)(gatt_const_value_arr + 121),
},
/* Handle - 0x001C */
/* 10 - SystemId - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
30,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 126),
},
/* Handle - 0x001D */
/* 10 - SystemId - Characteristic Value */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
8,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
48,
/* Value */
(UCHAR *)(gatt_const_value_arr + 131),
},
/* Handle - 0x001E */
/* 11 - RegCertDataList - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
32,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 139),
},
/* Handle - 0x001F */
/* 11 - RegCertDataList - Characteristic Value */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
32,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
50,
/* Value */
(UCHAR *)(gatt_const_value_arr + 144),
},
/* Handle - 0x0020 */
/* 12 - PnPID - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
5,
/* Next Attribute Type Index */
35,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 176),
},
/* Handle - 0x0021 */
/* 12 - PnPID - Characteristic Value */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
7,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
52,
/* Value */
(UCHAR *)(gatt_const_value_arr + 181),
},
/* Handle - 0x0022 */
/* 4 - AMOTA - Service Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
16,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
0,
/* Value */
(UCHAR *)(gatt_const_uuid_arr + 54),
},
/* Handle - 0x0023 */
/* 13 - AMOTA Rx - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
19,
/* Next Attribute Type Index */
37,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 188),
},
/* Handle - 0x0024 */
/* 13 - AMOTA Rx - Characteristic Value */
{
/* Property */
GATT_DB_WRITE_WITHOUT_RSP | GATT_DB_128_BIT_UUID_FORMAT,
/* Auxillary Property */
GATT_DB_NO_AUXILLARY_PROPERTY,
/* Value Length */
0,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
70,
/* Value */
NULL,
},
/* Handle - 0x0025 */
/* 14 - AMOTA Tx - Characteristic Declaration */
{
/* Property */
GATT_DB_READ,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY,
/* Value Length */
19,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
6,
/* Value */
(UCHAR *)(gatt_const_value_arr + 207),
},
/* Handle - 0x0026 */
/* 14 - AMOTA Tx - Characteristic Value */
{
/* Property */
GATT_DB_CHAR_NOTIFY_PROPERTY | GATT_DB_128_BIT_UUID_FORMAT,
/* Auxillary Property */
GATT_DB_NO_AUXILLARY_PROPERTY,
/* Value Length */
0,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
86,
/* Value */
NULL,
},
/* Handle - 0x0027 */
/* 14 - HeartRateMeasurement - CCD */
{
/* Property */
GATT_DB_READ |
GATT_DB_WRITE,
/* Auxillary Property */
GATT_DB_FIXED_LENGTH_PROPERTY |
GATT_DB_PEER_SPECIFIC_VAL_PROPERTY,
/* Value Length */
2,
/* Next Attribute Type Index */
ATT_INVALID_ATTR_HANDLE_VAL,
/* UUID Offset */
12,
/* Value */
gatt_db_peer_specific_val_arr + 4,
},
};
DECL_CONST GATT_DB_CHARACERISTIC gatt_characteristic[GATT_CHARACTERISTIC_COUNT] =
{
/* 0 - DeviceName */
{
{
/* Number of attributes in characteristic including the definition */
2,
},
/* Characteristic Start Handle */
0x0002,
/* Characteristic Service Index */
0,
},
/* 1 - Appearance */
{
{
/* Number of attributes in characteristic including the definition */
2,
},
/* Characteristic Start Handle */
0x0004,
/* Characteristic Service Index */
0,
},
/* 2 - Service Changed */
{
{
/* Number of attributes in characteristic including the definition */
3,
},
/* Characteristic Start Handle */
0x0007,
/* Characteristic Service Index */
1,
},
/* 3 - BatteryLevel */
{
{
/* Number of attributes in characteristic including the definition */
4,
},
/* Characteristic Start Handle */
0x000B,
/* Characteristic Service Index */
2,
},
/* 4 - ManufacturerName */
{
{
/* Number of attributes in characteristic including the definition */
2,
},
/* Characteristic Start Handle */
0x0010,
/* Characteristic Service Index */
3,
},
/* 5 - ModelNumber */
{
{
/* Number of attributes in characteristic including the definition */
2,
},
/* Characteristic Start Handle */
0x0012,
/* Characteristic Service Index */
3,
},
/* 6 - SerialNumber */
{
{
/* Number of attributes in characteristic including the definition */
2,
},
/* Characteristic Start Handle */
0x0014,
/* Characteristic Service Index */
3,
},
/* 7 - FirmwareRevision */
{
{
/* Number of attributes in characteristic including the definition */
2,
},
/* Characteristic Start Handle */
0x0016,
/* Characteristic Service Index */
3,
},
/* 8 - HardwareRevision */
{
{
/* Number of attributes in characteristic including the definition */
2,
},
/* Characteristic Start Handle */
0x0018,
/* Characteristic Service Index */
3,
},
/* 9 - SoftwareRevision */
{
{
/* Number of attributes in characteristic including the definition */
2,
},
/* Characteristic Start Handle */
0x001A,
/* Characteristic Service Index */
3,
},
/* 10 - SystemId */
{
{
/* Number of attributes in characteristic including the definition */
2,
},
/* Characteristic Start Handle */
0x001C,
/* Characteristic Service Index */
3,
},
/* 11 - RegCertDataList */
{
{
/* Number of attributes in characteristic including the definition */
2,
},
/* Characteristic Start Handle */
0x001E,
/* Characteristic Service Index */
3,
},
/* 12 - PnPID */
{
{
/* Number of attributes in characteristic including the definition */
2,
},
/* Characteristic Start Handle */
0x0020,
/* Characteristic Service Index */
3,
},
/* 13 - AMOTA Rx */
{
{
/* Number of attributes in characteristic including the definition */
2,
},
/* Characteristic Start Handle */
0x0023,
/* Characteristic Service Index */
4,
},
/* 14 - AMOTA Tx */
{
{
/* Number of attributes in characteristic including the definition */
3,
},
/* Characteristic Start Handle */
0x0025,
/* Characteristic Service Index */
4,
},
};
DECL_CONST GATT_DB_SERVICE gatt_service[GATT_SERVICE_COUNT] =
{
/* 0 - GAP */
{
{
/* Number of attributes in Service */
1,
},
/* Service Description */
GATT_DB_SER_NO_SECURITY_PROPERTY |
GATT_DB_SER_SUPPORT_ANY_LINK_TYPE,
/* Service Start Handle */
0x0001,
/* Service End Handle */
0x0005,
/* Characteristic Start Index */
0,
/* Characteristic End Index */
1
},
/* 1 - GATT */
{
{
/* Number of attributes in Service */
1,
},
/* Service Description */
GATT_DB_SER_NO_SECURITY_PROPERTY |
GATT_DB_SER_SUPPORT_ANY_LINK_TYPE,
/* Service Start Handle */
0x0006,
/* Service End Handle */
0x0009,
/* Characteristic Start Index */
2,
/* Characteristic End Index */
2
},
/* 2 - Battery */
{
{
/* Number of attributes in Service */
1,
},
/* Service Description */
GATT_DB_SER_NO_SECURITY_PROPERTY |
GATT_DB_SER_SUPPORT_ANY_LINK_TYPE,
/* Service Start Handle */
0x000A,
/* Service End Handle */
0x000E,
/* Characteristic Start Index */
3,
/* Characteristic End Index */
3
},
/* 3 - DeviceInformation */
{
{
/* Number of attributes in Service */
1,
},
/* Service Description */
GATT_DB_SER_NO_SECURITY_PROPERTY |
GATT_DB_SER_SUPPORT_ANY_LINK_TYPE,
/* Service Start Handle */
0x000F,
/* Service End Handle */
0x0021,
/* Characteristic Start Index */
4,
/* Characteristic End Index */
12
},
/* 4 - AMOTA */
{
{
/* Number of attributes in Service */
1,
},
/* Service Description */
GATT_DB_SER_NO_SECURITY_PROPERTY |
GATT_DB_SER_SUPPORT_ANY_LINK_TYPE,
/* Service Start Handle */
0x0022,
/* Service End Handle */
0x0027,
/* Characteristic Start Index */
13,
/* Characteristic End Index */
14
},
};
#endif /* ((defined AMOTAS) && (defined GATT_DB)) */