diff options
author | Grzegorz Kolodziejczyk <grzegorz.kolodziejczyk@tieto.com> | 2014-11-20 16:34:04 +0100 |
---|---|---|
committer | Szymon Janc <szymon.janc@tieto.com> | 2014-11-21 14:35:47 +0100 |
commit | bbec1519ba4ab9eab5441fb7ce5985a39a6e2ad7 (patch) | |
tree | 055a49bbaef81b5cd573819dd82a2933e699a19f /android/client | |
parent | 204a605d9f7b26093e73729903f04dc9dfd9d9df (diff) | |
download | bluez-bbec1519ba4ab9eab5441fb7ce5985a39a6e2ad7.tar.gz |
android/client: Add support for gattc scan_filter_add_remove cmd
Diffstat (limited to 'android/client')
-rw-r--r-- | android/client/if-gatt.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c index 568eba650..4c9dcfa92 100644 --- a/android/client/if-gatt.c +++ b/android/client/if-gatt.c @@ -1678,6 +1678,67 @@ static void scan_filter_param_setup_p(int argc, const char **argv) rssi_high_thres, rssi_low_thres, dely_mode, found_timeout, lost_timeout, found_timeout_cnt); } + +/* scan filter add remove */ + +static void scan_filter_add_remove_c(int argc, const char **argv, + enum_func *enum_func, void **user) +{ + if (argc == 2) { + *user = client_if_str; + *enum_func = enum_one_string; + } else if (argc == 10) { + *user = last_addr; + *enum_func = enum_one_string; + } +} + +static void scan_filter_add_remove_p(int argc, const char **argv) +{ + int client_if; + int action; + int filt_type; + int filt_index; + int company_id; + int company_id_mask; + bt_uuid_t p_uuid; + bt_uuid_t p_uuid_mask; + bt_bdaddr_t bd_addr; + char addr_type; + int data_len; + uint8_t p_data[100]; + int mask_len; + uint8_t p_mask[100]; + + RETURN_IF_NULL(if_gatt); + VERIFY_CLIENT_IF(2, client_if); + VERIFY_ACTION(3, action); + VERIFY_FILT_TYPE(4, filt_type); + VERIFY_FILT_INDEX(5, filt_index); + VERIFY_COMP_ID(6, company_id); + VERIFY_COMP_ID_MASK(7, company_id_mask); + + if (argc <= 9) { + haltest_error("No p_uuid, p_uuid_mask specified\n"); + return; + } + gatt_str2bt_uuid_t(argv[8], -1, &p_uuid); + gatt_str2bt_uuid_t(argv[9], -1, &p_uuid_mask); + + VERIFY_UUID(8, &p_uuid); + VERIFY_UUID(9, &p_uuid_mask); + VERIFY_ADDR_ARG(10, &bd_addr); + VERIFY_ADDR_TYPE(11, addr_type); + VERIFY_DATA_LEN(12, data_len); + GET_VERIFY_HEX_STRING(13, p_data, data_len); + VERIFY_MASK_LEN(14, mask_len); + GET_VERIFY_HEX_STRING(15, p_mask, mask_len); + + EXEC(if_gatt->client->scan_filter_add_remove, client_if, action, + filt_type, filt_index, company_id, company_id_mask, + &p_uuid, &p_uuid_mask, &bd_addr, addr_type, data_len, + (char *) p_data, mask_len, (char *) p_mask); +} #endif /* get_device_type */ @@ -1751,6 +1812,10 @@ static struct method client_methods[] = { " <filt_logic_type> <rssi_high_thres> <rssi_low_thres>" " <dely_mode> <found_timeout> <lost_timeout>" " <found_timeout_cnt>"), + STD_METHODCH(scan_filter_add_remove, "<client_if> <action> <filt_type>" + " <filt_index> <company_id> <company_id_mask>" + " [<p_uuid>] <p_uuid_mask> <addr> <addr_type>" + " <data_len> [<p_data>] <mask_len> [<p_mask>]"), #else STD_METHODCH(scan, "<client_if> [1|0]"), STD_METHODCH(connect, "<client_if> <addr> [<is_direct>]"), |