15#include <peak/dll_interface/peak_dll_interface_util.hpp>
26using namespace std::chrono_literals;
70 const std::string& gufPath)
const;
92 const std::string& gufPath,
const std::shared_ptr<DeviceDescriptor>& device)
const;
119 void UpdateDevice(
const std::shared_ptr<DeviceDescriptor>& device,
120 const std::shared_ptr<FirmwareUpdateInformation>& updateInformation,
150 const std::string& gufPath)
const
152 CallAndCheckCInterfaceFunction([&] {
154 m_backendHandle, gufPath.c_str(), gufPath.size() + 1);
157 auto numFirmwareUpdateInformation = QueryNumericFromCInterfaceFunction<size_t>(
158 [&](
size_t* _numFirmwareUpdateInformation) {
160 m_backendHandle, _numFirmwareUpdateInformation);
163 std::vector<std::shared_ptr<FirmwareUpdateInformation>> firmwareUpdateInformation;
164 for (
size_t x = 0; x < numFirmwareUpdateInformation; ++x)
166 auto firmwareUpdateInformationHandle =
167 QueryNumericFromCInterfaceFunction<PEAK_FIRMWARE_UPDATE_INFORMATION_HANDLE>(
170 m_backendHandle, x, _firmwareUpdateInformationHandle);
173 firmwareUpdateInformation.emplace_back(
174 std::make_shared<ClassCreator<FirmwareUpdateInformation>>(firmwareUpdateInformationHandle));
177 return firmwareUpdateInformation;
181 const std::string& gufPath,
const std::shared_ptr<DeviceDescriptor>& device)
const
183 if (device ==
nullptr)
188 CallAndCheckCInterfaceFunction([&] {
190 m_backendHandle, gufPath.c_str(), gufPath.size() + 1, device->m_backendHandle);
193 auto numFirmwareUpdateInformation = QueryNumericFromCInterfaceFunction<size_t>(
194 [&](
size_t* _numFirmwareUpdateInformation) {
196 m_backendHandle, _numFirmwareUpdateInformation);
199 std::vector<std::shared_ptr<FirmwareUpdateInformation>> firmwareUpdateInformation;
200 for (
size_t x = 0; x < numFirmwareUpdateInformation; ++x)
202 auto firmwareUpdateInformationHandle =
203 QueryNumericFromCInterfaceFunction<PEAK_FIRMWARE_UPDATE_INFORMATION_HANDLE>(
206 m_backendHandle, x, _firmwareUpdateInformationHandle);
209 firmwareUpdateInformation.emplace_back(
210 std::make_shared<ClassCreator<FirmwareUpdateInformation>>(firmwareUpdateInformationHandle));
213 return firmwareUpdateInformation;
217 const std::shared_ptr<FirmwareUpdateInformation>& updateInformation,
219 Timeout deviceResetDiscoveryTimeout )
221 if (device ==
nullptr)
225 if (updateInformation ==
nullptr)
230 CallAndCheckCInterfaceFunction([&] {
232 device->m_backendHandle, updateInformation->m_backendHandle,
233 progressObserver ? progressObserver->m_backendHandle :
nullptr, deviceResetDiscoveryTimeout);
Allows to observe a firmware update process.
Definition peak_firmware_update_progress_observer.hpp:52
void UpdateDevice(const std::shared_ptr< DeviceDescriptor > &device, const std::shared_ptr< FirmwareUpdateInformation > &updateInformation, const FirmwareUpdateProgressObserver *progressObserver=nullptr, Timeout deviceResetDiscoveryTimeout=Timeout(60000ms))
Updates a given device by using a given firmware update information.
Definition peak_firmware_updater.hpp:216
~FirmwareUpdater()
Definition peak_firmware_updater.hpp:144
FirmwareUpdater(FirmwareUpdater &&other)=delete
FirmwareUpdater()
Definition peak_firmware_updater.hpp:137
PEAK_COMMON_NO_DISCARD std::vector< std::shared_ptr< FirmwareUpdateInformation > > CollectFirmwareUpdateInformation(const std::string &gufPath) const
Collects all firmware update information of a given *.guf file.
Definition peak_firmware_updater.hpp:149
FirmwareUpdater & operator=(FirmwareUpdater &&other)=delete
FirmwareUpdater & operator=(const FirmwareUpdater &other)=delete
FirmwareUpdater(const FirmwareUpdater &other)=delete
The exception thrown for passing an invalid argument to a function.
Definition peak_exception.hpp:118
Represents a timeout value in milliseconds.
Definition peak_timeout.hpp:28
The "core" namespace contains the direct GenAPI and GenTL wrapper.
Definition peak_buffer.hpp:32
The "peak" namespace directly contains convenience functionality like the DeviceManager as well as th...
Definition peak_buffer.hpp:29
PEAK_C_API PEAK_FirmwareUpdater_UpdateDeviceWithResetTimeout(PEAK_FIRMWARE_UPDATER_HANDLE firmwareUpdaterHandle, PEAK_DEVICE_DESCRIPTOR_HANDLE deviceDescriptorHandle, PEAK_FIRMWARE_UPDATE_INFORMATION_HANDLE firmwareUpdateInformationHandle, PEAK_FIRMWARE_UPDATE_PROGRESS_OBSERVER_HANDLE firmwareUpdateProgressObserverHandle, uint64_t deviceResetDiscoveryTimeout_ms)
Tells the given firmware updater to update the given device with the given update information.
PEAK_C_API PEAK_FirmwareUpdater_GetFirmwareUpdateInformation(PEAK_FIRMWARE_UPDATER_HANDLE firmwareUpdaterHandle, size_t index, PEAK_FIRMWARE_UPDATE_INFORMATION_HANDLE *firmwareUpdateInformationHandle)
Asks the given firmware updater for the update information with the given index.
PEAK_C_API PEAK_FirmwareUpdater_Construct(PEAK_FIRMWARE_UPDATER_HANDLE *firmwareUpdaterHandle)
Creates a firmware updater.
PEAK_C_API PEAK_FirmwareUpdater_GetNumFirmwareUpdateInformation(PEAK_FIRMWARE_UPDATER_HANDLE firmwareUpdaterHandle, size_t *numFirmwareUpdateInformation)
Asks the given firmware updater for its number of update information.
PEAK_C_API PEAK_FirmwareUpdater_Destruct(PEAK_FIRMWARE_UPDATER_HANDLE firmwareUpdaterHandle)
Destroys the given firmware updater.
struct PEAK_FIRMWARE_UPDATE_INFORMATION * PEAK_FIRMWARE_UPDATE_INFORMATION_HANDLE
Definition peak_backend.h:495
struct PEAK_FIRMWARE_UPDATER * PEAK_FIRMWARE_UPDATER_HANDLE
Definition peak_backend.h:491
PEAK_C_API PEAK_FirmwareUpdater_CollectFirmwareUpdateInformation(PEAK_FIRMWARE_UPDATER_HANDLE firmwareUpdaterHandle, const char *gufPath, size_t gufPathSize, PEAK_DEVICE_DESCRIPTOR_HANDLE deviceDescriptorHandle)
Tells the given firmware updater to collect all update information fitting to the given device.
PEAK_C_API PEAK_FirmwareUpdater_CollectAllFirmwareUpdateInformation(PEAK_FIRMWARE_UPDATER_HANDLE firmwareUpdaterHandle, const char *gufPath, size_t gufPathSize)
Tells the given firmware updater to collect all update information from the .guf file.
#define PEAK_COMMON_NO_DISCARD
Definition peak_common_defines.h:89
#define PEAK_C_ABI_PREFIX
Definition peak_dll_defines.h:13