Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
arm_uc_pal_filesystem_utils.c
00001 // ---------------------------------------------------------------------------- 00002 // Copyright 2016-2017 ARM Ltd. 00003 // 00004 // SPDX-License-Identifier: Apache-2.0 00005 // 00006 // Licensed under the Apache License, Version 2.0 (the "License"); 00007 // you may not use this file except in compliance with the License. 00008 // You may obtain a copy of the License at 00009 // 00010 // http://www.apache.org/licenses/LICENSE-2.0 00011 // 00012 // Unless required by applicable law or agreed to in writing, software 00013 // distributed under the License is distributed on an "AS IS" BASIS, 00014 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00015 // See the License for the specific language governing permissions and 00016 // limitations under the License. 00017 // ---------------------------------------------------------------------------- 00018 00019 #include "arm_uc_config.h" 00020 #if defined(ARM_UC_FEATURE_PAL_FILESYSTEM) && (ARM_UC_FEATURE_PAL_FILESYSTEM == 1) 00021 00022 #include "arm_uc_pal_filesystem_utils.h" 00023 #include "update-client-metadata-header/arm_uc_buffer_utilities.h" 00024 00025 #include "pal.h" 00026 00027 #include "mbed-trace/mbed_trace.h" 00028 #define TRACE_GROUP "UCPI" 00029 00030 #include <stdio.h> 00031 00032 /** 00033 * @brief Get the path of the specified item (header or file) for a firmware image 00034 * @details This call populates the passed details struct with information 00035 * about the firmware image in the slot passed. Only the fields 00036 * marked as supported in the capabilities bitmap will have valid 00037 * values. 00038 * 00039 * @param location Index of the firmware image in storage. 00040 * @param what 'FIRMWARE_IMAGE_ITEM_HEADER' to return the path to the image 00041 * header, or 'FIRMWARE_IMAGE_ITEM_DATA' to return the path to the 00042 * actual image data. 00043 * @param dest Where to write the path. 00044 * @param dest_size Size of the 'dest' array above. It should be at least 00045 * PAL_MAX_FILE_AND_FOLDER_LENGTH. 00046 * @return ERR_INVALID_PARAMETER if an error occured, ERR_NONE otherwise. 00047 */ 00048 arm_uc_error_t arm_uc_pal_filesystem_get_path(uint32_t location, 00049 firmwareImageItemType what, 00050 char *dest, 00051 uint32_t dest_size) 00052 { 00053 arm_uc_error_t result = { .code = ERR_INVALID_PARAMETER }; 00054 00055 if (dest && dest_size > 0) { 00056 /* copy the base directory of firmware into dest */ 00057 int length = snprintf(dest, dest_size, "%s", pal_imageGetFolder()); 00058 00059 if (length > 0) { 00060 /* add missing slash at end if needed */ 00061 if (((uint32_t)length < dest_size) && (dest[length - 1] != '/')) { 00062 dest[length] = '/'; 00063 length++; 00064 } 00065 00066 /* start snprintf after the mount point name and add length */ 00067 length += snprintf(&dest[length], 00068 dest_size - length, 00069 "%s_%" PRIu32 ".bin", 00070 what == FIRMWARE_IMAGE_ITEM_HEADER ? "header" : "image", 00071 location); 00072 00073 /* check that file path didn't overrun */ 00074 if ((uint32_t)length < dest_size) { 00075 result.code = ERR_NONE; 00076 } 00077 } 00078 } 00079 00080 return result; 00081 } 00082 00083 #endif /* ARM_UC_FEATURE_PAL_FILESYSTEM */
Generated on Mon Aug 29 2022 19:53:38 by
