summaryrefslogtreecommitdiff
path: root/app/src/ble.c
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/ble.c')
-rw-r--r--app/src/ble.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/app/src/ble.c b/app/src/ble.c
index 3a7755f..db80a36 100644
--- a/app/src/ble.c
+++ b/app/src/ble.c
@@ -76,10 +76,39 @@ static void security_changed(struct bt_conn *conn, bt_security_t level,
}
}
+static bool le_param_req(struct bt_conn *conn, struct bt_le_conn_param *param) {
+ static struct bt_conn_info info;
+
+ bt_conn_get_info(conn, &info);
+
+ if (info.role == BT_CONN_ROLE_MASTER && (param->interval_min != 6 || param->latency != 30)) {
+ return false;
+ }
+
+ return true;
+}
+
+static void le_param_updated(struct bt_conn *conn, u16_t interval,
+ u16_t latency, u16_t timeout) {
+ static struct bt_conn_info info;
+
+ bt_conn_get_info(conn, &info);
+
+ if (info.role == BT_CONN_ROLE_MASTER && (interval != 6 || latency != 30)) {
+ bt_conn_le_param_update(conn, BT_LE_CONN_PARAM(0x0006, 0x0006, 30, 400));
+ }
+
+ LOG_DBG("Params updated: Interval: %d, Latency: %d", interval, latency);
+};
+
static struct bt_conn_cb conn_callbacks = {
.connected = connected,
.disconnected = disconnected,
.security_changed = security_changed,
+#if !IS_ENABLED(CONFIG_ZMK_SPLIT_BLE_ROLE_PERIPHERAL)
+ .le_param_req = le_param_req,
+ .le_param_updated = le_param_updated,
+#endif
};
static void auth_passkey_display(struct bt_conn *conn, unsigned int passkey)