lophtware

Logo

lophtware projects

GitHub Profile

Core - Command Acknowledgement

Report Type: Interrupt IN
Report Size: 7 Bytes

Report ID Acknowledged Report ID Status Arguments
00000001 1 byte n i cccccc 4 bytes

If an OUT Report does not have its own dedicated acknowledgement report(s) then this will be the default response to any of the commands that the Host sends to the device.

Report ID

HID Report ID. Always 0x01.

Acknowledged Report ID

The ID of the Pin HID Reports that is being ACK’d or NACK’d. Note that the order of responses to commands is not necessarily in the same order as they are received so you must only send one command of a given type to an interface at a time and wait for its acknowledgement.

Status and Arguments

The status of the command that was executed:

Bits Direction Meaning
n IN Negative Acknowledgement flag; 1 if the command is NACK’d (an error), or 0 if it is ACK’d (no error).
i IN Interface-specific (ie. non-generic) error code if 1, else a generic error code if 0.
cccccc IN A status code to give more meaning to the ACK or NACK; see below.

ACK Status Codes

As well as the generic codes defined in Report Acknowledgement, the following interface-specific values are defined:

Code Arguments Meaning
None    

NACK Status Codes

As well as the generic codes defined in Report Acknowledgement, the following interface-specific values are defined:

Code Arguments Meaning
0x01 iiiiiiii 00000000 00000000 00000000 Unknown interface number, the value of which is iiiiiiii.
0x02 bbbb pppp 00000000 00000000 00000000 Unknown pin number, the bank being bbbb and the index being iiii.
0x03 ffffffff 00000000 00000000 00000000 Unknown function number, the value of which is ffffffff.
0x10 00000000 00000000 00000000 00000000 Invalid Configuration. Something went wrong whilst writing to non-volatile storage, which probably means that the device is in Safe Mode. If this is the case then you will need to re-flash the firmware to properly recover from this, presuming of course that the error is not because the write endurance has been exceeded.