Home | History | Annotate | Download | only in include
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2014 Google, Inc.
      4  *
      5  *  Licensed under the Apache License, Version 2.0 (the "License");
      6  *  you may not use this file except in compliance with the License.
      7  *  You may obtain a copy of the License at:
      8  *
      9  *  http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *  Unless required by applicable law or agreed to in writing, software
     12  *  distributed under the License is distributed on an "AS IS" BASIS,
     13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *  See the License for the specific language governing permissions and
     15  *  limitations under the License.
     16  *
     17  ******************************************************************************/
     18 
     19 #pragma once
     20 
     21 #include <hardware/bluetooth.h>
     22 #include <stdbool.h>
     23 
     24 typedef struct uuid_string_t uuid_string_t;
     25 
     26 // Creates uuid string structure to hold a well formed UUID
     27 // string.  Must release resources with |uuid_string_free|.
     28 // Returns NULL if no memory.
     29 uuid_string_t *uuid_string_new(void);
     30 
     31 // Frees a uuid string structure created from |uuid_string_new|.
     32 // |uuid_string| may be NULL.
     33 void uuid_string_free(uuid_string_t *uuid_string);
     34 
     35 // Returns a string pointer to the well formed UUID string
     36 // entry.  |uuid_string| must not be NULL.
     37 const char *uuid_string_data(const uuid_string_t *uuid_string);
     38 
     39 // Creates uuid structure from a well formed UUID string
     40 // |uuid_string|.  The caller takes ownership of the uuid
     41 // structure and must release resources with |uuid_free|.
     42 // |uuid_string| must not be NULL.
     43 //
     44 // Returns NULL if |uuid_string| is malformed or no memory.
     45 //
     46 // A well formed UUID string is structured like this:
     47 //   "00112233-4455-6677-8899-aabbccddeeff"
     48 bt_uuid_t *uuid_new(const char *uuid_string);
     49 
     50 // Frees a uuid structure created from |uuid_new| and friends.
     51 // |uuid| may be NULL.
     52 void uuid_free(bt_uuid_t *uuid);
     53 
     54 // Returns true if the UUID is all zeros, false otherwise.
     55 // |uuid| may not be NULL.
     56 bool uuid_is_empty(const bt_uuid_t *uuid);
     57 
     58 // Returns true if the two UUIDs are equal, false otherwise.
     59 // |first| and |second| may not be NULL.
     60 bool uuid_is_equal(const bt_uuid_t *first, const bt_uuid_t *second);
     61 
     62 // Copies uuid |src| into |dest| and returns a pointer to |dest|.
     63 // |src| and |dest| must not be NULL.
     64 bt_uuid_t *uuid_copy(bt_uuid_t *dest, const bt_uuid_t *src);
     65 
     66 // Converts contents of |uuid| to a well formed UUID string
     67 // |uuid_string| using numbers and lower case letter.  |uuid|
     68 // and |uuid_string| must not be NULL.
     69 void uuid_to_string(const bt_uuid_t *uuid, uuid_string_t *uuid_string);
     70 
     71 // Converts contents of |uuid| to a short uuid if possible.  Returns
     72 // true if conversion is possible, false otherwise.
     73 // |uuid|, |uuid16| and |uuid32| must not be NULL.
     74 bool uuid_128_to_16(const bt_uuid_t *uuid, uint16_t *uuid16);
     75 bool uuid_128_to_32(const bt_uuid_t *uuid, uint32_t *uuid32);
     76