summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/libimobiledevice/bt_packet_logger.h16
-rw-r--r--src/bt_packet_logger.c1
-rw-r--r--src/bt_packet_logger.h2
-rw-r--r--tools/idevicebtlogger.c18
4 files changed, 28 insertions, 9 deletions
diff --git a/include/libimobiledevice/bt_packet_logger.h b/include/libimobiledevice/bt_packet_logger.h
index 8916219..230040a 100644
--- a/include/libimobiledevice/bt_packet_logger.h
+++ b/include/libimobiledevice/bt_packet_logger.h
@@ -53,7 +53,7 @@ typedef struct {
53typedef struct bt_packet_logger_client_private bt_packet_logger_client_private; 53typedef struct bt_packet_logger_client_private bt_packet_logger_client_private;
54typedef bt_packet_logger_client_private *bt_packet_logger_client_t; /**< The client handle. */ 54typedef bt_packet_logger_client_private *bt_packet_logger_client_t; /**< The client handle. */
55 55
56/** Receives each character received from the device. */ 56/** Receives each hci packet received from the device. */
57typedef void (*bt_packet_logger_receive_cb_t)(uint8_t * data, uint16_t len, void *user_data); 57typedef void (*bt_packet_logger_receive_cb_t)(uint8_t * data, uint16_t len, void *user_data);
58 58
59/* Interface */ 59/* Interface */
@@ -100,32 +100,32 @@ bt_packet_logger_error_t bt_packet_logger_client_free(bt_packet_logger_client_t
100 100
101 101
102/** 102/**
103 * Starts capturing the syslog of the device using a callback. 103 * Starts capturing the hci interface from the device using a callback.
104 * 104 *
105 * Use bt_packet_logger_stop_capture() to stop receiving the syslog. 105 * Use bt_packet_logger_stop_capture() to stop receiving hci data.
106 * 106 *
107 * @param client The bt_packet_logger client to use 107 * @param client The bt_packet_logger client to use
108 * @param callback Callback to receive each character from the syslog. 108 * @param callback Callback to receive each packet from the hci interface.
109 * @param user_data Custom pointer passed to the callback function. 109 * @param user_data Custom pointer passed to the callback function.
110 * 110 *
111 * @return BT_PACKET_LOGGER_E_SUCCESS on success, 111 * @return BT_PACKET_LOGGER_E_SUCCESS on success,
112 * BT_PACKET_LOGGER_E_INVALID_ARG when one or more parameters are 112 * BT_PACKET_LOGGER_E_INVALID_ARG when one or more parameters are
113 * invalid or BT_PACKET_LOGGER_E_UNKNOWN_ERROR when an unspecified 113 * invalid or BT_PACKET_LOGGER_E_UNKNOWN_ERROR when an unspecified
114 * error occurs or a syslog capture has already been started. 114 * error occurs or an hci capture has already been started.
115 */ 115 */
116bt_packet_logger_error_t bt_packet_logger_start_capture(bt_packet_logger_client_t client, bt_packet_logger_receive_cb_t callback, void* user_data); 116bt_packet_logger_error_t bt_packet_logger_start_capture(bt_packet_logger_client_t client, bt_packet_logger_receive_cb_t callback, void* user_data);
117 117
118/** 118/**
119 * Stops capturing the syslog of the device. 119 * Stops capturing the hci interface from the device.
120 * 120 *
121 * Use bt_packet_logger_start_capture() to start receiving the syslog. 121 * Use bt_packet_logger_start_capture() to start receiving the hci data.
122 * 122 *
123 * @param client The bt_packet_logger client to use 123 * @param client The bt_packet_logger client to use
124 * 124 *
125 * @return BT_PACKET_LOGGER_E_SUCCESS on success, 125 * @return BT_PACKET_LOGGER_E_SUCCESS on success,
126 * BT_PACKET_LOGGER_E_INVALID_ARG when one or more parameters are 126 * BT_PACKET_LOGGER_E_INVALID_ARG when one or more parameters are
127 * invalid or BT_PACKET_LOGGER_E_UNKNOWN_ERROR when an unspecified 127 * invalid or BT_PACKET_LOGGER_E_UNKNOWN_ERROR when an unspecified
128 * error occurs or a syslog capture has already been started. 128 * error occurs or an hci capture has already been started.
129 */ 129 */
130bt_packet_logger_error_t bt_packet_logger_stop_capture(bt_packet_logger_client_t client); 130bt_packet_logger_error_t bt_packet_logger_stop_capture(bt_packet_logger_client_t client);
131 131
diff --git a/src/bt_packet_logger.c b/src/bt_packet_logger.c
index 196039e..5f7bdeb 100644
--- a/src/bt_packet_logger.c
+++ b/src/bt_packet_logger.c
@@ -28,6 +28,7 @@
28#include "bt_packet_logger.h" 28#include "bt_packet_logger.h"
29#include "lockdown.h" 29#include "lockdown.h"
30#include "common/debug.h" 30#include "common/debug.h"
31
31struct bt_packet_logger_worker_thread { 32struct bt_packet_logger_worker_thread {
32 bt_packet_logger_client_t client; 33 bt_packet_logger_client_t client;
33 bt_packet_logger_receive_cb_t cbfunc; 34 bt_packet_logger_receive_cb_t cbfunc;
diff --git a/src/bt_packet_logger.h b/src/bt_packet_logger.h
index f9e0c3e..7fb2427 100644
--- a/src/bt_packet_logger.h
+++ b/src/bt_packet_logger.h
@@ -1,6 +1,6 @@
1/* 1/*
2 * bt_packet_logger.h 2 * bt_packet_logger.h
3 * com.apple.bt_packet_logger service header file. 3 * com.apple.bluetooth.BTPacketLogger service header file.
4 * 4 *
5 * Copyright (c) 2021 Geoffrey Kruse, All Rights Reserved. 5 * Copyright (c) 2021 Geoffrey Kruse, All Rights Reserved.
6 * 6 *
diff --git a/tools/idevicebtlogger.c b/tools/idevicebtlogger.c
index 7e1c0b0..b73d958 100644
--- a/tools/idevicebtlogger.c
+++ b/tools/idevicebtlogger.c
@@ -66,6 +66,9 @@ typedef enum {
66 RECV_ACL_DATA = 0x03 66 RECV_ACL_DATA = 0x03
67} PacketLoggerPacketType; 67} PacketLoggerPacketType;
68 68
69/**
70 * Callback from the packet logger service to handle packets and log to pcap
71 */
69static void bt_packet_logger_callback(uint8_t * data, uint16_t len, void *user_data) 72static void bt_packet_logger_callback(uint8_t * data, uint16_t len, void *user_data)
70{ 73{
71 bt_packet_logger_header_t * header = (bt_packet_logger_header_t *)data; 74 bt_packet_logger_header_t * header = (bt_packet_logger_header_t *)data;
@@ -128,6 +131,9 @@ static void bt_packet_logger_callback(uint8_t * data, uint16_t len, void *user_d
128 } 131 }
129} 132}
130 133
134/**
135 * Disable HCI log capture
136 */
131static void stop_logging(void) 137static void stop_logging(void)
132{ 138{
133 fflush(NULL); 139 fflush(NULL);
@@ -143,6 +149,9 @@ static void stop_logging(void)
143 } 149 }
144} 150}
145 151
152/**
153 * Enable HCI log capture
154 */
146static int start_logging(void) 155static int start_logging(void)
147{ 156{
148 idevice_error_t ret = idevice_new_with_options(&device, udid, (use_network) ? IDEVICE_LOOKUP_NETWORK : IDEVICE_LOOKUP_USBMUX); 157 idevice_error_t ret = idevice_new_with_options(&device, udid, (use_network) ? IDEVICE_LOOKUP_NETWORK : IDEVICE_LOOKUP_USBMUX);
@@ -180,6 +189,9 @@ static int start_logging(void)
180 return 0; 189 return 0;
181} 190}
182 191
192/**
193 * Callback for device events
194 */
183static void device_event_cb(const idevice_event_t* event, void* userdata) 195static void device_event_cb(const idevice_event_t* event, void* userdata)
184{ 196{
185 if (use_network && event->conn_type != CONNECTION_NETWORK) { 197 if (use_network && event->conn_type != CONNECTION_NETWORK) {
@@ -218,6 +230,9 @@ static void clean_exit(int sig)
218 quit_flag++; 230 quit_flag++;
219} 231}
220 232
233/**
234 * print usage information
235 */
221static void print_usage(int argc, char **argv, int is_error) 236static void print_usage(int argc, char **argv, int is_error)
222{ 237{
223 char *name = NULL; 238 char *name = NULL;
@@ -240,6 +255,9 @@ static void print_usage(int argc, char **argv, int is_error)
240 ); 255 );
241} 256}
242 257
258/**
259 * Program entry
260 */
243int main(int argc, char *argv[]) 261int main(int argc, char *argv[])
244{ 262{
245 int c = 0; 263 int c = 0;