SC500 USB Controller Communications
27
3M Touch Systems Proprietary Information
Response
If the command cannot be processed, the device stalls endpoint 0. The command
cannot be processed if the memory area is not valid. It cannot be processed if the
request is attempting to access data that is outside the specified memory area. This
may happen if the index is too large or too much data has been requested.
The host can send a status request, as long as the endpoint is not stalled, to determine
if this request was executed properly.
Get Feature – Get Controller Number
This command is used to get a controller number for application use. The controller
does not use this value. This process is useful for identifying individual controllers in
a multiple controller system.
Due to HID functionality, retrieving data from the controller involves two steps.
1. Requesting the controller number parameter
2. Retrieving the controller number value
Table 26. Get Controller Number Parameter Request
Offset Field
Size Value
Description
0
bmRequestType 1
0x21
Device to host
1 bRequest 1
0x09
Set
Report
2
wValue
2
0x0303
03 = Feature
03 = Feature Report ID
4 wIndex
2
0 Always
0
6 wLength 2
0 Always
8
Table 27. Data Stage
Offset Field
Size
Value
Description
0
bReport ID
1
0x03
Feature Report ID
1
bmReport Subtype
1
0x02
Indicates a set param index
2
bArea
1
0
Memory Area (always 0=Ctrl EEPROM )
3 Not
used
1 0 Not
used
4 bSubArea
1 0x05
Block
number
5
bIndex
1
0x00
Index into block.
6
bDataLength
1
0x04
Number of valid data bytes for xfer (always padded to
64)
7 Not
used
1 0 Not
used
Table 28. Get Controller Number Request
Offset
Field
Size
Value
Description
0
bmRequestType
1
0xA1
Device to host
1 bRequest 1
0x01
Set
Report
2
wValue
2
0x0305
03 = Feature
05 = Feature Report ID
4 wIndex
2
0 Always
0
6
wLength
2
0x48
Always 72 (allows for 64 data bytes + 8 byte header)