Macros | Enumerations
ble_att.h File Reference

Attribute Protocol. More...

Go to the source code of this file.

## Macros
#define | BLE_ATT_UUID_16(uuid) (uuid)
#define | BLE_ATT_MTU_DEFAULT (23)
#define | BLE_ATT_INVALID_HDL (0x0000)
#define | BLE_ATT_HANDLE_START (0x0001)
#define | BLE_ATT_HANDLE_END (0xFFFF)
#define | BLE_ATT_UUID_16_LEN 0x0002
#define | BLE_ATT_UUID_32_LEN 0x0004
#define | BLE_ATT_UUID_128_LEN 0x0010
#define | BLE_ATT_CHAR_PROP_BCAST 0x01
#define | BLE_ATT_CHAR_PROP_RD 0x02
#define | BLE_ATT_CHAR_PROP_WR_NO_RESP 0x04
#define | BLE_ATT_CHAR_PROP_WR 0x08
#define | BLE_ATT_CHAR_PROP_NTF 0x10
#define | BLE_ATT_CHAR_PROP_IND 0x20
#define | BLE_ATT_CHAR_PROP_AUTH 0x40
#define | BLE_ATT_CHAR_PROP_EXT_PROP 0x80
#define | BLE_ATT_EXT_RELIABLE_WRITE 0x0001
#define | BLE_ATT_EXT_WRITABLE_AUX 0x0002
#define | BLE_ATT_EXT_RFU 0xFFFC
#define | BLE_ATT_BT_UUID_128
| Characteristic Base UUID. More...
#define | BLE_ATT_16_TO_128_ARRAY(uuid)
| Change a 16-bit UUID array to a 128-bit one (append 0). More...
#define | BLE_ATT_16_TO_16_ARRAY(uuid) {(uuid) & 0xFF, ((uuid) >> 8) & 0xFF}
| Change a 16-bit UUID array to a 16-bit one (append 0). More...

