summaryrefslogtreecommitdiff
path: root/android/tester-main.c
diff options
context:
space:
mode:
authorJakub Tyszkowski <jakub.tyszkowski@tieto.com>2014-10-03 15:08:41 +0200
committerSzymon Janc <szymon.janc@tieto.com>2014-10-06 13:28:25 +0200
commit1300d9da95afa4901bd184c92e59687c19f5268d (patch)
tree3514b3a855f65b60d7e497a9170741bb8b467437 /android/tester-main.c
parente4942a2f64254a95ab2ecb5fb744337152cf5b19 (diff)
downloadbluez-1300d9da95afa4901bd184c92e59687c19f5268d.tar.gz
android/tester: Add encryption change callback
This is needed for encryption verification.
Diffstat (limited to 'android/tester-main.c')
-rw-r--r--android/tester-main.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/android/tester-main.c b/android/tester-main.c
index c637fd5e0..d5ebe162a 100644
--- a/android/tester-main.c
+++ b/android/tester-main.c
@@ -104,6 +104,8 @@ static struct {
/* Emulator callbacks */
DBG_CB(CB_EMU_CONFIRM_SEND_DATA),
+ DBG_CB(CB_EMU_ENCRYPTION_ENABLED),
+ DBG_CB(CB_EMU_ENCRYPTION_DISABLED),
};
static gboolean check_callbacks_called(gpointer user_data)
@@ -291,6 +293,25 @@ static void mgmt_debug(const char *str, void *user_data)
tester_print("%s%s", prefix, str);
}
+static bool hciemu_post_encr_hook(const void *data, uint16_t len,
+ void *user_data)
+{
+ struct step *step = g_new0(struct step, 1);
+
+ /*
+ * Expected data: status (1 octet) + conn. handle (2 octets) +
+ * encryption flag (1 octet)
+ */
+ if (len < 4)
+ return true;
+
+ step->callback = ((uint8_t *)data)[3] ? CB_EMU_ENCRYPTION_ENABLED :
+ CB_EMU_ENCRYPTION_DISABLED;
+
+ schedule_callback_verification(step);
+ return true;
+}
+
static void read_info_callback(uint8_t status, uint16_t length,
const void *param, void *user_data)
{
@@ -328,6 +349,10 @@ static void read_info_callback(uint8_t status, uint16_t length,
return;
}
+ /* set hook for encryption change */
+ hciemu_add_hook(data->hciemu, HCIEMU_HOOK_POST_EVT, 0x08,
+ hciemu_post_encr_hook, NULL);
+
tester_pre_setup_complete();
}