blob: 3aaf6a357d13460136dd5fbfa5b75e94fe86d85a [file] [log] [blame]
/*
* Copyright (c) 2022, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
#ifndef FWU_COPY_INSTALLER_H
#define FWU_COPY_INSTALLER_H
#include <stdint.h>
#include "media/volume/volume.h"
#include "service/fwu/installer/installer.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* \brief copy_installer structure definition
*
* A copy_installer is an installer that copies previously installed images
* from a source volume into a destination volume. A copy_installer does not
* consume externally provided installation data. A copy_installer may be
* used in situations where an update has resulted in no change to the
* firmware for a subsystem (location) but it is necessary to copy image
* data to the update bank. The copy_installer has no knowledge of the
* actual size of image data that needs to copied so the entire source
* volume is copied to the destination. This will potentially be wasteful
* in that unnecessary data may be copied.
*/
struct copy_installer {
struct installer base_installer;
struct volume *destination_volume;
struct volume *source_volume;
};
/**
* \brief Initialize a copy_installer
*
* \param[in] subject The subject copy_installer
* \param[in] location_uuid The associated location UUID
* \param[in] location_id Identifies where to install qualifying images
*/
void copy_installer_init(struct copy_installer *subject, const struct uuid_octets *location_uuid,
uint32_t location_id);
/**
* \brief De-initialize a copy_installer
*
* \param[in] subject The subject copy_installer
*/
void copy_installer_deinit(struct copy_installer *subject);
#ifdef __cplusplus
}
#endif
#endif /* FWU_COPY_INSTALLER_H */