1 /** 2 * @addtogroup MC_UUID mcUuid - Universally Unique Identifier. 3 * 4 * <!-- Copyright Giesecke & Devrient GmbH 2011-2012 --> 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 3. The name of the author may not be used to endorse or promote 15 * products derived from this software without specific prior 16 * written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 19 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 22 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 24 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 26 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 27 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * 30 * @ingroup MC_DATA_TYPES 31 * @{ 32 */ 33 34 #ifndef MC_UUID_H_ 35 #define MC_UUID_H_ 36 37 #define UUID_TYPE 38 39 /** Universally Unique Identifier (UUID) according to ISO/IEC 11578. */ 40 typedef struct { 41 uint8_t value[16]; /**< Value of the UUID. */ 42 } mcUuid_t, *mcUuid_ptr; 43 44 /** UUID value used as free marker in service provider containers. */ 45 #define MC_UUID_FREE_DEFINE \ 46 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ 47 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } 48 49 static const mcUuid_t MC_UUID_FREE = { 50 MC_UUID_FREE_DEFINE 51 }; 52 53 /** Reserved UUID. */ 54 #define MC_UUID_RESERVED_DEFINE \ 55 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 56 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } 57 58 static const mcUuid_t MC_UUID_RESERVED = { 59 MC_UUID_RESERVED_DEFINE 60 }; 61 62 /** UUID for system applications. */ 63 #define MC_UUID_SYSTEM_DEFINE \ 64 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ 65 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE } 66 67 static const mcUuid_t MC_UUID_SYSTEM = { 68 MC_UUID_SYSTEM_DEFINE 69 }; 70 71 #endif // MC_UUID_H_ 72 73 /** @} */ 74 75