Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of BLE_API by
public/GattCharacteristic.h@112:64c88ad45610, 2014-08-27 (annotated)
- Committer:
- carlescufi
- Date:
- Wed Aug 27 15:22:22 2014 +0200
- Revision:
- 112:64c88ad45610
- Parent:
- 110:d5a824cee1d3
- Child:
- 113:7e3fd573d87b
Add an Attribute class and derive GattCharacteristic from it, to prepare for descriptors
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Rohit Grover |
106:a20be740075d | 1 | /* mbed Microcontroller Library |
Rohit Grover |
106:a20be740075d | 2 | * Copyright (c) 2006-2013 ARM Limited |
Rohit Grover |
106:a20be740075d | 3 | * |
Rohit Grover |
106:a20be740075d | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
Rohit Grover |
106:a20be740075d | 5 | * you may not use this file except in compliance with the License. |
Rohit Grover |
106:a20be740075d | 6 | * You may obtain a copy of the License at |
Rohit Grover |
106:a20be740075d | 7 | * |
Rohit Grover |
106:a20be740075d | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
Rohit Grover |
106:a20be740075d | 9 | * |
Rohit Grover |
106:a20be740075d | 10 | * Unless required by applicable law or agreed to in writing, software |
Rohit Grover |
106:a20be740075d | 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
Rohit Grover |
106:a20be740075d | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
Rohit Grover |
106:a20be740075d | 13 | * See the License for the specific language governing permissions and |
Rohit Grover |
106:a20be740075d | 14 | * limitations under the License. |
Rohit Grover |
106:a20be740075d | 15 | */ |
Rohit Grover |
106:a20be740075d | 16 | |
Rohit Grover |
106:a20be740075d | 17 | |
Rohit Grover |
106:a20be740075d | 18 | #ifndef __GATT_CHARACTERISTIC_H__ |
Rohit Grover |
106:a20be740075d | 19 | #define __GATT_CHARACTERISTIC_H__ |
Rohit Grover |
106:a20be740075d | 20 | |
Rohit Grover |
106:a20be740075d | 21 | #include "blecommon.h" |
Rohit Grover |
106:a20be740075d | 22 | #include "UUID.h" |
carlescufi | 112:64c88ad45610 | 23 | #include "GattAttribute.h" |
Rohit Grover |
106:a20be740075d | 24 | |
Rohit Grover |
106:a20be740075d | 25 | /**************************************************************************/ |
Rohit Grover |
106:a20be740075d | 26 | /*! |
Rohit Grover |
106:a20be740075d | 27 | \brief GATT characteristic |
Rohit Grover |
106:a20be740075d | 28 | */ |
Rohit Grover |
106:a20be740075d | 29 | /**************************************************************************/ |
carlescufi | 112:64c88ad45610 | 30 | class GattCharacteristic : public GattAttribute |
Rohit Grover |
106:a20be740075d | 31 | { |
Rohit Grover |
106:a20be740075d | 32 | public: |
Rohit Grover |
106:a20be740075d | 33 | enum { |
Rohit Grover |
106:a20be740075d | 34 | UUID_BATTERY_LEVEL_STATE_CHAR = 0x2A1B, |
Rohit Grover |
106:a20be740075d | 35 | UUID_BATTERY_POWER_STATE_CHAR = 0x2A1A, |
Rohit Grover |
106:a20be740075d | 36 | UUID_REMOVABLE_CHAR = 0x2A3A, |
Rohit Grover |
106:a20be740075d | 37 | UUID_SERVICE_REQUIRED_CHAR = 0x2A3B, |
Rohit Grover |
106:a20be740075d | 38 | UUID_ALERT_CATEGORY_ID_CHAR = 0x2A43, |
Rohit Grover |
106:a20be740075d | 39 | UUID_ALERT_CATEGORY_ID_BIT_MASK_CHAR = 0x2A42, |
Rohit Grover |
106:a20be740075d | 40 | UUID_ALERT_LEVEL_CHAR = 0x2A06, |
Rohit Grover |
106:a20be740075d | 41 | UUID_ALERT_NOTIFICATION_CONTROL_POINT_CHAR = 0x2A44, |
Rohit Grover |
106:a20be740075d | 42 | UUID_ALERT_STATUS_CHAR = 0x2A3F, |
Rohit Grover |
106:a20be740075d | 43 | UUID_BATTERY_LEVEL_CHAR = 0x2A19, |
Rohit Grover |
106:a20be740075d | 44 | UUID_BLOOD_PRESSURE_FEATURE_CHAR = 0x2A49, |
Rohit Grover |
106:a20be740075d | 45 | UUID_BLOOD_PRESSURE_MEASUREMENT_CHAR = 0x2A35, |
Rohit Grover |
106:a20be740075d | 46 | UUID_BODY_SENSOR_LOCATION_CHAR = 0x2A38, |
Rohit Grover |
106:a20be740075d | 47 | UUID_BOOT_KEYBOARD_INPUT_REPORT_CHAR = 0x2A22, |
Rohit Grover |
106:a20be740075d | 48 | UUID_BOOT_KEYBOARD_OUTPUT_REPORT_CHAR = 0x2A32, |
Rohit Grover |
106:a20be740075d | 49 | UUID_BOOT_MOUSE_INPUT_REPORT_CHAR = 0x2A33, |
Rohit Grover |
106:a20be740075d | 50 | UUID_CURRENT_TIME_CHAR = 0x2A2B, |
Rohit Grover |
106:a20be740075d | 51 | UUID_DATE_TIME_CHAR = 0x2A08, |
Rohit Grover |
106:a20be740075d | 52 | UUID_DAY_DATE_TIME_CHAR = 0x2A0A, |
Rohit Grover |
106:a20be740075d | 53 | UUID_DAY_OF_WEEK_CHAR = 0x2A09, |
Rohit Grover |
106:a20be740075d | 54 | UUID_DST_OFFSET_CHAR = 0x2A0D, |
Rohit Grover |
106:a20be740075d | 55 | UUID_EXACT_TIME_256_CHAR = 0x2A0C, |
Rohit Grover |
106:a20be740075d | 56 | UUID_FIRMWARE_REVISION_STRING_CHAR = 0x2A26, |
Rohit Grover |
106:a20be740075d | 57 | UUID_GLUCOSE_FEATURE_CHAR = 0x2A51, |
Rohit Grover |
106:a20be740075d | 58 | UUID_GLUCOSE_MEASUREMENT_CHAR = 0x2A18, |
Rohit Grover |
106:a20be740075d | 59 | UUID_GLUCOSE_MEASUREMENT_CONTEXT_CHAR = 0x2A34, |
Rohit Grover |
106:a20be740075d | 60 | UUID_HARDWARE_REVISION_STRING_CHAR = 0x2A27, |
Rohit Grover |
106:a20be740075d | 61 | UUID_HEART_RATE_CONTROL_POINT_CHAR = 0x2A39, |
Rohit Grover |
106:a20be740075d | 62 | UUID_HEART_RATE_MEASUREMENT_CHAR = 0x2A37, |
Rohit Grover |
106:a20be740075d | 63 | UUID_HID_CONTROL_POINT_CHAR = 0x2A4C, |
Rohit Grover |
106:a20be740075d | 64 | UUID_HID_INFORMATION_CHAR = 0x2A4A, |
Rohit Grover |
106:a20be740075d | 65 | UUID_IEEE_REGULATORY_CERTIFICATION_DATA_LIST_CHAR = 0x2A2A, |
Rohit Grover |
106:a20be740075d | 66 | UUID_INTERMEDIATE_CUFF_PRESSURE_CHAR = 0x2A36, |
Rohit Grover |
106:a20be740075d | 67 | UUID_INTERMEDIATE_TEMPERATURE_CHAR = 0x2A1E, |
Rohit Grover |
106:a20be740075d | 68 | UUID_LOCAL_TIME_INFORMATION_CHAR = 0x2A0F, |
Rohit Grover |
106:a20be740075d | 69 | UUID_MANUFACTURER_NAME_STRING_CHAR = 0x2A29, |
Rohit Grover |
106:a20be740075d | 70 | UUID_MEASUREMENT_INTERVAL_CHAR = 0x2A21, |
Rohit Grover |
106:a20be740075d | 71 | UUID_MODEL_NUMBER_STRING_CHAR = 0x2A24, |
Rohit Grover |
106:a20be740075d | 72 | UUID_UNREAD_ALERT_CHAR = 0x2A45, |
Rohit Grover |
106:a20be740075d | 73 | UUID_NEW_ALERT_CHAR = 0x2A46, |
Rohit Grover |
106:a20be740075d | 74 | UUID_PNP_ID_CHAR = 0x2A50, |
Rohit Grover |
106:a20be740075d | 75 | UUID_PROTOCOL_MODE_CHAR = 0x2A4E, |
Rohit Grover |
106:a20be740075d | 76 | UUID_RECORD_ACCESS_CONTROL_POINT_CHAR = 0x2A52, |
Rohit Grover |
106:a20be740075d | 77 | UUID_REFERENCE_TIME_INFORMATION_CHAR = 0x2A14, |
Rohit Grover |
106:a20be740075d | 78 | UUID_REPORT_CHAR = 0x2A4D, |
Rohit Grover |
106:a20be740075d | 79 | UUID_REPORT_MAP_CHAR = 0x2A4B, |
Rohit Grover |
106:a20be740075d | 80 | UUID_RINGER_CONTROL_POINT_CHAR = 0x2A40, |
Rohit Grover |
106:a20be740075d | 81 | UUID_RINGER_SETTING_CHAR = 0x2A41, |
Rohit Grover |
106:a20be740075d | 82 | UUID_SCAN_INTERVAL_WINDOW_CHAR = 0x2A4F, |
Rohit Grover |
106:a20be740075d | 83 | UUID_SCAN_REFRESH_CHAR = 0x2A31, |
Rohit Grover |
106:a20be740075d | 84 | UUID_SERIAL_NUMBER_STRING_CHAR = 0x2A25, |
Rohit Grover |
106:a20be740075d | 85 | UUID_SOFTWARE_REVISION_STRING_CHAR = 0x2A28, |
Rohit Grover |
106:a20be740075d | 86 | UUID_SUPPORTED_NEW_ALERT_CATEGORY_CHAR = 0x2A47, |
Rohit Grover |
106:a20be740075d | 87 | UUID_SUPPORTED_UNREAD_ALERT_CATEGORY_CHAR = 0x2A48, |
Rohit Grover |
106:a20be740075d | 88 | UUID_SYSTEM_ID_CHAR = 0x2A23, |
Rohit Grover |
106:a20be740075d | 89 | UUID_TEMPERATURE_MEASUREMENT_CHAR = 0x2A1C, |
Rohit Grover |
106:a20be740075d | 90 | UUID_TEMPERATURE_TYPE_CHAR = 0x2A1D, |
Rohit Grover |
106:a20be740075d | 91 | UUID_TIME_ACCURACY_CHAR = 0x2A12, |
Rohit Grover |
106:a20be740075d | 92 | UUID_TIME_SOURCE_CHAR = 0x2A13, |
Rohit Grover |
106:a20be740075d | 93 | UUID_TIME_UPDATE_CONTROL_POINT_CHAR = 0x2A16, |
Rohit Grover |
106:a20be740075d | 94 | UUID_TIME_UPDATE_STATE_CHAR = 0x2A17, |
Rohit Grover |
106:a20be740075d | 95 | UUID_TIME_WITH_DST_CHAR = 0x2A11, |
Rohit Grover |
106:a20be740075d | 96 | UUID_TIME_ZONE_CHAR = 0x2A0E, |
Rohit Grover |
106:a20be740075d | 97 | UUID_TX_POWER_LEVEL_CHAR = 0x2A07, |
Rohit Grover |
106:a20be740075d | 98 | UUID_CSC_FEATURE_CHAR = 0x2A5C, |
Rohit Grover |
106:a20be740075d | 99 | UUID_CSC_MEASUREMENT_CHAR = 0x2A5B, |
Rohit Grover |
106:a20be740075d | 100 | UUID_RSC_FEATURE_CHAR = 0x2A54, |
Rohit Grover |
106:a20be740075d | 101 | UUID_RSC_MEASUREMENT_CHAR = 0x2A53, |
Rohit Grover |
106:a20be740075d | 102 | }; |
Rohit Grover |
106:a20be740075d | 103 | |
Rohit Grover |
106:a20be740075d | 104 | /**************************************************************************/ |
Rohit Grover |
106:a20be740075d | 105 | /*! |
Rohit Grover |
106:a20be740075d | 106 | \brief Standard GATT characteristic presentation format unit types. |
Rohit Grover |
106:a20be740075d | 107 | These unit types are used to decribe what the raw numeric |
Rohit Grover |
106:a20be740075d | 108 | data in a characteristic actually represents. |
Rohit Grover |
106:a20be740075d | 109 | |
Rohit Grover |
106:a20be740075d | 110 | \note See https://developer.bluetooth.org/gatt/units/Pages/default.aspx |
Rohit Grover |
106:a20be740075d | 111 | */ |
Rohit Grover |
106:a20be740075d | 112 | /**************************************************************************/ |
Rohit Grover |
106:a20be740075d | 113 | typedef enum ble_gatt_unit_e { |
Rohit Grover |
106:a20be740075d | 114 | BLE_GATT_UNIT_NONE = 0x2700, /**< No specified unit type */ |
Rohit Grover |
106:a20be740075d | 115 | BLE_GATT_UNIT_LENGTH_METRE = 0x2701, /**< Length, Metre */ |
Rohit Grover |
106:a20be740075d | 116 | BLE_GATT_UNIT_MASS_KILOGRAM = 0x2702, /**< Mass, Kilogram */ |
Rohit Grover |
106:a20be740075d | 117 | BLE_GATT_UNIT_TIME_SECOND = 0x2703, /**< Time, Second */ |
Rohit Grover |
106:a20be740075d | 118 | BLE_GATT_UNIT_ELECTRIC_CURRENT_AMPERE = 0x2704, /**< Electric Current, Ampere */ |
Rohit Grover |
106:a20be740075d | 119 | BLE_GATT_UNIT_THERMODYNAMIC_TEMPERATURE_KELVIN = 0x2705, /**< Thermodynamic Temperature, Kelvin */ |
Rohit Grover |
106:a20be740075d | 120 | BLE_GATT_UNIT_AMOUNT_OF_SUBSTANCE_MOLE = 0x2706, /**< Amount of Substance, Mole */ |
Rohit Grover |
106:a20be740075d | 121 | BLE_GATT_UNIT_LUMINOUS_INTENSITY_CANDELA = 0x2707, /**< Luminous Intensity, Candela */ |
Rohit Grover |
106:a20be740075d | 122 | BLE_GATT_UNIT_AREA_SQUARE_METRES = 0x2710, /**< Area, Square Metres */ |
Rohit Grover |
106:a20be740075d | 123 | BLE_GATT_UNIT_VOLUME_CUBIC_METRES = 0x2711, /**< Volume, Cubic Metres*/ |
Rohit Grover |
106:a20be740075d | 124 | BLE_GATT_UNIT_VELOCITY_METRES_PER_SECOND = 0x2712, /**< Velocity, Metres per Second*/ |
Rohit Grover |
106:a20be740075d | 125 | BLE_GATT_UNIT_ACCELERATION_METRES_PER_SECOND_SQUARED = 0x2713, /**< Acceleration, Metres per Second Squared */ |
Rohit Grover |
106:a20be740075d | 126 | BLE_GATT_UNIT_WAVENUMBER_RECIPROCAL_METRE = 0x2714, /**< Wave Number Reciprocal, Metre */ |
Rohit Grover |
106:a20be740075d | 127 | BLE_GATT_UNIT_DENSITY_KILOGRAM_PER_CUBIC_METRE = 0x2715, /**< Density, Kilogram per Cubic Metre */ |
Rohit Grover |
106:a20be740075d | 128 | BLE_GATT_UNIT_SURFACE_DENSITY_KILOGRAM_PER_SQUARE_METRE = 0x2716, /**< */ |
Rohit Grover |
106:a20be740075d | 129 | BLE_GATT_UNIT_SPECIFIC_VOLUME_CUBIC_METRE_PER_KILOGRAM = 0x2717, /**< */ |
Rohit Grover |
106:a20be740075d | 130 | BLE_GATT_UNIT_CURRENT_DENSITY_AMPERE_PER_SQUARE_METRE = 0x2718, /**< */ |
Rohit Grover |
106:a20be740075d | 131 | BLE_GATT_UNIT_MAGNETIC_FIELD_STRENGTH_AMPERE_PER_METRE = 0x2719, /**< Magnetic Field Strength, Ampere per Metre */ |
Rohit Grover |
106:a20be740075d | 132 | BLE_GATT_UNIT_AMOUNT_CONCENTRATION_MOLE_PER_CUBIC_METRE = 0x271A, /**< */ |
Rohit Grover |
106:a20be740075d | 133 | BLE_GATT_UNIT_MASS_CONCENTRATION_KILOGRAM_PER_CUBIC_METRE = 0x271B, /**< */ |
Rohit Grover |
106:a20be740075d | 134 | BLE_GATT_UNIT_LUMINANCE_CANDELA_PER_SQUARE_METRE = 0x271C, /**< */ |
Rohit Grover |
106:a20be740075d | 135 | BLE_GATT_UNIT_REFRACTIVE_INDEX = 0x271D, /**< */ |
Rohit Grover |
106:a20be740075d | 136 | BLE_GATT_UNIT_RELATIVE_PERMEABILITY = 0x271E, /**< */ |
Rohit Grover |
106:a20be740075d | 137 | BLE_GATT_UNIT_PLANE_ANGLE_RADIAN = 0x2720, /**< */ |
Rohit Grover |
106:a20be740075d | 138 | BLE_GATT_UNIT_SOLID_ANGLE_STERADIAN = 0x2721, /**< */ |
Rohit Grover |
106:a20be740075d | 139 | BLE_GATT_UNIT_FREQUENCY_HERTZ = 0x2722, /**< Frequency, Hertz */ |
Rohit Grover |
106:a20be740075d | 140 | BLE_GATT_UNIT_FORCE_NEWTON = 0x2723, /**< Force, Newton */ |
Rohit Grover |
106:a20be740075d | 141 | BLE_GATT_UNIT_PRESSURE_PASCAL = 0x2724, /**< Pressure, Pascal */ |
Rohit Grover |
106:a20be740075d | 142 | BLE_GATT_UNIT_ENERGY_JOULE = 0x2725, /**< Energy, Joule */ |
Rohit Grover |
106:a20be740075d | 143 | BLE_GATT_UNIT_POWER_WATT = 0x2726, /**< Power, Watt */ |
Rohit Grover |
106:a20be740075d | 144 | BLE_GATT_UNIT_ELECTRIC_CHARGE_COULOMB = 0x2727, /**< Electrical Charge, Coulomb */ |
Rohit Grover |
106:a20be740075d | 145 | BLE_GATT_UNIT_ELECTRIC_POTENTIAL_DIFFERENCE_VOLT = 0x2728, /**< Electrical Potential Difference, Voltage */ |
Rohit Grover |
106:a20be740075d | 146 | BLE_GATT_UNIT_CAPACITANCE_FARAD = 0x2729, /**< */ |
Rohit Grover |
106:a20be740075d | 147 | BLE_GATT_UNIT_ELECTRIC_RESISTANCE_OHM = 0x272A, /**< */ |
Rohit Grover |
106:a20be740075d | 148 | BLE_GATT_UNIT_ELECTRIC_CONDUCTANCE_SIEMENS = 0x272B, /**< */ |
Rohit Grover |
106:a20be740075d | 149 | BLE_GATT_UNIT_MAGNETIC_FLEX_WEBER = 0x272C, /**< */ |
Rohit Grover |
106:a20be740075d | 150 | BLE_GATT_UNIT_MAGNETIC_FLEX_DENSITY_TESLA = 0x272D, /**< */ |
Rohit Grover |
106:a20be740075d | 151 | BLE_GATT_UNIT_INDUCTANCE_HENRY = 0x272E, /**< */ |
Rohit Grover |
106:a20be740075d | 152 | BLE_GATT_UNIT_THERMODYNAMIC_TEMPERATURE_DEGREE_CELSIUS = 0x272F, /**< */ |
Rohit Grover |
106:a20be740075d | 153 | BLE_GATT_UNIT_LUMINOUS_FLUX_LUMEN = 0x2730, /**< */ |
Rohit Grover |
106:a20be740075d | 154 | BLE_GATT_UNIT_ILLUMINANCE_LUX = 0x2731, /**< */ |
Rohit Grover |
106:a20be740075d | 155 | BLE_GATT_UNIT_ACTIVITY_REFERRED_TO_A_RADIONUCLIDE_BECQUEREL = 0x2732, /**< */ |
Rohit Grover |
106:a20be740075d | 156 | BLE_GATT_UNIT_ABSORBED_DOSE_GRAY = 0x2733, /**< */ |
Rohit Grover |
106:a20be740075d | 157 | BLE_GATT_UNIT_DOSE_EQUIVALENT_SIEVERT = 0x2734, /**< */ |
Rohit Grover |
106:a20be740075d | 158 | BLE_GATT_UNIT_CATALYTIC_ACTIVITY_KATAL = 0x2735, /**< */ |
Rohit Grover |
106:a20be740075d | 159 | BLE_GATT_UNIT_DYNAMIC_VISCOSITY_PASCAL_SECOND = 0x2740, /**< */ |
Rohit Grover |
106:a20be740075d | 160 | BLE_GATT_UNIT_MOMENT_OF_FORCE_NEWTON_METRE = 0x2741, /**< */ |
Rohit Grover |
106:a20be740075d | 161 | BLE_GATT_UNIT_SURFACE_TENSION_NEWTON_PER_METRE = 0x2742, /**< */ |
Rohit Grover |
106:a20be740075d | 162 | BLE_GATT_UNIT_ANGULAR_VELOCITY_RADIAN_PER_SECOND = 0x2743, /**< */ |
Rohit Grover |
106:a20be740075d | 163 | BLE_GATT_UNIT_ANGULAR_ACCELERATION_RADIAN_PER_SECOND_SQUARED = 0x2744, /**< */ |
Rohit Grover |
106:a20be740075d | 164 | BLE_GATT_UNIT_HEAT_FLUX_DENSITY_WATT_PER_SQUARE_METRE = 0x2745, /**< */ |
Rohit Grover |
106:a20be740075d | 165 | BLE_GATT_UNIT_HEAT_CAPACITY_JOULE_PER_KELVIN = 0x2746, /**< */ |
Rohit Grover |
106:a20be740075d | 166 | BLE_GATT_UNIT_SPECIFIC_HEAT_CAPACITY_JOULE_PER_KILOGRAM_KELVIN = 0x2747, /**< */ |
Rohit Grover |
106:a20be740075d | 167 | BLE_GATT_UNIT_SPECIFIC_ENERGY_JOULE_PER_KILOGRAM = 0x2748, /**< */ |
Rohit Grover |
106:a20be740075d | 168 | BLE_GATT_UNIT_THERMAL_CONDUCTIVITY_WATT_PER_METRE_KELVIN = 0x2749, /**< */ |
Rohit Grover |
106:a20be740075d | 169 | BLE_GATT_UNIT_ENERGY_DENSITY_JOULE_PER_CUBIC_METRE = 0x274A, /**< */ |
Rohit Grover |
106:a20be740075d | 170 | BLE_GATT_UNIT_ELECTRIC_FIELD_STRENGTH_VOLT_PER_METRE = 0x274B, /**< */ |
Rohit Grover |
106:a20be740075d | 171 | BLE_GATT_UNIT_ELECTRIC_CHARGE_DENSITY_COULOMB_PER_CUBIC_METRE = 0x274C, /**< */ |
Rohit Grover |
106:a20be740075d | 172 | BLE_GATT_UNIT_SURFACE_CHARGE_DENSITY_COULOMB_PER_SQUARE_METRE = 0x274D, /**< */ |
Rohit Grover |
106:a20be740075d | 173 | BLE_GATT_UNIT_ELECTRIC_FLUX_DENSITY_COULOMB_PER_SQUARE_METRE = 0x274E, /**< */ |
Rohit Grover |
106:a20be740075d | 174 | BLE_GATT_UNIT_PERMITTIVITY_FARAD_PER_METRE = 0x274F, /**< */ |
Rohit Grover |
106:a20be740075d | 175 | BLE_GATT_UNIT_PERMEABILITY_HENRY_PER_METRE = 0x2750, /**< */ |
Rohit Grover |
106:a20be740075d | 176 | BLE_GATT_UNIT_MOLAR_ENERGY_JOULE_PER_MOLE = 0x2751, /**< */ |
Rohit Grover |
106:a20be740075d | 177 | BLE_GATT_UNIT_MOLAR_ENTROPY_JOULE_PER_MOLE_KELVIN = 0x2752, /**< */ |
Rohit Grover |
106:a20be740075d | 178 | BLE_GATT_UNIT_EXPOSURE_COULOMB_PER_KILOGRAM = 0x2753, /**< */ |
Rohit Grover |
106:a20be740075d | 179 | BLE_GATT_UNIT_ABSORBED_DOSE_RATE_GRAY_PER_SECOND = 0x2754, /**< */ |
Rohit Grover |
106:a20be740075d | 180 | BLE_GATT_UNIT_RADIANT_INTENSITY_WATT_PER_STERADIAN = 0x2755, /**< */ |
Rohit Grover |
106:a20be740075d | 181 | BLE_GATT_UNIT_RADIANCE_WATT_PER_SQUARE_METRE_STERADIAN = 0x2756, /**< */ |
Rohit Grover |
106:a20be740075d | 182 | BLE_GATT_UNIT_CATALYTIC_ACTIVITY_CONCENTRATION_KATAL_PER_CUBIC_METRE = 0x2757, /**< */ |
Rohit Grover |
106:a20be740075d | 183 | BLE_GATT_UNIT_TIME_MINUTE = 0x2760, /**< Time, Minute */ |
Rohit Grover |
106:a20be740075d | 184 | BLE_GATT_UNIT_TIME_HOUR = 0x2761, /**< Time, Hour */ |
Rohit Grover |
106:a20be740075d | 185 | BLE_GATT_UNIT_TIME_DAY = 0x2762, /**< Time, Day */ |
Rohit Grover |
106:a20be740075d | 186 | BLE_GATT_UNIT_PLANE_ANGLE_DEGREE = 0x2763, /**< */ |
Rohit Grover |
106:a20be740075d | 187 | BLE_GATT_UNIT_PLANE_ANGLE_MINUTE = 0x2764, /**< */ |
Rohit Grover |
106:a20be740075d | 188 | BLE_GATT_UNIT_PLANE_ANGLE_SECOND = 0x2765, /**< */ |
Rohit Grover |
106:a20be740075d | 189 | BLE_GATT_UNIT_AREA_HECTARE = 0x2766, /**< */ |
Rohit Grover |
106:a20be740075d | 190 | BLE_GATT_UNIT_VOLUME_LITRE = 0x2767, /**< */ |
Rohit Grover |
106:a20be740075d | 191 | BLE_GATT_UNIT_MASS_TONNE = 0x2768, /**< */ |
Rohit Grover |
106:a20be740075d | 192 | BLE_GATT_UNIT_PRESSURE_BAR = 0x2780, /**< Pressure, Bar */ |
Rohit Grover |
106:a20be740075d | 193 | BLE_GATT_UNIT_PRESSURE_MILLIMETRE_OF_MERCURY = 0x2781, /**< Pressure, Millimetre of Mercury */ |
Rohit Grover |
106:a20be740075d | 194 | BLE_GATT_UNIT_LENGTH_ANGSTROM = 0x2782, /**< */ |
Rohit Grover |
106:a20be740075d | 195 | BLE_GATT_UNIT_LENGTH_NAUTICAL_MILE = 0x2783, /**< */ |
Rohit Grover |
106:a20be740075d | 196 | BLE_GATT_UNIT_AREA_BARN = 0x2784, /**< */ |
Rohit Grover |
106:a20be740075d | 197 | BLE_GATT_UNIT_VELOCITY_KNOT = 0x2785, /**< */ |
Rohit Grover |
106:a20be740075d | 198 | BLE_GATT_UNIT_LOGARITHMIC_RADIO_QUANTITY_NEPER = 0x2786, /**< */ |
Rohit Grover |
106:a20be740075d | 199 | BLE_GATT_UNIT_LOGARITHMIC_RADIO_QUANTITY_BEL = 0x2787, /**< */ |
Rohit Grover |
106:a20be740075d | 200 | BLE_GATT_UNIT_LENGTH_YARD = 0x27A0, /**< Length, Yard */ |
Rohit Grover |
106:a20be740075d | 201 | BLE_GATT_UNIT_LENGTH_PARSEC = 0x27A1, /**< Length, Parsec */ |
Rohit Grover |
106:a20be740075d | 202 | BLE_GATT_UNIT_LENGTH_INCH = 0x27A2, /**< Length, Inch */ |
Rohit Grover |
106:a20be740075d | 203 | BLE_GATT_UNIT_LENGTH_FOOT = 0x27A3, /**< Length, Foot */ |
Rohit Grover |
106:a20be740075d | 204 | BLE_GATT_UNIT_LENGTH_MILE = 0x27A4, /**< Length, Mile */ |
Rohit Grover |
106:a20be740075d | 205 | BLE_GATT_UNIT_PRESSURE_POUND_FORCE_PER_SQUARE_INCH = 0x27A5, /**< */ |
Rohit Grover |
106:a20be740075d | 206 | BLE_GATT_UNIT_VELOCITY_KILOMETRE_PER_HOUR = 0x27A6, /**< Velocity, Kilometre per Hour */ |
Rohit Grover |
106:a20be740075d | 207 | BLE_GATT_UNIT_VELOCITY_MILE_PER_HOUR = 0x27A7, /**< Velocity, Mile per Hour */ |
Rohit Grover |
106:a20be740075d | 208 | BLE_GATT_UNIT_ANGULAR_VELOCITY_REVOLUTION_PER_MINUTE = 0x27A8, /**< Angular Velocity, Revolution per Minute */ |
Rohit Grover |
106:a20be740075d | 209 | BLE_GATT_UNIT_ENERGY_GRAM_CALORIE = 0x27A9, /**< Energy, Gram Calorie */ |
Rohit Grover |
106:a20be740075d | 210 | BLE_GATT_UNIT_ENERGY_KILOGRAM_CALORIE = 0x27AA, /**< Energy, Kilogram Calorie */ |
Rohit Grover |
106:a20be740075d | 211 | BLE_GATT_UNIT_ENERGY_KILOWATT_HOUR = 0x27AB, /**< Energy, Killowatt Hour */ |
Rohit Grover |
106:a20be740075d | 212 | BLE_GATT_UNIT_THERMODYNAMIC_TEMPERATURE_DEGREE_FAHRENHEIT = 0x27AC, /**< */ |
Rohit Grover |
106:a20be740075d | 213 | BLE_GATT_UNIT_PERCENTAGE = 0x27AD, /**< Percentage */ |
Rohit Grover |
106:a20be740075d | 214 | BLE_GATT_UNIT_PER_MILLE = 0x27AE, /**< */ |
Rohit Grover |
106:a20be740075d | 215 | BLE_GATT_UNIT_PERIOD_BEATS_PER_MINUTE = 0x27AF, /**< */ |
Rohit Grover |
106:a20be740075d | 216 | BLE_GATT_UNIT_ELECTRIC_CHARGE_AMPERE_HOURS = 0x27B0, /**< */ |
Rohit Grover |
106:a20be740075d | 217 | BLE_GATT_UNIT_MASS_DENSITY_MILLIGRAM_PER_DECILITRE = 0x27B1, /**< */ |
Rohit Grover |
106:a20be740075d | 218 | BLE_GATT_UNIT_MASS_DENSITY_MILLIMOLE_PER_LITRE = 0x27B2, /**< */ |
Rohit Grover |
106:a20be740075d | 219 | BLE_GATT_UNIT_TIME_YEAR = 0x27B3, /**< Time, Year */ |
Rohit Grover |
106:a20be740075d | 220 | BLE_GATT_UNIT_TIME_MONTH = 0x27B4, /**< Time, Month */ |
Rohit Grover |
106:a20be740075d | 221 | BLE_GATT_UNIT_CONCENTRATION_COUNT_PER_CUBIC_METRE = 0x27B5, /**< */ |
Rohit Grover |
106:a20be740075d | 222 | BLE_GATT_UNIT_IRRADIANCE_WATT_PER_SQUARE_METRE = 0x27B6 /**< */ |
Rohit Grover |
106:a20be740075d | 223 | } ble_gatt_unit_t; |
Rohit Grover |
106:a20be740075d | 224 | |
Rohit Grover |
106:a20be740075d | 225 | /**************************************************************************/ |
Rohit Grover |
106:a20be740075d | 226 | /*! |
Rohit Grover |
106:a20be740075d | 227 | \brief Standard GATT number types |
Rohit Grover |
106:a20be740075d | 228 | |
Rohit Grover |
106:a20be740075d | 229 | \note See Bluetooth Specification 4.0 (Vol. 3), Part G, Section 3.3.3.5.2 |
Rohit Grover |
106:a20be740075d | 230 | \note See http://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml |
Rohit Grover |
106:a20be740075d | 231 | */ |
Rohit Grover |
106:a20be740075d | 232 | /**************************************************************************/ |
Rohit Grover |
106:a20be740075d | 233 | typedef enum ble_gatt_format_e { |
Rohit Grover |
106:a20be740075d | 234 | BLE_GATT_FORMAT_RFU = 0x00, /**< Reserved For Future Use. */ |
Rohit Grover |
106:a20be740075d | 235 | BLE_GATT_FORMAT_BOOLEAN = 0x01, /**< Boolean. */ |
Rohit Grover |
106:a20be740075d | 236 | BLE_GATT_FORMAT_2BIT = 0x02, /**< Unsigned 2-bit integer. */ |
Rohit Grover |
106:a20be740075d | 237 | BLE_GATT_FORMAT_NIBBLE = 0x03, /**< Unsigned 4-bit integer. */ |
Rohit Grover |
106:a20be740075d | 238 | BLE_GATT_FORMAT_UINT8 = 0x04, /**< Unsigned 8-bit integer. */ |
Rohit Grover |
106:a20be740075d | 239 | BLE_GATT_FORMAT_UINT12 = 0x05, /**< Unsigned 12-bit integer. */ |
Rohit Grover |
106:a20be740075d | 240 | BLE_GATT_FORMAT_UINT16 = 0x06, /**< Unsigned 16-bit integer. */ |
Rohit Grover |
106:a20be740075d | 241 | BLE_GATT_FORMAT_UINT24 = 0x07, /**< Unsigned 24-bit integer. */ |
Rohit Grover |
106:a20be740075d | 242 | BLE_GATT_FORMAT_UINT32 = 0x08, /**< Unsigned 32-bit integer. */ |
Rohit Grover |
106:a20be740075d | 243 | BLE_GATT_FORMAT_UINT48 = 0x09, /**< Unsigned 48-bit integer. */ |
Rohit Grover |
106:a20be740075d | 244 | BLE_GATT_FORMAT_UINT64 = 0x0A, /**< Unsigned 64-bit integer. */ |
Rohit Grover |
106:a20be740075d | 245 | BLE_GATT_FORMAT_UINT128 = 0x0B, /**< Unsigned 128-bit integer. */ |
Rohit Grover |
106:a20be740075d | 246 | BLE_GATT_FORMAT_SINT8 = 0x0C, /**< Signed 2-bit integer. */ |
Rohit Grover |
106:a20be740075d | 247 | BLE_GATT_FORMAT_SINT12 = 0x0D, /**< Signed 12-bit integer. */ |
Rohit Grover |
106:a20be740075d | 248 | BLE_GATT_FORMAT_SINT16 = 0x0E, /**< Signed 16-bit integer. */ |
Rohit Grover |
106:a20be740075d | 249 | BLE_GATT_FORMAT_SINT24 = 0x0F, /**< Signed 24-bit integer. */ |
Rohit Grover |
106:a20be740075d | 250 | BLE_GATT_FORMAT_SINT32 = 0x10, /**< Signed 32-bit integer. */ |
Rohit Grover |
106:a20be740075d | 251 | BLE_GATT_FORMAT_SINT48 = 0x11, /**< Signed 48-bit integer. */ |
Rohit Grover |
106:a20be740075d | 252 | BLE_GATT_FORMAT_SINT64 = 0x12, /**< Signed 64-bit integer. */ |
Rohit Grover |
106:a20be740075d | 253 | BLE_GATT_FORMAT_SINT128 = 0x13, /**< Signed 128-bit integer. */ |
Rohit Grover |
106:a20be740075d | 254 | BLE_GATT_FORMAT_FLOAT32 = 0x14, /**< IEEE-754 32-bit floating point. */ |
Rohit Grover |
106:a20be740075d | 255 | BLE_GATT_FORMAT_FLOAT64 = 0x15, /**< IEEE-754 64-bit floating point. */ |
Rohit Grover |
106:a20be740075d | 256 | BLE_GATT_FORMAT_SFLOAT = 0x16, /**< IEEE-11073 16-bit SFLOAT. */ |
Rohit Grover |
106:a20be740075d | 257 | BLE_GATT_FORMAT_FLOAT = 0x17, /**< IEEE-11073 32-bit FLOAT. */ |
Rohit Grover |
106:a20be740075d | 258 | BLE_GATT_FORMAT_DUINT16 = 0x18, /**< IEEE-20601 format. */ |
Rohit Grover |
106:a20be740075d | 259 | BLE_GATT_FORMAT_UTF8S = 0x19, /**< UTF-8 string. */ |
Rohit Grover |
106:a20be740075d | 260 | BLE_GATT_FORMAT_UTF16S = 0x1A, /**< UTF-16 string. */ |
Rohit Grover |
106:a20be740075d | 261 | BLE_GATT_FORMAT_STRUCT = 0x1B /**< Opaque Structure. */ |
Rohit Grover |
106:a20be740075d | 262 | } ble_gatt_format_t; |
Rohit Grover |
106:a20be740075d | 263 | |
Rohit Grover |
106:a20be740075d | 264 | /**************************************************************************/ |
Rohit Grover |
106:a20be740075d | 265 | /*! |
Rohit Grover |
106:a20be740075d | 266 | \brief Standard GATT characteritic properties |
Rohit Grover |
106:a20be740075d | 267 | |
Rohit Grover |
106:a20be740075d | 268 | \note See Bluetooth Specification 4.0 (Vol. 3), Part G, Section 3.3.1.1 |
Rohit Grover |
106:a20be740075d | 269 | and Section 3.3.3.1 for Extended Properties |
Rohit Grover |
106:a20be740075d | 270 | */ |
Rohit Grover |
106:a20be740075d | 271 | /**************************************************************************/ |
Rohit Grover |
106:a20be740075d | 272 | typedef enum ble_gatt_char_properties_e { |
Rohit Grover |
106:a20be740075d | 273 | BLE_GATT_CHAR_PROPERTIES_NONE = 0x00, |
Rohit Grover |
106:a20be740075d | 274 | BLE_GATT_CHAR_PROPERTIES_BROADCAST = 0x01, /**< Permits broadcasts of the Characteristic Value using Server Characteristic Configuration Descriptor. */ |
Rohit Grover |
106:a20be740075d | 275 | BLE_GATT_CHAR_PROPERTIES_READ = 0x02, /**< Permits reads of the Characteristic Value. */ |
Rohit Grover |
106:a20be740075d | 276 | BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE = 0x04, /**< Permits writes of the Characteristic Value without response. */ |
Rohit Grover |
106:a20be740075d | 277 | BLE_GATT_CHAR_PROPERTIES_WRITE = 0x08, /**< Permits writes of the Characteristic Value with response. */ |
Rohit Grover |
106:a20be740075d | 278 | BLE_GATT_CHAR_PROPERTIES_NOTIFY = 0x10, /**< Permits notifications of a Characteristic Value without acknowledgement. */ |
Rohit Grover |
106:a20be740075d | 279 | BLE_GATT_CHAR_PROPERTIES_INDICATE = 0x20, /**< Permits indications of a Characteristic Value with acknowledgement. */ |
Rohit Grover |
106:a20be740075d | 280 | BLE_GATT_CHAR_PROPERTIES_AUTHENTICATED_SIGNED_WRITES = 0x40, /**< Permits signed writes to the Characteristic Value. */ |
Rohit Grover |
106:a20be740075d | 281 | BLE_GATT_CHAR_PROPERTIES_EXTENDED_PROPERTIES = 0x80 /**< Additional characteristic properties are defined in the Characteristic Extended Properties Descriptor */ |
Rohit Grover |
106:a20be740075d | 282 | } ble_gatt_char_properties_t; |
Rohit Grover |
106:a20be740075d | 283 | |
Rohit Grover |
106:a20be740075d | 284 | /**************************************************************************/ |
Rohit Grover |
106:a20be740075d | 285 | /*! |
Rohit Grover |
106:a20be740075d | 286 | \brief GATT presentation format wrapper |
Rohit Grover |
106:a20be740075d | 287 | |
Rohit Grover |
106:a20be740075d | 288 | \note See Bluetooth Specification 4.0 (Vol. 3), Part G, Section 3.3.3.5 |
Rohit Grover |
106:a20be740075d | 289 | \note See https://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml |
Rohit Grover |
106:a20be740075d | 290 | */ |
Rohit Grover |
106:a20be740075d | 291 | /**************************************************************************/ |
Rohit Grover |
106:a20be740075d | 292 | typedef struct PresentationFormat { |
Rohit Grover |
106:a20be740075d | 293 | uint8_t gatt_format; /**< Format of the value, see @ref ble_gatt_format_t. */ |
Rohit Grover |
106:a20be740075d | 294 | int8_t exponent; /**< Exponent for integer data types. Ex. if Exponent = -3 and the char value is 3892, the actual value is 3.892 */ |
Rohit Grover |
106:a20be740075d | 295 | uint16_t gatt_unit; /**< UUID from Bluetooth Assigned Numbers, see @ref ble_gatt_unit_t. */ |
Rohit Grover |
106:a20be740075d | 296 | uint8_t gatt_namespace; /**< Namespace from Bluetooth Assigned Numbers, normally '1', see @ref BLE_GATT_CPF_NAMESPACES. */ |
Rohit Grover |
106:a20be740075d | 297 | uint16_t gatt_nsdesc; /**< Namespace description from Bluetooth Assigned Numbers, normally '0', see @ref BLE_GATT_CPF_NAMESPACES. */ |
Rohit Grover |
106:a20be740075d | 298 | } presentation_format_t; |
Rohit Grover |
106:a20be740075d | 299 | |
Rohit Grover |
106:a20be740075d | 300 | /** |
Rohit Grover |
106:a20be740075d | 301 | * @brief Creates a new GattCharacteristic using the specified 16-bit |
Rohit Grover |
106:a20be740075d | 302 | * UUID, value length, and properties |
Rohit Grover |
106:a20be740075d | 303 | * |
Rohit Grover |
106:a20be740075d | 304 | * @note The UUID value must be unique in the service and is normally >1 |
Rohit Grover |
106:a20be740075d | 305 | * |
Rohit Grover |
106:a20be740075d | 306 | * @param[in] uuid |
Rohit Grover |
106:a20be740075d | 307 | * The UUID to use for this characteristic |
Rohit Grover |
106:a20be740075d | 308 | * @param[in] valuePtr |
Rohit Grover |
106:a20be740075d | 309 | * The memory holding the initial value. |
Rohit Grover |
106:a20be740075d | 310 | * @param[in] initialLen |
Rohit Grover |
106:a20be740075d | 311 | * The min length in bytes of this characteristic's value |
Rohit Grover |
106:a20be740075d | 312 | * @param[in] maxLen |
Rohit Grover |
106:a20be740075d | 313 | * The max length in bytes of this characteristic's value |
Rohit Grover |
106:a20be740075d | 314 | * @param[in] props |
Rohit Grover |
106:a20be740075d | 315 | * The 8-bit bit field containing the characteristic's properties |
Rohit Grover |
106:a20be740075d | 316 | * |
Rohit Grover |
106:a20be740075d | 317 | * @section EXAMPLE |
Rohit Grover |
106:a20be740075d | 318 | * |
Rohit Grover |
106:a20be740075d | 319 | * @code |
Rohit Grover |
106:a20be740075d | 320 | * |
Rohit Grover |
106:a20be740075d | 321 | * // UUID = 0x2A19, Min length 2, Max len = 2, Properties = write |
Rohit Grover |
106:a20be740075d | 322 | * GattCharacteristic c = GattCharacteristic( 0x2A19, 2, 2, BLE_GATT_CHAR_PROPERTIES_WRITE ); |
Rohit Grover |
106:a20be740075d | 323 | * |
Rohit Grover |
106:a20be740075d | 324 | * @endcode |
Rohit Grover |
106:a20be740075d | 325 | */ |
Rohit Grover |
106:a20be740075d | 326 | /**************************************************************************/ |
Rohit Grover |
106:a20be740075d | 327 | GattCharacteristic(const UUID &uuid, uint8_t *valuePtr = NULL, uint16_t initialLen = 0, uint16_t maxLen = 0, |
Rohit Grover |
106:a20be740075d | 328 | uint8_t props = BLE_GATT_CHAR_PROPERTIES_NONE) : |
carlescufi | 112:64c88ad45610 | 329 | GattAttribute(uuid, valuePtr, initialLen, maxLen), _properties(props) { |
Rohit Grover |
106:a20be740075d | 330 | /* empty */ |
Rohit Grover |
106:a20be740075d | 331 | } |
Rohit Grover |
106:a20be740075d | 332 | |
Rohit Grover |
106:a20be740075d | 333 | public: |
Rohit Grover |
106:a20be740075d | 334 | uint8_t getProperties(void) const { |
Rohit Grover |
106:a20be740075d | 335 | return _properties; |
Rohit Grover |
106:a20be740075d | 336 | } |
carlescufi | 112:64c88ad45610 | 337 | |
Rohit Grover |
106:a20be740075d | 338 | |
Rohit Grover |
106:a20be740075d | 339 | private: |
Rohit Grover |
106:a20be740075d | 340 | uint8_t _properties; |
Rohit Grover |
106:a20be740075d | 341 | }; |
Rohit Grover |
106:a20be740075d | 342 | |
Rohit Grover |
106:a20be740075d | 343 | #endif // ifndef __GATT_CHARACTERISTIC_H__ |