diff --git a/android/android-tester.c b/android/android-tester.c
index defed5f..92e6080 100644
--- a/android/android-tester.c
+++ b/android/android-tester.c
enum hal_bluetooth_callbacks_id {
ADAPTER_TEST_END,
- ADAPTER_TEST_SETUP_MODE,
ADAPTER_STATE_CHANGED_ON,
ADAPTER_STATE_CHANGED_OFF,
ADAPTER_PROP_BDADDR,
mgmt_unregister(data->mgmt, data->mgmt_settings_id);
}
+static bool is_empty_halcb_list(void)
+{
+ struct test_data *data = tester_get_data();
+
+ return !(g_slist_length(data->expected_callbacks));
+}
+
static void hal_cb_init(struct test_data *data)
{
const struct generic_data *test_data = data->test_data;
GINT_TO_POINTER(test_data->expected_hal_callbacks[i]));
i++;
}
+
+ if (is_empty_halcb_list())
+ data->hal_cb_called = true;
}
static void mgmt_cb_init(struct test_data *data)
{
const struct generic_data *test_data = data->test_data;
- if (!(test_data->expected_property.type))
+ if (is_empty_halcb_list() || !(test_data->expected_property.type))
data->property_checked = true;
}
test_update_state();
}
-static int get_expected_hal_cb(void)
+static void update_hal_cb_list(enum hal_bluetooth_callbacks_id
+ expected_callback)
{
struct test_data *data = tester_get_data();
- if (!(g_slist_length(data->expected_callbacks)))
- return ADAPTER_TEST_SETUP_MODE;
-
- return GPOINTER_TO_INT(data->expected_callbacks->data);
-}
-
-static void remove_expected_hal_cb(void)
-{
- struct test_data *data = tester_get_data();
+ if (is_empty_halcb_list())
+ return;
data->expected_callbacks = g_slist_remove(data->expected_callbacks,
- data->expected_callbacks->data);
+ GINT_TO_POINTER(expected_callback));
if (!data->expected_callbacks)
data->hal_cb_called = true;
static void adapter_state_changed_cb(bt_state_t state)
{
- enum hal_bluetooth_callbacks_id hal_cb;
-
- hal_cb = get_expected_hal_cb();
-
- switch (hal_cb) {
- case ADAPTER_STATE_CHANGED_ON:
- if (state == BT_STATE_ON)
- remove_expected_hal_cb();
- else
- tester_test_failed();
- break;
- case ADAPTER_STATE_CHANGED_OFF:
- if (state == BT_STATE_OFF)
- remove_expected_hal_cb();
- else
- tester_test_failed();
- break;
- case ADAPTER_TEST_SETUP_MODE:
- if (state == BT_STATE_ON)
+ switch (state) {
+ case BT_STATE_ON:
+ if (is_empty_halcb_list())
tester_setup_complete();
- else
+ update_hal_cb_list(ADAPTER_STATE_CHANGED_ON);
+ break;
+ case BT_STATE_OFF:
+ if (is_empty_halcb_list())
tester_setup_failed();
+ update_hal_cb_list(ADAPTER_STATE_CHANGED_OFF);
break;
default:
break;
static void adapter_properties_cb(bt_status_t status, int num_properties,
bt_property_t *properties)
{
- enum hal_bluetooth_callbacks_id hal_cb;
struct test_data *data = tester_get_data();
int i;
- for (i = 0; i < num_properties; i++) {
- hal_cb = get_expected_hal_cb();
+ if (is_empty_halcb_list())
+ return;
- if (hal_cb == ADAPTER_TEST_SETUP_MODE)
- break;
+ for (i = 0; i < num_properties; i++) {
- data->test_property = *properties;
+ data->test_property = properties[i];
- if (g_slist_next(data->expected_callbacks) ==
- ADAPTER_TEST_END)
+ if (g_slist_length(data->expected_callbacks) == 1)
check_test_property();
switch (properties[i].type) {
case BT_PROPERTY_BDADDR:
- if (hal_cb != ADAPTER_PROP_BDADDR)
- goto fail;
+ update_hal_cb_list(ADAPTER_PROP_BDADDR);
break;
case BT_PROPERTY_BDNAME:
- if (hal_cb != ADAPTER_PROP_BDNAME)
- goto fail;
+ update_hal_cb_list(ADAPTER_PROP_BDNAME);
break;
case BT_PROPERTY_UUIDS:
- if (hal_cb != ADAPTER_PROP_UUIDS)
- goto fail;
+ update_hal_cb_list(ADAPTER_PROP_UUIDS);
break;
case BT_PROPERTY_CLASS_OF_DEVICE:
- if (hal_cb != ADAPTER_PROP_COD)
- goto fail;
+ update_hal_cb_list(ADAPTER_PROP_COD);
break;
case BT_PROPERTY_TYPE_OF_DEVICE:
- if (hal_cb != ADAPTER_PROP_TYPE)
- goto fail;
+ update_hal_cb_list(ADAPTER_PROP_TYPE);
break;
case BT_PROPERTY_SERVICE_RECORD:
- if (hal_cb != ADAPTER_PROP_SERVICE_RECORD)
- goto fail;
+ update_hal_cb_list(ADAPTER_PROP_SERVICE_RECORD);
break;
case BT_PROPERTY_ADAPTER_SCAN_MODE:
- if (hal_cb != ADAPTER_PROP_SCAN_MODE)
- goto fail;
+ update_hal_cb_list(ADAPTER_PROP_SCAN_MODE);
break;
case BT_PROPERTY_ADAPTER_BONDED_DEVICES:
- if (hal_cb != ADAPTER_PROP_BONDED_DEVICES)
- goto fail;
+ update_hal_cb_list(ADAPTER_PROP_BONDED_DEVICES);
break;
case BT_PROPERTY_ADAPTER_DISCOVERY_TIMEOUT:
- if (hal_cb != ADAPTER_PROP_DISC_TIMEOUT)
- goto fail;
+ update_hal_cb_list(ADAPTER_PROP_DISC_TIMEOUT);
break;
default:
goto fail;
}
- remove_expected_hal_cb();
}
-
return;
fail: