OCRandomUuidResult OCGenerateUuidString(char uuidString[UUID_STRING_SIZE]) { if (!uuidString) { return RAND_UUID_INVALID_PARAM; } #if defined(__ANDROID__) int32_t fd = open("/proc/sys/kernel/random/uuid", O_RDONLY); if (fd > 0) { ssize_t readResult = read(fd, uuidString, UUID_STRING_SIZE - 1); close(fd); if (readResult < 0) { return RAND_UUID_READ_ERROR; } else if (readResult < UUID_STRING_SIZE - 1) { uuidString[0] = '\0'; return RAND_UUID_READ_ERROR; } uuidString[UUID_STRING_SIZE - 1] = '\0'; for (char* p = uuidString; *p; ++p) { *p = tolower(*p); } return RAND_UUID_OK; } else { close(fd); return RAND_UUID_READ_ERROR; } #elif defined(HAVE_UUID_UUID_H) uint8_t uuid[UUID_SIZE]; int8_t ret = OCGenerateUuid(uuid); if (ret != 0) { return ret; } uuid_unparse_lower(uuid, uuidString); return RAND_UUID_OK; #else uint8_t uuid[UUID_SIZE]; OCGenerateUuid(uuid); return OCConvertUuidToString(uuid, uuidString); #endif }
std::string SceneUtils::OICGenerateUUIDStr() { uint8_t uuid[UUID_SIZE] = { 0, }; char uuidStr[UUID_STRING_SIZE] = { 0, }; if (RAND_UUID_OK == OCGenerateUuid(uuid)) { if (RAND_UUID_OK == OCConvertUuidToString(uuid, uuidStr)) { return std::string(uuidStr); } } throw RCSException("Failed to generate UUID"); }
static GVariant* _icd_payload_device_to_gvariant(OCDevicePayload *repr) { GVariant *value; OCRandomUuidResult random_res; char device_id[UUID_STRING_SIZE] = {0}; random_res = OCConvertUuidToString(repr->sid, device_id); if (RAND_UUID_OK != random_res) { ERR("OCConvertUuidToString() Fail(%d)", random_res); return NULL; } value = g_variant_new("(ssss)", repr->deviceName, repr->specVersion, device_id, repr->dataModelVersion); return value; }