## Enumerations
enum | att_uuid_t { BLE_ATT_INVALID_UUID = BLE_ATT_UUID_16(0x0000), BLE_ATT_SVC_GENERIC_ACCESS = BLE_ATT_UUID_16(0x1800), BLE_ATT_SVC_GENERIC_ATTRIBUTE = BLE_ATT_UUID_16(0x1801), BLE_ATT_SVC_IMMEDIATE_ALERT = BLE_ATT_UUID_16(0x1802), BLE_ATT_SVC_LINK_LOSS = BLE_ATT_UUID_16(0x1803), BLE_ATT_SVC_TX_POWER = BLE_ATT_UUID_16(0x1804), BLE_ATT_SVC_CURRENT_TIME = BLE_ATT_UUID_16(0x1805), BLE_ATT_SVC_REF_TIME_UPDATE = BLE_ATT_UUID_16(0x1806), BLE_ATT_SVC_NEXT_DST_CHANGE = BLE_ATT_UUID_16(0x1807), BLE_ATT_SVC_GLUCOSE = BLE_ATT_UUID_16(0x1808), BLE_ATT_SVC_HEALTH_THERMOM = BLE_ATT_UUID_16(0x1809), BLE_ATT_SVC_DEVICE_INFO = BLE_ATT_UUID_16(0x180A), BLE_ATT_SVC_HEART_RATE = BLE_ATT_UUID_16(0x180D), BLE_ATT_SVC_PHONE_ALERT_STATUS = BLE_ATT_UUID_16(0x180E), BLE_ATT_SVC_BATTERY_SERVICE = BLE_ATT_UUID_16(0x180F), BLE_ATT_SVC_BLOOD_PRESSURE = BLE_ATT_UUID_16(0x1810), BLE_ATT_SVC_ALERT_NTF = BLE_ATT_UUID_16(0x1811), BLE_ATT_SVC_HID = BLE_ATT_UUID_16(0x1812), BLE_ATT_SVC_SCAN_PARAMETERS = BLE_ATT_UUID_16(0x1813), BLE_ATT_SVC_RUNNING_SPEED_CADENCE = BLE_ATT_UUID_16(0x1814), BLE_ATT_SVC_CYCLING_SPEED_CADENCE = BLE_ATT_UUID_16(0x1816), BLE_ATT_SVC_CYCLING_POWER = BLE_ATT_UUID_16(0x1818), BLE_ATT_SVC_LOCATION_AND_NAVIGATION = BLE_ATT_UUID_16(0x1819), BLE_ATT_SVC_ENVIRONMENTAL_SENSING = BLE_ATT_UUID_16(0x181A), BLE_ATT_SVC_BODY_COMPOSITION = BLE_ATT_UUID_16(0x181B), BLE_ATT_SVC_USER_DATA = BLE_ATT_UUID_16(0x181C), BLE_ATT_SVC_WEIGHT_SCALE = BLE_ATT_UUID_16(0x181D), BLE_ATT_SVC_BOND_MANAGEMENT = BLE_ATT_UUID_16(0x181E), BLE_ATT_SVC_CONTINUOUS_GLUCOSE_MONITORING = BLE_ATT_UUID_16(0x181F), BLE_ATT_SVC_IP_SUPPORT = BLE_ATT_UUID_16(0x1820), BLE_ATT_SVC_INDOOR_POSITIONING = BLE_ATT_UUID_16(0x1821), BLE_ATT_SVC_PULSE_OXIMETER = BLE_ATT_UUID_16(0x1822), BLE_ATT_SVC_HTTP_PROXY = BLE_ATT_UUID_16(0x1823), BLE_ATT_SVC_TRANSPORT_DISCOVERY = BLE_ATT_UUID_16(0x1824), BLE_ATT_SVC_OBJECT_TRANSFER = BLE_ATT_UUID_16(0x1825), BLE_ATT_UNIT_UNITLESS = BLE_ATT_UUID_16(0x2700), BLE_ATT_UNIT_METRE = BLE_ATT_UUID_16(0x2701), BLE_ATT_UNIT_KG = BLE_ATT_UUID_16(0x2702), BLE_ATT_UNIT_SECOND = BLE_ATT_UUID_16(0x2703), BLE_ATT_UNIT_AMPERE = BLE_ATT_UUID_16(0x2704), BLE_ATT_UNIT_KELVIN = BLE_ATT_UUID_16(0x2705), BLE_ATT_UNIT_MOLE = BLE_ATT_UUID_16(0x2706), BLE_ATT_UNIT_CANDELA = BLE_ATT_UUID_16(0x2707), BLE_ATT_UNIT_SQ_METRE = BLE_ATT_UUID_16(0x2710), BLE_ATT_UNIT_CUBIC_METRE = BLE_ATT_UUID_16(0x2710), BLE_ATT_UNIT_METRE_PER_SECOND = BLE_ATT_UUID_16(0x2711), BLE_ATT_UNIT_METRES_PER_SEC_SQ = BLE_ATT_UUID_16(0x2712), BLE_ATT_UNIT_RECIPROCAL_METRE = BLE_ATT_UUID_16(0x2713), BLE_ATT_UNIT_DENS_KG_PER_CUBIC_METRE = BLE_ATT_UUID_16(0x2714), BLE_ATT_UNIT_KG_PER_SQ_METRE = BLE_ATT_UUID_16(0x2715), BLE_ATT_UNIT_CUBIC_METRE_PER_KG = BLE_ATT_UUID_16(0x2716), BLE_ATT_UNIT_AMPERE_PER_SQ_METRE = BLE_ATT_UUID_16(0x2717), BLE_ATT_UNIT_AMPERE_PER_METRE = BLE_ATT_UUID_16(0x2718), BLE_ATT_UNIT_MOLE_PER_CUBIC_METRE = BLE_ATT_UUID_16(0x2719), BLE_ATT_UNIT_MASS_KG_PER_CUBIC_METRE = BLE_ATT_UUID_16(0x271A), BLE_ATT_UNIT_CANDELA_PER_SQ_METRE = BLE_ATT_UUID_16(0x271B), BLE_ATT_UNIT_REFRACTIVE_INDEX = BLE_ATT_UUID_16(0x271C), BLE_ATT_UNIT_RELATIVE_PERMEABILITY = BLE_ATT_UUID_16(0x271D), BLE_ATT_UNIT_RADIAN = BLE_ATT_UUID_16(0x2720), BLE_ATT_UNIT_STERADIAN = BLE_ATT_UUID_16(0x2721), BLE_ATT_UNIT_HERTZ = BLE_ATT_UUID_16(0x2722), BLE_ATT_UNIT_NEWTON = BLE_ATT_UUID_16(0x2723), BLE_ATT_UNIT_PASCAL = BLE_ATT_UUID_16(0x2724), BLE_ATT_UNIT_JOULE = BLE_ATT_UUID_16(0x2725), BLE_ATT_UNIT_WATT = BLE_ATT_UUID_16(0x2726), BLE_ATT_UNIT_COULOMB = BLE_ATT_UUID_16(0x2727), BLE_ATT_UNIT_VOLT = BLE_ATT_UUID_16(0x2728), BLE_ATT_UNIT_FARAD = BLE_ATT_UUID_16(0x2729), BLE_ATT_UNIT_OHM = BLE_ATT_UUID_16(0x272A), BLE_ATT_UNIT_SIEMENS = BLE_ATT_UUID_16(0x272B), BLE_ATT_UNIT_WEBER = BLE_ATT_UUID_16(0x272C), BLE_ATT_UNIT_TESLA = BLE_ATT_UUID_16(0x272D), BLE_ATT_UNIT_HENRY = BLE_ATT_UUID_16(0x272E), BLE_ATT_UNIT_CELSIUS = BLE_ATT_UUID_16(0x272F), BLE_ATT_UNIT_LUMEN = BLE_ATT_UUID_16(0x2730), BLE_ATT_UNIT_LUX = BLE_ATT_UUID_16(0x2731), BLE_ATT_UNIT_BECQUEREL = BLE_ATT_UUID_16(0x2732), BLE_ATT_UNIT_GRAY = BLE_ATT_UUID_16(0x2733), BLE_ATT_UNIT_SIEVERT = BLE_ATT_UUID_16(0x2734), BLE_ATT_UNIT_KATAL = BLE_ATT_UUID_16(0x2735), BLE_ATT_UNIT_PASCAL_SECOND = BLE_ATT_UUID_16(0x2740), BLE_ATT_UNIT_NEWTON_METRE = BLE_ATT_UUID_16(0x2741), BLE_ATT_UNIT_NEWTON_PER_METRE = BLE_ATT_UUID_16(0x2742), BLE_ATT_UNIT_RADIAN_PER_SECOND = BLE_ATT_UUID_16(0x2743), BLE_ATT_UNIT_RADIAN_PER_SECOND_SQ = BLE_ATT_UUID_16(0x2744), BLE_ATT_UNIT_WATT_PER_SQ_METRE = BLE_ATT_UUID_16(0x2745), BLE_ATT_UNIT_JOULE_PER_KELVIN = BLE_ATT_UUID_16(0x2746), BLE_ATT_UNIT_JOULE_PER_KG_KELVIN = BLE_ATT_UUID_16(0x2747), BLE_ATT_UNIT_JOULE_PER_KG = BLE_ATT_UUID_16(0x2748), BLE_ATT_UNIT_WATT_PER_METRE_KELVIN = BLE_ATT_UUID_16(0x2749), BLE_ATT_UNIT_JOULE_PER_CUBIC_METRE = BLE_ATT_UUID_16(0x274A), BLE_ATT_UNIT_VOLT_PER_METRE = BLE_ATT_UUID_16(0x274B), BLE_ATT_UNIT_COULOMB_PER_CUBIC_METRE = BLE_ATT_UUID_16(0x274C), BLE_ATT_UNIT_SURF_COULOMB_PER_SQ_METRE = BLE_ATT_UUID_16(0x274D), BLE_ATT_UNIT_FLUX_COULOMB_PER_SQ_METRE = BLE_ATT_UUID_16(0x274E), BLE_ATT_UNIT_FARAD_PER_METRE = BLE_ATT_UUID_16(0x274F), BLE_ATT_UNIT_HENRY_PER_METRE = BLE_ATT_UUID_16(0x2750), BLE_ATT_UNIT_JOULE_PER_MOLE = BLE_ATT_UUID_16(0x2751), BLE_ATT_UNIT_JOULE_PER_MOLE_KELVIN = BLE_ATT_UUID_16(0x2752), BLE_ATT_UNIT_COULOMB_PER_KG = BLE_ATT_UUID_16(0x2753), BLE_ATT_UNIT_GRAY_PER_SECOND = BLE_ATT_UUID_16(0x2754), BLE_ATT_UNIT_WATT_PER_STERADIAN = BLE_ATT_UUID_16(0x2755), BLE_ATT_UNIT_WATT_PER_SQ_METRE_STERADIAN = BLE_ATT_UUID_16(0x2756), BLE_ATT_UNIT_KATAL_PER_CUBIC_METRE = BLE_ATT_UUID_16(0x2757), BLE_ATT_UNIT_MINUTE = BLE_ATT_UUID_16(0x2760), BLE_ATT_UNIT_HOUR = BLE_ATT_UUID_16(0x2761), BLE_ATT_UNIT_DAY = BLE_ATT_UUID_16(0x2762), BLE_ATT_UNIT_ANGLE_DEGREE = BLE_ATT_UUID_16(0x2763), BLE_ATT_UNIT_ANGLE_MINUTE = BLE_ATT_UUID_16(0x2764), BLE_ATT_UNIT_ANGLE_SECOND = BLE_ATT_UUID_16(0x2765), BLE_ATT_UNIT_HECTARE = BLE_ATT_UUID_16(0x2766), BLE_ATT_UNIT_LITRE = BLE_ATT_UUID_16(0x2767), BLE_ATT_UNIT_TONNE = BLE_ATT_UUID_16(0x2768), BLE_ATT_UNIT_BAR = BLE_ATT_UUID_16(0x2780), BLE_ATT_UNIT_MM_MERCURY = BLE_ATT_UUID_16(0x2781), BLE_ATT_UNIT_ANGSTROM = BLE_ATT_UUID_16(0x2782), BLE_ATT_UNIT_NAUTICAL_MILE = BLE_ATT_UUID_16(0x2783), BLE_ATT_UNIT_BARN = BLE_ATT_UUID_16(0x2784), BLE_ATT_UNIT_KNOT = BLE_ATT_UUID_16(0x2785), BLE_ATT_UNIT_NEPER = BLE_ATT_UUID_16(0x2786), BLE_ATT_UNIT_BEL = BLE_ATT_UUID_16(0x2787), BLE_ATT_UNIT_YARD = BLE_ATT_UUID_16(0x27A0), BLE_ATT_UNIT_PARSEC = BLE_ATT_UUID_16(0x27A1), BLE_ATT_UNIT_INCH = BLE_ATT_UUID_16(0x27A2), BLE_ATT_UNIT_FOOT = BLE_ATT_UUID_16(0x27A3), BLE_ATT_UNIT_MILE = BLE_ATT_UUID_16(0x27A4), BLE_ATT_UNIT_POUND_FORCE_PER_SQ_INCH = BLE_ATT_UUID_16(0x27A5), BLE_ATT_UNIT_KM_PER_HOUR = BLE_ATT_UUID_16(0x27A6), BLE_ATT_UNIT_MILE_PER_HOUR = BLE_ATT_UUID_16(0x27A7), BLE_ATT_UNIT_REVOLUTION_PER_MINUTE = BLE_ATT_UUID_16(0x27A8), BLE_ATT_UNIT_GRAM_CALORIE = BLE_ATT_UUID_16(0x27A9), BLE_ATT_UNIT_KG_CALORIE = BLE_ATT_UUID_16(0x27AA), BLE_ATT_UNIT_KILOWATT_HOUR = BLE_ATT_UUID_16(0x27AB), BLE_ATT_UNIT_FAHRENHEIT = BLE_ATT_UUID_16(0x27AC), BLE_ATT_UNIT_PERCENTAGE = BLE_ATT_UUID_16(0x27AD), BLE_ATT_UNIT_PER_MILLE = BLE_ATT_UUID_16(0x27AE), BLE_ATT_UNIT_BEATS_PER_MINUTE = BLE_ATT_UUID_16(0x27AF), BLE_ATT_UNIT_AMPERE_HOURS = BLE_ATT_UUID_16(0x27B0), BLE_ATT_UNIT_MILLIGRAM_PER_DECILITRE = BLE_ATT_UUID_16(0x27B1), BLE_ATT_UNIT_MILLIMOLE_PER_LITRE = BLE_ATT_UUID_16(0x27B2), BLE_ATT_UNIT_YEAR = BLE_ATT_UUID_16(0x27B3), BLE_ATT_UNIT_MONTH = BLE_ATT_UUID_16(0x27B4), BLE_ATT_DECL_PRIMARY_SERVICE = BLE_ATT_UUID_16(0x2800), BLE_ATT_DECL_SECONDARY_SERVICE = BLE_ATT_UUID_16(0x2801), BLE_ATT_DECL_INCLUDE = BLE_ATT_UUID_16(0x2802), BLE_ATT_DECL_CHARACTERISTIC = BLE_ATT_UUID_16(0x2803), BLE_ATT_DESC_CHAR_EXT_PROPERTIES = BLE_ATT_UUID_16(0x2900), BLE_ATT_DESC_CHAR_USER_DESCRIPTION = BLE_ATT_UUID_16(0x2901), BLE_ATT_DESC_CLIENT_CHAR_CFG = BLE_ATT_UUID_16(0x2902), BLE_ATT_DESC_SERVER_CHAR_CFG = BLE_ATT_UUID_16(0x2903), BLE_ATT_DESC_CHAR_PRES_FORMAT = BLE_ATT_UUID_16(0x2904), BLE_ATT_DESC_CHAR_AGGREGATE_FORMAT = BLE_ATT_UUID_16(0x2905), BLE_ATT_DESC_VALID_RANGE = BLE_ATT_UUID_16(0x2906), BLE_ATT_DESC_EXT_REPORT_REF = BLE_ATT_UUID_16(0x2907), BLE_ATT_DESC_REPORT_REF = BLE_ATT_UUID_16(0x2908), BLE_ATT_DESC_ES_CONFIGURATION = BLE_ATT_UUID_16(0x290B), BLE_ATT_DESC_ES_MEASUREMENT = BLE_ATT_UUID_16(0x290C), BLE_ATT_DESC_ES_TRIGGER_SETTING = BLE_ATT_UUID_16(0x290D), BLE_ATT_CHAR_DEVICE_NAME = BLE_ATT_UUID_16(0x2A00), BLE_ATT_CHAR_APPEARANCE = BLE_ATT_UUID_16(0x2A01), BLE_ATT_CHAR_PRIVACY_FLAG = BLE_ATT_UUID_16(0x2A02), BLE_ATT_CHAR_RECONNECTION_ADDR = BLE_ATT_UUID_16(0x2A03), BLE_ATT_CHAR_PERIPH_PREF_CON_PARAM = BLE_ATT_UUID_16(0x2A04), BLE_ATT_CHAR_SERVICE_CHANGED = BLE_ATT_UUID_16(0x2A05), BLE_ATT_CHAR_ALERT_LEVEL = BLE_ATT_UUID_16(0x2A06), BLE_ATT_CHAR_TX_POWER_LEVEL = BLE_ATT_UUID_16(0x2A07), BLE_ATT_CHAR_DATE_TIME = BLE_ATT_UUID_16(0x2A08), BLE_ATT_CHAR_DAY_WEEK = BLE_ATT_UUID_16(0x2A09), BLE_ATT_CHAR_DAY_DATE_TIME = BLE_ATT_UUID_16(0x2A0A), BLE_ATT_CHAR_EXACT_TIME_256 = BLE_ATT_UUID_16(0x2A0C), BLE_ATT_CHAR_DST_OFFSET = BLE_ATT_UUID_16(0x2A0D), BLE_ATT_CHAR_TIME_ZONE = BLE_ATT_UUID_16(0x2A0E), BLE_ATT_CHAR_LOCAL_TIME_INFO = BLE_ATT_UUID_16(0x2A0F), BLE_ATT_CHAR_TIME_WITH_DST = BLE_ATT_UUID_16(0x2A11), BLE_ATT_CHAR_TIME_ACCURACY = BLE_ATT_UUID_16(0x2A12), BLE_ATT_CHAR_TIME_SOURCE = BLE_ATT_UUID_16(0x2A13), BLE_ATT_CHAR_REFERENCE_TIME_INFO = BLE_ATT_UUID_16(0x2A14), BLE_ATT_CHAR_TIME_UPDATE_CNTL_POINT = BLE_ATT_UUID_16(0x2A16), BLE_ATT_CHAR_TIME_UPDATE_STATE = BLE_ATT_UUID_16(0x2A17), BLE_ATT_CHAR_GLUCOSE_MEAS = BLE_ATT_UUID_16(0x2A18), BLE_ATT_CHAR_BATTERY_LEVEL = BLE_ATT_UUID_16(0x2A19), BLE_ATT_CHAR_TEMPERATURE_MEAS = BLE_ATT_UUID_16(0x2A1C), BLE_ATT_CHAR_TEMPERATURE_TYPE = BLE_ATT_UUID_16(0x2A1D), BLE_ATT_CHAR_INTERMED_TEMPERATURE = BLE_ATT_UUID_16(0x2A1E), BLE_ATT_CHAR_MEAS_INTERVAL = BLE_ATT_UUID_16(0x2A21), BLE_ATT_CHAR_BOOT_KB_IN_REPORT = BLE_ATT_UUID_16(0x2A22), BLE_ATT_CHAR_SYS_ID = BLE_ATT_UUID_16(0x2A23), BLE_ATT_CHAR_MODEL_NB = BLE_ATT_UUID_16(0x2A24), BLE_ATT_CHAR_SERIAL_NB = BLE_ATT_UUID_16(0x2A25), BLE_ATT_CHAR_FW_REV = BLE_ATT_UUID_16(0x2A26), BLE_ATT_CHAR_HW_REV = BLE_ATT_UUID_16(0x2A27), BLE_ATT_CHAR_SW_REV = BLE_ATT_UUID_16(0x2A28), BLE_ATT_CHAR_MANUF_NAME = BLE_ATT_UUID_16(0x2A29), BLE_ATT_CHAR_IEEE_CERTIF = BLE_ATT_UUID_16(0x2A2A), BLE_ATT_CHAR_CT_TIME = BLE_ATT_UUID_16(0x2A2B), BLE_ATT_CHAR_MAGN_DECLINE = BLE_ATT_UUID_16(0x2A2C), BLE_ATT_CHAR_SCAN_REFRESH = BLE_ATT_UUID_16(0x2A31), BLE_ATT_CHAR_BOOT_KB_OUT_REPORT = BLE_ATT_UUID_16(0x2A32), BLE_ATT_CHAR_BOOT_MOUSE_IN_REPORT = BLE_ATT_UUID_16(0x2A33), BLE_ATT_CHAR_GLUCOSE_MEAS_CTX = BLE_ATT_UUID_16(0x2A34), BLE_ATT_CHAR_BLOOD_PRESSURE_MEAS = BLE_ATT_UUID_16(0x2A35), BLE_ATT_CHAR_INTERMEDIATE_CUFF_PRESSURE = BLE_ATT_UUID_16(0x2A36), BLE_ATT_CHAR_HEART_RATE_MEAS = BLE_ATT_UUID_16(0x2A37), BLE_ATT_CHAR_BODY_SENSOR_LOCATION = BLE_ATT_UUID_16(0x2A38), BLE_ATT_CHAR_HEART_RATE_CNTL_POINT = BLE_ATT_UUID_16(0x2A39), BLE_ATT_CHAR_ALERT_STATUS = BLE_ATT_UUID_16(0x2A3F), BLE_ATT_CHAR_RINGER_CNTL_POINT = BLE_ATT_UUID_16(0x2A40), BLE_ATT_CHAR_RINGER_SETTING = BLE_ATT_UUID_16(0x2A41), BLE_ATT_CHAR_ALERT_CAT_ID_BIT_MASK = BLE_ATT_UUID_16(0x2A42), BLE_ATT_CHAR_ALERT_CAT_ID = BLE_ATT_UUID_16(0x2A43), BLE_ATT_CHAR_ALERT_NTF_CTNL_PT = BLE_ATT_UUID_16(0x2A44), BLE_ATT_CHAR_UNREAD_ALERT_STATUS = BLE_ATT_UUID_16(0x2A45), BLE_ATT_CHAR_NEW_ALERT = BLE_ATT_UUID_16(0x2A46), BLE_ATT_CHAR_SUP_NEW_ALERT_CAT = BLE_ATT_UUID_16(0x2A47), BLE_ATT_CHAR_SUP_UNREAD_ALERT_CAT = BLE_ATT_UUID_16(0x2A48), BLE_ATT_CHAR_BLOOD_PRESSURE_FEATURE = BLE_ATT_UUID_16(0x2A49), BLE_ATT_CHAR_HID_INFO = BLE_ATT_UUID_16(0x2A4A), BLE_ATT_CHAR_REPORT_MAP = BLE_ATT_UUID_16(0x2A4B), BLE_ATT_CHAR_HID_CTNL_PT = BLE_ATT_UUID_16(0x2A4C), BLE_ATT_CHAR_REPORT = BLE_ATT_UUID_16(0x2A4D), BLE_ATT_CHAR_PROTOCOL_MODE = BLE_ATT_UUID_16(0x2A4E), BLE_ATT_CHAR_SCAN_INTV_WD = BLE_ATT_UUID_16(0x2A4F), BLE_ATT_CHAR_PNP_ID = BLE_ATT_UUID_16(0x2A50), BLE_ATT_CHAR_GLUCOSE_FEATURE = BLE_ATT_UUID_16(0x2A51), BLE_ATT_CHAR_REC_ACCESS_CTRL_PT = BLE_ATT_UUID_16(0x2A52), BLE_ATT_CHAR_RSC_MEAS = BLE_ATT_UUID_16(0x2A53), BLE_ATT_CHAR_RSC_FEAT = BLE_ATT_UUID_16(0x2A54), BLE_ATT_CHAR_SC_CNTL_PT = BLE_ATT_UUID_16(0x2A55), BLE_ATT_CHAR_CSC_MEAS = BLE_ATT_UUID_16(0x2A5B), BLE_ATT_CHAR_CSC_FEAT = BLE_ATT_UUID_16(0x2A5C), BLE_ATT_CHAR_SENSOR_LOC = BLE_ATT_UUID_16(0x2A5D), BLE_ATT_CHAR_PLX_SPOT_CHECK_MEASUREMENT_LOC = BLE_ATT_UUID_16(0x2A5E), BLE_ATT_CHAR_PLX_CONTINUOUS_MEASUREMENT_LOC = BLE_ATT_UUID_16(0x2A5F), BLE_ATT_CHAR_PLX_FEATURES_LOC = BLE_ATT_UUID_16(0x2A60), BLE_ATT_CHAR_CP_MEAS = BLE_ATT_UUID_16(0x2A63), BLE_ATT_CHAR_CP_VECTOR = BLE_ATT_UUID_16(0x2A64), BLE_ATT_CHAR_CP_FEAT = BLE_ATT_UUID_16(0x2A65), BLE_ATT_CHAR_CP_CNTL_PT = BLE_ATT_UUID_16(0x2A66), BLE_ATT_CHAR_LOC_SPEED = BLE_ATT_UUID_16(0x2A67), BLE_ATT_CHAR_NAVIGATION = BLE_ATT_UUID_16(0x2A68), BLE_ATT_CHAR_POS_QUALITY = BLE_ATT_UUID_16(0x2A69), BLE_ATT_CHAR_LN_FEAT = BLE_ATT_UUID_16(0x2A6A), BLE_ATT_CHAR_LN_CNTL_PT = BLE_ATT_UUID_16(0x2A6B), BLE_ATT_CHAR_ELEVATION = BLE_ATT_UUID_16(0x2A6C), BLE_ATT_CHAR_PRESSURE = BLE_ATT_UUID_16(0x2A6D), BLE_ATT_CHAR_TEMPERATURE = BLE_ATT_UUID_16(0x2A6E), BLE_ATT_CHAR_HUMIDITY = BLE_ATT_UUID_16(0x2A6F), BLE_ATT_CHAR_TRUE_WIND_SPEED = BLE_ATT_UUID_16(0x2A70), BLE_ATT_CHAR_TRUE_WIND_DIR = BLE_ATT_UUID_16(0x2A71), BLE_ATT_CHAR_APRNT_WIND_SPEED = BLE_ATT_UUID_16(0x2A72), BLE_ATT_CHAR_APRNT_WIND_DIRECTION = BLE_ATT_UUID_16(0x2A73), BLE_ATT_CHAR_GUST_FACTOR = BLE_ATT_UUID_16(0x2A74), BLE_ATT_CHAR_POLLEN_CONC = BLE_ATT_UUID_16(0x2A75), BLE_ATT_CHAR_UV_INDEX = BLE_ATT_UUID_16(0x2A76), BLE_ATT_CHAR_IRRADIANCE = BLE_ATT_UUID_16(0x2A77), BLE_ATT_CHAR_RAINFALL = BLE_ATT_UUID_16(0x2A78), BLE_ATT_CHAR_WIND_CHILL = BLE_ATT_UUID_16(0x2A79), BLE_ATT_CHAR_HEAT_INDEX = BLE_ATT_UUID_16(0x2A7A), BLE_ATT_CHAR_DEW_POINT = BLE_ATT_UUID_16(0x2A7B), BLE_ATT_CHAR_DESCRIPTOR_VALUE_CHANGED = BLE_ATT_UUID_16(0x2A7D), BLE_ATT_CHAR_AEROBIC_HEART_RATE_LOWER_LIMIT = BLE_ATT_UUID_16(0x2A7E), BLE_ATT_CHAR_AEROBIC_THRESHOLD = BLE_ATT_UUID_16(0x2A7F), BLE_ATT_CHAR_AGE = BLE_ATT_UUID_16(0x2A80), BLE_ATT_CHAR_ANAEROBIC_HEART_RATE_LOWER_LIMIT = BLE_ATT_UUID_16(0x2A81), BLE_ATT_CHAR_ANAEROBIC_HEART_RATE_UPPER_LIMIT = BLE_ATT_UUID_16(0x2A82), BLE_ATT_CHAR_ANAEROBIC_THRESHHOLD = BLE_ATT_UUID_16(0x2A83), BLE_ATT_CHAR_AEROBIC_HEART_RATE_UPPER_LIMIT = BLE_ATT_UUID_16(0x2A84), BLE_ATT_CHAR_DATE_OF_BIRTH = BLE_ATT_UUID_16(0x2A85), BLE_ATT_CHAR_DATE_OF_THRESHOLD_ASSESSMENT = BLE_ATT_UUID_16(0x2A86), BLE_ATT_CHAR_EMAIL_ADDRESS = BLE_ATT_UUID_16(0x2A87), BLE_ATT_CHAR_FAT_BURN_HEART_RATE_LOWER_LIMIT = BLE_ATT_UUID_16(0x2A88), BLE_ATT_CHAR_FAT_BURN_HEART_RATE_UPPER_LIMIT = BLE_ATT_UUID_16(0x2A89), BLE_ATT_CHAR_FIRST_NAME = BLE_ATT_UUID_16(0x2A8A), BLE_ATT_CHAR_FIVE_ZONE_HEART_RATE_LIMITS = BLE_ATT_UUID_16(0x2A8B), BLE_ATT_CHAR_GENDER = BLE_ATT_UUID_16(0x2A8C), BLE_ATT_CHAR_MAX_HEART_RATE = BLE_ATT_UUID_16(0x2A8D), BLE_ATT_CHAR_HEIGHT = BLE_ATT_UUID_16(0x2A8E), BLE_ATT_CHAR_HIP_CIRCUMFERENCE = BLE_ATT_UUID_16(0x2A8F), BLE_ATT_CHAR_LAST_NAME = BLE_ATT_UUID_16(0x2A90), BLE_ATT_CHAR_MAXIMUM_RECOMMENDED_HEART_RATE = BLE_ATT_UUID_16(0x2A91), BLE_ATT_CHAR_RESTING_HEART_RATE = BLE_ATT_UUID_16(0x2A92), BLE_ATT_CHAR_SPORT_TYPE_FOR_AEROBIC_AND_ANAEROBIC_THRESHOLDS = BLE_ATT_UUID_16(0x2A93), BLE_ATT_CHAR_THREE_ZONE_HEART_RATE_LIMITS = BLE_ATT_UUID_16(0x2A94), BLE_ATT_CHAR_TWO_ZONE_HEART_RATE_LIMIT = BLE_ATT_UUID_16(0x2A95), BLE_ATT_CHAR_VO2_MAX = BLE_ATT_UUID_16(0x2A96), BLE_ATT_CHAR_WAIST_CIRCUMFERENCE = BLE_ATT_UUID_16(0x2A97), BLE_ATT_CHAR_WEIGHT = BLE_ATT_UUID_16(0x2A98), BLE_ATT_CHAR_DATABASE_CHANGE_INCREMENT = BLE_ATT_UUID_16(0x2A99), BLE_ATT_CHAR_USER_INDEX = BLE_ATT_UUID_16(0x2A9A), BLE_ATT_CHAR_BODY_COMPOSITION_FEATURE = BLE_ATT_UUID_16(0x2A9B), BLE_ATT_CHAR_BODY_COMPOSITION_MEASUREMENT = BLE_ATT_UUID_16(0x2A9C), BLE_ATT_CHAR_WEIGHT_MEASUREMENT = BLE_ATT_UUID_16(0x2A9D), BLE_ATT_CHAR_WEIGHT_SCALE_FEATURE = BLE_ATT_UUID_16(0x2A9E), BLE_ATT_CHAR_USER_CONTROL_POINT = BLE_ATT_UUID_16(0x2A9F), BLE_ATT_CHAR_MAGN_FLUX_2D = BLE_ATT_UUID_16(0x2AA0), BLE_ATT_CHAR_MAGN_FLUX_3D = BLE_ATT_UUID_16(0x2AA1), BLE_ATT_CHAR_LANGUAGE = BLE_ATT_UUID_16(0x2AA2), BLE_ATT_CHAR_BAR_PRES_TREND = BLE_ATT_UUID_16(0x2AA3), BLE_ATT_CHAR_CTL_ADDR_RESOL_SUPP = BLE_ATT_UUID_16(0x2AA6), BLE_ATT_CHAR_OTS_FEATURES = BLE_ATT_UUID_16(0x2ABD), BLE_ATT_CHAR_OTS_OBJECT_NAME = BLE_ATT_UUID_16(0x2ABE), BLE_ATT_CHAR_OTS_OBJECT_TYPE = BLE_ATT_UUID_16(0x2ABF), BLE_ATT_CHAR_OTS_OBJECT_SIZE = BLE_ATT_UUID_16(0x2AC0), BLE_ATT_CHAR_OTS_OBJECT_FIRST_CREATED = BLE_ATT_UUID_16(0x2AC1), BLE_ATT_CHAR_OTS_OBJECT_LAST_MODIFIED = BLE_ATT_UUID_16(0x2AC2), BLE_ATT_CHAR_OTS_OBJECT_ID = BLE_ATT_UUID_16(0x2AC3), BLE_ATT_CHAR_OTS_OBJECT_PROPERTIES = BLE_ATT_UUID_16(0x2AC4), BLE_ATT_CHAR_OTS_OACP = BLE_ATT_UUID_16(0x2AC5), BLE_ATT_CHAR_OTS_OLCP = BLE_ATT_UUID_16(0x2AC6), BLE_ATT_CHAR_OTS_LF = BLE_ATT_UUID_16(0x2AC7), BLE_ATT_CHAR_OTS_OBJECT_CHANGED = BLE_ATT_UUID_16(0x2AC8), BLE_ATT_CHAR_RSLV_PRIV_ADDR_ONLY = BLE_ATT_UUID_16(0x2AC9), BLE_ATT_CHAR_UNSPECIFIED = BLE_ATT_UUID_16(0X2ACA), BLE_ATT_CHAR_DIRE_LISTING = BLE_ATT_UUID_16(0X2ACB), BLE_ATT_CHAR_FIT_MACH_FEAT = BLE_ATT_UUID_16(0X2ACC), BLE_ATT_CHAR_TREADMILL_DATA = BLE_ATT_UUID_16(0X2ACD), BLE_ATT_CHAR_CROSS_TRAINER_DATA = BLE_ATT_UUID_16(0X2ACE), BLE_ATT_CHAR_STEP_CLIMBER_DATA = BLE_ATT_UUID_16(0X2ACF), BLE_ATT_CHAR_STSIR_CLIMBER_DATA = BLE_ATT_UUID_16(0X2AD0), BLE_ATT_CHAR_ROWER_DATA = BLE_ATT_UUID_16(0X2AD1), BLE_ATT_CHAR_INDOOR_BIKE_DATA = BLE_ATT_UUID_16(0X2AD2), BLE_ATT_CHAR_TRAIN_STATUS = BLE_ATT_UUID_16(0X2AD3), BLE_ATT_CHAR_SUP_SPEED_RANGE = BLE_ATT_UUID_16(0X2AD4), BLE_ATT_CHAR_SUP_INCL_RANGE = BLE_ATT_UUID_16(0X2AD5), BLE_ATT_CHAR_SUP_RESIST_LEVEL_RANGE = BLE_ATT_UUID_16(0X2AD6), BLE_ATT_CHAR_SUP_HEART_RATE_RANGE = BLE_ATT_UUID_16(0X2AD7), BLE_ATT_CHAR_SUP_POWER_RANGE = BLE_ATT_UUID_16(0X2AD8), BLE_ATT_CHAR_FIT_MACH_CNTL_PT = BLE_ATT_UUID_16(0X2AD9), BLE_ATT_CHAR_FIT_MACH_STATUS = BLE_ATT_UUID_16(0X2ADA), BLE_ATT_CHAR_MESH_PROV_DATA_IN = BLE_ATT_UUID_16(0X2ADB), BLE_ATT_CHAR_MESH_PROV_DATA_OUT = BLE_ATT_UUID_16(0X2ADC), BLE_ATT_CHAR_MESH_PROX_DATA_IN = BLE_ATT_UUID_16(0X2ADD), BLE_ATT_CHAR_MESH_PROX_DATA_OUT = BLE_ATT_UUID_16(0X2ADE), BLE_ATT_CHAR_AVG_CURRENT = BLE_ATT_UUID_16(0X2AE0), BLE_ATT_CHAR_AVG_VOLTAGE = BLE_ATT_UUID_16(0X2AE1), BLE_ATT_CHAR_BOOLEAN = BLE_ATT_UUID_16(0X2AE2), BLE_ATT_CHAR_CHROM_DIST_FROM_PLANCKIAN = BLE_ATT_UUID_16(0X2AE3), BLE_ATT_CHAR_CHROM_COORD = BLE_ATT_UUID_16(0X2AE4), BLE_ATT_CHAR_CHORM_IN_CCT_AND_DUV_VAL = BLE_ATT_UUID_16(0X2AE5), BLE_ATT_CHAR_CHROM_TOLERANCE = BLE_ATT_UUID_16(0X2AE6), BLE_ATT_CHAR_CIE_COLOR_REND_IDX = BLE_ATT_UUID_16(0X2AE7), BLE_ATT_CHAR_COEFFICIENT = BLE_ATT_UUID_16(0X2AE8), BLE_ATT_CHAR_CORRELA_COLOR_TEMP = BLE_ATT_UUID_16(0X2AE9), BLE_ATT_CHAR_COUNT_SIXTEEN = BLE_ATT_UUID_16(0X2AEA), BLE_ATT_CHAR_COUNT_TWENTY_FOUR = BLE_ATT_UUID_16(0X2AEB), BLE_ATT_CHAR_COUNTRY_CODE = BLE_ATT_UUID_16(0X2AEC), BLE_ATT_CHAR_DATE_UTC = BLE_ATT_UUID_16(0X2AED), BLE_ATT_CHAR_ELEC_CURRENT = BLE_ATT_UUID_16(0X2AEE), BLE_ATT_CHAR_ELEC_CURRENT_RANGE = BLE_ATT_UUID_16(0X2AEF), BLE_ATT_CHAR_ELEC_CURRENT_SPEC = BLE_ATT_UUID_16(0X2AF0), BLE_ATT_CHAR_ELEC_CURRENT_STATIS = BLE_ATT_UUID_16(0X2AF1), BLE_ATT_CHAR_ENERGY = BLE_ATT_UUID_16(0X2AF2), BLE_ATT_CHAR_ENERGY_IN_PERIOD_OF_DAY = BLE_ATT_UUID_16(0X2AF3), BLE_ATT_CHAR_EVENT_STATIC = BLE_ATT_UUID_16(0X2AF4), BLE_ATT_CHAR_FIXED_STR_SIXTEEN = BLE_ATT_UUID_16(0X2AF5), BLE_ATT_CHAR_FIXED_STR_TWENTY_FOUR = BLE_ATT_UUID_16(0X2AF6), BLE_ATT_CHAR_FIXED_STR_THIRTY_SIX = BLE_ATT_UUID_16(0X2AF7), BLE_ATT_CHAR_FIXED_STR_EIGHT = BLE_ATT_UUID_16(0X2AF8), BLE_ATT_CHAR_GENERIC_LEVEL = BLE_ATT_UUID_16(0X2AF9), BLE_ATT_CHAR_GLOB_TRADE_ITEM_NUM = BLE_ATT_UUID_16(0X2AFA), BLE_ATT_CHAR_ILLUMINANCE = BLE_ATT_UUID_16(0X2AFB), BLE_ATT_CHAR_LUMI_EFFICACY = BLE_ATT_UUID_16(0X2AFC), BLE_ATT_CHAR_LUMI_ENERGY = BLE_ATT_UUID_16(0X2AFD), BLE_ATT_CHAR_LUMI_EXPOSURE = BLE_ATT_UUID_16(0X2AFE), BLE_ATT_CHAR_LUMI_FLUX = BLE_ATT_UUID_16(0X2AFE), BLE_ATT_CHAR_LUMI_FLUX_RANGE = BLE_ATT_UUID_16(0X2B00), BLE_ATT_CHAR_LUMI_INTENS = BLE_ATT_UUID_16(0X2B01), BLE_ATT_CHAR_MASS_FLOW = BLE_ATT_UUID_16(0X2B02), BLE_ATT_CHAR_PERCEIVED_LIGHT = BLE_ATT_UUID_16(0X2B03), BLE_ATT_CHAR_PERC_EIGHT = BLE_ATT_UUID_16(0X2B04), BLE_ATT_CHAR_POWER = BLE_ATT_UUID_16(0X2B05), BLE_ATT_CHAR_POWER_SPEC = BLE_ATT_UUID_16(0X2B06), BLE_ATT_CHAR_RELAT_RUNTIME_IN_CUR_RANGE = BLE_ATT_UUID_16(0X2B07), BLE_ATT_CHAR_RELAT_RUNTIME_IN_GEN_LEVEL_RANGE = BLE_ATT_UUID_16(0X2B08), BLE_ATT_CHAR_RELAT_RUNTIME_IN_VOLT_RANGE = BLE_ATT_UUID_16(0X2B09), BLE_ATT_CHAR_RELAT_RUNTIME_IN_ILLUM_RANGE = BLE_ATT_UUID_16(0X2B0A), BLE_ATT_CHAR_RELAT_RUNTIME_IN_PERIOD_OF_DAY = BLE_ATT_UUID_16(0X2B0B), BLE_ATT_CHAR_RELAT_RUNTIME_IN_TEMP_RANGE = BLE_ATT_UUID_16(0X2B0C), BLE_ATT_CHAR_TEMP_EIGHT = BLE_ATT_UUID_16(0X2B0D), BLE_ATT_CHAR_TEMP_EIGHT_IN_PERIOD_OF_DAY = BLE_ATT_UUID_16(0X2B0E), BLE_ATT_CHAR_TEMP_EIGHT_STATIS = BLE_ATT_UUID_16(0X2B0F), BLE_ATT_CHAR_TEMP_RANGE = BLE_ATT_UUID_16(0X2B10), BLE_ATT_CHAR_TEMP_STATIS = BLE_ATT_UUID_16(0X2B11), BLE_ATT_CHAR_TIME_DECI_EIGHT = BLE_ATT_UUID_16(0X2B12), BLE_ATT_CHAR_TIME_EXPON_EIGHT = BLE_ATT_UUID_16(0X2B13), BLE_ATT_CHAR_TIME_HOUR_TWENTY_FOUR = BLE_ATT_UUID_16(0X2B14), BLE_ATT_CHAR_TIME_MS_TWENTY_FOUR = BLE_ATT_UUID_16(0X2B15), BLE_ATT_CHAR_TIME_SEC_SIXTEEN = BLE_ATT_UUID_16(0X2B16), BLE_ATT_CHAR_TIME_SEC_EIGHT = BLE_ATT_UUID_16(0X2B17), BLE_ATT_CHAR_VOLTAGE = BLE_ATT_UUID_16(0X2B18), BLE_ATT_CHAR_VOLTAGE_SPEC = BLE_ATT_UUID_16(0X2B19), BLE_ATT_CHAR_VOLTAGE_STATIS = BLE_ATT_UUID_16(0X2B1A), BLE_ATT_CHAR_VOLUME_FLOW = BLE_ATT_UUID_16(0X2B1B), BLE_ATT_CHAR_CHROM_COORDINATE = BLE_ATT_UUID_16(0X2B1C), BLE_ATT_CHAR_RC_FEAT = BLE_ATT_UUID_16(0x2B1D), BLE_ATT_CHAR_RC_SETTINGS = BLE_ATT_UUID_16(0x2B1E), BLE_ATT_CHAR_RECONNEC_CONFIG_CNTL_PT = BLE_ATT_UUID_16(0x2B1F), BLE_ATT_CHAR_IDD_STATUS_CHANGED = BLE_ATT_UUID_16(0x2B20), BLE_ATT_CHAR_IDD_STATUS = BLE_ATT_UUID_16(0x2B21), BLE_ATT_CHAR_IDD_ANNU_STATUS = BLE_ATT_UUID_16(0x2B22), BLE_ATT_CHAR_IDD_FEAT = BLE_ATT_UUID_16(0x2B23), BLE_ATT_CHAR_IDD_STATUS_READER_CNTL_PT = BLE_ATT_UUID_16(0x2B24), BLE_ATT_CHAR_IDD_COMMAND_CNTL_PT = BLE_ATT_UUID_16(0x2B25), BLE_ATT_CHAR_IDD_COMMAND_DATA = BLE_ATT_UUID_16(0x2B26), BLE_ATT_CHAR_IDD_RECORD_ACCESS_CNTL_PT = BLE_ATT_UUID_16(0x2B27), BLE_ATT_CHAR_IDD_HISTORY_DATA = BLE_ATT_UUID_16(0x2B28), BLE_ATT_CHAR_CLI_SUP_FEAT = BLE_ATT_UUID_16(0x2B29), BLE_ATT_CHAR_DB_HASH = BLE_ATT_UUID_16(0x2B2A), BLE_ATT_CHAR_BSS_CNTL_PT = BLE_ATT_UUID_16(0x2B2B), BLE_ATT_CHAR_BSS_RESPONSE = BLE_ATT_UUID_16(0x2B2C), BLE_ATT_CHAR_EMERGENCY_ID = BLE_ATT_UUID_16(0x2B2D), BLE_ATT_CHAR_EMERGENCY_TEXT = BLE_ATT_UUID_16(0x2B2E), BLE_ATT_CHAR_REGISTERED_USER = BLE_ATT_UUID_16(0x2B37), BLE_ATT_CHAR_SRV_SUP_FEAT = BLE_ATT_UUID_16(0x2B3A) }
| Attribute Specification Definitions: Common 16-bit (Universal Unique Identifier). More...
enum | att_format_t { BLE_ATT_FORMAT_BOOL = 0x01, BLE_ATT_FORMAT_2BIT, BLE_ATT_FORMAT_NIBBLE, BLE_ATT_FORMAT_UINT8, BLE_ATT_FORMAT_UINT12, BLE_ATT_FORMAT_UINT16, BLE_ATT_FORMAT_UINT24, BLE_ATT_FORMAT_UINT32, BLE_ATT_FORMAT_UINT48, BLE_ATT_FORMAT_UINT64, BLE_ATT_FORMAT_UINT128, BLE_ATT_FORMAT_SINT8, BLE_ATT_FORMAT_SINT12, BLE_ATT_FORMAT_SINT16, BLE_ATT_FORMAT_SINT24, BLE_ATT_FORMAT_SINT32, BLE_ATT_FORMAT_SINT48, BLE_ATT_FORMAT_SINT64, BLE_ATT_FORMAT_SINT128, BLE_ATT_FORMAT_FLOAT32, BLE_ATT_FORMAT_FLOAT64, BLE_ATT_FORMAT_SFLOAT, BLE_ATT_FORMAT_FLOAT, BLE_ATT_FORMAT_DUINT16, BLE_ATT_FORMAT_UTF8S, BLE_ATT_FORMAT_UTF16S, BLE_ATT_FORMAT_STRUCT, BLE_ATT_FORMAT_LAST }
| Format for Characteristic Presentation. More...

## Detailed Description

Attribute Protocol.

Attention

  ##### Copyright (c) 2019 GOODIX

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 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. Neither the name of GOODIX nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

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 COPYRIGHT HOLDERS AND 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.