BlueZ 可以通过设置 GattCharacteristic 的属性来控制连接间隔。以下是一个示例代码,可以将连接间隔设置为 100 毫秒。
#include
#include
// ...
// Set the connection interval to 100 milliseconds
static void set_conn_int(int sock, uint16_t conn_interval) {
struct hci_request rq;
le_conn_param_cp conn_params;
uint8_t status;
memset(&conn_params, 0, sizeof(conn_params));
conn_params.interval_min = htobs(conn_interval);
conn_params.interval_max = htobs(conn_interval);
conn_params.latency = 0;
conn_params.timeout = htobs(500); // 5 seconds
memset(&rq, 0, sizeof(rq));
rq.ogf = OGF_LE_CTL;
rq.ocf = OCF_LE_CONN_UPDATE;
rq.cparam = &conn_params;
rq.clen = LE_CONN_PARAM_SIZE;
rq.rparam = &status;
rq.rlen = 1;
if (hci_send_req(sock, &rq, 1000) < 0) {
perror("Failed to send LE connection update command");
} else if (status) {
errno = EIO;
perror("LE connection update failed");
}
}
通过调用 set_conn_int 函数,即可将连接间隔设置为 100 毫秒。