With this Method the Client requests the installation of a Software Package. The package can be either the previously transferred Pending Version or the alternative Fallback Version. To identify the version and to prevent conflicts with a second Client that transfers a different version, the InstallSoftwarePackage Method needs the ManufacturerUri, the SoftwareRevision and PatchIdentifiers Properties of the SoftwareVersionType.

Optionally an additional hash value may be passed to the Method. This hash could be calculated by the Client or taken from a trusted source. Before installation the Server may compare the hash against the calculated hash of the Software Package. This mechanism can be used if there is a risk that the Software Package is altered during the transfer to the device and if the Server has no other mechanism to ensure that the Software Package is from a trustworthy source.

If the installation succeeds but the software cannot run properly this should not be treated as an error of the installation. Instead this should be indicated using the IDeviceHealthType Interface of the device / component.

This Method shall not return before the state has changed to the Installing state.

Signature

InstallSoftwarePackage(

[in] String ManufacturerUri,

[in] String SoftwareRevision,

[in] String[]PatchIdentifiers,

[in] ByteString Hash);

Argument

Description

ManufacturerUri

ManufacturerUri Property of either the Pending or Fallback SoftwareVersionType that should be installed.

SoftwareRevision

SoftwareRevision Property of either the Pending or Fallback SoftwareVersionType that should be installed.

PatchIdentifiers

PatchIdentifiers Property of either the Pending or Fallback SoftwareVersionType that should be installed. (or empty array if not supported on the SoftwareVersionType instance).

Hash

Hash of the Software Package that should be installed (or empty if not used).

Method Result Codes (defined in Call Service)

Result Code

Description

Bad_InvalidState

If the InstallationStateMachineType is not in Idle state or if the PrepareForUpdate Object is available and the PrepareForUpdate state machine is not in the state PreparedForUpdate.

Bad_NotFound

If the specified Software Package does not exist.

Bad_InvalidArgument

If the Hash does not match the calculated hash of the Software Package.