All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/6] android/client: Check if hex data is present in define
@ 2014-11-20 15:34 Grzegorz Kolodziejczyk
  2014-11-20 15:34 ` [PATCH 2/6] android/client: Add Android 5.0 new value verifiers for gatt client Grzegorz Kolodziejczyk
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-11-20 15:34 UTC (permalink / raw)
  To: linux-bluetooth

Each hex data argument need to be checked before parsing. It was done in
before parse argc check. Now it's integrated in GET_VERIFIER_HEX_STRING.
---
 android/client/if-gatt.c | 28 +++++++++-------------------
 1 file changed, 9 insertions(+), 19 deletions(-)

diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c
index 49ccebf..9d6fafd 100644
--- a/android/client/if-gatt.c
+++ b/android/client/if-gatt.c
@@ -116,9 +116,14 @@ const btgatt_interface_t *if_gatt = NULL;
 		} \
 	} while (0)
 
-#define GET_VERIFY_HEX_STRING(n, v, l) \
+#define GET_VERIFY_HEX_STRING(i, v, l) \
 	do { \
 		int ll;\
+		const char *n = argv[i]; \
+		if (argc <= i) { \
+			haltest_error("No value specified\n"); \
+			return; \
+		} \
 		if (n[0] != '0' || (n[1] != 'X' && n[1] != 'x')) { \
 			haltest_error("Value must be hex string\n"); \
 			return; \
@@ -1366,13 +1371,7 @@ static void write_characteristic_p(int argc, const char **argv)
 	}
 	write_type = atoi(argv[5]);
 
-	/* value */
-	if (argc <= 6) {
-		haltest_error("No value specified\n");
-		return;
-	}
-
-	GET_VERIFY_HEX_STRING(argv[6], value, len);
+	GET_VERIFY_HEX_STRING(6, value, len);
 
 	/* auth_req */
 	if (argc > 7)
@@ -1984,8 +1983,7 @@ static void gatts_send_indication_p(int argc, const char *argv[])
 	}
 	confirm = atoi(argv[5]);
 
-	if (argc > 6)
-		GET_VERIFY_HEX_STRING(argv[6], data, len);
+	GET_VERIFY_HEX_STRING(6, data, len);
 
 	EXEC(if_gatt->server->send_indication, server_if, attr_handle, conn_id,
 							len, confirm, data);
@@ -2013,15 +2011,7 @@ static void gatts_send_response_p(int argc, const char *argv[])
 	data.attr_value.auth_req = 0;
 	data.attr_value.len = 0;
 
-	if (argc > 7) {
-		GET_VERIFY_HEX_STRING(argv[7], data.attr_value.value,
-							data.attr_value.len);
-
-		if (data.attr_value.len == 0) {
-			haltest_error("Failed to parse response value");
-			return;
-		}
-	}
+	GET_VERIFY_HEX_STRING(7, data.attr_value.value, data.attr_value.len);
 
 	haltest_info("conn_id %d, trans_id %d, status %d", conn_id, trans_id,
 									status);
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/6] android/client: Add Android 5.0 new value verifiers for gatt client
  2014-11-20 15:34 [PATCH 1/6] android/client: Check if hex data is present in define Grzegorz Kolodziejczyk
@ 2014-11-20 15:34 ` Grzegorz Kolodziejczyk
  2014-11-20 15:34 ` [PATCH 3/6] android/client: Add support for gattc scan_filter_param_setup Grzegorz Kolodziejczyk
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-11-20 15:34 UTC (permalink / raw)
  To: linux-bluetooth

---
 android/client/if-gatt.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c
index 9d6fafd..c412d58 100644
--- a/android/client/if-gatt.c
+++ b/android/client/if-gatt.c
@@ -73,6 +73,68 @@ const btgatt_interface_t *if_gatt = NULL;
 #define VERIFY_STATUS(n, v) VERIFY_INT_ARG(n, v, "No status specified\n")
 #define VERIFY_OFFSET(n, v) VERIFY_INT_ARG(n, v, "No offset specified\n")
 #define VERIFY_TEST_ARG(n, v) VERIFY_INT_ARG(n, v, "No test arg specified\n")
+#define VERIFY_ACTION(n, v) VERIFY_INT_ARG(n, v, "No action specified\n")
+#define VERIFY_FILT_TYPE(n, v) VERIFY_INT_ARG(n, v, "No filter specified\n")
+#define VERIFY_FILT_INDEX(n, v) VERIFY_INT_ARG(n, v, \
+						"No filter index specified\n")
+#define VERIFY_FEAT_SELN(n, v) VERIFY_INT_ARG(n, v, "No feat seln specified\n")
+#define VERIFY_LIST_LOGIC_TYPE(n, v) VERIFY_INT_ARG(n, v, \
+					"No list logic type specified\n")
+#define VERIFY_FILT_LOGIC_TYPE(n, v) VERIFY_INT_ARG(n, v, \
+					"No filt logic type specified\n")
+#define VERIFY_RSSI_HI_THR(n, v) VERIFY_INT_ARG(n, v, \
+					"No rssi hi threshold specified\n")
+#define VERIFY_RSSI_LOW_THR(n, v) VERIFY_INT_ARG(n, v, \
+						"No low threshold specified\n")
+#define VERIFY_DELY_MODE(n, v) VERIFY_INT_ARG(n, v, "No delay mode specified\n")
+#define VERIFY_FND_TIME(n, v) VERIFY_INT_ARG(n, v, "No found time specified\n")
+#define VERIFY_LOST_TIME(n, v) VERIFY_INT_ARG(n, v, "No lost time specified\n")
+#define VERIFY_FND_TIME_CNT(n, v) VERIFY_INT_ARG(n, v, \
+					"No found timer counter specified\n")
+#define VERIFY_COMP_ID(n, v) VERIFY_INT_ARG(n, v, "No company id specified\n")
+#define VERIFY_COMP_ID_MASK(n, v) VERIFY_INT_ARG(n, v, \
+						"No comp. id mask specified\n")
+#define VERIFY_DATA_LEN(n, v) VERIFY_INT_ARG(n, v, "No data len specified\n")
+#define VERIFY_MASK_LEN(n, v) VERIFY_INT_ARG(n, v, "No mask len specified\n")
+#define VERIFY_MIN_INTERVAL(n, v) VERIFY_INT_ARG(n, v, \
+						"No min interval specified\n")
+#define VERIFY_MAX_INTERVAL(n, v) VERIFY_INT_ARG(n, v, \
+						"No max interval specified\n")
+#define VERIFY_APPEARANCE(n, v) VERIFY_INT_ARG(n, v, "No apperance specified\n")
+#define VERIFY_MANUFACTURER_LEN(n, v) VERIFY_INT_ARG(n, v, \
+					"No manufacturer len specified\n")
+#define VERIFY_SERVICE_DATA_LEN(n, v) VERIFY_INT_ARG(n, v, \
+					"No service data len specified\n")
+#define VERIFY_SERVICE_UUID_LEN(n, v) VERIFY_INT_ARG(n, v, \
+					"No service uuid len specified\n")
+#define VERIFY_MTU(n, v) VERIFY_INT_ARG(n, v, "No mtu specified\n")
+#define VERIFY_LATENCY(n, v) VERIFY_INT_ARG(n, v, \
+						"No latency specified\n")
+#define VERIFY_TIMEOUT(n, v) VERIFY_INT_ARG(n, v, "No timeout specified\n")
+#define VERIFY_SCAN_INTERVAL(n, v) VERIFY_INT_ARG(n, v, \
+						"No scan interval specified\n")
+#define VERIFY_SCAN_WINDOW(n, v) VERIFY_INT_ARG(n, v, \
+						"No scan window specified\n")
+#define VERIFY_ADV_TYPE(n, v) VERIFY_INT_ARG(n, v, \
+					"No advertising type specified\n")
+#define VERIFY_CHNL_MAP(n, v) VERIFY_INT_ARG(n, v, \
+						"No channel map specified\n")
+#define VERIFY_TX_POWER(n, v) VERIFY_INT_ARG(n, v, \
+						"No tx power specified\n")
+#define VERIFY_TIMEOUT_S(n, v) VERIFY_INT_ARG(n, v, \
+						"No timeout in sec specified\n")
+#define VERIFY_BATCH_SCAN_FULL_MAX(n, v) VERIFY_INT_ARG(n, v, \
+					"No batch scan full max specified\n")
+#define VERIFY_BATCH_SCAN_TRUNC_MAX(n, v) VERIFY_INT_ARG(n, v, \
+					"No batch scan trunc max specified\n")
+#define VERIFY_BATCH_SCAN_NOTIFY_THR(n, v) VERIFY_INT_ARG(n, v, \
+				"No batch scan notify threshold specified\n")
+#define VERIFY_SCAN_MODE(n, v) VERIFY_INT_ARG(n, v, \
+						"No scan mode specified\n")
+#define VERIFY_ADDR_TYPE(n, v) VERIFY_INT_ARG(n, v, \
+						"No address type specified\n")
+#define VERIFY_DISCARD_RULE(n, v) VERIFY_INT_ARG(n, v, \
+						"No discard rule specified\n")
 #define VERIFY_HANDLE(n, v) VERIFY_HEX_ARG(n, v, "No "#v" specified\n")
 #define VERIFY_SERVICE_HANDLE(n, v) VERIFY_HANDLE(n, v)
 
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/6] android/client: Add support for gattc scan_filter_param_setup
  2014-11-20 15:34 [PATCH 1/6] android/client: Check if hex data is present in define Grzegorz Kolodziejczyk
  2014-11-20 15:34 ` [PATCH 2/6] android/client: Add Android 5.0 new value verifiers for gatt client Grzegorz Kolodziejczyk
