Repository: incubator-mynewt-core Updated Branches: refs/heads/develop d1e8e11cf -> 56e711b8f
nimble: add offset option to read long in client With this patch it is possible to pass TC_GAR_CL_BI_13_C and TC_GAR_CL_BI_29_C. Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/c90a3036 Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/c90a3036 Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/c90a3036 Branch: refs/heads/develop Commit: c90a3036d01326b926a57dfd76303110ab7ee7c7 Parents: dd29d77 Author: MichaÅ Narajowski <[email protected]> Authored: Tue Dec 20 11:49:41 2016 +0100 Committer: MichaÅ Narajowski <[email protected]> Committed: Thu Dec 22 09:51:10 2016 +0100 ---------------------------------------------------------------------- apps/bletiny/src/bletiny.h | 3 ++- apps/bletiny/src/cmd.c | 13 ++++++++++++- apps/bletiny/src/main.c | 5 +++-- net/nimble/host/include/host/ble_gatt.h | 2 +- net/nimble/host/src/ble_gattc.c | 4 ++-- net/nimble/host/test/src/ble_gatt_conn_test.c | 6 ++++-- net/nimble/host/test/src/ble_gatt_read_test.c | 11 +++++++---- 7 files changed, 31 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/c90a3036/apps/bletiny/src/bletiny.h ---------------------------------------------------------------------- diff --git a/apps/bletiny/src/bletiny.h b/apps/bletiny/src/bletiny.h index 27c594a..f66ddfb 100644 --- a/apps/bletiny/src/bletiny.h +++ b/apps/bletiny/src/bletiny.h @@ -139,7 +139,8 @@ int bletiny_disc_full(uint16_t conn_handle); int bletiny_find_inc_svcs(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle); int bletiny_read(uint16_t conn_handle, uint16_t attr_handle); -int bletiny_read_long(uint16_t conn_handle, uint16_t attr_handle); +int bletiny_read_long(uint16_t conn_handle, uint16_t attr_handle, + uint16_t offset); int bletiny_read_by_uuid(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle, uint8_t *uuid128); int bletiny_read_mult(uint16_t conn_handle, uint16_t *attr_handles, http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/c90a3036/apps/bletiny/src/cmd.c ---------------------------------------------------------------------- diff --git a/apps/bletiny/src/cmd.c b/apps/bletiny/src/cmd.c index 8e8ae9f..5a1ca1e 100644 --- a/apps/bletiny/src/cmd.c +++ b/apps/bletiny/src/cmd.c @@ -1263,6 +1263,7 @@ bletiny_read_help(void) help_cmd_uuid("uuid"); help_cmd_uint16("start"); help_cmd_uint16("end"); + help_cmd_uint16("offset"); } static int @@ -1272,6 +1273,7 @@ cmd_read(int argc, char **argv) uint16_t conn_handle; uint16_t start; uint16_t end; + uint16_t offset; uint8_t uuid128[16]; uint8_t num_attr_handles; int is_uuid; @@ -1342,9 +1344,18 @@ cmd_read(int argc, char **argv) return rc; } + offset = parse_arg_uint16("offset", &rc); + if (rc == ENOENT) { + offset = 0; + } else if (rc != 0) { + console_printf("invalid 'offset' parameter\n"); + help_cmd_uint16("offset"); + return rc; + } + if (num_attr_handles == 1) { if (is_long) { - rc = bletiny_read_long(conn_handle, attr_handles[0]); + rc = bletiny_read_long(conn_handle, attr_handles[0], offset); } else { rc = bletiny_read(conn_handle, attr_handles[0]); } http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/c90a3036/apps/bletiny/src/main.c ---------------------------------------------------------------------- diff --git a/apps/bletiny/src/main.c b/apps/bletiny/src/main.c index 8234ace..63019f6 100755 --- a/apps/bletiny/src/main.c +++ b/apps/bletiny/src/main.c @@ -1233,11 +1233,12 @@ bletiny_read(uint16_t conn_handle, uint16_t attr_handle) } int -bletiny_read_long(uint16_t conn_handle, uint16_t attr_handle) +bletiny_read_long(uint16_t conn_handle, uint16_t attr_handle, uint16_t offset) { int rc; - rc = ble_gattc_read_long(conn_handle, attr_handle, bletiny_on_read, NULL); + rc = ble_gattc_read_long(conn_handle, attr_handle, offset, + bletiny_on_read, NULL); return rc; } http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/c90a3036/net/nimble/host/include/host/ble_gatt.h ---------------------------------------------------------------------- diff --git a/net/nimble/host/include/host/ble_gatt.h b/net/nimble/host/include/host/ble_gatt.h index 97e36b6..d7bee3d 100644 --- a/net/nimble/host/include/host/ble_gatt.h +++ b/net/nimble/host/include/host/ble_gatt.h @@ -162,7 +162,7 @@ int ble_gattc_read(uint16_t conn_handle, uint16_t attr_handle, int ble_gattc_read_by_uuid(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle, const void *uuid128, ble_gatt_attr_fn *cb, void *cb_arg); -int ble_gattc_read_long(uint16_t conn_handle, uint16_t handle, +int ble_gattc_read_long(uint16_t conn_handle, uint16_t handle, uint16_t offset, ble_gatt_attr_fn *cb, void *cb_arg); int ble_gattc_read_mult(uint16_t conn_handle, const uint16_t *handles, uint8_t num_handles, ble_gatt_attr_fn *cb, http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/c90a3036/net/nimble/host/src/ble_gattc.c ---------------------------------------------------------------------- diff --git a/net/nimble/host/src/ble_gattc.c b/net/nimble/host/src/ble_gattc.c index 6eb0606..311c777 100644 --- a/net/nimble/host/src/ble_gattc.c +++ b/net/nimble/host/src/ble_gattc.c @@ -3423,7 +3423,7 @@ ble_gattc_read_long_rx_read_rsp(struct ble_gattc_proc *proc, int status, * @return 0 on success; nonzero on failure. */ int -ble_gattc_read_long(uint16_t conn_handle, uint16_t handle, +ble_gattc_read_long(uint16_t conn_handle, uint16_t handle, uint16_t offset, ble_gatt_attr_fn *cb, void *cb_arg) { #if !MYNEWT_VAL(BLE_GATT_READ_LONG) @@ -3444,7 +3444,7 @@ ble_gattc_read_long(uint16_t conn_handle, uint16_t handle, proc->op = BLE_GATT_OP_READ_LONG; proc->conn_handle = conn_handle; proc->read_long.handle = handle; - proc->read_long.offset = 0; + proc->read_long.offset = offset; proc->read_long.cb = cb; proc->read_long.cb_arg = cb_arg; http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/c90a3036/net/nimble/host/test/src/ble_gatt_conn_test.c ---------------------------------------------------------------------- diff --git a/net/nimble/host/test/src/ble_gatt_conn_test.c b/net/nimble/host/test/src/ble_gatt_conn_test.c index 3fd7cc3..a0c4f9f 100644 --- a/net/nimble/host/test/src/ble_gatt_conn_test.c +++ b/net/nimble/host/test/src/ble_gatt_conn_test.c @@ -383,6 +383,7 @@ TEST_CASE(ble_gatt_conn_test_disconnect) struct ble_gatt_conn_test_arg write_rel_arg = { 0, BLE_HS_ENOTCONN }; struct ble_gatt_attr attr; uint16_t attr_handle; + uint16_t offset = 0; int rc; ble_gatt_conn_test_util_init(); @@ -452,7 +453,7 @@ TEST_CASE(ble_gatt_conn_test_disconnect) TEST_ASSERT_FATAL(rc == 0); read_long_arg.exp_conn_handle = 2; - rc = ble_gattc_read_long(2, BLE_GATT_BREAK_TEST_READ_ATTR_HANDLE, + rc = ble_gattc_read_long(2, BLE_GATT_BREAK_TEST_READ_ATTR_HANDLE, offset, ble_gatt_conn_test_read_long_cb, &read_long_arg); TEST_ASSERT_FATAL(rc == 0); @@ -604,6 +605,7 @@ TEST_CASE(ble_gatt_conn_test_timeout) struct ble_gatt_attr attr; int32_t ticks_from_now; uint16_t attr_handle; + uint16_t offset = 0; int rc; ble_gatt_conn_test_util_init(); @@ -687,7 +689,7 @@ TEST_CASE(ble_gatt_conn_test_timeout) /*** Read long. */ ble_hs_test_util_create_conn(1, peer_addr, NULL, NULL); - rc = ble_gattc_read_long(1, BLE_GATT_BREAK_TEST_READ_ATTR_HANDLE, + rc = ble_gattc_read_long(1, BLE_GATT_BREAK_TEST_READ_ATTR_HANDLE, offset, ble_gatt_conn_test_read_long_cb, &read_long_arg); TEST_ASSERT_FATAL(rc == 0); http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/c90a3036/net/nimble/host/test/src/ble_gatt_read_test.c ---------------------------------------------------------------------- diff --git a/net/nimble/host/test/src/ble_gatt_read_test.c b/net/nimble/host/test/src/ble_gatt_read_test.c index 299c572..6ffdc43 100644 --- a/net/nimble/host/test/src/ble_gatt_read_test.c +++ b/net/nimble/host/test/src/ble_gatt_read_test.c @@ -337,6 +337,7 @@ ble_gatt_read_test_misc_long_verify_good( int chunk_sz; int rem_len; int att_op; + uint16_t offset = 0; int off; int rc; @@ -348,8 +349,8 @@ ble_gatt_read_test_misc_long_verify_good( max_reads = INT_MAX; } reads_left = max_reads; - rc = ble_gattc_read_long(2, attr->handle, ble_gatt_read_test_long_cb, - &reads_left); + rc = ble_gattc_read_long(2, attr->handle, offset, + ble_gatt_read_test_long_cb, &reads_left); TEST_ASSERT_FATAL(rc == 0); off = 0; @@ -386,13 +387,14 @@ static void ble_gatt_read_test_misc_long_verify_bad( uint8_t att_status, struct ble_hs_test_util_flat_attr *attr) { + uint16_t offset = 0; int rc; ble_gatt_read_test_misc_init(); ble_hs_test_util_create_conn(2, ((uint8_t[]){2,3,4,5,6,7,8,9}), NULL, NULL); - rc = ble_gattc_read_long(2, attr->handle, + rc = ble_gattc_read_long(2, attr->handle, offset, ble_gatt_read_test_long_cb, NULL); TEST_ASSERT_FATAL(rc == 0); @@ -820,6 +822,7 @@ TEST_CASE(ble_gatt_read_test_long_oom) int32_t ticks_until; int reads_left; int chunk_sz; + uint16_t offset = 0; int off; int rc; @@ -830,7 +833,7 @@ TEST_CASE(ble_gatt_read_test_long_oom) /* Initiate a read long procedure. */ off = 0; reads_left = 0; - rc = ble_gattc_read_long(2, attr.handle, ble_gatt_read_test_long_cb, + rc = ble_gattc_read_long(2, attr.handle, offset, ble_gatt_read_test_long_cb, &reads_left); TEST_ASSERT_FATAL(rc == 0);
