1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
/*
libusbmuxd - client library to talk to usbmuxd
Copyright (C) 2009 Paul Sladen <libiphone@paul.sladen.org>
Copyright (C) 2009 Nikias Bassen <nikias@gmx.li>
Copyright (C) 2009 Hector Martin "marcan" <hector@marcansoft.com>
This library is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, either version 2.1 of the
License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/* Protocol defintion for usbmuxd proxy protocol */
#ifndef __USBMUXD_PROTO_H
#define __USBMUXD_PROTO_H
#include <stdint.h>
#define USBMUXD_PROTOCOL_VERSION 0
#ifdef WIN32
#define USBMUXD_SOCKET_PORT 27015
#else
#define USBMUXD_SOCKET_FILE "/var/run/usbmuxd"
#endif
enum usbmuxd_result {
RESULT_OK = 0,
RESULT_BADCOMMAND = 1,
RESULT_BADDEV = 2,
RESULT_CONNREFUSED = 3,
// ???
// ???
RESULT_BADVERSION = 6,
};
enum usbmuxd_msgtype {
MESSAGE_RESULT = 1,
MESSAGE_CONNECT = 2,
MESSAGE_LISTEN = 3,
MESSAGE_DEVICE_ADD = 4,
MESSAGE_DEVICE_REMOVE = 5,
//???
//???
//MESSAGE_PLIST = 8,
};
struct usbmuxd_header {
uint32_t length; // length of message, including header
uint32_t version; // protocol version
uint32_t message; // message type
uint32_t tag; // responses to this query will echo back this tag
} __attribute__((__packed__));
struct usbmuxd_result_msg {
struct usbmuxd_header header;
uint32_t result;
} __attribute__((__packed__));
struct usbmuxd_connect_request {
struct usbmuxd_header header;
uint32_t device_id;
uint16_t port; // TCP port number
uint16_t reserved; // set to zero
} __attribute__((__packed__));
struct usbmuxd_listen_request {
struct usbmuxd_header header;
} __attribute__((__packed__));
struct usbmuxd_device_record {
uint32_t device_id;
uint16_t product_id;
char serial_number[256];
uint16_t padding;
uint32_t location;
} __attribute__((__packed__));
#endif /* __USBMUXD_PROTO_H */
|