diff options
Diffstat (limited to 'src/libusbmuxd.c')
| -rw-r--r-- | src/libusbmuxd.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/libusbmuxd.c b/src/libusbmuxd.c index c8acbf8..4cd0a6d 100644 --- a/src/libusbmuxd.c +++ b/src/libusbmuxd.c | |||
| @@ -200,3 +200,49 @@ int usbmuxd_connect(const int handle, const unsigned short tcp_port) | |||
| 200 | 200 | ||
| 201 | return -1; | 201 | return -1; |
| 202 | } | 202 | } |
| 203 | |||
| 204 | int usbmuxd_disconnect(int sfd) | ||
| 205 | { | ||
| 206 | return close(sfd); | ||
| 207 | } | ||
| 208 | |||
| 209 | int usbmuxd_send(int sfd, const char *data, uint32_t len, uint32_t *sent_bytes) | ||
| 210 | { | ||
| 211 | int num_sent; | ||
| 212 | |||
| 213 | if (sfd < 0) { | ||
| 214 | return -EINVAL; | ||
| 215 | } | ||
| 216 | |||
| 217 | num_sent = send(sfd, (void*)data, len, 0); | ||
| 218 | if (num_sent < 0) { | ||
| 219 | *sent_bytes = 0; | ||
| 220 | fprintf(stderr, "%s: Error %d when sending: %s\n", __func__, num_sent, strerror(errno)); | ||
| 221 | return num_sent; | ||
| 222 | } else if ((uint32_t)num_sent < len) { | ||
| 223 | fprintf(stderr, "%s: Warning: Did not send enough (only %d of %d)\n", __func__, num_sent, len); | ||
| 224 | } | ||
| 225 | |||
| 226 | *sent_bytes = num_sent; | ||
| 227 | |||
| 228 | return 0; | ||
| 229 | } | ||
| 230 | |||
| 231 | int usbmuxd_recv_timeout(int sfd, char *data, uint32_t len, uint32_t *recv_bytes, unsigned int timeout) | ||
| 232 | { | ||
| 233 | int num_recv = recv_buf_timeout(sfd, (void*)data, len, 0, timeout); | ||
| 234 | if (num_recv < 0) { | ||
| 235 | *recv_bytes = 0; | ||
| 236 | return num_recv; | ||
| 237 | } | ||
| 238 | |||
| 239 | *recv_bytes = num_recv; | ||
| 240 | |||
| 241 | return 0; | ||
| 242 | } | ||
| 243 | |||
| 244 | int usbmuxd_recv(int sfd, char *data, uint32_t len, uint32_t *recv_bytes) | ||
| 245 | { | ||
| 246 | return usbmuxd_recv_timeout(sfd, data, len, recv_bytes, 5000); | ||
| 247 | } | ||
| 248 | |||
