195489c19Sopenharmony_ci/* 295489c19Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd. 395489c19Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 495489c19Sopenharmony_ci * you may not use this file except in compliance with the License. 595489c19Sopenharmony_ci * You may obtain a copy of the License at 695489c19Sopenharmony_ci * 795489c19Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 895489c19Sopenharmony_ci * 995489c19Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1095489c19Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1195489c19Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1295489c19Sopenharmony_ci * See the License for the specific language governing permissions and 1395489c19Sopenharmony_ci * limitations under the License. 1495489c19Sopenharmony_ci */ 1595489c19Sopenharmony_ci 1695489c19Sopenharmony_ci/** 1795489c19Sopenharmony_ci * @addtogroup Bluetooth 1895489c19Sopenharmony_ci * @{ 1995489c19Sopenharmony_ci * 2095489c19Sopenharmony_ci * @brief Defines uuid for framework. 2195489c19Sopenharmony_ci * 2295489c19Sopenharmony_ci * @since 6 2395489c19Sopenharmony_ci */ 2495489c19Sopenharmony_ci 2595489c19Sopenharmony_ci/** 2695489c19Sopenharmony_ci * @file uuid.h 2795489c19Sopenharmony_ci * 2895489c19Sopenharmony_ci * @brief framework uuid interface. 2995489c19Sopenharmony_ci * 3095489c19Sopenharmony_ci * @since 6 3195489c19Sopenharmony_ci */ 3295489c19Sopenharmony_ci 3395489c19Sopenharmony_ci#ifndef DUMMY_UUID_H 3495489c19Sopenharmony_ci#define DUMMY_UUID_H 3595489c19Sopenharmony_ci 3695489c19Sopenharmony_ci#include "sys/time.h" 3795489c19Sopenharmony_ci#include <string> 3895489c19Sopenharmony_ci#include <array> 3995489c19Sopenharmony_ci#include <ctime> 4095489c19Sopenharmony_ci#include <regex> 4195489c19Sopenharmony_ci 4295489c19Sopenharmony_cinamespace OHOS { 4395489c19Sopenharmony_cinamespace Bluetooth { 4495489c19Sopenharmony_ci 4595489c19Sopenharmony_ci/** 4695489c19Sopenharmony_ci * @brief This class provides framework uuid. 4795489c19Sopenharmony_ci * 4895489c19Sopenharmony_ci * @since 6 4995489c19Sopenharmony_ci */ 5095489c19Sopenharmony_ciclass UUID { 5195489c19Sopenharmony_cipublic: 5295489c19Sopenharmony_ci //128 bits uuid length 5395489c19Sopenharmony_ci const static int UUID128_BYTES_LEN = 16; 5495489c19Sopenharmony_ci 5595489c19Sopenharmony_ci /** 5695489c19Sopenharmony_ci * @brief A constructor used to create an <b>UUID</b> instance. 5795489c19Sopenharmony_ci * 5895489c19Sopenharmony_ci * @since 6 5995489c19Sopenharmony_ci */ 6095489c19Sopenharmony_ci UUID(){}; 6195489c19Sopenharmony_ci 6295489c19Sopenharmony_ci /** 6395489c19Sopenharmony_ci * @brief A destructor used to delete the <b>UUID</b> instance. 6495489c19Sopenharmony_ci * 6595489c19Sopenharmony_ci * @since 6 6695489c19Sopenharmony_ci */ 6795489c19Sopenharmony_ci ~UUID(){}; 6895489c19Sopenharmony_ci 6995489c19Sopenharmony_ci /** 7095489c19Sopenharmony_ci * @brief A constructor used to create an <b>UUID</b> instance. Constructor a new UUID using most significant 64 7195489c19Sopenharmony_ci * bits and least significant 64 bits. 7295489c19Sopenharmony_ci * 7395489c19Sopenharmony_ci * @param[in] mostSigBits : The most significant 64 bits of UUID. 7495489c19Sopenharmony_ci * @param[in] leastSigBits : The least significant 64 bits of UUID. 7595489c19Sopenharmony_ci * @since 6 7695489c19Sopenharmony_ci */ 7795489c19Sopenharmony_ci UUID(const long mostSigBits, const long leastSigBits); 7895489c19Sopenharmony_ci 7995489c19Sopenharmony_ci /** 8095489c19Sopenharmony_ci * @brief A constructor used to create an <b>UUID</b> instance. Constructor a new UUID from string. 8195489c19Sopenharmony_ci * 8295489c19Sopenharmony_ci * @param[in] name : The value of string to create UUID. 8395489c19Sopenharmony_ci * for example : "00000000-0000-1000-8000-00805F9B34FB" 8495489c19Sopenharmony_ci * @return Returns a specified UUID. 8595489c19Sopenharmony_ci * @since 6 8695489c19Sopenharmony_ci */ 8795489c19Sopenharmony_ci static UUID FromString(const std::string &name); 8895489c19Sopenharmony_ci 8995489c19Sopenharmony_ci /** 9095489c19Sopenharmony_ci * @brief A constructor used to create an <b>UUID</b> instance. Constructor a new random UUID. 9195489c19Sopenharmony_ci * 9295489c19Sopenharmony_ci * @return Returns a random UUID. 9395489c19Sopenharmony_ci * @since 6 9495489c19Sopenharmony_ci */ 9595489c19Sopenharmony_ci static UUID RandomUUID(); 9695489c19Sopenharmony_ci 9795489c19Sopenharmony_ci /** 9895489c19Sopenharmony_ci * @brief Convert UUID to string. 9995489c19Sopenharmony_ci * 10095489c19Sopenharmony_ci * @return Returns a String object representing this UUID. 10195489c19Sopenharmony_ci * @since 6 10295489c19Sopenharmony_ci */ 10395489c19Sopenharmony_ci std::string ToString() const; 10495489c19Sopenharmony_ci 10595489c19Sopenharmony_ci /** 10695489c19Sopenharmony_ci * @brief Compares this UUID with the specified UUID. 10795489c19Sopenharmony_ci * 10895489c19Sopenharmony_ci * @param[in] val : UUID which this UUID is to be compared. 10995489c19Sopenharmony_ci * @return Returns <b> <0 </b> if this UUID is less than compared UUID; 11095489c19Sopenharmony_ci * returns <b> =0 </b> if this UUID is equal to compared UUID; 11195489c19Sopenharmony_ci * returns <b> >0 </b> if this UUID is greater than compared UUID. 11295489c19Sopenharmony_ci * @since 6 11395489c19Sopenharmony_ci */ 11495489c19Sopenharmony_ci int CompareTo(const UUID &val) const; 11595489c19Sopenharmony_ci 11695489c19Sopenharmony_ci /** 11795489c19Sopenharmony_ci * @brief Compares this object to the specified object. 11895489c19Sopenharmony_ci * 11995489c19Sopenharmony_ci * @param[in] val : UUID which this UUID is to be compared. 12095489c19Sopenharmony_ci * @return Returns <b>true</b> if this UUID is the same as compared UUID; 12195489c19Sopenharmony_ci * returns <b>false</b> if this UUID is not the same as compared UUID. 12295489c19Sopenharmony_ci * @since 6 12395489c19Sopenharmony_ci */ 12495489c19Sopenharmony_ci bool Equals(const UUID &val) const; 12595489c19Sopenharmony_ci 12695489c19Sopenharmony_ci /** 12795489c19Sopenharmony_ci * @brief Returns the least significant 64 bits of this UUID's 128 bit value. 12895489c19Sopenharmony_ci * 12995489c19Sopenharmony_ci * @return Retruns the least significant 64 bits of this UUID's 128 bit value. 13095489c19Sopenharmony_ci * @since 6 13195489c19Sopenharmony_ci */ 13295489c19Sopenharmony_ci uint64_t GetLeastSignificantBits() const; 13395489c19Sopenharmony_ci 13495489c19Sopenharmony_ci /** 13595489c19Sopenharmony_ci * @brief Returns the most significant 64 bits of this UUID's 128 bit value. 13695489c19Sopenharmony_ci * 13795489c19Sopenharmony_ci * @return Returns the most significant 64 bits of this UUID's 128 bit value. 13895489c19Sopenharmony_ci * @since 6 13995489c19Sopenharmony_ci */ 14095489c19Sopenharmony_ci uint64_t GetMostSignificantBits() const; 14195489c19Sopenharmony_ci 14295489c19Sopenharmony_ci /** 14395489c19Sopenharmony_ci * @brief Constructor a new UUID from uint8_t array. 14495489c19Sopenharmony_ci * 14595489c19Sopenharmony_ci * @param[in] name : The 128 bits value for a UUID. 14695489c19Sopenharmony_ci * @return Returns a specified UUID. 14795489c19Sopenharmony_ci * @since 6 14895489c19Sopenharmony_ci */ 14995489c19Sopenharmony_ci static UUID ConvertFrom128Bits(const std::array<uint8_t, UUID128_BYTES_LEN> &name); 15095489c19Sopenharmony_ci 15195489c19Sopenharmony_ci /** 15295489c19Sopenharmony_ci * @brief Returns uint8_t array from UUID. 15395489c19Sopenharmony_ci * 15495489c19Sopenharmony_ci * @return returns a specified array. 15595489c19Sopenharmony_ci * @since 6 15695489c19Sopenharmony_ci */ 15795489c19Sopenharmony_ci std::array<uint8_t, UUID128_BYTES_LEN> ConvertTo128Bits() const; 15895489c19Sopenharmony_ci 15995489c19Sopenharmony_ci /** 16095489c19Sopenharmony_ci * @brief Compare two UUID whether are same or not. 16195489c19Sopenharmony_ci * 16295489c19Sopenharmony_ci * @param rhs Compared UUID instance. 16395489c19Sopenharmony_ci * @return Returns <b>true</b> if this UUID is the same as compared UUID; 16495489c19Sopenharmony_ci * returns <b>false</b> if this UUID is not the same as compared UUID. 16595489c19Sopenharmony_ci */ 16695489c19Sopenharmony_ci bool operator==(const UUID &rhs) const; 16795489c19Sopenharmony_ci 16895489c19Sopenharmony_ci /** 16995489c19Sopenharmony_ci * @brief In order to use the object key in the map object, overload the operator <. 17095489c19Sopenharmony_ci * @param[in] uuid : UUID object. 17195489c19Sopenharmony_ci * @return @c bool : If the object uuid is the same, return true, otherwise return false. 17295489c19Sopenharmony_ci */ 17395489c19Sopenharmony_ci bool operator<(const UUID &uuid) const; 17495489c19Sopenharmony_ci 17595489c19Sopenharmony_ciprivate: 17695489c19Sopenharmony_ci std::array<uint8_t, UUID128_BYTES_LEN> uuid_ = {0x00}; 17795489c19Sopenharmony_ci}; 17895489c19Sopenharmony_ci 17995489c19Sopenharmony_ci/** 18095489c19Sopenharmony_ci * @brief This class provides framework ParcelUuid. 18195489c19Sopenharmony_ci * 18295489c19Sopenharmony_ci * @since 6 18395489c19Sopenharmony_ci */ 18495489c19Sopenharmony_ciusing ParcelUuid = UUID; 18595489c19Sopenharmony_ci 18695489c19Sopenharmony_cibool IsValidUuid(std::string uuid); 18795489c19Sopenharmony_ci 18895489c19Sopenharmony_ci} // namespace Bluetooth 18995489c19Sopenharmony_ci} // namespace OHOS 19095489c19Sopenharmony_ci 19195489c19Sopenharmony_ci#endif //DUMMY_UUID_H