Home | History | Annotate | Download | only in inc
      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