using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.PMR.Synchronization;
using Tango.PPC.Common.Publish;
using Tango.PPC.Common.UpdatePackages;
using Tango.PPC.Common.Web;
namespace Tango.PPC.Common.MachineUpdate
{
public interface IMachineUpdateManager
{
///
/// Occurs when an application update is available.
///
event EventHandler UpdateAvailable;
///
/// Gets or sets a value indicating whether to automatically check for new application updates.
///
bool EnableAutoCheckForUpdates { get; set; }
///
/// Gets the current machine update progress status.
///
MachineUpdateProgress Status { get; }
///
/// Occurs when there is a text log message available.
///
event EventHandler ProgressLog;
///
/// Occurs when the update has made some progress.
///
event EventHandler Progress;
///
/// Performs a machine update.
///
/// if set to true updates the embedded device firmware.
/// if set to true updates the embedded device FPGA version and other parameters.
///
Task Update(bool setupFirmware, bool setupFPGA);
///
/// Performs a machine update using the specified software update package path.
///
/// Name of the file.
///
Task UpdateFromTUP(String fileName, bool setupFirmware, bool setupFPGA);
///
/// Performs a firmware upgrade from the specified TFP file.
///
/// Name of the file.
///
Task UpdateFromTFP(String fileName);
///
/// Checks if any update are available.
///
///
Task CheckForUpdate();
///
/// Checks whether it is necessary to updates all the "overwrite-able" database tables.
///
///
Task UpdateDBCheck();
///
/// Updates all the "overwrite-able" database tables.
///
///
Task UpdateDB(DbCompareResult dbCompareResult);
///
/// Gets the update package file information.
///
/// The file path.
///
Task GetUpdatePackageFileInfo(String filePath);
///
/// Checks whether any post update packages needs to be installed.
///
///
Task PostUpdatePackagesRequired();
///
/// Runs all post update packages.
///
///
Task RunPostUpdatePackages();
///
/// Restores the last database backup.
///
///
Task RestoreLastDatabaseBackup();
}
}