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 |
0x01 | Mandatory | |
0x02 | Mandatory | |
0x03 | Mandatory | |
0x04 | Mandatory | |
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.