107 |
107 |
struct usb_redir_interface_info_header *interface_info);
|
108 |
108 |
static void usbredir_ep_info(void *priv,
|
109 |
109 |
struct usb_redir_ep_info_header *ep_info);
|
110 |
|
static void usbredir_configuration_status(void *priv, uint32_t id,
|
|
110 |
static void usbredir_configuration_status(void *priv, uint64_t id,
|
111 |
111 |
struct usb_redir_configuration_status_header *configuration_status);
|
112 |
|
static void usbredir_alt_setting_status(void *priv, uint32_t id,
|
|
112 |
static void usbredir_alt_setting_status(void *priv, uint64_t id,
|
113 |
113 |
struct usb_redir_alt_setting_status_header *alt_setting_status);
|
114 |
|
static void usbredir_iso_stream_status(void *priv, uint32_t id,
|
|
114 |
static void usbredir_iso_stream_status(void *priv, uint64_t id,
|
115 |
115 |
struct usb_redir_iso_stream_status_header *iso_stream_status);
|
116 |
|
static void usbredir_interrupt_receiving_status(void *priv, uint32_t id,
|
|
116 |
static void usbredir_interrupt_receiving_status(void *priv, uint64_t id,
|
117 |
117 |
struct usb_redir_interrupt_receiving_status_header
|
118 |
118 |
*interrupt_receiving_status);
|
119 |
|
static void usbredir_bulk_streams_status(void *priv, uint32_t id,
|
|
119 |
static void usbredir_bulk_streams_status(void *priv, uint64_t id,
|
120 |
120 |
struct usb_redir_bulk_streams_status_header *bulk_streams_status);
|
121 |
|
static void usbredir_control_packet(void *priv, uint32_t id,
|
|
121 |
static void usbredir_control_packet(void *priv, uint64_t id,
|
122 |
122 |
struct usb_redir_control_packet_header *control_packet,
|
123 |
123 |
uint8_t *data, int data_len);
|
124 |
|
static void usbredir_bulk_packet(void *priv, uint32_t id,
|
|
124 |
static void usbredir_bulk_packet(void *priv, uint64_t id,
|
125 |
125 |
struct usb_redir_bulk_packet_header *bulk_packet,
|
126 |
126 |
uint8_t *data, int data_len);
|
127 |
|
static void usbredir_iso_packet(void *priv, uint32_t id,
|
|
127 |
static void usbredir_iso_packet(void *priv, uint64_t id,
|
128 |
128 |
struct usb_redir_iso_packet_header *iso_packet,
|
129 |
129 |
uint8_t *data, int data_len);
|
130 |
|
static void usbredir_interrupt_packet(void *priv, uint32_t id,
|
|
130 |
static void usbredir_interrupt_packet(void *priv, uint64_t id,
|
131 |
131 |
struct usb_redir_interrupt_packet_header *interrupt_header,
|
132 |
132 |
uint8_t *data, int data_len);
|
133 |
133 |
|
... | ... | |
805 |
805 |
|
806 |
806 |
usbredirparser_caps_set_cap(caps, usb_redir_cap_connect_device_version);
|
807 |
807 |
usbredirparser_caps_set_cap(caps, usb_redir_cap_filter);
|
|
808 |
usbredirparser_caps_set_cap(caps, usb_redir_cap_64bits_ids);
|
808 |
809 |
usbredirparser_init(dev->parser, version, caps, USB_REDIR_CAPS_SIZE, 0);
|
809 |
810 |
usbredirparser_do_write(dev->parser);
|
810 |
811 |
}
|
... | ... | |
1182 |
1183 |
}
|
1183 |
1184 |
}
|
1184 |
1185 |
|
1185 |
|
static void usbredir_configuration_status(void *priv, uint32_t id,
|
|
1186 |
static void usbredir_configuration_status(void *priv, uint64_t id,
|
1186 |
1187 |
struct usb_redir_configuration_status_header *config_status)
|
1187 |
1188 |
{
|
1188 |
1189 |
USBRedirDevice *dev = priv;
|
1189 |
1190 |
USBPacket *p;
|
1190 |
1191 |
int len = 0;
|
1191 |
1192 |
|
1192 |
|
DPRINTF("set config status %d config %d id %u\n", config_status->status,
|
1193 |
|
config_status->configuration, id);
|
|
1193 |
DPRINTF("set config status %d config %d id %"PRIu64"\n",
|
|
1194 |
config_status->status, config_status->configuration, id);
|
1194 |
1195 |
|
1195 |
1196 |
p = usbredir_find_packet_by_id(dev, 0, id);
|
1196 |
1197 |
if (p) {
|
... | ... | |
1203 |
1204 |
}
|
1204 |
1205 |
}
|
1205 |
1206 |
|
1206 |
|
static void usbredir_alt_setting_status(void *priv, uint32_t id,
|
|
1207 |
static void usbredir_alt_setting_status(void *priv, uint64_t id,
|
1207 |
1208 |
struct usb_redir_alt_setting_status_header *alt_setting_status)
|
1208 |
1209 |
{
|
1209 |
1210 |
USBRedirDevice *dev = priv;
|
1210 |
1211 |
USBPacket *p;
|
1211 |
1212 |
int len = 0;
|
1212 |
1213 |
|
1213 |
|
DPRINTF("alt status %d intf %d alt %d id: %u\n",
|
1214 |
|
alt_setting_status->status,
|
1215 |
|
alt_setting_status->interface,
|
|
1214 |
DPRINTF("alt status %d intf %d alt %d id: %"PRIu64"\n",
|
|
1215 |
alt_setting_status->status, alt_setting_status->interface,
|
1216 |
1216 |
alt_setting_status->alt, id);
|
1217 |
1217 |
|
1218 |
1218 |
p = usbredir_find_packet_by_id(dev, 0, id);
|
... | ... | |
1227 |
1227 |
}
|
1228 |
1228 |
}
|
1229 |
1229 |
|
1230 |
|
static void usbredir_iso_stream_status(void *priv, uint32_t id,
|
|
1230 |
static void usbredir_iso_stream_status(void *priv, uint64_t id,
|
1231 |
1231 |
struct usb_redir_iso_stream_status_header *iso_stream_status)
|
1232 |
1232 |
{
|
1233 |
1233 |
USBRedirDevice *dev = priv;
|
1234 |
1234 |
uint8_t ep = iso_stream_status->endpoint;
|
1235 |
1235 |
|
1236 |
|
DPRINTF("iso status %d ep %02X id %u\n", iso_stream_status->status,
|
|
1236 |
DPRINTF("iso status %d ep %02X id %"PRIu64"\n", iso_stream_status->status,
|
1237 |
1237 |
ep, id);
|
1238 |
1238 |
|
1239 |
1239 |
if (!dev->dev.attached || !dev->endpoint[EP2I(ep)].iso_started) {
|
... | ... | |
1247 |
1247 |
}
|
1248 |
1248 |
}
|
1249 |
1249 |
|
1250 |
|
static void usbredir_interrupt_receiving_status(void *priv, uint32_t id,
|
|
1250 |
static void usbredir_interrupt_receiving_status(void *priv, uint64_t id,
|
1251 |
1251 |
struct usb_redir_interrupt_receiving_status_header
|
1252 |
1252 |
*interrupt_receiving_status)
|
1253 |
1253 |
{
|
1254 |
1254 |
USBRedirDevice *dev = priv;
|
1255 |
1255 |
uint8_t ep = interrupt_receiving_status->endpoint;
|
1256 |
1256 |
|
1257 |
|
DPRINTF("interrupt recv status %d ep %02X id %u\n",
|
|
1257 |
DPRINTF("interrupt recv status %d ep %02X id %"PRIu64"\n",
|
1258 |
1258 |
interrupt_receiving_status->status, ep, id);
|
1259 |
1259 |
|
1260 |
1260 |
if (!dev->dev.attached || !dev->endpoint[EP2I(ep)].interrupt_started) {
|
... | ... | |
1269 |
1269 |
}
|
1270 |
1270 |
}
|
1271 |
1271 |
|
1272 |
|
static void usbredir_bulk_streams_status(void *priv, uint32_t id,
|
|
1272 |
static void usbredir_bulk_streams_status(void *priv, uint64_t id,
|
1273 |
1273 |
struct usb_redir_bulk_streams_status_header *bulk_streams_status)
|
1274 |
1274 |
{
|
1275 |
1275 |
}
|
1276 |
1276 |
|
1277 |
|
static void usbredir_control_packet(void *priv, uint32_t id,
|
|
1277 |
static void usbredir_control_packet(void *priv, uint64_t id,
|
1278 |
1278 |
struct usb_redir_control_packet_header *control_packet,
|
1279 |
1279 |
uint8_t *data, int data_len)
|
1280 |
1280 |
{
|
... | ... | |
1282 |
1282 |
USBPacket *p;
|
1283 |
1283 |
int len = control_packet->length;
|
1284 |
1284 |
|
1285 |
|
DPRINTF("ctrl-in status %d len %d id %u\n", control_packet->status,
|
|
1285 |
DPRINTF("ctrl-in status %d len %d id %"PRIu64"\n", control_packet->status,
|
1286 |
1286 |
len, id);
|
1287 |
1287 |
|
1288 |
1288 |
p = usbredir_find_packet_by_id(dev, 0, id);
|
... | ... | |
1304 |
1304 |
free(data);
|
1305 |
1305 |
}
|
1306 |
1306 |
|
1307 |
|
static void usbredir_bulk_packet(void *priv, uint32_t id,
|
|
1307 |
static void usbredir_bulk_packet(void *priv, uint64_t id,
|
1308 |
1308 |
struct usb_redir_bulk_packet_header *bulk_packet,
|
1309 |
1309 |
uint8_t *data, int data_len)
|
1310 |
1310 |
{
|
... | ... | |
1313 |
1313 |
int len = bulk_packet->length;
|
1314 |
1314 |
USBPacket *p;
|
1315 |
1315 |
|
1316 |
|
DPRINTF("bulk-in status %d ep %02X len %d id %u\n", bulk_packet->status,
|
1317 |
|
ep, len, id);
|
|
1316 |
DPRINTF("bulk-in status %d ep %02X len %d id %"PRIu64"\n",
|
|
1317 |
bulk_packet->status, ep, len, id);
|
1318 |
1318 |
|
1319 |
1319 |
p = usbredir_find_packet_by_id(dev, ep, id);
|
1320 |
1320 |
if (p) {
|
... | ... | |
1335 |
1335 |
free(data);
|
1336 |
1336 |
}
|
1337 |
1337 |
|
1338 |
|
static void usbredir_iso_packet(void *priv, uint32_t id,
|
|
1338 |
static void usbredir_iso_packet(void *priv, uint64_t id,
|
1339 |
1339 |
struct usb_redir_iso_packet_header *iso_packet,
|
1340 |
1340 |
uint8_t *data, int data_len)
|
1341 |
1341 |
{
|
1342 |
1342 |
USBRedirDevice *dev = priv;
|
1343 |
1343 |
uint8_t ep = iso_packet->endpoint;
|
1344 |
1344 |
|
1345 |
|
DPRINTF2("iso-in status %d ep %02X len %d id %u\n", iso_packet->status, ep,
|
1346 |
|
data_len, id);
|
|
1345 |
DPRINTF2("iso-in status %d ep %02X len %d id %"PRIu64"\n",
|
|
1346 |
iso_packet->status, ep, data_len, id);
|
1347 |
1347 |
|
1348 |
1348 |
if (dev->endpoint[EP2I(ep)].type != USB_ENDPOINT_XFER_ISOC) {
|
1349 |
1349 |
ERROR("received iso packet for non iso endpoint %02X\n", ep);
|
... | ... | |
1361 |
1361 |
bufp_alloc(dev, data, data_len, iso_packet->status, ep);
|
1362 |
1362 |
}
|
1363 |
1363 |
|
1364 |
|
static void usbredir_interrupt_packet(void *priv, uint32_t id,
|
|
1364 |
static void usbredir_interrupt_packet(void *priv, uint64_t id,
|
1365 |
1365 |
struct usb_redir_interrupt_packet_header *interrupt_packet,
|
1366 |
1366 |
uint8_t *data, int data_len)
|
1367 |
1367 |
{
|
1368 |
1368 |
USBRedirDevice *dev = priv;
|
1369 |
1369 |
uint8_t ep = interrupt_packet->endpoint;
|
1370 |
1370 |
|
1371 |
|
DPRINTF("interrupt-in status %d ep %02X len %d id %u\n",
|
|
1371 |
DPRINTF("interrupt-in status %d ep %02X len %d id %"PRIu64"\n",
|
1372 |
1372 |
interrupt_packet->status, ep, data_len, id);
|
1373 |
1373 |
|
1374 |
1374 |
if (dev->endpoint[EP2I(ep)].type != USB_ENDPOINT_XFER_INT) {
|