This is an automated email from the ASF dual-hosted git repository. janc pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git
commit 78e3b2f9fd53f395ff1d5ef8ce7a7282c775cc7f Author: Szymon Czapracki <[email protected]> AuthorDate: Mon Jul 7 12:51:43 2025 +0200 nimble/btp: Add support for subrating procedures Add proper BTP subrating commands and functions in GAP. Required to satisfy corresponding auto-pts layer. --- apps/bttester/src/btp/btp_gap.h | 11 +++++++++++ apps/bttester/src/btp_gap.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/apps/bttester/src/btp/btp_gap.h b/apps/bttester/src/btp/btp_gap.h index 5485cd66e..ac6f26d5a 100644 --- a/apps/bttester/src/btp/btp_gap.h +++ b/apps/bttester/src/btp/btp_gap.h @@ -328,6 +328,17 @@ struct gap_periodic_adv_sync_transfer_recv_cmd { uint16_t sync_timeout; uint8_t flags; } __packed; + +#define GAP_SUBRATE_REQUEST 0x2b +struct gap_subrate_request_cmd { + ble_addr_t address; + uint16_t subrate_min; + uint16_t subrate_max; + uint16_t max_latency; + uint16_t cont_num; + uint16_t supervision_timeout; +} __packed; + /* events */ #define BTP_GAP_EV_NEW_SETTINGS 0x80 struct btp_gap_new_settings_ev { diff --git a/apps/bttester/src/btp_gap.c b/apps/bttester/src/btp_gap.c index 48e995867..220bbd74e 100644 --- a/apps/bttester/src/btp_gap.c +++ b/apps/bttester/src/btp_gap.c @@ -2210,6 +2210,29 @@ periodic_adv_sync_transfer_set_info(const void *cmd, uint16_t cmd_len, } #endif +#if MYNEWT_VAL(BLE_CONN_SUBRATING) +static uint8_t +subrate_request(const void *cmd, uint16_t cmd_len, void *rsp, uint16_t *rsp_len) +{ + const struct gap_subrate_request_cmd *cp = cmd; + struct ble_gap_conn_desc desc; + int rc; + + rc = gap_conn_find_by_addr(&cp->address, &desc); + if (rc) { + return BTP_STATUS_FAILED; + } + + rc = ble_gap_subrate_req(desc.conn_handle, cp->subrate_min, cp->subrate_max, + cp->max_latency, cp->cont_num, cp->supervision_timeout); + if (rc) { + return BTP_STATUS_FAILED; + } + + return BTP_STATUS_SUCCESS; +} +#endif + static const struct btp_handler handlers[] = { { .opcode = BTP_GAP_READ_SUPPORTED_COMMANDS, @@ -2380,6 +2403,13 @@ static const struct btp_handler handlers[] = { .func = periodic_adv_sync_transfer_recv, }, #endif +#if MYNEWT_VAL(BLE_CONN_SUBRATING) + { + .opcode = GAP_SUBRATE_REQUEST, + .expect_len = sizeof(struct gap_subrate_request_cmd), + .func = subrate_request, + }, +#endif }; static void
