3.2.1 Commands

The MDFU commands provide the host with a mechanism for sending signals to the client, sending Client Update File data to the client, and triggering firmware verification algorithms on the client.

A client only needs to support five mandatory commands in order to be successfully updated by a host. However, the protocol provides a mechanism for adding optional commands in the future to support new use cases.

3.2.1.1 Command List

Each command-response pair has a subsection in this specification which defines the details for that command including the command code, command data payload, client action upon receiving the command, and the client successful response data payload definition.

Command

Command Code

Client Implementation Required

Reserved - Never to Be Used1

0x00

N/A

GetClientInfo

0x01

Mandatory

StartTransfer

0x02

Mandatory

WriteChunk

0x03

Mandatory

GetImageState

0x04

Mandatory

EndTransfer

0x05

Mandatory

Reserved for Future Use

0x06-0xFF

Optional

Note 1: The command code 0x00 must never be used by any host/client. Using the command code 0x00 may interfere with other aspects of the protocol. Any host/client that implements a command code of 0x00 is not compliant with the MDFU Protocol specification.

3.2.1.2 Command Format

Commands are formed by concatenating several different fields together. Commands consist of a single byte Command Sequence Field, a single byte Command Code, and may also contain a data payload depending on the command being sent. Information on the contents/meaning of the data payload for each individual command can be found in the detailed definitions of the commands.

The maximum number of bytes that can be placed into the command data payload (NC) is client dependent and equal to MaxCommandDataLength. Clients report MaxCommandDataLength to the host using the Client Buffer Info Parameter during the Discovery phase of the update.