/* * Copyright (c) 2020 Linumiz * * SPDX-License-Identifier: Apache-2.0 */ #include "hawkbit_device.h" #include #include static bool hawkbit_get_device_identity_default(char *id, int id_max_len); static hawkbit_get_device_identity_cb_handler_t hawkbit_get_device_identity_cb_handler = hawkbit_get_device_identity_default; bool hawkbit_get_device_identity(char *id, int id_max_len) { return hawkbit_get_device_identity_cb_handler(id, id_max_len); } static bool hawkbit_get_device_identity_default(char *id, int id_max_len) { #ifdef CONFIG_HAWKBIT_HWINFO_DEVICE_ID uint8_t hwinfo_id[DEVICE_ID_BIN_MAX_SIZE]; ssize_t id_length, length; memset(id, 0, id_max_len); length = snprintk(id, id_max_len, "%s-", CONFIG_BOARD); if (length <= 0) { return false; } id_length = hwinfo_get_device_id(hwinfo_id, DEVICE_ID_BIN_MAX_SIZE); if (id_length <= 0) { return false; } length = bin2hex(hwinfo_id, (size_t)id_length, &id[length], id_max_len - length); return length > 0; #else /* CONFIG_HAWKBIT_HWINFO_DEVICE_ID */ ARG_UNUSED(id); ARG_UNUSED(id_max_len); return false; #endif /* CONFIG_HAWKBIT_HWINFO_DEVICE_ID */ } #ifdef CONFIG_HAWKBIT_CUSTOM_DEVICE_ID int hawkbit_set_device_identity_cb(hawkbit_get_device_identity_cb_handler_t cb) { if (cb == NULL) { return -EINVAL; } hawkbit_get_device_identity_cb_handler = cb; return 0; } #endif /* CONFIG_HAWKBIT_CUSTOM_DEVICE_ID */