13ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi/*
23ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *
33ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *  BlueZ - Bluetooth protocol stack for Linux
43ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *
53ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *  Copyright (C) 2011  Nokia Corporation
63ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *  Copyright (C) 2011  Marcel Holtmann <marcel@holtmann.org>
73ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *
83ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *
93ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *  This program is free software; you can redistribute it and/or modify
103ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *  it under the terms of the GNU General Public License as published by
113ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *  the Free Software Foundation; either version 2 of the License, or
123ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *  (at your option) any later version.
133ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *
143ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *  This program is distributed in the hope that it will be useful,
153ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *  but WITHOUT ANY WARRANTY; without even the implied warranty of
163ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
173ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *  GNU General Public License for more details.
183ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *
193ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *  You should have received a copy of the GNU General Public License
203ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *  along with this program; if not, write to the Free Software
213ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
223ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi *
233ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi */
243ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi
253ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi#ifndef __BLUETOOTH_UUID_H
263ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi#define __BLUETOOTH_UUID_H
273ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi
283ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi#ifdef __cplusplus
293ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasiextern "C" {
303ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi#endif
313ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi
323ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi#include <stdint.h>
33bb096e674c6a143db73fb636aa611a392cdb92f8Elvis Pfützenreuter#include <bluetooth/bluetooth.h>
343ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi
353ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasitypedef struct {
363ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi	enum {
37bb096e674c6a143db73fb636aa611a392cdb92f8Elvis Pfützenreuter		BT_UUID_UNSPEC = 0,
383ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi		BT_UUID16 = 16,
393ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi		BT_UUID32 = 32,
403ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi		BT_UUID128 = 128,
413ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi	} type;
423ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi	union {
433ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi		uint16_t  u16;
443ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi		uint32_t  u32;
453ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi		uint128_t u128;
463ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi	} value;
473ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi} bt_uuid_t;
483ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi
493ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasiint bt_uuid16_create(bt_uuid_t *btuuid, uint16_t value);
503ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasiint bt_uuid32_create(bt_uuid_t *btuuid, uint32_t value);
513ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasiint bt_uuid128_create(bt_uuid_t *btuuid, uint128_t value);
523ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi
533ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasiint bt_uuid_cmp(const bt_uuid_t *uuid1, const bt_uuid_t *uuid2);
543ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasivoid bt_uuid_to_uuid128(const bt_uuid_t *src, bt_uuid_t *dst);
553ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi
56bb096e674c6a143db73fb636aa611a392cdb92f8Elvis Pfützenreuter#define MAX_LEN_UUID_STR 37
57bb096e674c6a143db73fb636aa611a392cdb92f8Elvis Pfützenreuter
58bb096e674c6a143db73fb636aa611a392cdb92f8Elvis Pfützenreuterint bt_uuid_to_string(const bt_uuid_t *uuid, char *str, size_t n);
59bb096e674c6a143db73fb636aa611a392cdb92f8Elvis Pfützenreuterint bt_string_to_uuid(bt_uuid_t *uuid, const char *string);
60bb096e674c6a143db73fb636aa611a392cdb92f8Elvis Pfützenreuter
613ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi#ifdef __cplusplus
623ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi}
633ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi#endif
643ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi
653ed993262f2e172971fabb13aea9cf5d28bd9ed3Claudio Takahasi#endif /* __BLUETOOTH_UUID_H */
66