/* libusbmuxd - client library to talk to usbmuxd Copyright (C) 2009 Paul Sladen Copyright (C) 2009 Nikias Bassen Copyright (C) 2009 Hector Martin "marcan" 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 #define USBMUXD_PROTOCOL_VERSION 0 #if defined(WIN32) || defined(__CYGWIN__) #define USBMUXD_SOCKET_PORT 27015 #else #define USBMUXD_SOCKET_FILE "/var/run/usbmuxd" #endif #ifdef __cplusplus extern "C" { #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__)); #ifdef __cplusplus } #endif #endif /* __USBMUXD_PROTO_H */