IoTivity-Lite
oc_uuid.h File Reference

Generate and work with UUIDs as specified in RFC 4122. More...

#include "oc_export.h"
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>

Macros

#define OC_UUID_ID_SIZE   (16)
 Size of the integer array representation of a UUID. More...
 
#define OC_UUID_LEN   (37)
 The length of a UUID string. More...
 

Functions

OC_API void oc_gen_uuid (oc_uuid_t *uuid)
 Generate a random Universally Unique IDentifier (UUID) More...
 
OC_API void oc_str_to_uuid (const char *str, oc_uuid_t *uuid)
 Convert a UUID string representation to a 128-bit oc_uuid_t. More...
 
OC_API bool oc_uuid_is_equal (oc_uuid_t first, oc_uuid_t second)
 Compare two uuid values. More...
 
OC_API void oc_uuid_to_str (const oc_uuid_t *uuid, char *buffer, size_t buflen)
 Convert the 128 bit oc_uuid_t to a string representation. More...
 

Detailed Description

Generate and work with UUIDs as specified in RFC 4122.

This module implements the generation of version-4 UUIDs based on its specification in RFC 4122, along with routines to convert between their string and binary representations.

Macro Definition Documentation

◆ OC_UUID_ID_SIZE

#define OC_UUID_ID_SIZE   (16)

Size of the integer array representation of a UUID.

◆ OC_UUID_LEN

#define OC_UUID_LEN   (37)

The length of a UUID string.

This is the length of UUID string as specified by RFC 4122.

See also
oc_uuid_to_str

Function Documentation

◆ oc_gen_uuid()

OC_API void oc_gen_uuid ( oc_uuid_t *  uuid)

Generate a random Universally Unique IDentifier (UUID)

This will return a 128 bit version 4 UUID as specified by RFC 4122.

Version 4 UUID is created using random or pseudo-random numbers

Example

oc_uuid_t device_uuid = { { 0 } };
oc_gen_uuid(&device_uuid);
OC_API void oc_gen_uuid(oc_uuid_t *uuid)
Generate a random Universally Unique IDentifier (UUID)
Parameters
[out]uuidthe randomly generated UUID

◆ oc_str_to_uuid()

OC_API void oc_str_to_uuid ( const char *  str,
oc_uuid_t *  uuid 
)

Convert a UUID string representation to a 128-bit oc_uuid_t.

Note
oc_str_to_uuid has a special case that does not conform to RFC 4122 if the first character of the str is '*' then the first byte of the oc_uuid_t will be set to '*' (0x2A) and the other bytes will be set to zero.

Example

oc_uuid_t uuid;
oc_str_to_uuid("1628fbcc-13ce-4e37-b883-1fd8d2ad945d", &uuid);
OC_API void oc_str_to_uuid(const char *str, oc_uuid_t *uuid)
Convert a UUID string representation to a 128-bit oc_uuid_t.
Parameters
[in]strthe UUID string
[out]uuidthe oc_uuid_t to hold the UUID bits.

◆ oc_uuid_is_equal()

OC_API bool oc_uuid_is_equal ( oc_uuid_t  first,
oc_uuid_t  second 
)

Compare two uuid values.

Parameters
firstA uuid value (cannot be NULL)
secondA uuid value (cannot be NULL)
Returns
true If the two uuid values are equal
false Otherwise

◆ oc_uuid_to_str()

OC_API void oc_uuid_to_str ( const oc_uuid_t *  uuid,
char *  buffer,
size_t  buflen 
)

Convert the 128 bit oc_uuid_t to a string representation.

The string representation of the UUID will be as specified in RFC 4122.

Note
oc_uuid_to_str has a special case that does not conform to RFC 4122 if the first byte of oc_uuid_t is set to '*' (0x2A) this will return a string "*".

Example

oc_uuid_t device_uuid = { { 0 } };
oc_gen_uuid(&device_uuid);
char uuid_str[OC_UUID_LEN] = { 0 };
oc_uuid_to_str(&device_uuid, uuid_str, OC_UUID_LEN);
OC_API void oc_uuid_to_str(const oc_uuid_t *uuid, char *buffer, size_t buflen)
Convert the 128 bit oc_uuid_t to a string representation.
#define OC_UUID_LEN
The length of a UUID string.
Definition: oc_uuid.h:44
Parameters
[in]uuidA oc_uuid_t to convert to a string
[out]bufferA char array that will hold the string representation of the UUID
[in]buflenThe size of the input buffer. Recommend always using OC_UUID_LEN for buflen.