| /** |
| * @file libiphone/libiphone.h |
| * @brief Common code and device handling |
| * \internal |
| * |
| * Copyright (c) 2008 Jonathan Beck All Rights Reserved. |
| * |
| * 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 |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| */ |
| |
| #ifndef LIBIPHONE_H |
| #define LIBIPHONE_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include <stdint.h> |
| #include <sys/types.h> |
| #include <sys/stat.h> |
| #include <plist/plist.h> |
| |
| /* Error Codes */ |
| #define IPHONE_E_SUCCESS 0 |
| #define IPHONE_E_INVALID_ARG -1 |
| #define IPHONE_E_UNKNOWN_ERROR -2 |
| #define IPHONE_E_NO_DEVICE -3 |
| #define IPHONE_E_NOT_ENOUGH_DATA -4 |
| #define IPHONE_E_BAD_HEADER -5 |
| #define IPHONE_E_SSL_ERROR -6 |
| |
| typedef int16_t iphone_error_t; |
| |
| struct iphone_device_int; |
| typedef struct iphone_device_int *iphone_device_t; |
| |
| struct iphone_connection_int; |
| typedef struct iphone_connection_int *iphone_connection_t; |
| |
| /* generic */ |
| void iphone_set_debug_level(int level); |
| |
| /* discovery (events/asynchronous) */ |
| // event type |
| enum iphone_event_type { |
| IPHONE_DEVICE_ADD = 1, |
| IPHONE_DEVICE_REMOVE |
| }; |
| |
| // event data structure |
| typedef struct { |
| enum iphone_event_type event; |
| const char *uuid; |
| int conn_type; |
| } iphone_event_t; |
| |
| // event callback function prototype |
| typedef void (*iphone_event_cb_t) (const iphone_event_t *event, void *user_data); |
| |
| // functions |
| iphone_error_t iphone_event_subscribe(iphone_event_cb_t callback, void *user_data); |
| iphone_error_t iphone_event_unsubscribe(); |
| |
| /* discovery (synchronous) */ |
| iphone_error_t iphone_get_device_list(char ***devices, int *count); |
| iphone_error_t iphone_device_list_free(char **devices); |
| |
| /* device structure creation and destruction */ |
| iphone_error_t iphone_device_new(iphone_device_t *device, const char *uuid); |
| iphone_error_t iphone_device_free(iphone_device_t device); |
| |
| /* connection/disconnection */ |
| iphone_error_t iphone_device_connect(iphone_device_t device, uint16_t port, iphone_connection_t *connection); |
| iphone_error_t iphone_device_disconnect(iphone_connection_t connection); |
| |
| /* communication */ |
| iphone_error_t iphone_connection_send(iphone_connection_t connection, const char *data, uint32_t len, uint32_t *sent_bytes); |
| iphone_error_t iphone_connection_receive_timeout(iphone_connection_t connection, char *data, uint32_t len, uint32_t *recv_bytes, unsigned int timeout); |
| iphone_error_t iphone_connection_receive(iphone_connection_t connection, char *data, uint32_t len, uint32_t *recv_bytes); |
| |
| /* misc */ |
| iphone_error_t iphone_device_get_handle(iphone_device_t device, uint32_t *handle); |
| iphone_error_t iphone_device_get_uuid(iphone_device_t device, char **uuid); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif |
| |