Simple interface for Mbed Cloud Client
Embed:
(wiki syntax)
Show/hide line numbers
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_pal_filesystem_utils.h" 00020 #include "update-client-common/arm_uc_utilities.h" 00021 00022 #include "pal.h" 00023 00024 #include "mbed-trace/mbed_trace.h" 00025 #define TRACE_GROUP "UCPI" 00026 00027 #include <stdio.h> 00028 00029 /** 00030 * @brief Get the path of the specified item (header or file) for a firmware image 00031 * @details This call populates the passed details struct with information 00032 * about the firmware image in the slot passed. Only the fields 00033 * marked as supported in the capabilities bitmap will have valid 00034 * values. 00035 * 00036 * @param location Index of the firmware image in storage. 00037 * @param what 'FIRMWARE_IMAGE_ITEM_HEADER' to return the path to the image 00038 * header, or 'FIRMWARE_IMAGE_ITEM_DATA' to return the path to the 00039 * actual image data. 00040 * @param dest Where to write the path. 00041 * @param dest_size Size of the 'dest' array above. It should be at least 00042 * PAL_MAX_FILE_AND_FOLDER_LENGTH. 00043 * @return ERR_INVALID_PARAMETER if an error occured, ERR_NONE otherwise. 00044 */ 00045 arm_uc_error_t arm_uc_pal_filesystem_get_path(uint32_t location, 00046 firmwareImageItemType what, 00047 char *dest, 00048 uint32_t dest_size) 00049 { 00050 arm_uc_error_t result = { .code = ERR_INVALID_PARAMETER }; 00051 00052 if (dest && dest_size > 0) 00053 { 00054 /* copy the base directory of firmware into dest */ 00055 int length = snprintf(dest, dest_size, "%s", pal_imageGetFolder()); 00056 00057 /* add missing slash at end if needed */ 00058 if ((length < dest_size) && (dest[length - 1] != '/')) 00059 { 00060 dest[length] = '/'; 00061 length++; 00062 } 00063 00064 /* start snprintf after the mount point name and add length */ 00065 length += snprintf(&dest[length], 00066 dest_size - length, 00067 "%s_%" PRIu32 ".bin", 00068 what == FIRMWARE_IMAGE_ITEM_HEADER ? "header" : "image", 00069 location); 00070 00071 /* check that file path didn't overrun */ 00072 if (length < dest_size) 00073 { 00074 result.code = ERR_NONE; 00075 } 00076 } 00077 00078 return result; 00079 }
Generated on Tue Jul 12 2022 19:01:33 by 1.7.2