diff options
Diffstat (limited to 'cython/imobiledevice.pyx')
| -rw-r--r-- | cython/imobiledevice.pyx | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/cython/imobiledevice.pyx b/cython/imobiledevice.pyx index dc0fb88..b57db04 100644 --- a/cython/imobiledevice.pyx +++ b/cython/imobiledevice.pyx | |||
| @@ -67,27 +67,40 @@ cdef class iDeviceError(BaseError): | |||
| 67 | } | 67 | } |
| 68 | BaseError.__init__(self, *args, **kwargs) | 68 | BaseError.__init__(self, *args, **kwargs) |
| 69 | 69 | ||
| 70 | cpdef set_debug_level(int level): | 70 | def set_debug_level(int level): |
| 71 | idevice_set_debug_level(level) | 71 | idevice_set_debug_level(level) |
| 72 | 72 | ||
| 73 | cdef class iDeviceEvent: | 73 | cdef class iDeviceEvent: |
| 74 | def __init__(self, *args, **kwargs): | 74 | def __init__(self, *args, **kwargs): |
| 75 | raise TypeError("iDeviceEvent cannot be instantiated") | 75 | raise TypeError("iDeviceEvent cannot be instantiated") |
| 76 | 76 | ||
| 77 | cdef void idevice_event_cb(const_idevice_event_t c_event, void *user_data): | 77 | def __str__(self): |
| 78 | return 'iDeviceEvent: %s (%s)' % (self.event == IDEVICE_DEVICE_ADD and 'Add' or 'Remove', self.uuid) | ||
| 79 | |||
| 80 | property event: | ||
| 81 | def __get__(self): | ||
| 82 | return self._c_event.event | ||
| 83 | property uuid: | ||
| 84 | def __get__(self): | ||
| 85 | return self._c_event.uuid | ||
| 86 | property conn_type: | ||
| 87 | def __get__(self): | ||
| 88 | return self._c_event.conn_type | ||
| 89 | |||
| 90 | cdef void idevice_event_cb(const_idevice_event_t c_event, void *user_data) with gil: | ||
| 78 | cdef iDeviceEvent event = iDeviceEvent.__new__(iDeviceEvent) | 91 | cdef iDeviceEvent event = iDeviceEvent.__new__(iDeviceEvent) |
| 79 | event._c_event = c_event | 92 | event._c_event = c_event |
| 80 | (<object>user_data)(event) | 93 | (<object>user_data)(event) |
| 81 | 94 | ||
| 82 | cpdef event_subscribe(object callback): | 95 | def event_subscribe(object callback): |
| 83 | cdef iDeviceError err = iDeviceError(idevice_event_subscribe(idevice_event_cb, <void*>callback)) | 96 | cdef iDeviceError err = iDeviceError(idevice_event_subscribe(idevice_event_cb, <void*>callback)) |
| 84 | if err: raise err | 97 | if err: raise err |
| 85 | 98 | ||
| 86 | cpdef event_unsubscribe(): | 99 | def event_unsubscribe(): |
| 87 | cdef iDeviceError err = iDeviceError(idevice_event_unsubscribe()) | 100 | cdef iDeviceError err = iDeviceError(idevice_event_unsubscribe()) |
| 88 | if err: raise err | 101 | if err: raise err |
| 89 | 102 | ||
| 90 | cpdef get_device_list(): | 103 | def get_device_list(): |
| 91 | cdef: | 104 | cdef: |
| 92 | char** devices | 105 | char** devices |
| 93 | int count | 106 | int count |
| @@ -214,10 +227,14 @@ cdef class LockdownError(BaseError): | |||
| 214 | BaseError.__init__(self, *args, **kwargs) | 227 | BaseError.__init__(self, *args, **kwargs) |
| 215 | 228 | ||
| 216 | cdef class LockdownClient(Base): | 229 | cdef class LockdownClient(Base): |
| 217 | def __cinit__(self, iDevice device not None, char *label=NULL, *args, **kwargs): | 230 | def __cinit__(self, iDevice device not None, bytes label="", *args, **kwargs): |
| 218 | cdef: | 231 | cdef: |
| 219 | iDevice dev = device | 232 | iDevice dev = device |
| 220 | lockdownd_error_t err = lockdownd_client_new_with_handshake(dev._c_dev, &(self._c_client), label) | 233 | lockdownd_error_t err |
| 234 | char* c_label = NULL | ||
| 235 | if label: | ||
| 236 | c_label = label | ||
| 237 | err = lockdownd_client_new_with_handshake(dev._c_dev, &(self._c_client), c_label) | ||
| 221 | self.handle_error(err) | 238 | self.handle_error(err) |
| 222 | 239 | ||
| 223 | def __dealloc__(self): | 240 | def __dealloc__(self): |
| @@ -229,7 +246,7 @@ cdef class LockdownClient(Base): | |||
| 229 | cdef inline BaseError _error(self, int16_t ret): | 246 | cdef inline BaseError _error(self, int16_t ret): |
| 230 | return LockdownError(ret) | 247 | return LockdownError(ret) |
| 231 | 248 | ||
| 232 | cpdef int start_service(self, service): | 249 | cpdef int start_service(self, bytes service): |
| 233 | cdef: | 250 | cdef: |
| 234 | uint16_t port | 251 | uint16_t port |
| 235 | lockdownd_error_t err | 252 | lockdownd_error_t err |
| @@ -242,6 +259,8 @@ cdef class LockdownClient(Base): | |||
| 242 | 259 | ||
| 243 | cdef extern from *: | 260 | cdef extern from *: |
| 244 | ctypedef char* const_char_ptr "const char*" | 261 | ctypedef char* const_char_ptr "const char*" |
| 262 | void free(void *ptr) | ||
| 263 | void plist_free(plist.plist_t node) | ||
| 245 | 264 | ||
| 246 | include "property_list_client.pxi" | 265 | include "property_list_client.pxi" |
| 247 | include "mobilesync.pxi" | 266 | include "mobilesync.pxi" |