@ 2014-11-20 15:34 ` Grzegorz Kolodziejczyk
  2014-11-20 15:34 ` [PATCH 4/6] android/client: Add support for gattc scan_filter_add_remove cmd Grzegorz Kolodziejczyk
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-11-20 15:34 UTC (permalink / raw)
  To: linux-bluetooth

This is new command introduced in Android 5.0 bluetooth gatt client api.
---
 android/client/if-gatt.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c
index c412d58..568eba6 100644
--- a/android/client/if-gatt.c
+++ b/android/client/if-gatt.c
@@ -1637,6 +1637,49 @@ static void read_remote_rssi_p(int argc, const char **argv)
 	EXEC(if_gatt->client->read_remote_rssi, client_if, &bd_addr);
 }
 
+#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
+/* scan filter parameter setup */
+static void scan_filter_param_setup_c(int argc, const char **argv,
+					enum_func *enum_func, void **user)
+{
+	if (argc == 2) {
+		*user = client_if_str;
+		*enum_func = enum_one_string;
+	}
+}
+
+static void scan_filter_param_setup_p(int argc, const char **argv)
+{
+	int client_if;
+	int action;
+	int filt_index;
+	int feat_seln;
+	int list_logic_type, filt_logic_type;
+	int rssi_high_thres, rssi_low_thres;
+	int dely_mode;
+	int found_timeout, lost_timeout, found_timeout_cnt;
+
+	RETURN_IF_NULL(if_gatt);
+	VERIFY_CLIENT_IF(2, client_if);
+	VERIFY_ACTION(3, action);
+	VERIFY_FILT_INDEX(4, filt_index);
+	VERIFY_FEAT_SELN(5, feat_seln);
+	VERIFY_LIST_LOGIC_TYPE(6, list_logic_type);
+	VERIFY_FILT_LOGIC_TYPE(7, filt_logic_type);
+	VERIFY_RSSI_HI_THR(8, rssi_high_thres);
+	VERIFY_RSSI_LOW_THR(9, rssi_low_thres);
+	VERIFY_DELY_MODE(10, dely_mode);
+	VERIFY_FND_TIME(11, found_timeout);
+	VERIFY_LOST_TIME(12, lost_timeout);
+	VERIFY_FND_TIME_CNT(13, found_timeout_cnt);
+
+	EXEC(if_gatt->client->scan_filter_param_setup, client_if, action,
+		filt_index, feat_seln, list_logic_type, filt_logic_type,
+		rssi_high_thres, rssi_low_thres, dely_mode, found_timeout,
+		lost_timeout, found_timeout_cnt);
+}
+#endif
+
 /* get_device_type */
 
 static void get_device_type_c(int argc, const char **argv, enum_func *enum_func,
@@ -1703,6 +1746,11 @@ static struct method client_methods[] = {
 #if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
 	STD_METHODCH(scan, "[1|0]"),
 	STD_METHODCH(connect, "<client_if> <addr> [<is_direct>] [<transport]"),
+	STD_METHODCH(scan_filter_param_setup, "<client_if> <action>"
+			" <filt_index> <feat_seln> <list_logic_type>"
+			" <filt_logic_type> <rssi_high_thres> <rssi_low_thres>"
+			" <dely_mode> <found_timeout> <lost_timeout>"
+			" <found_timeout_cnt>"),
 #else
 	STD_METHODCH(scan, "<client_if> [1|0]"),
 	STD_METHODCH(connect, "<client_if> <addr> [<is_direct>]"),
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 4/6] android/client: Add support for gattc scan_filter_add_remove cmd
  2014-11-20 15:34 [PATCH 1/6] android/client: Check if hex data is present in define Grzegorz Kolodziejczyk
  2014-11-20 15:34 ` [PATCH 2/6] android/client: Add Android 5.0 new value verifiers for gatt client Grzegorz Kolodziejczyk
  2014-11-20 15:34 ` [PATCH 3/6] android/client: Add support for gattc scan_filter_param_setup Grzegorz Kolodziejczyk
@ 2014-11-20 15:34 ` Grzegorz Kolodziejczyk
  2014-11-20 15:34 ` [PATCH 5/6] android/client: Add support for gattc scan_filter_clear cmd Grzegorz Kolodziejczyk
  2014-11-21 13:37 ` [PATCH 1/6] android/client: Check if hex data is present in define Szymon Janc
  4 siblings, 0 replies; 6+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-11-20 15:34 UTC (permalink / raw)
  To: linux-bluetooth

---
 android/client/if-gatt.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)

diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c
index 568eba6..4c9dcfa 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>]"),
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 5/6] android/client: Add support for gattc scan_filter_clear cmd
  2014-11-20 15:34 [PATCH 1/6] android/client: Check if hex data is present in define Grzegorz Kolodziejczyk
                   ` (2 preceding siblings ...)
  2014-11-20 15:34 ` [PATCH 4/6] android/client: Add support for gattc scan_filter_add_remove cmd Grzegorz Kolodziejczyk
@ 2014-11-20 15:34 ` Grzegorz Kolodziejczyk
  2014-11-21 13:37 ` [PATCH 1/6] android/client: Check if hex data is present in define Szymon Janc
  4 siblings, 0 replies; 6+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-11-20 15:34 UTC (permalink / raw)
  To: linux-bluetooth

---
 android/client/if-gatt.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c
index 4c9dcfa..c06a1a5 100644
--- a/android/client/if-gatt.c
+++ b/android/client/if-gatt.c
@@ -1739,6 +1739,28 @@ static void scan_filter_add_remove_p(int argc, const char **argv)
 		&p_uuid, &p_uuid_mask, &bd_addr, addr_type, data_len,
 		(char *) p_data, mask_len, (char *) p_mask);
 }
+
+/* scan filter clean */
+static void scan_filter_clear_c(int argc, const char **argv,
+					enum_func *enum_func, void **user)
+{
+	if (argc == 2) {
+		*user = client_if_str;
+		*enum_func = enum_one_string;
+	}
+}
+
+static void scan_filter_clear_p(int argc, const char **argv)
+{
+	int client_if;
+	int filt_index;
+
+	RETURN_IF_NULL(if_gatt);
+	VERIFY_CLIENT_IF(2, client_if);
+	VERIFY_FILT_INDEX(3, filt_index);
+
+	EXEC(if_gatt->client->scan_filter_clear, client_if, filt_index);
+}
 #endif
 
 /* get_device_type */
@@ -1816,6 +1838,7 @@ static struct method client_methods[] = {
 			" <filt_index> <company_id> <company_id_mask>"
 			" [<p_uuid>] <p_uuid_mask> <addr> <addr_type>"
 			" <data_len> [<p_data>] <mask_len> [<p_mask>]"),
+	STD_METHODCH(scan_filter_clear, "<client_if> <filt_index>"),
 #else
 	STD_METHODCH(scan, "<client_if> [1|0]"),
 	STD_METHODCH(connect, "<client_if> <addr> [<is_direct>]"),
-- 
1.9.3


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/6] android/client: Check if hex data is present in define
  2014-11-20 15:34 [PATCH 1/6] android/client: Check if hex data is present in define Grzegorz Kolodziejczyk
                   ` (3 preceding siblings ...)
  2014-11-20 15:34 ` [PATCH 5/6] android/client: Add support for gattc scan_filter_clear cmd Grzegorz Kolodziejczyk
@ 2014-11-21 13:37 ` Szymon Janc
  4 siblings, 0 replies; 6+ messages in thread
From: Szymon Janc @ 2014-11-21 13:37 UTC (permalink / raw)
  To: Grzegorz Kolodziejczyk; +Cc: linux-bluetooth

Hi Grzegorz,

On Thursday 20 of November 2014 16:34:01 Grzegorz Kolodziejczyk wrote:
> Each hex data argument need to be checked before parsing. It was done in
> before parse argc check. Now it's integrated in GET_VERIFIER_HEX_STRING.
> ---
>  android/client/if-gatt.c | 28 +++++++++-------------------
>  1 file changed, 9 insertions(+), 19 deletions(-)
> 
> diff --git a/android/client/if-gatt.c b/android/client/if-gatt.c
> index 49ccebf..9d6fafd 100644
> --- a/android/client/if-gatt.c
> +++ b/android/client/if-gatt.c
> @@ -116,9 +116,14 @@ const btgatt_interface_t *if_gatt = NULL;
>  		} \
>  	} while (0)
>  
> -#define GET_VERIFY_HEX_STRING(n, v, l) \
> +#define GET_VERIFY_HEX_STRING(i, v, l) \
>  	do { \
>  		int ll;\
> +		const char *n = argv[i]; \
> +		if (argc <= i) { \
> +			haltest_error("No value specified\n"); \
> +			return; \
> +		} \
>  		if (n[0] != '0' || (n[1] != 'X' && n[1] != 'x')) { \
>  			haltest_error("Value must be hex string\n"); \
>  			return; \
> @@ -1366,13 +1371,7 @@ static void write_characteristic_p(int argc, const char **argv)
>  	}
>  	write_type = atoi(argv[5]);
>  
> -	/* value */
> -	if (argc <= 6) {
> -		haltest_error("No value specified\n");
> -		return;
> -	}
> -
> -	GET_VERIFY_HEX_STRING(argv[6], value, len);
> +	GET_VERIFY_HEX_STRING(6, value, len);
>  
>  	/* auth_req */
>  	if (argc > 7)
> @@ -1984,8 +1983,7 @@ static void gatts_send_indication_p(int argc, const char *argv[])
>  	}
>  	confirm = atoi(argv[5]);
>  
> -	if (argc > 6)
> -		GET_VERIFY_HEX_STRING(argv[6], data, len);
> +	GET_VERIFY_HEX_STRING(6, data, len);
>  
>  	EXEC(if_gatt->server->send_indication, server_if, attr_handle, conn_id,
>  							len, confirm, data);
> @@ -2013,15 +2011,7 @@ static void gatts_send_response_p(int argc, const char *argv[])
>  	data.attr_value.auth_req = 0;
>  	data.attr_value.len = 0;
>  
> -	if (argc > 7) {
> -		GET_VERIFY_HEX_STRING(argv[7], data.attr_value.value,
> -							data.attr_value.len);
> -
> -		if (data.attr_value.len == 0) {
> -			haltest_error("Failed to parse response value");
> -			return;
> -		}
> -	}
> +	GET_VERIFY_HEX_STRING(7, data.attr_value.value, data.attr_value.len);
>  
>  	haltest_info("conn_id %d, trans_id %d, status %d", conn_id, trans_id,
>  									status);
> 

All six patches applied, thanks.

-- 
Best regards, 
Szymon Janc

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2014-11-21 13:37 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-20 15:34 [PATCH 1/6] android/client: Check if hex data is present in define Grzegorz Kolodziejczyk
2014-11-20 15:34 ` [PATCH 2/6] android/client: Add Android 5.0 new value verifiers for gatt client Grzegorz Kolodziejczyk
2014-11-20 15:34 ` [PATCH 3/6] android/client: Add support for gattc scan_filter_param_setup Grzegorz Kolodziejczyk
2014-11-20 15:34 ` [PATCH 4/6] android/client: Add support for gattc scan_filter_add_remove cmd Grzegorz Kolodziejczyk
2014-11-20 15:34 ` [PATCH 5/6] android/client: Add support for gattc scan_filter_clear cmd Grzegorz Kolodziejczyk
2014-11-21 13:37 ` [PATCH 1/6] android/client: Check if hex data is present in define Szymon Janc

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.