/** * Internally used function for receiving raw data over the given connection. */ static idevice_error_t internal_connection_receive(idevice_connection_t connection, char *data, uint32_t len, uint32_t *recv_bytes) { if (!connection) { return IDEVICE_E_INVALID_ARG; } if (connection->type == CONNECTION_USBMUXD) { int res = usbmuxd_recv((int)(long)connection->data, data, len, recv_bytes); if (res < 0) { debug_info("ERROR: usbmuxd_recv returned %d (%s)", res, strerror(-res)); return IDEVICE_E_UNKNOWN_ERROR; } return IDEVICE_E_SUCCESS; } else { debug_info("Unknown connection type %d", connection->type); } return IDEVICE_E_UNKNOWN_ERROR; }
/** * Receive data from a device via the given connection. * This function is like iphone_device_recv_timeout, but with a predefined * reasonable timeout. * * @param connection The connection to receive data from. * @param data Buffer that will be filled with the received data. * This buffer has to be large enough to hold len bytes. * @param len Buffer size or number of bytes to receive. * @param recv_bytes Number of bytes actually received. * * @return IPHONE_E_SUCCESS if ok, otherwise an error code. */ iphone_error_t iphone_device_recv(iphone_connection_t connection, char *data, uint32_t len, uint32_t *recv_bytes) { if (!connection) { return -EINVAL; } if (connection->type == CONNECTION_USBMUXD) { int res = usbmuxd_recv((int)(connection->data), data, len, recv_bytes); if (res < 0) { log_debug_msg("%s: ERROR: usbmuxd_recv returned %d (%s)\n", __func__, res, strerror(-res)); return IPHONE_E_UNKNOWN_ERROR; } return IPHONE_E_SUCCESS; } else { log_debug_msg("%s: Unknown connection type %d\n", __func__, connection->type); } return IPHONE_E_UNKNOWN_ERROR; }