summaryrefslogtreecommitdiffstats
path: root/cython/imobiledevice.pyx
diff options
context:
space:
mode:
Diffstat (limited to 'cython/imobiledevice.pyx')
-rw-r--r--cython/imobiledevice.pyx35
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
70cpdef set_debug_level(int level): 70def set_debug_level(int level):
71 idevice_set_debug_level(level) 71 idevice_set_debug_level(level)
72 72
73cdef class iDeviceEvent: 73cdef 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
77cdef 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
90cdef 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
82cpdef event_subscribe(object callback): 95def 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
86cpdef event_unsubscribe(): 99def 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
90cpdef get_device_list(): 103def 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
216cdef class LockdownClient(Base): 229cdef 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
243cdef extern from *: 260cdef 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
246include "property_list_client.pxi" 265include "property_list_client.pxi"
247include "mobilesync.pxi" 266include "mobilesync.pxi"