diff options
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 42 |
1 files changed, 20 insertions, 22 deletions
| @@ -42,7 +42,7 @@ | |||
| 42 | #include "usbmuxd-proto.h" | 42 | #include "usbmuxd-proto.h" |
| 43 | #include "sock_stuff.h" | 43 | #include "sock_stuff.h" |
| 44 | 44 | ||
| 45 | #include "iphone.h" | 45 | #include "usbmux.h" |
| 46 | 46 | ||
| 47 | #define DEFAULT_TIMEOUT 4000 | 47 | #define DEFAULT_TIMEOUT 4000 |
| 48 | #define DEFAULT_CHILDREN_CAPACITY 10 | 48 | #define DEFAULT_CHILDREN_CAPACITY 10 |
| @@ -60,11 +60,11 @@ static int exit_on_no_devices = 0; | |||
| 60 | 60 | ||
| 61 | struct device_info { | 61 | struct device_info { |
| 62 | uint32_t device_id; | 62 | uint32_t device_id; |
| 63 | iphone_device_t phone; | 63 | usbmux_device_t phone; |
| 64 | int use_count; | 64 | int use_count; |
| 65 | pthread_t bulk_reader; | 65 | pthread_t bulk_reader; |
| 66 | pthread_mutex_t mutex; | 66 | pthread_mutex_t mutex; |
| 67 | /* mutex for mutual exclusion of calling the iphone_mux_send function | 67 | /* mutex for mutual exclusion of calling the usbmux_send function |
| 68 | * TODO: I don't know if we need really need this? */ | 68 | * TODO: I don't know if we need really need this? */ |
| 69 | pthread_mutex_t writer_mutex; | 69 | pthread_mutex_t writer_mutex; |
| 70 | }; | 70 | }; |
| @@ -80,7 +80,7 @@ struct client_data { | |||
| 80 | int reader_dead; | 80 | int reader_dead; |
| 81 | int handler_dead; | 81 | int handler_dead; |
| 82 | int connected; | 82 | int connected; |
| 83 | iphone_umux_client_t muxclient; | 83 | usbmux_client_t muxclient; |
| 84 | struct device_info *dev; | 84 | struct device_info *dev; |
| 85 | }; | 85 | }; |
| 86 | 86 | ||
| @@ -249,7 +249,7 @@ static void *usbmuxd_client_reader_thread(void *arg) | |||
| 249 | char rbuffer[512]; | 249 | char rbuffer[512]; |
| 250 | uint32_t rbuffersize = 512; | 250 | uint32_t rbuffersize = 512; |
| 251 | uint32_t rlen; | 251 | uint32_t rlen; |
| 252 | iphone_error_t err; | 252 | int err; |
| 253 | char *cursor; | 253 | char *cursor; |
| 254 | ssize_t len; | 254 | ssize_t len; |
| 255 | int result; | 255 | int result; |
| @@ -276,7 +276,7 @@ static void *usbmuxd_client_reader_thread(void *arg) | |||
| 276 | } | 276 | } |
| 277 | 277 | ||
| 278 | rlen = 0; | 278 | rlen = 0; |
| 279 | err = iphone_mux_recv_timeout(cdata->muxclient, rbuffer, rbuffersize, &rlen, DEFAULT_TIMEOUT); | 279 | err = usbmux_recv_timeout(cdata->muxclient, rbuffer, rbuffersize, &rlen, DEFAULT_TIMEOUT); |
| 280 | if (err != 0) { | 280 | if (err != 0) { |
| 281 | if (verbose >= 2) logmsg(LOG_ERR, "%s[%d:%d]: encountered USB read error: %d", __func__, cdata->dev->device_id, cdata->dev->use_count, err); | 281 | if (verbose >= 2) logmsg(LOG_ERR, "%s[%d:%d]: encountered USB read error: %d", __func__, cdata->dev->device_id, cdata->dev->use_count, err); |
| 282 | break; | 282 | break; |
| @@ -327,7 +327,7 @@ static int usbmuxd_handleConnectResult(struct client_data *cdata) | |||
| 327 | int err_code; | 327 | int err_code; |
| 328 | ssize_t maxlen = 512; | 328 | ssize_t maxlen = 512; |
| 329 | uint32_t rlen; | 329 | uint32_t rlen; |
| 330 | iphone_error_t err; | 330 | int err; |
| 331 | 331 | ||
| 332 | if (!cdata) { | 332 | if (!cdata) { |
| 333 | if (verbose >= 2) logmsg(LOG_ERR, "%s: Invalid client_data provided!", __func__); | 333 | if (verbose >= 2) logmsg(LOG_ERR, "%s: Invalid client_data provided!", __func__); |
| @@ -342,8 +342,8 @@ static int usbmuxd_handleConnectResult(struct client_data *cdata) | |||
| 342 | } | 342 | } |
| 343 | } else { | 343 | } else { |
| 344 | result = 0; | 344 | result = 0; |
| 345 | err = iphone_mux_recv_timeout(cdata->muxclient, buffer, maxlen, &rlen, 100); | 345 | err = usbmux_recv_timeout(cdata->muxclient, buffer, maxlen, &rlen, 100); |
| 346 | if (err != 0) { | 346 | if (err < 0) { |
| 347 | if (verbose >= 2) logmsg(LOG_ERR, "%s: encountered USB read error: %d", __func__, err); | 347 | if (verbose >= 2) logmsg(LOG_ERR, "%s: encountered USB read error: %d", __func__, err); |
| 348 | usbmuxd_send_result(cdata->socket, cdata->tag, -err); | 348 | usbmuxd_send_result(cdata->socket, cdata->tag, -err); |
| 349 | return err; | 349 | return err; |
| @@ -390,7 +390,7 @@ static void *usbmuxd_client_handler_thread(void *arg) | |||
| 390 | ssize_t len; | 390 | ssize_t len; |
| 391 | ssize_t maxlen = sizeof(buffer); | 391 | ssize_t maxlen = sizeof(buffer); |
| 392 | uint32_t wlen; | 392 | uint32_t wlen; |
| 393 | iphone_error_t err; | 393 | int err; |
| 394 | 394 | ||
| 395 | if (!arg) { | 395 | if (!arg) { |
| 396 | if (verbose >= 2) logmsg(LOG_ERR, "%s: invalid client_data provided!", __func__); | 396 | if (verbose >= 2) logmsg(LOG_ERR, "%s: invalid client_data provided!", __func__); |
| @@ -441,10 +441,10 @@ static void *usbmuxd_client_handler_thread(void *arg) | |||
| 441 | pthread_mutex_lock(&cdata->dev->writer_mutex); | 441 | pthread_mutex_lock(&cdata->dev->writer_mutex); |
| 442 | do { | 442 | do { |
| 443 | wlen = 0; | 443 | wlen = 0; |
| 444 | err = iphone_mux_send(cdata->muxclient, cursor, len, &wlen); | 444 | err = usbmux_send(cdata->muxclient, cursor, len, &wlen); |
| 445 | if (err == IPHONE_E_TIMEOUT) { | 445 | if (err == -ETIMEDOUT) { |
| 446 | // some kind of timeout... just be patient and retry. | 446 | // some kind of timeout... just be patient and retry. |
| 447 | } else if (err != IPHONE_E_SUCCESS) { | 447 | } else if (err < 0) { |
| 448 | if (verbose >= 2) logmsg(LOG_ERR, "%s[%d:%d]: USB write error: %d", __func__, cdata->dev->device_id, cdata->dev->use_count, err); | 448 | if (verbose >= 2) logmsg(LOG_ERR, "%s[%d:%d]: USB write error: %d", __func__, cdata->dev->device_id, cdata->dev->use_count, err); |
| 449 | len = -1; | 449 | len = -1; |
| 450 | break; | 450 | break; |
| @@ -502,7 +502,7 @@ static void *usbmuxd_bulk_reader_thread(void *arg) | |||
| 502 | } | 502 | } |
| 503 | pthread_mutex_unlock(&cur_dev->mutex); | 503 | pthread_mutex_unlock(&cur_dev->mutex); |
| 504 | 504 | ||
| 505 | if ((err = iphone_mux_pullbulk(cur_dev->phone)) < 0) { | 505 | if ((err = usbmux_pullbulk(cur_dev->phone)) < 0) { |
| 506 | if (verbose >= 1) logmsg(LOG_ERR, "%s: error %d when reading from device", __func__, err); | 506 | if (verbose >= 1) logmsg(LOG_ERR, "%s: error %d when reading from device", __func__, err); |
| 507 | break; | 507 | break; |
| 508 | } | 508 | } |
| @@ -532,10 +532,8 @@ static void *usbmuxd_client_init_thread(void *arg) | |||
| 532 | int found = 0; | 532 | int found = 0; |
| 533 | int res; | 533 | int res; |
| 534 | int i; | 534 | int i; |
| 535 | // int sent_result; | ||
| 536 | // iphone_error_t err; | ||
| 537 | 535 | ||
| 538 | iphone_device_t phone = NULL; | 536 | usbmux_device_t phone = NULL; |
| 539 | struct device_info *cur_dev = NULL; | 537 | struct device_info *cur_dev = NULL; |
| 540 | 538 | ||
| 541 | if (!arg) { | 539 | if (!arg) { |
| @@ -667,7 +665,7 @@ connect: | |||
| 667 | if (verbose >= 2) logmsg(LOG_NOTICE, "%s[%x]: creating new usb connection, device_id=%d", __func__, THREAD, c_req->device_id); | 665 | if (verbose >= 2) logmsg(LOG_NOTICE, "%s[%x]: creating new usb connection, device_id=%d", __func__, THREAD, c_req->device_id); |
| 668 | 666 | ||
| 669 | pthread_mutex_lock(&usb_mutex); | 667 | pthread_mutex_lock(&usb_mutex); |
| 670 | if (iphone_get_specific_device(0, c_req->device_id, &phone) != IPHONE_E_SUCCESS) { | 668 | if (usbmux_get_specific_device(0, c_req->device_id, &phone) < 0) { |
| 671 | pthread_mutex_unlock(&usb_mutex); | 669 | pthread_mutex_unlock(&usb_mutex); |
| 672 | pthread_mutex_unlock(&usbmux_mutex); | 670 | pthread_mutex_unlock(&usbmux_mutex); |
| 673 | if (verbose >= 1) logmsg(LOG_ERR, "%s[%x]: device_id %d could not be opened", __func__, THREAD, c_req->device_id); | 671 | if (verbose >= 1) logmsg(LOG_ERR, "%s[%x]: device_id %d could not be opened", __func__, THREAD, c_req->device_id); |
| @@ -702,7 +700,7 @@ connect: | |||
| 702 | 700 | ||
| 703 | // setup connection to iPhone/iPod | 701 | // setup connection to iPhone/iPod |
| 704 | // pthread_mutex_lock(&usbmux_mutex); | 702 | // pthread_mutex_lock(&usbmux_mutex); |
| 705 | res = iphone_mux_new_client(cur_dev->phone, 0, ntohs(c_req->tcp_dport), &(cdata->muxclient)); | 703 | res = usbmux_new_client(cur_dev->phone, 0, ntohs(c_req->tcp_dport), &(cdata->muxclient)); |
| 706 | // pthread_mutex_unlock(&usbmux_mutex); | 704 | // pthread_mutex_unlock(&usbmux_mutex); |
| 707 | 705 | ||
| 708 | if (res != 0) { | 706 | if (res != 0) { |
| @@ -737,7 +735,7 @@ connect: | |||
| 737 | 735 | ||
| 738 | // time to clean up | 736 | // time to clean up |
| 739 | if (cdata && cdata->muxclient) { // should be non-NULL | 737 | if (cdata && cdata->muxclient) { // should be non-NULL |
| 740 | iphone_mux_free_client(cdata->muxclient); | 738 | usbmux_free_client(cdata->muxclient); |
| 741 | } | 739 | } |
| 742 | 740 | ||
| 743 | leave: | 741 | leave: |
| @@ -768,7 +766,7 @@ leave: | |||
| 768 | pthread_join(cur_dev->bulk_reader, NULL); | 766 | pthread_join(cur_dev->bulk_reader, NULL); |
| 769 | } | 767 | } |
| 770 | pthread_mutex_lock(&usb_mutex); | 768 | pthread_mutex_lock(&usb_mutex); |
| 771 | iphone_free_device(cur_dev->phone); | 769 | usbmux_free_device(cur_dev->phone); |
| 772 | pthread_mutex_unlock(&usb_mutex); | 770 | pthread_mutex_unlock(&usb_mutex); |
| 773 | pthread_mutex_destroy(&cur_dev->writer_mutex); | 771 | pthread_mutex_destroy(&cur_dev->writer_mutex); |
| 774 | pthread_mutex_destroy(&cur_dev->mutex); | 772 | pthread_mutex_destroy(&cur_dev->mutex); |
| @@ -1001,7 +999,7 @@ int main(int argc, char **argv) | |||
| 1001 | 999 | ||
| 1002 | chmod(USBMUXD_SOCKET_FILE, 0666); | 1000 | chmod(USBMUXD_SOCKET_FILE, 0666); |
| 1003 | 1001 | ||
| 1004 | if (verbose >= 3) iphone_set_debug(1); | 1002 | if (verbose >= 3) usbmux_set_debug(1); |
| 1005 | 1003 | ||
| 1006 | if (!foreground) { | 1004 | if (!foreground) { |
| 1007 | if (daemonize() < 0) { | 1005 | if (daemonize() < 0) { |
